""" Auto-generated Python port of selected SQL Server stored procedures. Generated on 2025-10-14T11:57:38 Notes: - Synchronous, no threading/async. - Uses pyodbc; install with `pip install pyodbc` and configure the connection string. - Two procedures are fully implemented in Python (inserting into Log tables). - All other procedures are provided as stubs with signatures and embedded T-SQL (for later porting). """ from __future__ import annotations from dataclasses import dataclass from typing import Optional, Tuple, Any from datetime import datetime import pyodbc @dataclass class SPResult: """Standard return container used by the handwritten procedure ports.""" message: str | None = None id_result: int | None = None def get_connection() -> pyodbc.Connection: """Return a new pyodbc connection. Adjust the connection string to your environment (Trusted Connection or SQL Auth). """ conn = pyodbc.connect( 'DRIVER={ODBC Driver 18 for SQL Server};' 'SERVER=localhost;' 'DATABASE=Mediseawall;' 'Trusted_Connection=Yes;' 'TrustServerCertificate=Yes;' ) conn.autocommit = False return conn def _insert_log(table: str, code: str | None, description: str | None) -> Tuple[int, str]: """Internal helper used by log_operation/log_packing_list.""" sql = f'''INSERT INTO {table} (Code, Description, IDInsUser, InsDateTime) VALUES (?, ?, ?, GETDATE()); SELECT SCOPE_IDENTITY();''' with get_connection() as cxn: try: cur = cxn.cursor() cur.execute(sql, code, description, 1) new_id = int(cur.fetchval()) cxn.commit() return new_id, '' except Exception as e: cxn.rollback() return -1, str(e) def sp_LogOperation(ID: int | None, Code: str | None, Description: str | None) -> SPResult: """Python port of [dbo].[sp_LogOperation].""" new_id, err = _insert_log('LogOperation', Code, Description) if new_id < 0: return SPResult(message=err, id_result=None) return SPResult(message='', id_result=new_id) def sp_LogPackingList(ID: int | None, Code: str | None, Description: str | None) -> SPResult: """Python port of [dbo].[sp_LogPackingList].""" new_id, err = _insert_log('LogPackingList', Code, Description) if new_id < 0: return SPResult(message=err, id_result=None) return SPResult(message='', id_result=new_id) def BackupDB() -> Any: """ Python stub for [dbo].[BackupDB]. Original T-SQL for reference: BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @RC int DECLARE @ID int DECLARE @Descrizione varchar(32) DECLARE @IDArea int DECLARE @IDDimensione int DECLARE @IDStato int DECLARE @Ordinamento float DECLARE @X int DECLARE @Y int DECLARE @Z int DECLARE @Corsia varchar(8) DECLARE @Colonna varchar(8) DECLARE @Fila varchar(8) DECLARE @PortataMassimaCella float DECLARE @PortataMassimaColonna float DECLARE @UnitaVolumeOccupata float DECLARE @InsUtente varchar(50) DECLARE @InsDataOra datetime DECLARE @ModUtente varchar(50) DECLARE @ModDataOra datetime SET @IDArea = 4 SET @Corsia = ' 4D' SET @Colonna = '18' SET @ID = 1001 SET @Descrizione = '1001 : : 1A - 1 - a' SET @IDDimensione = 1 SET @IDStato = 1 SET @Ordinamento = 1.001000000000000e+003 SET @X = 0 SET @Y = 0 SET @Z = 0 SET @PortataMassimaCella = 0.000000000000000e+000 SET @PortataMassimaColonna = 0.000000000000000e+000 SET @UnitaVolumeOccupata = 0.000000000000000e+000 SET @InsUtente = 'raf' SET @InsDataOra = 'set 11 2010 5:25PM' SET @ModUtente = 'raf' SET @ModDataOra = 'set 11 2010 5:25PM' declare @IDDaCopiare int declare @IDNuovo int -- Imposta valori dei parametri -- Declare an inner cursor based -- on au_id from the outer cursor. DECLARE IDDaCopiare_cursor CURSOR FOR SELECT [ID] FROM [MediSeawall].[dbo].[Aree] OPEN IDDaCopiare_cursor FETCH NEXT FROM IDDaCopiare_cursor INTO @IDDaCopiare WHILE @@FETCH_STATUS = 0 BEGIN if @IDDaCopiare = 1 BEGIN SET @Fila = 'a' END if @IDDaCopiare = 2 BEGIN SET @Fila = 'b' END if @IDDaCopiare = 3 BEGIN SET @Fila = 'c' END if @IDDaCopiare = 4 BEGIN SET @Fila = 'd' END if @IDDaCopiare = 5 BEGIN SET @Fila = 'e' END if @IDDaCopiare = 6 BEGIN SET @Fila = 'f' END SET @ID = (SELECT MAX([ID]) FROM [MediSeawall].[dbo].[Celle]) + 1 SET @Descrizione = CAST(@ID as char(4)) + ' cors: ' + @Corsia+ ' col: ' + @Colonna + ' fil: ' + @Fila EXECUTE @RC = [MediSeawall].[dbo].[spt_SaveCelle] @ID ,@Descrizione ,@IDArea ,@IDDimensione ,@IDStato ,@Ordinamento ,@X ,@Y ,@Z ,@Corsia ,@Colonna ,@Fila ,@PortataMassimaCella ,@PortataMassimaColonna ,@UnitaVolumeOccupata ,@InsUtente ,@InsDataOra ,@ModUtente ,@ModDataOra FETCH NEXT FROM IDDaCopiare_cursor INTO @IDDaCopiare END CLOSE IDDaCopiare_cursor DEALLOCATE IDDaCopiare_cursor END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def CreaNuoveCelleMDE6(Locazioni: int | None, Piani: int | None) -> Any: """ Python stub for [dbo].[CreaNuoveCelleMDE6]. Original T-SQL for reference: char(4)) + ' cors: ' + @Corsia+ ' col: ' + @Colonna + ' fil: ' + @Fila EXECUTE @RC = [MediSeawall].[dbo].[spt_SaveCelle] @ID ,@Descrizione ,@IDArea ,@IDDimensione ,@IDStato ,@Ordinamento ,@X ,@Y ,@Z ,@Corsia ,@Colonna ,@Fila ,@PortataMassimaCella ,@PortataMassimaColonna ,@UnitaVolumeOccupata ,@InsUtente ,@InsDataOra ,@ModUtente ,@ModDataOra SET @Piani_value = @Piani_value + 1 END; SET @site_value = @site_value + 1 END; FETCH NEXT FROM IDDaCopiare_cursor INTO @IDDaCopiare END CLOSE IDDaCopiare_cursor DEALLOCATE IDDaCopiare_cursor END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def CreaNuoveCelleMDE6_BIS(Locazioni: int | None, Piani: int | None) -> Any: """ Python stub for [dbo].[CreaNuoveCelleMDE6_BIS]. Original T-SQL for reference: char(4)) + ' cors: ' + @Corsia+ ' col: ' + @Colonna + ' fil: ' + @Fila EXECUTE @RC = [MediSeawall].[dbo].[spt_SaveCelle] @ID ,@Descrizione ,@IDArea ,@IDDimensione ,@IDStato ,@Ordinamento ,@X ,@Y ,@Z ,@Corsia ,@Colonna ,@Fila ,@PortataMassimaCella ,@PortataMassimaColonna ,@UnitaVolumeOccupata ,@InsUtente ,@InsDataOra ,@ModUtente ,@ModDataOra SET @Piani_value = @Piani_value + 1 END; SET @site_value = @site_value + 1 END; FETCH NEXT FROM IDDaCopiare_cursor INTO @IDDaCopiare END CLOSE IDDaCopiare_cursor DEALLOCATE IDDaCopiare_cursor """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def CreateLoopArea(IDArea: int | None) -> Any: """ Python stub for [dbo].[CreateLoopArea]. Original T-SQL for reference: BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @ElaboraLoopBarcodePallet varchar(16) DECLARE @RC int DECLARE @IDOperatore int DECLARE @BarcodeCella varchar(8) = '9000000' DECLARE @BarcodePallet varchar(16) = '' DECLARE @NumeroCella int = 9000000 DECLARE ElaboraLoopBarcodePallet_cursor CURSOR FOR SELECT [BarcodePallet] FROM [dbo].[XMag_GiacenzaPallet] WHERE [IDArea] = @IDArea OPEN ElaboraLoopBarcodePallet_cursor FETCH NEXT FROM ElaboraLoopBarcodePallet_cursor INTO @ElaboraLoopBarcodePallet WHILE @@FETCH_STATUS = 0 BEGIN SET @BarcodePallet = @ElaboraLoopBarcodePallet -- TODO: impostare qui i valori dei parametri. EXECUTE @RC = [sp_xMagGestioneMagazziniPallet] @IDOperatore ,@BarcodeCella ,@BarcodePallet ,@NumeroCella ,@RC OUTPUT FETCH NEXT FROM ElaboraLoopBarcodePallet_cursor INTO @ElaboraLoopBarcodePallet END CLOSE ElaboraLoopBarcodePallet_cursor DEALLOCATE ElaboraLoopBarcodePallet_cursor END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def sp_ControllaPrenotazionePackingListPallet(RC: str | None) -> Any: """ Python stub for [dbo].[sp_ControllaPrenotazionePackingListPallet]. Original T-SQL for reference: BEGIN DECLARE @RC int = 0 DECLARE @IDOperatore int = 0 DECLARE @IDCellaPrenotata int = 0 DECLARE @Documento varchar(8) = '' DECLARE @Nominativo varchar(50) = '' SELECT TOP 1 @IDCellaPrenotata = [ID] FROM [Mediseawall].[dbo].[Celle] where IDStato = 1 SELECT TOP 1 @Documento = Documento, @IDCellaPrenotata = Cella FROM XMag_ViewPackingList GROUP BY Documento, IDStato,Cella HAVING (IDStato = 1) --and Cella <> 9999 AND Documento IN (SELECT TOP (1) CAST([Code] as int) FROM [LogPackingList] ORDER By ID DESC) ORDer BY Documento IF @IDCellaPrenotata > 0 BEGIN SELECT TOP 1 @Nominativo = [ModUtente] FROM [Mediseawall].[dbo].[Celle] where IDStato = 1 SELECT @IDOperatore = ID FROM Operatori WHERE LOGIN = @Nominativo --SELECT TOP 1 @Documento = Documento --FROM dbo.XMag_ViewPackingList --GROUP BY Documento, CodNazione, NAZIONE, Stato, Magazzino, Area, Cella --HAVING (Cella = @IDCellaPrenotata) SELECT TOP 1 @Documento = Documento FROM XMag_ViewPackingList GROUP BY Documento, IDStato HAVING (IDStato = 1) AND Documento IN (SELECT TOP (1) CAST([Code] as int) FROM [LogPackingList] ORDER By ID DESC) ORDER BY Documento EXECUTE [dbo].sp_xExePackingListPalletPrenota @IDOperatore ,@Documento ,@RC OUTPUT END END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def sp_OrdinaCelle() -> Any: """ Python stub for [dbo].[sp_OrdinaCelle]. Original T-SQL for reference: INT) DESC OPEN IDDaCopiare_cursor FETCH NEXT FROM IDDaCopiare_cursor INTO @IDDaCopiare WHILE @@FETCH_STATUS = 0 BEGIN SET @IDNuovo = @IDNuovo + 1 UPDATE [MediSeawall].[dbo].[Celle] SET [Ordinamento] = @IDNuovo WHERE [ID] = @IDDaCopiare FETCH NEXT FROM IDDaCopiare_cursor INTO @IDDaCopiare END CLOSE IDDaCopiare_cursor DEALLOCATE IDDaCopiare_cursor """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def sp_xExePackingListPallet(IDOperatore: int | None, Documento: str | None, RC: int | None) -> Any: """ Python stub for [dbo].[sp_xExePackingListPallet]. Original T-SQL for reference: SET @RC = 0 -- Recupera operatore DECLARE @Nominativo varchar(50) SELECT @Nominativo = LOGIN FROM Operatori WHERE id = @IDOperatore DECLARE @Stato int PRINT @Nominativo declare @IDDaCopiare int declare @IDNuovo int -- Imposta valori dei parametri -- Declare an inner cursor based -- on au_id from the outer cursor. DECLARE IDDaCopiare_cursor CURSOR FOR SELECT Cella FROM dbo.XMag_ViewPackingList GROUP BY Documento, CodNazione, NAZIONE, Stato, Magazzino, Area, Cella HAVING (Documento = @Documento) OPEN IDDaCopiare_cursor FETCH NEXT FROM IDDaCopiare_cursor INTO @IDDaCopiare WHILE @@FETCH_STATUS = 0 BEGIN SELECT @Stato = [IDStato] FROM [Celle] WHERE [ID] = @IDDaCopiare if @Stato = 0 BEGIN UPDATE [Celle] SET [IDStato] = 1 ,[ModUtente] = @Nominativo ,[ModDataOra] = GETDATE() WHERE [ID] = @IDDaCopiare END ELSE BEGIN UPDATE [Celle] SET [IDStato] = 0 ,[ModUtente] = @Nominativo ,[ModDataOra] = GETDATE() WHERE [ID] = @IDDaCopiare END FETCH NEXT FROM IDDaCopiare_cursor INTO @IDDaCopiare END CLOSE IDDaCopiare_cursor DEALLOCATE IDDaCopiare_cursor DECLARE @ID int = 0 DECLARE @Code varchar(64) = @Documento DECLARE @Description varchar(255) DECLARE @Message varchar(255) DECLARE @IDResult int SELECT TOP 1 @Description = NAZIONE FROM dbo.XMag_ViewPackingList GROUP by Documento, NAZIONE HAVING Documento = @Documento -- TODO: impostare qui i valori dei parametri. EXECUTE @RC = [dbo].[sp_LogPackingList] @ID ,@Code ,@Description ,@Message OUTPUT ,@IDResult OUTPUT """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def sp_xExePackingListPalletPrenota(IDOperatore: int | None, Documento: str | None, RC: int | None) -> Any: """ Python stub for [dbo].[sp_xExePackingListPalletPrenota]. Original T-SQL for reference: SET @RC = 0 -- Recupera operatore DECLARE @Nominativo varchar(50) SELECT @Nominativo = LOGIN FROM Operatori WHERE id = @IDOperatore DECLARE @Stato int PRINT @Nominativo declare @IDDaCopiare int declare @IDNuovo int -- Imposta valori dei parametri -- Declare an inner cursor based -- on au_id from the outer cursor. DECLARE IDDaCopiare_cursor CURSOR FOR SELECT Cella FROM dbo.XMag_ViewPackingList GROUP BY Documento, CodNazione, NAZIONE, Stato, Magazzino, Area, Cella HAVING (Documento = @Documento) OPEN IDDaCopiare_cursor FETCH NEXT FROM IDDaCopiare_cursor INTO @IDDaCopiare WHILE @@FETCH_STATUS = 0 BEGIN UPDATE [Celle] SET [IDStato] = 1 ,[ModUtente] = @Nominativo ,[ModDataOra] = GETDATE() WHERE [ID] = @IDDaCopiare FETCH NEXT FROM IDDaCopiare_cursor INTO @IDDaCopiare END CLOSE IDDaCopiare_cursor DEALLOCATE IDDaCopiare_cursor """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def sp_xMagGestioneAccettazione(IDOperatore: int | None, BarcodeCella: str | None, BarcodePallet: str | None, NumeroCella: int | None, RC: int | None, Out1: str | None, Out2: str | None, Out3: str | None, Out4: str | None, Out5: str | None, Out6: str | None, Out7: str | None) -> Any: """ Python stub for [dbo].[sp_xMagGestioneAccettazione]. Original T-SQL for reference: --DECLARE @RC int --DECLARE @IDOperatore int --DECLARE @BarcodeCella varchar(8) --DECLARE @BarcodePallet varchar(16) --DECLARE @NumeroCella int --SET @IDOperatore = 1 SET @BarcodeCella = '9009000' --SET @BarcodePallet = '100782' SET @NumeroCella = 9000 SET @RC = 0 -- Recupera operatore DECLARE @Output1 varchar(16) DECLARE @Output2 varchar(16) DECLARE @Output3 varchar(16) DECLARE @Output4 varchar(16) DECLARE @Nominativo varchar(50) SELECT @Nominativo = LOGIN FROM Operatori WHERE id = @IDOperatore PRINT @Nominativo PRINT SUBSTRING(@BarcodeCella,1,3) PRINT SUBSTRING(@BarcodeCella,4,2) PRINT SUBSTRING(@BarcodeCella,6,2) -- Cerca la cella DECLARE @IDMagazzino int ,@IDArea int, @IDCella int, @NumeroPallet int, @NewIDCella int SET @NewIDCella = -1*(9000000 - @NumeroCella) SET @IDMagazzino = 0 SET @IDArea = 0 SET @IDCella = 0 SET @NumeroPallet = 0 SELECT @IDCella = [ID], @IDArea = [IDArea] FROM [Celle] WHERE ID = @NewIDCella if @IDArea > 0 BEGIN -- Magazzino da area SELECT @IDMagazzino = [IDMagazzino] FROM [Aree] WHERE [ID] = @IDArea END ELSE BEGIN -- se non trova la cella recupera il magazzino di default SELECT TOP 1 @IDMagazzino = UnitaProduzione.IDMagVersamento FROM Operatori INNER JOIN UnitaProduzione ON Operatori.CodiceUnita = UnitaProduzione.Codice WHERE (Operatori.ID = @IDOperatore) SELECT @IDCella = [ID], @IDArea = [IDArea] FROM [Celle] WHERE ID = 9000 END -- Recupera il peso unitario e la tara DECLARE @PesoUnitario float, @Tara float, @IDRiferimento int SET @PesoUnitario = 1 SET @Tara = 0 SET @IDRiferimento = 0 SELECT TOP 1 @IDRiferimento = ID FROM [Accettazione] WHERE (IDMagazzino = @IDMagazzino) AND (Attributo = @BarcodePallet) -- AND (NumeroPallet = @NumeroPallet) AND PesoUnitario > 0 AND Tipo = 'V' AND [IDRiferimento] = 0 ORDER BY ID DESC UPDATE [Accettazione] SET [ModUtente] = @Nominativo, [ModDataOra] = GETDATE(), [IDRiferimento] = @IDRiferimento WHERE ID = @IDRiferimento AND [IDRiferimento] = 0 --WHERE (IDMagazzino = @IDMagazzino) AND (Attributo = @BarcodePallet) -- AND (NumeroPallet = @NumeroPallet) --AND PesoUnitario > 0 AND Tipo = 'V' --ORDER BY ID DESC IF @@ROWCOUNT > 0 -- SE TROVO QUALCOSA LA PRELIEVO - Poi Trasferisco in area transito BEGIN INSERT INTO [Accettazione] ([Tipo],[IDRiferimento] ,[NumeroPallet], Attributo ,[IDMagazzino] ,[IDArea] ,[IDCella] ,[DataMagazzino] ,[PesoUnitario] ,[Tara],[InsUtente] ,[InsDataOra]) SELECT 'P' ,@IDRiferimento,[NumeroPallet], Attributo ,[IDMagazzino] ,[IDArea] ,[IDCella] ,GETDATE() ,[PesoUnitario],[Tara], @Nominativo ,GETDATE() FROM [Accettazione] WHERE ID = @IDRiferimento SET @RC = @@IDENTITY SELECT @Output2 = Attributo, @Output3 = [InsUtente] , @Output4 = CAST([InsDataOra] as CHAR(16)) FROM [Accettazione] WHERE ID = @IDRiferimento SET @Out1 = 'DIS-ACCETTAZIONE' SET @Out2 = @Output2 SET @Out3 = @Output3 SET @Out4 = @Output4 SET @Out5 = 5 SET @Out6 = @BarcodeCella SET @Out7 = '' END ELSE BEGIN -- VERSA in area cella [IDMagazzino],[IDArea],[IDCella] INSERT INTO [Accettazione] ([Tipo] ,[IDRiferimento],[NumeroPallet], Attributo ,[IDMagazzino],[IDArea],[IDCella],[DataMagazzino] ,[PesoUnitario],[Tara],[InsUtente],[InsDataOra]) VALUES ('V',@IDRiferimento,@NumeroPallet, @BarcodePallet ,@IDMagazzino,@IDArea,@IDCella,GETDATE() ,@PesoUnitario,@Tara,@Nominativo,GETDATE()) SET @RC = @@IDENTITY SET @Out1 = 'ACCETTATO' SET @Out2 = @BarcodePallet SET @Out3 = @Nominativo SET @Out4 = CAST(GETDATE() as CHAR(16)) SET @Out5 = 7 SET @Out6 = @BarcodeCella SET @Out7 = '' END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def sp_xMagGestioneAccettazioneOLD(IDOperatore: int | None, BarcodeCella: str | None, BarcodePallet: str | None, NumeroCella: int | None, RC: int | None, Out1: str | None, Out2: str | None, Out3: str | None, Out4: str | None, Out5: str | None, Out6: str | None, Out7: str | None) -> Any: """ Python stub for [dbo].[sp_xMagGestioneAccettazioneOLD]. Original T-SQL for reference: --DECLARE @RC int --DECLARE @IDOperatore int --DECLARE @BarcodeCella varchar(8) --DECLARE @BarcodePallet varchar(16) --DECLARE @NumeroCella int --SET @IDOperatore = 1 SET @BarcodeCella = '9009000' --SET @BarcodePallet = '100782' SET @NumeroCella = 9000 SET @RC = 0 -- Recupera operatore DECLARE @Output1 varchar(16) DECLARE @Output2 varchar(16) DECLARE @Output3 varchar(16) DECLARE @Output4 varchar(16) DECLARE @Nominativo varchar(50) SELECT @Nominativo = LOGIN FROM Operatori WHERE id = @IDOperatore PRINT @Nominativo PRINT SUBSTRING(@BarcodeCella,1,3) PRINT SUBSTRING(@BarcodeCella,4,2) PRINT SUBSTRING(@BarcodeCella,6,2) -- Cerca la cella DECLARE @IDMagazzino int ,@IDArea int, @IDCella int, @NumeroPallet int, @NewIDCella int SET @NewIDCella = -1*(9000000 - @NumeroCella) SET @IDMagazzino = 0 SET @IDArea = 0 SET @IDCella = 0 SET @NumeroPallet = 0 SELECT @IDCella = [ID], @IDArea = [IDArea] FROM [Celle] WHERE ID = @NewIDCella if @IDArea > 0 BEGIN -- Magazzino da area SELECT @IDMagazzino = [IDMagazzino] FROM [Aree] WHERE [ID] = @IDArea END ELSE BEGIN -- se non trova la cella recupera il magazzino di default SELECT TOP 1 @IDMagazzino = UnitaProduzione.IDMagVersamento FROM Operatori INNER JOIN UnitaProduzione ON Operatori.CodiceUnita = UnitaProduzione.Codice WHERE (Operatori.ID = @IDOperatore) SELECT @IDCella = [ID], @IDArea = [IDArea] FROM [Celle] WHERE ID = 9000 END -- Recupera il peso unitario e la tara DECLARE @PesoUnitario float, @Tara float, @IDRiferimento int SET @PesoUnitario = 1 SET @Tara = 0 SET @IDRiferimento = 0 SELECT TOP 1 @IDRiferimento = ID FROM [Accettazione] WHERE (IDMagazzino = @IDMagazzino) AND (Attributo = @BarcodePallet) -- AND (NumeroPallet = @NumeroPallet) AND PesoUnitario > 0 AND Tipo = 'V' ORDER BY ID DESC UPDATE [Accettazione] SET [ModUtente] = @Nominativo, [ModDataOra] = GETDATE() WHERE ID = @IDRiferimento --WHERE (IDMagazzino = @IDMagazzino) AND (Attributo = @BarcodePallet) -- AND (NumeroPallet = @NumeroPallet) --AND PesoUnitario > 0 AND Tipo = 'V' --ORDER BY ID DESC IF @@ROWCOUNT > 0 -- SE TROVO QUALCOSA LA PRELIEVO - Poi Trasferisco in area transito BEGIN INSERT INTO [Accettazione] ([Tipo],[IDRiferimento] ,[NumeroPallet], Attributo ,[IDMagazzino] ,[IDArea] ,[IDCella] ,[DataMagazzino] ,[PesoUnitario] ,[Tara],[InsUtente] ,[InsDataOra]) SELECT 'P' ,@IDRiferimento,[NumeroPallet], Attributo ,[IDMagazzino] ,[IDArea] ,[IDCella] ,GETDATE() ,[PesoUnitario],[Tara], @Nominativo ,GETDATE() FROM [Accettazione] WHERE ID = @IDRiferimento SET @RC = @@IDENTITY SELECT @Output2 = Attributo, @Output3 = [InsUtente] , @Output4 = CAST([InsDataOra] as CHAR(16)) FROM [Accettazione] WHERE ID = @IDRiferimento SET @Out1 = 'ATTENZIONE' SET @Out2 = @Output2 SET @Out3 = @Output3 SET @Out4 = @Output4 SET @Out5 = 5 SET @Out6 = @BarcodeCella SET @Out7 = '' END ELSE BEGIN -- VERSA in area cella [IDMagazzino],[IDArea],[IDCella] INSERT INTO [Accettazione] ([Tipo] ,[IDRiferimento],[NumeroPallet], Attributo ,[IDMagazzino],[IDArea],[IDCella],[DataMagazzino] ,[PesoUnitario],[Tara],[InsUtente],[InsDataOra]) VALUES ('V',@IDRiferimento,@NumeroPallet, @BarcodePallet ,@IDMagazzino,@IDArea,@IDCella,GETDATE() ,@PesoUnitario,@Tara,@Nominativo,GETDATE()) SET @RC = @@IDENTITY SET @Out1 = 'ACCETTATO' SET @Out2 = @BarcodePallet SET @Out3 = @Nominativo SET @Out4 = CAST(GETDATE() as CHAR(16)) SET @Out5 = 7 SET @Out6 = @BarcodeCella SET @Out7 = '' END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def sp_xMagGestioneMagazziniPallet(IDOperatore: int | None, BarcodeCella: str | None, BarcodePallet: str | None, NumeroCella: int | None, RC: int | None) -> Any: """ Python stub for [dbo].[sp_xMagGestioneMagazziniPallet]. Original T-SQL for reference: --DECLARE @RC int --DECLARE @IDOperatore int --DECLARE @BarcodeCella varchar(8) --DECLARE @BarcodePallet varchar(16) --DECLARE @NumeroCella int --SET @IDOperatore = 1 --SET @BarcodeCella = ' 1056' --SET @BarcodePallet = '100782' --SET @NumeroCella = 1056 SET @RC = 0 -- Recupera operatore DECLARE @Nominativo varchar(50) SELECT @Nominativo = LOGIN FROM Operatori WHERE id = @IDOperatore PRINT @Nominativo PRINT SUBSTRING(@BarcodeCella,1,3) PRINT SUBSTRING(@BarcodeCella,4,2) PRINT SUBSTRING(@BarcodeCella,6,2) -- Cerca la cella DECLARE @IDMagazzino int ,@IDArea int, @IDCella int, @NumeroPallet int, @NewIDCella int SET @NewIDCella = -1*(9000000 - @NumeroCella) SET @IDMagazzino = 0 SET @IDArea = 0 SET @IDCella = 0 SET @NumeroPallet = 0 SELECT @IDCella = [Celle].[ID], @IDArea = [IDArea], @IDMagazzino = IDMagazzino FROM [Celle], Aree WHERE [Celle].ID = @NewIDCella AND IDArea = Aree.ID --WHERE [Corsia] = SUBSTRING(@BarcodeCella,1,3) -- AND [Colonna] = SUBSTRING(@BarcodeCella,4,2) -- AND [Fila] = SUBSTRING(@BarcodeCella,6,2) PRINT @NumeroCella print 'Barcode Cella' PRINT @NewIDCella print 'NEWNumero Cella' PRINT @IDCella print 'Numero Cella' PRINT @IDArea print 'Numero @IDArea' DECLARE @ID int DECLARE @Code varchar(64) DECLARE @Description varchar(255) DECLARE @Message varchar(255) DECLARE @IDResult int SET @Code = @BarcodeCella +' - '+ @BarcodePallet +' - '+ CAST(@NumeroCella as CHAR(10)) SET @Description = CAST(@IDArea as CHAR(10)) +' - '+ CAST(@IDCella as CHAR(10)) SET @ID= 0 -- TODO: impostare qui i valori dei parametri. EXECUTE sp_LogOperation @ID ,@Code ,@Description ,@Message OUTPUT ,@IDResult OUTPUT SET @ID= @IDResult if @IDArea > 0 BEGIN -- Magazzino da area SELECT @IDMagazzino = [IDMagazzino] FROM [Aree] WHERE [ID] = @IDArea END ELSE BEGIN -- se non trova la cella recupera il magazzino di default SELECT TOP 1 @IDMagazzino = UnitaProduzione.IDMagVersamento FROM Operatori INNER JOIN UnitaProduzione ON Operatori.CodiceUnita = UnitaProduzione.Codice WHERE (Operatori.ID = @IDOperatore) SELECT @IDCella = [Celle].[ID], @IDArea = [IDArea], @IDMagazzino = IDMagazzino FROM [Celle], Aree WHERE [Celle].ID = 9999 AND IDArea = Aree.ID END -- Recupera il peso unitario e la tara DECLARE @PesoUnitario float, @Tara float, @IDRiferimento int SET @PesoUnitario = 1 SET @Tara = 0 SET @IDRiferimento = 0 SELECT TOP 1 @IDRiferimento = ID FROM [MagazziniPallet] WHERE 1= 1 --AND (IDMagazzino = @IDMagazzino) AND (Attributo = @BarcodePallet) -- AND (NumeroPallet = @NumeroPallet) AND PesoUnitario > 0 AND Tipo = 'V' ORDER BY ID DESC UPDATE [MagazziniPallet] SET [ModUtente] = @Nominativo, [ModDataOra] = GETDATE() WHERE ID = @IDRiferimento --WHERE (IDMagazzino = @IDMagazzino) AND (Attributo = @BarcodePallet) -- AND (NumeroPallet = @NumeroPallet) --AND PesoUnitario > 0 AND Tipo = 'V' --ORDER BY ID DESC IF @@ROWCOUNT > 0 -- SE TROVO QUALCOSA LA PRELIEVO - Poi Trasferisco in area transito BEGIN INSERT INTO [MagazziniPallet] ([Tipo],[IDRiferimento] ,[NumeroPallet], Attributo ,[IDMagazzino] ,[IDArea] ,[IDCella] ,[DataMagazzino] ,[PesoUnitario] ,[Tara],[InsUtente] ,[InsDataOra]) SELECT 'P' ,@IDRiferimento,[NumeroPallet], Attributo ,[IDMagazzino] ,[IDArea] ,[IDCella] ,GETDATE() ,[PesoUnitario],[Tara], @Nominativo ,GETDATE() FROM [MagazziniPallet] WHERE ID = @IDRiferimento -- WHERE (IDMagazzino = @IDMagazzino) AND (Attributo = @BarcodePallet) -- AND (NumeroPallet = @NumeroPallet) -- AND PesoUnitario > 0 AND Tipo = 'V' -- ORDER BY ID DESC -- disimpegna UPDATE [Celle] SET [IDStato] = 0 , [ModUtente] = @Nominativo ,[ModDataOra] = GETDATE() WHERE [ID] = (SELECT [IDCella] FROM [MagazziniPallet] WHERE ID = @IDRiferimento) -- Trasferisci in area cella [IDMagazzino],[IDArea],[IDCella] INSERT INTO [MagazziniPallet] ([Tipo] ,[IDRiferimento],[NumeroPallet], Attributo ,[IDMagazzino],[IDArea],[IDCella],[DataMagazzino] ,[PesoUnitario],[Tara],[InsUtente],[InsDataOra]) VALUES ('V',@IDRiferimento,@NumeroPallet, @BarcodePallet ,@IDMagazzino,@IDArea,@IDCella,GETDATE() ,@PesoUnitario,@Tara,@Nominativo,GETDATE()) SET @RC = @@IDENTITY END ELSE BEGIN -- VERSA in area cella [IDMagazzino],[IDArea],[IDCella] INSERT INTO [MagazziniPallet] ([Tipo] ,[IDRiferimento],[NumeroPallet], Attributo ,[IDMagazzino],[IDArea],[IDCella],[DataMagazzino] ,[PesoUnitario],[Tara],[InsUtente],[InsDataOra]) VALUES ('V',@IDRiferimento,@NumeroPallet, @BarcodePallet ,@IDMagazzino,@IDArea,@IDCella,GETDATE() ,@PesoUnitario,@Tara,@Nominativo,GETDATE()) -- disimpegna --UPDATE [Celle] SET -- [IDStato] = 0 , [ModUtente] = @Nominativo ,[ModDataOra] = GETDATE() --WHERE [ID] = @IDCella SET @RC = @@IDENTITY END --EXECUTE [dbo].[sp_ControllaPrenotazionePackingListPallet] EXECUTE [dbo].[sp_ControllaPrenotazionePackingLi -- [TRUNCATED] -- """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_DeleteAree(ID: int | None, DelUtente: str | None, DelDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_DeleteAree]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Aree SET ID = @ID ,DelUtente = @DelUtente ,DelDataOra = @DelDataOra WHERE (ID = @ID) """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_DeleteCelle(ID: int | None, DelUtente: str | None, DelDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_DeleteCelle]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Celle SET ID = @ID ,DelUtente = @DelUtente ,DelDataOra = @DelDataOra WHERE (ID = @ID) """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_DeleteCelleDimensione(ID: int | None, DelUtente: str | None, DelDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_DeleteCelleDimensione]. Original T-SQL for reference: SET NOCOUNT ON UPDATE CelleDimensione SET ID = @ID ,DelUtente = @DelUtente ,DelDataOra = @DelDataOra WHERE (ID = @ID) """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_DeleteCelleStati(ID: int | None, DelUtente: str | None, DelDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_DeleteCelleStati]. Original T-SQL for reference: SET NOCOUNT ON UPDATE CelleStati SET ID = @ID ,DelUtente = @DelUtente ,DelDataOra = @DelDataOra WHERE (ID = @ID) """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_DeleteDivisioni(Codice: str | None, DelUtente: str | None, DelDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_DeleteDivisioni]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Divisioni SET Codice = @Codice ,DelUtente = @DelUtente ,DelDataOra = @DelDataOra WHERE (Codice = @Codice) """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_DeleteMagazzini(ID: int | None, DelUtente: str | None, DelDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_DeleteMagazzini]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Magazzini SET DelUtente = @DelUtente ,DelDataOra = @DelDataOra WHERE (ID = @ID) """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_DeleteOperatori(ID: int | None, DelUtente: str | None, DelDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_DeleteOperatori]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Operatori SET DelUtente = @DelUtente ,DelDataOra = @DelDataOra WHERE (ID = @ID) """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_DeleteReparti(Codice: str | None, DelUtente: str | None, DelDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_DeleteReparti]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Reparti SET Codice = @Codice ,DelUtente = @DelUtente ,DelDataOra = @DelDataOra WHERE (Codice = @Codice) """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_DeleteStabilimenti(Codice: str | None, DelUtente: str | None, DelDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_DeleteStabilimenti]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Stabilimenti SET Codice = @Codice ,DelUtente = @DelUtente ,DelDataOra = @DelDataOra WHERE (Codice = @Codice) """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_DeleteUnitaProduzione(Codice: str | None, DelUtente: str | None, DelDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_DeleteUnitaProduzione]. Original T-SQL for reference: SET NOCOUNT ON UPDATE UnitaProduzione SET Codice = @Codice ,DelUtente = @DelUtente ,DelDataOra = @DelDataOra WHERE (Codice = @Codice) """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_SaveAree(ID: int | None, IDMagazzino: int | None, Descrizione: str | None, InsUtente: str | None, InsDataOra: datetime | None, ModUtente: str | None, ModDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_SaveAree]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Aree SET ID = @ID ,IDMagazzino = @IDMagazzino ,Descrizione = @Descrizione ,InsUtente = @InsUtente ,InsDataOra = @InsDataOra ,ModUtente = @ModUtente ,ModDataOra = @ModDataOra WHERE ID = @ID IF @@ROWCOUNT = 0 BEGIN INSERT INTO Aree (ID ,IDMagazzino ,Descrizione ,InsUtente ,InsDataOra ,ModUtente ,ModDataOra ) VALUES ( @ID , @IDMagazzino , @Descrizione , @InsUtente , @InsDataOra , @ModUtente , @ModDataOra ) END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_SaveCelle(ID: int | None, Descrizione: str | None, IDArea: int | None, IDDimensione: int | None, IDStato: int | None, Ordinamento: float | None, X: int | None, Y: int | None, Z: int | None, Corsia: str | None, Colonna: str | None, Fila: str | None, PortataMassimaCella: float | None, PortataMassimaColonna: float | None, UnitaVolumeOccupata: float | None, InsUtente: str | None, InsDataOra: datetime | None, ModUtente: str | None, ModDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_SaveCelle]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Celle SET ID = @ID ,Descrizione = @Descrizione ,IDArea = @IDArea ,IDDimensione = @IDDimensione ,IDStato = @IDStato ,Ordinamento = @Ordinamento ,X = @X ,Y = @Y ,Z = @Z ,Corsia = @Corsia ,Colonna = @Colonna ,Fila = @Fila ,PortataMassimaCella = @PortataMassimaCella ,PortataMassimaColonna = @PortataMassimaColonna ,UnitaVolumeOccupata = @UnitaVolumeOccupata ,InsUtente = @InsUtente ,InsDataOra = @InsDataOra ,ModUtente = @ModUtente ,ModDataOra = @ModDataOra WHERE ID = @ID IF @@ROWCOUNT = 0 BEGIN INSERT INTO Celle (ID ,Descrizione ,IDArea ,IDDimensione ,IDStato ,Ordinamento ,X ,Y ,Z ,Corsia ,Colonna ,Fila ,PortataMassimaCella ,PortataMassimaColonna ,UnitaVolumeOccupata ,InsUtente ,InsDataOra ,ModUtente ,ModDataOra ) VALUES ( @ID , @Descrizione , @IDArea , @IDDimensione , @IDStato , @Ordinamento , @X , @Y , @Z , @Corsia , @Colonna , @Fila , @PortataMassimaCella , @PortataMassimaColonna , @UnitaVolumeOccupata , @InsUtente , @InsDataOra , @ModUtente , @ModDataOra ) END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_SaveCelleDimensione(ID: int | None, Descrizione: str | None, Dimensione: float | None, UnitaVolume: float | None, A: float | None, B: float | None, C: float | None, IDSolido: int | None, InsUtente: str | None, InsDataOra: datetime | None, ModUtente: str | None, ModDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_SaveCelleDimensione]. Original T-SQL for reference: SET NOCOUNT ON UPDATE CelleDimensione SET Descrizione = @Descrizione ,Dimensione = @Dimensione ,UnitaVolume = @UnitaVolume ,A = @A ,B = @B ,C = @C ,IDSolido = @IDSolido ,InsUtente = @InsUtente ,InsDataOra = @InsDataOra ,ModUtente = @ModUtente ,ModDataOra = @ModDataOra WHERE ID = @ID IF @@ROWCOUNT = 0 BEGIN INSERT INTO CelleDimensione (ID ,Descrizione ,Dimensione ,UnitaVolume ,A ,B ,C ,IDSolido ,InsUtente ,InsDataOra ,ModUtente ,ModDataOra ) VALUES ( @ID , @Descrizione , @Dimensione , @UnitaVolume , @A , @B , @C , @IDSolido , @InsUtente , @InsDataOra , @ModUtente , @ModDataOra ) END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_SaveCelleStati(ID: int | None, Descrizione: str | None, InsUtente: str | None, InsDataOra: datetime | None, ModUtente: str | None, ModDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_SaveCelleStati]. Original T-SQL for reference: SET NOCOUNT ON UPDATE CelleStati SET Descrizione = @Descrizione ,InsUtente = @InsUtente ,InsDataOra = @InsDataOra ,ModUtente = @ModUtente ,ModDataOra = @ModDataOra WHERE ID = @ID IF @@ROWCOUNT = 0 BEGIN INSERT INTO CelleStati (ID ,Descrizione ,InsUtente ,InsDataOra ,ModUtente ,ModDataOra ) VALUES ( @ID , @Descrizione , @InsUtente , @InsDataOra , @ModUtente , @ModDataOra ) END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_SaveDivisioni(Codice: str | None, Descrizione: str | None, InsUtente: str | None, InsDataOra: datetime | None, ModUtente: str | None, ModDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_SaveDivisioni]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Divisioni SET Codice = @Codice ,Descrizione = @Descrizione ,InsUtente = @InsUtente ,InsDataOra = @InsDataOra ,ModUtente = @ModUtente ,ModDataOra = @ModDataOra WHERE (Codice = @Codice) IF @@ROWCOUNT = 0 BEGIN INSERT INTO Divisioni (Codice ,Descrizione ,InsUtente ,InsDataOra ,ModUtente ,ModDataOra ) VALUES ( @Codice , @Descrizione , @InsUtente , @InsDataOra , @ModUtente , @ModDataOra ) END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_SaveMagazzini(ID: int | None, Codice: str | None, CodiceDivisione: str | None, NomeBreve: str | None, Descrizione: str | None, FreqRadio: str | None, Informatizzato: str | None, ProgressivoPallet: int | None, CodiceStabilimento: str | None, InsUtente: str | None, InsDataOra: datetime | None, ModUtente: str | None, ModDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_SaveMagazzini]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Magazzini SET ID = @ID ,Codice = @Codice ,CodiceDivisione = @CodiceDivisione ,NomeBreve = @NomeBreve ,Descrizione = @Descrizione ,FreqRadio = @FreqRadio ,Informatizzato = @Informatizzato ,ProgressivoPallet = @ProgressivoPallet ,CodiceStabilimento = @CodiceStabilimento ,InsUtente = @InsUtente ,InsDataOra = @InsDataOra ,ModUtente = @ModUtente ,ModDataOra = @ModDataOra WHERE ID = @ID IF @@ROWCOUNT = 0 BEGIN INSERT INTO Magazzini (ID ,Codice ,CodiceDivisione ,NomeBreve ,Descrizione ,FreqRadio ,Informatizzato ,ProgressivoPallet ,CodiceStabilimento ,InsUtente ,InsDataOra ,ModUtente ,ModDataOra ) VALUES ( @ID , @Codice , @CodiceDivisione , @NomeBreve , @Descrizione , @FreqRadio , @Informatizzato , @ProgressivoPallet , @CodiceStabilimento , @InsUtente , @InsDataOra , @ModUtente , @ModDataOra ) END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_SaveOperatori(ID: int | None, Login: str | None, Nominativo: str | None, CodiceUnita: str | None, InsUtente: str | None, InsDataOra: datetime | None, ModUtente: str | None, ModDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_SaveOperatori]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Operatori SET ID = @ID ,Login = @Login ,Nominativo = @Nominativo ,CodiceUnita = @CodiceUnita ,InsUtente = @InsUtente ,InsDataOra = @InsDataOra ,ModUtente = @ModUtente ,ModDataOra = @ModDataOra WHERE ID = @ID IF @@ROWCOUNT = 0 BEGIN INSERT INTO Operatori (ID ,Login ,Nominativo ,CodiceUnita ,InsUtente ,InsDataOra ,ModUtente ,ModDataOra ) VALUES ( @ID , @Login , @Nominativo , @CodiceUnita , @InsUtente , @InsDataOra , @ModUtente , @ModDataOra ) END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_SaveReparti(Codice: str | None, CodiceStabilimento: str | None, CodiceDivisione: str | None, Descrizione: str | None, PrfxLotto: int | None, PrfxAlias: str | None, PrfxCodiceLotto: str | None, IDFormato: int | None, Nota: str | None, IndiceSSCC: int | None, Prfx: str | None, VistaCommesse: str | None, CodiceAnagrafica: str | None, InsUtente: str | None, InsDataOra: datetime | None, ModUtente: str | None, ModDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_SaveReparti]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Reparti SET Codice = @Codice ,CodiceStabilimento = @CodiceStabilimento ,CodiceDivisione = @CodiceDivisione ,Descrizione = @Descrizione ,PrfxLotto = @PrfxLotto ,PrfxAlias = @PrfxAlias ,PrfxCodiceLotto = @PrfxCodiceLotto ,IDFormato = @IDFormato ,Nota = @Nota ,IndiceSSCC = @IndiceSSCC ,Prfx = @Prfx ,VistaCommesse = @VistaCommesse ,CodiceAnagrafica = @CodiceAnagrafica ,InsUtente = @InsUtente ,InsDataOra = @InsDataOra ,ModUtente = @ModUtente ,ModDataOra = @ModDataOra WHERE Codice = @Codice IF @@ROWCOUNT = 0 BEGIN INSERT INTO Reparti (Codice ,CodiceStabilimento ,CodiceDivisione ,Descrizione ,PrfxLotto ,PrfxAlias ,PrfxCodiceLotto ,IDFormato ,Nota ,IndiceSSCC ,Prfx ,VistaCommesse ,CodiceAnagrafica ,InsUtente ,InsDataOra ,ModUtente ,ModDataOra ) VALUES ( @Codice , @CodiceStabilimento , @CodiceDivisione , @Descrizione , @PrfxLotto , @PrfxAlias , @PrfxCodiceLotto , @IDFormato , @Nota , @IndiceSSCC , @Prfx , @VistaCommesse , @CodiceAnagrafica , @InsUtente , @InsDataOra , @ModUtente , @ModDataOra ) END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_SaveStabilimenti(Codice: str | None, Descrizione: str | None, InsUtente: str | None, InsDataOra: datetime | None, ModUtente: str | None, ModDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_SaveStabilimenti]. Original T-SQL for reference: SET NOCOUNT ON UPDATE Stabilimenti SET Codice = @Codice ,Descrizione = @Descrizione ,InsUtente = @InsUtente ,InsDataOra = @InsDataOra ,ModUtente = @ModUtente ,ModDataOra = @ModDataOra WHERE (Codice = @Codice) IF @@ROWCOUNT = 0 BEGIN INSERT INTO Stabilimenti (Codice ,Descrizione ,InsUtente ,InsDataOra ,ModUtente ,ModDataOra ) VALUES ( @Codice , @Descrizione , @InsUtente , @InsDataOra , @ModUtente , @ModDataOra ) END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).') def spt_SaveUnitaProduzione(Codice: str | None, CodiceReparto: str | None, Descrizione: str | None, IDMagPrelievo: int | None, IDMagVersamento: int | None, Nota: str | None, VistaCommesse: str | None, VistaDocumenti: str | None, VistaDettagli: str | None, InsUtente: str | None, InsDataOra: datetime | None, ModUtente: str | None, ModDataOra: datetime | None) -> Any: """ Python stub for [dbo].[spt_SaveUnitaProduzione]. Original T-SQL for reference: SET NOCOUNT ON UPDATE UnitaProduzione SET Codice = @Codice ,CodiceReparto = @CodiceReparto ,Descrizione = @Descrizione ,IDMagPrelievo = @IDMagPrelievo ,IDMagVersamento = @IDMagVersamento ,Nota = @Nota ,VistaCommesse = @VistaCommesse ,VistaDocumenti = @VistaDocumenti ,VistaDettagli = @VistaDettagli ,InsUtente = @InsUtente ,InsDataOra = @InsDataOra ,ModUtente = @ModUtente ,ModDataOra = @ModDataOra WHERE Codice = @Codice IF @@ROWCOUNT = 0 BEGIN INSERT INTO UnitaProduzione (Codice ,CodiceReparto ,Descrizione ,IDMagPrelievo ,IDMagVersamento ,Nota ,VistaCommesse ,VistaDocumenti ,VistaDettagli ,InsUtente ,InsDataOra ,ModUtente ,ModDataOra ) VALUES ( @Codice , @CodiceReparto , @Descrizione , @IDMagPrelievo , @IDMagVersamento , @Nota , @VistaCommesse , @VistaDocumenti , @VistaDettagli , @InsUtente , @InsDataOra , @ModUtente , @ModDataOra ) END """ raise NotImplementedError('Port this stored procedure logic into Python (step-by-step SQL).')