diff --git a/Build/Build.fbl6 b/Build/Build.fbl6 index 7c95052..7fc7420 100644 Binary files a/Build/Build.fbl6 and b/Build/Build.fbl6 differ diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql index 7969d64..b3f5699 100644 --- a/Database/scripts/factuges.sql +++ b/Database/scripts/factuges.sql @@ -1025,7 +1025,8 @@ CREATE TABLE PEDIDOS_PROVEEDOR ( ID_FORMA_PAGO TIPO_ID, FECHA_ENVIO DATE, ID_FACTURA TIPO_ID, - REF_FACTURA_PROV VARCHAR(255) COLLATE ES_ES + REF_FACTURA_PROV VARCHAR(255) COLLATE ES_ES, + REFERENCIA_CLIENTE VARCHAR(255) COLLATE ES_ES ); CREATE TABLE PEDIDOS_PROVEEDOR_DETALLES ( @@ -1378,7 +1379,7 @@ SELECT ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN, ALBARANES_PROVEEDOR.ID_ALMACEN, COALESCE(ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO, 0), CASE - WHEN ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO IS NULL THEN ALBARANES_PROVEEDOR_DETALLES.CONCEPTO + WHEN (COALESCE(ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO, 0)=0) THEN ALBARANES_PROVEEDOR_DETALLES.CONCEPTO ELSE NULL END, SUM (COALESCE(ALBARANES_PROVEEDOR_DETALLES.CANTIDAD, 0)) AS CANTIDAD @@ -2826,7 +2827,7 @@ SELECT PEDIDOS_PROVEEDOR_DETALLES.ID_PEDIDO, PEDIDOS_PROVEEDOR.ID_ALMACEN, COALESCE(PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO, 0), CASE - WHEN PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO IS NULL THEN PEDIDOS_PROVEEDOR_DETALLES.CONCEPTO + WHEN (COALESCE(PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO, 0) = 0) THEN PEDIDOS_PROVEEDOR_DETALLES.CONCEPTO ELSE NULL END, SUM(COALESCE(PEDIDOS_PROVEEDOR_DETALLES.CANTIDAD, 0)) @@ -3257,7 +3258,7 @@ CREATE VIEW V_PEDIDOS_PROVEEDOR( ID, ID_EMPRESA, ID_PROVEEDOR, - NOMBRE, + NOMBRE, ID_DIRECCION, PERSONA_CONTACTO_PROV, REFERENCIA, @@ -3286,6 +3287,7 @@ CREATE VIEW V_PEDIDOS_PROVEEDOR( USUARIO, ID_PEDIDO_CLIENTE, REF_PED_CLIENTE, + REFERENCIA_CLIENTE, IMPORTE_NETO, IMPORTE_PORTE, DESCUENTO, @@ -3332,6 +3334,7 @@ SELECT PEDIDOS_PROVEEDOR.USUARIO, PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE, PEDIDOS_CLIENTE.REFERENCIA AS REF_PED_CLIENTE, + PEDIDOS_PROVEEDOR.REFERENCIA_CLIENTE, PEDIDOS_PROVEEDOR.IMPORTE_NETO, PEDIDOS_PROVEEDOR.IMPORTE_PORTE, PEDIDOS_PROVEEDOR.DESCUENTO, @@ -4099,6 +4102,17 @@ from v_ped_cli_proceso group by id_pedido ; +CREATE VIEW V_PED_CLI_SITUACION_X_ALBARANES( + ID_PEDIDO, + NUM_ALBARANES, + SITUACION) +AS +select ID_PEDIDO, count(ID), 'ALBARANADO' as SITUACION +from albaranes_cliente +where ID_PEDIDO is not null +group by 1 +; + CREATE VIEW V_PEDIDOS_CLIENTE( ID, ID_EMPRESA, @@ -4143,7 +4157,11 @@ SELECT CONTACTOS.NOMBRE, PEDIDOS_CLIENTE.REFERENCIA, PEDIDOS_CLIENTE.REFERENCIA_CLIENTE, - TRIM(V_PED_CLI_SITUACION.SITUACION), + TRIM (CASE + when V_PED_CLI_SITUACION_X_ALBARANES.id_pedido is not null then V_PED_CLI_SITUACION_X_ALBARANES.SITUACION + else 'PENDIENTE' + end) as SITUACION, +/* TRIM(V_PED_CLI_SITUACION2.SITUACION),*/ PEDIDOS_CLIENTE.FECHA_PEDIDO, PEDIDOS_CLIENTE.CALLE, PEDIDOS_CLIENTE.CODIGO_POSTAL, @@ -4171,8 +4189,9 @@ SELECT IMPRESIONES.NUM_COPIAS, REGISTRO_CORREOS.NUM_CORREOS FROM - V_PED_CLI_SITUACION - INNER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = V_PED_CLI_SITUACION.ID_PEDIDO) + PEDIDOS_CLIENTE + LEFT JOIN V_PED_CLI_SITUACION_X_ALBARANES ON (V_PED_CLI_SITUACION_X_ALBARANES.ID_PEDIDO = PEDIDOS_CLIENTE.ID) +/* INNER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = V_PED_CLI_SITUACION.ID_PEDIDO)*/ INNER JOIN CONTACTOS ON (PEDIDOS_CLIENTE.ID_CLIENTE = CONTACTOS.ID) LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = PEDIDOS_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'PEDIDOSCLIENTE')) diff --git a/Resources/Logotipo K.jpg b/Resources/Logotipo K.jpg new file mode 100644 index 0000000..2afdea9 Binary files /dev/null and b/Resources/Logotipo K.jpg differ diff --git a/Resources/Nuevo-pie-keiblair.jpg b/Resources/Nuevo-pie-keiblair.jpg new file mode 100644 index 0000000..6893b12 Binary files /dev/null and b/Resources/Nuevo-pie-keiblair.jpg differ diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index ccb371c..bbd92a3 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -45,10 +45,6 @@ Package FalseTrueFalseLibreria base de FactuGESFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 - - - - Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components Base.dpk @@ -67,58 +63,58 @@ TDataModule - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fConfigurarConexion
TForm diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj index 8076ee1..8593921 100644 --- a/Source/Cliente/FactuGES.dproj +++ b/Source/Cliente/FactuGES.dproj @@ -53,7 +53,7 @@ Delphi.Personality VCLApplication -FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse4290FalseFalseFalseFalseFalse30821252Rodax Software S.L.4.2.9.0FactuGESFactuGES4.2.9.0FactuGES.dprFalse +FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse4310FalseFalseFalseFalseFalse30821252Rodax Software S.L.4.3.1.0FactuGESFactuGES4.3.1.0FactuGES.dprFalse diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc index 83ad10d..81e2072 100644 --- a/Source/Cliente/FactuGES.rc +++ b/Source/Cliente/FactuGES.rc @@ -1,7 +1,7 @@ MAINICON ICON "C:\Codigo\Resources\Iconos\Factuges.ico" 1 VERSIONINFO -FILEVERSION 4,2,9,0 -PRODUCTVERSION 4,2,9,0 +FILEVERSION 4,3,1,0 +PRODUCTVERSION 4,3,1,0 FILEFLAGSMASK 0x3FL FILEFLAGS 0x00L FILEOS 0x40004L @@ -13,10 +13,10 @@ BEGIN BLOCK "0C0A04E4" BEGIN VALUE "CompanyName", "Rodax Software S.L.\0" - VALUE "FileVersion", "4.2.9.0\0" + VALUE "FileVersion", "4.3.1.0\0" VALUE "InternalName", "FactuGES\0" VALUE "ProductName", "FactuGES\0" - VALUE "ProductVersion", "4.2.9.0\0" + VALUE "ProductVersion", "4.3.1.0\0" END END BLOCK "VarFileInfo" diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res index c0c66b9..0486a30 100644 Binary files a/Source/Cliente/FactuGES.res and b/Source/Cliente/FactuGES.res differ diff --git a/Source/Informes/5/InfAlbaranCliente.fr3 b/Source/Informes/5/InfAlbaranCliente.fr3 index 8b39068..a296dfb 100644 --- a/Source/Informes/5/InfAlbaranCliente.fr3 +++ b/Source/Informes/5/InfAlbaranCliente.fr3 @@ -1,8 +1,8 @@ - + - - + + @@ -10,57 +10,53 @@ - - + + - - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - - - - - - + - + + + + + diff --git a/Source/Informes/5/InfFacturaCliente.fr3 b/Source/Informes/5/InfFacturaCliente.fr3 index 051b6f6..30feb62 100644 --- a/Source/Informes/5/InfFacturaCliente.fr3 +++ b/Source/Informes/5/InfFacturaCliente.fr3 @@ -1,46 +1,48 @@ - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - + + + + + - - - - - - + + + + - + @@ -48,7 +50,7 @@ - + @@ -63,8 +65,8 @@ - - + + diff --git a/Source/Informes/5/InfPedidoCliente.fr3 b/Source/Informes/5/InfPedidoCliente.fr3 index 22eac59..7a9a146 100644 --- a/Source/Informes/5/InfPedidoCliente.fr3 +++ b/Source/Informes/5/InfPedidoCliente.fr3 @@ -1,45 +1,47 @@ - + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Informes/6/InfAlbaranCliente.fr3 b/Source/Informes/6/InfAlbaranCliente.fr3 index eddfb35..89f4efb 100644 --- a/Source/Informes/6/InfAlbaranCliente.fr3 +++ b/Source/Informes/6/InfAlbaranCliente.fr3 @@ -1,65 +1,62 @@ - + - - - + + + - - + + - - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - - - - - + - + + + + + diff --git a/Source/Informes/6/InfFacturaCliente.fr3 b/Source/Informes/6/InfFacturaCliente.fr3 index 2c07ed5..ca9a34c 100644 --- a/Source/Informes/6/InfFacturaCliente.fr3 +++ b/Source/Informes/6/InfFacturaCliente.fr3 @@ -1,45 +1,48 @@ - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - + + + + + - - - - - - + + + + - + @@ -47,7 +50,7 @@ - + @@ -62,8 +65,8 @@ - - + + diff --git a/Source/Informes/6/InfPedidoCliente.fr3 b/Source/Informes/6/InfPedidoCliente.fr3 index 6acff20..8db9804 100644 --- a/Source/Informes/6/InfPedidoCliente.fr3 +++ b/Source/Informes/6/InfPedidoCliente.fr3 @@ -1,47 +1,47 @@ - + - - - + + + - + - + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas index 6ec6c66..6842b2e 100644 --- a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas +++ b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas @@ -54,8 +54,8 @@ type function Print(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false; const VerImprimirPrecios: Boolean = False; const VerImprimirRefProveedor: Boolean = False; const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False): Boolean; - procedure EtiquetasPreview(AAlbaran : IBizAlbaranCliente; Const withRefCliente: Boolean); - procedure EtiquetasPrint(AAlbaran : IBizAlbaranCliente; Const withRefCliente: Boolean); + procedure EtiquetasPreview(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false); + procedure EtiquetasPrint(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false); procedure RecalcularImportes(AAlbaran: IBizAlbaranCliente); function EsModificable(AAlbaran: IBizAlbaranCliente): Boolean; @@ -175,8 +175,8 @@ type function Print(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false; const VerImprimirPrecios: Boolean = False; const VerImprimirRefProveedor: Boolean = False; const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False): Boolean; - procedure EtiquetasPreview(AAlbaran : IBizAlbaranCliente; Const withRefCliente: Boolean); - procedure EtiquetasPrint(AAlbaran : IBizAlbaranCliente; Const withRefCliente: Boolean); + procedure EtiquetasPreview(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false); + procedure EtiquetasPrint(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false); function DarListaAnosAlbaranes: TStringList; procedure FiltrarAno(AAlbaran: IBizAlbaranCliente; ADynWhereDataTable: WideString; const Ano: String); @@ -961,27 +961,72 @@ begin Result := not (AAlbaran.ID_FACTURA > 0); end; -procedure TAlbaranesClienteController.EtiquetasPreview(AAlbaran: IBizAlbaranCliente; Const withRefCliente: Boolean); +procedure TAlbaranesClienteController.EtiquetasPreview(AAlbaran: IBizAlbaranCliente; AllItems: Boolean = false); var AReportController : IAlbaranesClienteReportController; + ID_Albaranes: TIntegerList; begin AReportController := TAlbaranesClienteReportController.Create; + ID_Albaranes := TIntegerList.Create; + try - AReportController.EtiquetasPreview(AAlbaran.ID, withRefCliente); + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with AAlbaran.DataTable do + begin + First; + while not EOF do + begin + ID_Albaranes.Add(AAlbaran.ID); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ID_Albaranes.Add(AAlbaran.ID); + + + AReportController.EtiquetasPreview(ID_Albaranes); + finally AReportController := NIL; + FreeANDNIL(ID_Albaranes); end; end; -procedure TAlbaranesClienteController.EtiquetasPrint(AAlbaran: IBizAlbaranCliente; Const withRefCliente: Boolean); +procedure TAlbaranesClienteController.EtiquetasPrint(AAlbaran: IBizAlbaranCliente; AllItems: Boolean = false); var AReportController : IAlbaranesClienteReportController; + ID_Albaranes: TIntegerList; begin AReportController := TAlbaranesClienteReportController.Create; + ID_Albaranes := TIntegerList.Create; + try - AReportController.EtiquetasPrint(AAlbaran.ID, withRefCliente); + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with AAlbaran.DataTable do + begin + First; + while not EOF do + begin + ID_Albaranes.Add(AAlbaran.ID); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ID_Albaranes.Add(AAlbaran.ID); + + AReportController.EtiquetasPrint(ID_Albaranes); + finally AReportController := NIL; + FreeANDNIL(ID_Albaranes); end; end; diff --git a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas index 8886a8b..f4c0449 100644 --- a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas +++ b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas @@ -16,8 +16,8 @@ type function Print(const AListaID : TIntegerList; const VerImprimirPrecios: Boolean = False; const VerImprimirRefProveedor: Boolean = False; const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False): Boolean; - procedure EtiquetasPreview(const AID : integer; Const withRefCliente: Boolean); - procedure EtiquetasPrint(const AID : integer; Const withRefCliente: Boolean); + procedure EtiquetasPreview(const AListaID : TIntegerList); + procedure EtiquetasPrint(const AListaID : TIntegerList); function ExportToWord(const AID: Integer; const AFileName : String = ''): Boolean; function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean; end; @@ -39,8 +39,8 @@ type const VerImprimirObservaciones: Boolean = False; const VerImprimirIncidencias: Boolean = False): Boolean; function ExportToWord(const AID: Integer; const AFileName : String = ''): Boolean; function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean; - procedure EtiquetasPreview(const AID : integer; const withRefCliente: Boolean); - procedure EtiquetasPrint(const AID : integer; const withRefCliente: Boolean); + procedure EtiquetasPreview(const AListaID : TIntegerList); + procedure EtiquetasPrint(const AListaID : TIntegerList); end; @@ -72,7 +72,7 @@ begin inherited; end; -procedure TAlbaranesClienteReportController.EtiquetasPreview(const AID: integer; const withRefCliente: Boolean); +procedure TAlbaranesClienteReportController.EtiquetasPreview(const AListaID : TIntegerList); var AStream: Binary; AEditor : IEditorAlbaranesClientePreview; @@ -81,7 +81,7 @@ begin ShowHourglassCursor; try - AStream := FDataModule.GetEtiquetas(AID, withRefCliente); + AStream := FDataModule.GetEtiquetas(AListaID); try CreateEditor('EditorAlbaranesClientePreview', IEditorAlbaranesClientePreview, AEditor); if Assigned(AEditor) then @@ -100,7 +100,7 @@ begin end; end; -procedure TAlbaranesClienteReportController.EtiquetasPrint(const AID: integer; const withRefCliente: Boolean); +procedure TAlbaranesClienteReportController.EtiquetasPrint(const AListaID : TIntegerList); var AStream: Binary; AEditor : IEditorAlbaranesClientePreview; @@ -109,7 +109,7 @@ begin ShowHourglassCursor; try - AStream := FDataModule.GetEtiquetas(AID, withRefCliente); + AStream := FDataModule.GetEtiquetas(AListaID); try CreateEditor('EditorAlbaranesClientePreview', IEditorAlbaranesClientePreview, AEditor); if Assigned(AEditor) then diff --git a/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.pas b/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.pas index 8fad8d9..47ea352 100644 --- a/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.pas +++ b/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.pas @@ -40,7 +40,7 @@ type const VerPrecios: Boolean = False; const VerRefProveedor: Boolean = False; const VerObservaciones: Boolean = False; const VerIncidencias: Boolean = False): Binary; function GetRptWordAlbaran(const AID: Integer): Binary; - function GetEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary; + function GetEtiquetas(const ListaID: TIntegerList): Binary; function GetRptPDFAlbaran(const AID: Integer; const VerPrecios: Boolean = False; const VerRefProveedor: Boolean = False; const VerObservaciones: Boolean = False; const VerIncidencias: Boolean = False): Binary; @@ -101,7 +101,7 @@ end; function TDataModuleAlbaranesCliente.GetRptWordAlbaran( const AID: Integer): Binary; begin - Result := (RORemoteService as IsrvAlbaranesCliente).GenerarInformeEnWord(AID) +// Result := (RORemoteService as IsrvAlbaranesCliente).GenerarInformeEnWord(AID) end; function TDataModuleAlbaranesCliente.NewItem: IBizAlbaranCliente; @@ -151,9 +151,13 @@ begin end; end; -function TDataModuleAlbaranesCliente.GetEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary; +function TDataModuleAlbaranesCliente.GetEtiquetas(const ListaID: TIntegerList): Binary; +var + AParam : TIntegerArray; begin - Result := (RORemoteService as IsrvAlbaranesCliente).GenerarInformeEtiquetas(AID, withRefCliente) + AParam := ListaID.ToIntegerArray; + + Result := (RORemoteService as IsrvAlbaranesCliente).GenerarInformeEtiquetas(AParam) end; function TDataModuleAlbaranesCliente.GetItem(const ID: Integer): IBizAlbaranCliente; diff --git a/Source/Modulos/Albaranes de cliente/Model/Data/uIDataModuleAlbaranesClienteReport.pas b/Source/Modulos/Albaranes de cliente/Model/Data/uIDataModuleAlbaranesClienteReport.pas index b17810c..a453fca 100644 --- a/Source/Modulos/Albaranes de cliente/Model/Data/uIDataModuleAlbaranesClienteReport.pas +++ b/Source/Modulos/Albaranes de cliente/Model/Data/uIDataModuleAlbaranesClienteReport.pas @@ -15,7 +15,7 @@ type function GetRptPDFAlbaran(const AID: Integer; const VerPrecios: Boolean = False; const VerRefProveedor: Boolean = False; const VerObservaciones: Boolean = False; const VerIncidencias: Boolean = False): Binary; - function GetEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary; + function GetEtiquetas(const ListaID: TIntegerList): Binary; end; implementation diff --git a/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas b/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas index 8ae60a9..17d9dab 100644 --- a/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas +++ b/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas @@ -110,7 +110,7 @@ type procedure RecuperarNombresAgentes; public - function GenerarEtiquetas(const AID : Integer; withRefCliente: Boolean): Binary; + function GenerarEtiquetas(const ListaID: TIntegerArray): Binary; function GenerarAlbaran(const AListaID : TIntegerArray; const VerPrecios: Boolean; const VerRefProveedor: Boolean; const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary; function GenerarAlbaranEnPDF(const ListaID : TIntegerArray; const VerPrecios: Boolean; const VerRefProveedor: Boolean; const VerObservaciones: Boolean; @@ -254,20 +254,32 @@ begin end; end; -function TRptAlbaranesCliente.GenerarEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary; +function TRptAlbaranesCliente.GenerarEtiquetas(const ListaID: TIntegerArray): Binary; var + i: Integer; AInforme: Variant; begin Result := Binary.Create; + + + + //Vamos generando todos y cada uno de los albaranes recibidos +// for i := 0 to ListaID.Count - 1 do +// _GenerarAlbaran(AListaID.Items[i]); +// frxReport.PreviewPages.SaveToStream(Result); + + + + FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" try tbl_Cabecera.Active := False; tbl_Detalles.Active := False; - tbl_Cabecera.ParamByName('ID').AsInteger := AID; - tbl_Detalles.ParamByName('ID_ALBARAN').AsInteger := AID; + tbl_Cabecera.ParamByName('ID').AsInteger := ListaID.Items[0]; + tbl_Detalles.ParamByName('ID_ALBARAN').AsInteger := ListaID.Items[0]; tbl_Cabecera.Active := True; tbl_Detalles.Active := True; @@ -277,10 +289,6 @@ begin raise Exception.Create (('Error Servidor: GenerarEtiquetas, no encuentra informe ' + rptInforme)); frxReport.LoadFromFile(AInforme, True); - if withRefCliente then - frxReport.Variables.Variables['withRefCliente'] := 1 - else - frxReport.Variables.Variables['withRefCliente'] := 0; frxReport.PrepareReport(False); frxReport.PreviewPages.SaveToStream(Result); diff --git a/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas b/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas index ec547f3..833b119 100644 --- a/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas +++ b/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas @@ -32,7 +32,7 @@ type procedure DARemoteServiceCreate(Sender: TObject); protected { IsrvAlbaranesCliente methods } - function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; + function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; function GenerarInforme(const ListaID: TIntegerArray; const VerPrecios: Boolean; const VerRefProveedor: Boolean; const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary; function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerPrecios: Boolean; const VerRefProveedor: Boolean; const VerObservaciones: Boolean; @@ -113,7 +113,7 @@ begin end; end; -function TsrvAlbaranesCliente.GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; +function TsrvAlbaranesCliente.GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; var AReportGenerator : TRptAlbaranesCliente; begin @@ -121,7 +121,7 @@ begin AReportGenerator := TRptAlbaranesCliente.Create(nil); try - Result := AReportGenerator.GenerarEtiquetas(ID, withRefCliente); + Result := AReportGenerator.GenerarEtiquetas(ListaID); finally FreeAndNIL(AReportGenerator); end; diff --git a/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas b/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas index 6e71c35..057ecdb 100644 --- a/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas +++ b/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas @@ -166,26 +166,35 @@ begin end; procedure TfEditorAlbaranesCliente.actGenerarEtiquetasExecute(Sender: TObject); +var + AAlbaranes: IBizAlbaranCliente; + AllItems: Boolean; begin + AAlbaranes := Nil; + AllItems := False; - inherited; - //Miramos si viene de un pedido previo, si no es asi le preguntamos si desea imprimir la referencia del cliente - if (FAlbaranes.ID_PEDIDO > 0) then - FController.EtiquetasPreview(FAlbaranes, True) - else + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then begin - if (Application.MessageBox('¿El albarán seleccionado no está asociado a un pedido por internet, ¿desea imprimir la referencia del cliente para las etiquetas de este albarán?', 'Atención', MB_YESNO) = IDYES) then - FController.EtiquetasPreview(FAlbaranes, True) - else - FController.EtiquetasPreview(FAlbaranes, False); - end; + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Albaranes as ISeleccionable).SelectedRecords); + AAlbaranes := (Controller as IAlbaranesClienteController).ExtraerSeleccionados(Albaranes) as IBizAlbaranCliente; + end + else + AAlbaranes := Albaranes; + + if Assigned(AAlbaranes) then + FController.EtiquetasPreview(AAlbaranes, AllItems); + + ViewGrid.GotoFirst; end; procedure TfEditorAlbaranesCliente.actGenerarEtiquetasUpdate(Sender: TObject); begin inherited; (Sender as TAction).Enabled := HayDatos - and not (ViewGrid.NumSeleccionados > 1) +// and not (ViewGrid.NumSeleccionados > 1) and ViewGrid.esSeleccionCeldaDatos; end; diff --git a/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas b/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas index 63204fa..f293695 100644 --- a/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas +++ b/Source/Modulos/Albaranes de proveedor/Data/uDataModuleAlbaranesProveedor.pas @@ -102,8 +102,7 @@ function TDataModuleAlbaranesProveedor.GetRptWordAlbaran(const AID: Integer; const ImprimirPrecio: Boolean = True; const ImprimirRefProveedor: Boolean = True): Binary; begin - Result := (RORemoteService as IsrvAlbaranesProveedor).GenerarInformeEnWord(AID, - ImprimirPrecio, ImprimirRefProveedor); +// Result := (RORemoteService as IsrvAlbaranesProveedor).GenerarInformeEnWord(AID, ImprimirPrecio, ImprimirRefProveedor); end; function TDataModuleAlbaranesProveedor.NewItem: IBizAlbaranProveedor; diff --git a/Source/Modulos/Articulos/Views/uEditorArticulo.pas b/Source/Modulos/Articulos/Views/uEditorArticulo.pas index fd7f48d..c95a6e7 100644 --- a/Source/Modulos/Articulos/Views/uEditorArticulo.pas +++ b/Source/Modulos/Articulos/Views/uEditorArticulo.pas @@ -89,10 +89,20 @@ begin end; procedure TfEditorArticulo.GuardarInterno; +var + bGuardar: Boolean; begin inherited; - FController.Guardar(FArticulo); - Modified := False; + bGuardar := True; + + if (FArticulo.ID_PROVEEDOR = 0) then + bGuardar := (Application.MessageBox('El artículo no tiene proveedor asignado, ¿Esta seguro que desea continuar?', 'Atención', MB_YESNO) = IDYES); + + if bGuardar then + begin + FController.Guardar(FArticulo); + Modified := False; + end; end; procedure TfEditorArticulo.PonerTitulos(const ATitulo: string); diff --git a/Source/Modulos/Contactos/Controller/uClientesController.pas b/Source/Modulos/Contactos/Controller/uClientesController.pas index a257ee8..e57dc60 100644 --- a/Source/Modulos/Contactos/Controller/uClientesController.pas +++ b/Source/Modulos/Contactos/Controller/uClientesController.pas @@ -19,7 +19,7 @@ type function Eliminar(ACliente: IBizContacto; AllItems: Boolean = false): Boolean; overload; procedure Preview(ACliente : IBizCliente; AllItems: Boolean = false); procedure Print(ACliente : IBizCliente; AllItems: Boolean = false); - procedure VerPresupuestosDeCliente(ACliente : IBizCliente); + procedure VerPedidosDeCliente(ACliente : IBizCliente); procedure VerAlbaranesDeCliente(ACliente : IBizCliente); procedure VerFacturasDeCliente(ACliente : IBizCliente); procedure VerRecibosDeCliente(ACliente : IBizCliente); @@ -52,7 +52,7 @@ type function Eliminar(ACliente: IBizContacto; AllItems: Boolean = false): Boolean; overload; procedure Preview(ACliente : IBizCliente; AllItems: Boolean = false); procedure Print(ACliente : IBizCliente; AllItems: Boolean = false); - procedure VerPresupuestosDeCliente(ACliente : IBizCliente); + procedure VerPedidosDeCliente(ACliente : IBizCliente); procedure VerAlbaranesDeCliente(ACliente : IBizCliente); procedure VerFacturasDeCliente(ACliente : IBizCliente); procedure VerRecibosDeCliente(ACliente : IBizCliente); @@ -478,22 +478,22 @@ begin end; end; -procedure TClientesController.VerPresupuestosDeCliente(ACliente : IBizCliente); +procedure TClientesController.VerPedidosDeCliente(ACliente : IBizCliente); var AModule : TModuleController; - APlugin : IMCPresupuestosCliente; + APlugin : IMCPedidosCliente; begin if not Assigned(ACliente) then - raise Exception.Create ('Cliente no asignado (VerPresupuestosDeCliente)'); + raise Exception.Create ('Cliente no asignado (VerPedidosDeCliente)'); if not ACliente.DataTable.Active then ACliente.DataTable.Active := True; - AModule := AppFactuGES.GetModule(MODULENAME_PRESUPUESTOS_CLIENTE); + AModule := AppFactuGES.GetModule(MODULENAME_PEDIDOS_CLIENTE); if Assigned(AModule) then try - if Supports(AModule, IMCPresupuestosCliente, APlugin) then - APlugin.VerPresupuestos(ACliente.ID, ACliente.NOMBRE); + if Supports(AModule, IMCPedidosCliente, APlugin) then + APlugin.VerPedidos(ACliente.ID, ACliente.NOMBRE); finally APlugin := NIL; end; diff --git a/Source/Modulos/Contactos/Views/uEditorAgente.dfm b/Source/Modulos/Contactos/Views/uEditorAgente.dfm index 36f6840..2310a6b 100644 --- a/Source/Modulos/Contactos/Views/uEditorAgente.dfm +++ b/Source/Modulos/Contactos/Views/uEditorAgente.dfm @@ -82,7 +82,7 @@ inherited fEditorAgente: TfEditorAgente ImageIndex = 22 Visible = False object TBXItem36: TTBXItem - Action = actDocumentosPresupuestos + Action = actDocumentosPedidos end object TBXItem35: TTBXItem Action = actDocumentosAlbaranes @@ -114,7 +114,7 @@ inherited fEditorAgente: TfEditorAgente Caption = 'Documentos relacionados' ImageIndex = 22 object TBXItem39: TTBXItem - Action = actDocumentosPresupuestos + Action = actDocumentosPedidos end object TBXItem38: TTBXItem Action = actDocumentosAlbaranes @@ -309,8 +309,6 @@ inherited fEditorAgente: TfEditorAgente inherited frViewClienteDatosBancarios1: TfrViewClienteDatosBancarios Width = 856 Height = 586 - ExplicitLeft = 0 - ExplicitTop = 0 ExplicitWidth = 856 ExplicitHeight = 586 inherited dxLayoutControl1: TdxLayoutControl @@ -365,18 +363,6 @@ inherited fEditorAgente: TfEditorAgente inherited ToolBar1: TToolBar Width = 856 ExplicitWidth = 856 - inherited ToolButton1: TToolButton - ExplicitWidth = 113 - end - inherited ToolButton4: TToolButton - ExplicitWidth = 113 - end - inherited ToolButton2: TToolButton - ExplicitWidth = 113 - end - inherited ToolButton7: TToolButton - ExplicitWidth = 113 - end end end end @@ -398,6 +384,18 @@ inherited fEditorAgente: TfEditorAgente inherited ToolBar1: TToolBar Width = 856 ExplicitWidth = 856 + inherited ToolButton1: TToolButton + ExplicitWidth = 62 + end + inherited ToolButton4: TToolButton + ExplicitWidth = 74 + end + inherited ToolButton2: TToolButton + ExplicitWidth = 67 + end + inherited ToolButton7: TToolButton + ExplicitWidth = 117 + end end end end @@ -500,18 +498,6 @@ inherited fEditorAgente: TfEditorAgente inherited ToolBar1: TToolBar Width = 856 ExplicitWidth = 856 - inherited ToolButton1: TToolButton - ExplicitWidth = 113 - end - inherited ToolButton4: TToolButton - ExplicitWidth = 113 - end - inherited ToolButton2: TToolButton - ExplicitWidth = 113 - end - inherited ToolButton7: TToolButton - ExplicitWidth = 113 - end end inherited tbxFiltro: TTBXToolbar Width = 856 @@ -550,11 +536,11 @@ inherited fEditorAgente: TfEditorAgente ImageIndex = 25 OnExecute = actDocumentosFacturasExecute end - object actDocumentosPresupuestos: TAction + object actDocumentosPedidos: TAction Category = 'Acciones' - Caption = 'Presupuestos' + Caption = 'Pedidos' ImageIndex = 23 - OnExecute = actDocumentosPresupuestosExecute + OnExecute = actDocumentosPedidosExecute end object actDocumentosAlbaranes: TAction Category = 'Acciones' diff --git a/Source/Modulos/Contactos/Views/uEditorAgente.pas b/Source/Modulos/Contactos/Views/uEditorAgente.pas index 7defad9..2946930 100644 --- a/Source/Modulos/Contactos/Views/uEditorAgente.pas +++ b/Source/Modulos/Contactos/Views/uEditorAgente.pas @@ -28,7 +28,7 @@ type TBXSubmenuItem3: TTBXSubmenuItem; TBXItem33: TTBXItem; TBXSeparatorItem6: TTBXSeparatorItem; - actDocumentosPresupuestos: TAction; + actDocumentosPedidos: TAction; actDocumentosAlbaranes: TAction; actDocumentosFacturas: TAction; TBXSubmenuItem8: TTBXSubmenuItem; @@ -50,7 +50,7 @@ type procedure FormShow(Sender: TObject); procedure actGruposClienteExecute(Sender: TObject); procedure actDocumentosFacturasExecute(Sender: TObject); - procedure actDocumentosPresupuestosExecute(Sender: TObject); + procedure actDocumentosPedidosExecute(Sender: TObject); procedure actDocumentosAlbaranesExecute(Sender: TObject); procedure actDocumentosRecibosExecute(Sender: TObject); @@ -88,10 +88,10 @@ begin (FController as IClientesController).VerFacturasDeCliente(IBizCliente(FContacto)); end; -procedure TfEditorAgente.actDocumentosPresupuestosExecute(Sender: TObject); +procedure TfEditorAgente.actDocumentosPedidosExecute(Sender: TObject); begin inherited; - (FController as IClientesController).VerPresupuestosDeCliente(IBizCliente(FContacto)); + (FController as IClientesController).VerPedidosDeCliente(IBizCliente(FContacto)); end; procedure TfEditorAgente.actDocumentosRecibosExecute(Sender: TObject); diff --git a/Source/Modulos/Contactos/Views/uEditorCliente.dfm b/Source/Modulos/Contactos/Views/uEditorCliente.dfm index 19b0744..e88d7dd 100644 --- a/Source/Modulos/Contactos/Views/uEditorCliente.dfm +++ b/Source/Modulos/Contactos/Views/uEditorCliente.dfm @@ -72,7 +72,7 @@ inherited fEditorCliente: TfEditorCliente DropdownCombo = True ImageIndex = 22 object TBXItem36: TTBXItem - Action = actDocumentosPresupuestos + Action = actDocumentosPedidos end object TBXItem35: TTBXItem Action = actDocumentosAlbaranes @@ -104,7 +104,7 @@ inherited fEditorCliente: TfEditorCliente Caption = 'Documentos relacionados' ImageIndex = 22 object TBXItem39: TTBXItem - Action = actDocumentosPresupuestos + Action = actDocumentosPedidos end object TBXItem38: TTBXItem Action = actDocumentosAlbaranes @@ -784,11 +784,11 @@ inherited fEditorCliente: TfEditorCliente ImageIndex = 25 OnExecute = actDocumentosFacturasExecute end - object actDocumentosPresupuestos: TAction + object actDocumentosPedidos: TAction Category = 'Acciones' - Caption = 'Presupuestos' + Caption = 'Pedidos' ImageIndex = 23 - OnExecute = actDocumentosPresupuestosExecute + OnExecute = actDocumentosPedidosExecute end object actDocumentosAlbaranes: TAction Category = 'Acciones' diff --git a/Source/Modulos/Contactos/Views/uEditorCliente.pas b/Source/Modulos/Contactos/Views/uEditorCliente.pas index 21e7520..9b9084e 100644 --- a/Source/Modulos/Contactos/Views/uEditorCliente.pas +++ b/Source/Modulos/Contactos/Views/uEditorCliente.pas @@ -33,7 +33,7 @@ type TBXSubmenuItem3: TTBXSubmenuItem; TBXItem33: TTBXItem; TBXSeparatorItem6: TTBXSeparatorItem; - actDocumentosPresupuestos: TAction; + actDocumentosPedidos: TAction; actDocumentosAlbaranes: TAction; actDocumentosFacturas: TAction; TBXSubmenuItem8: TTBXSubmenuItem; @@ -50,7 +50,7 @@ type procedure FormShow(Sender: TObject); procedure actGruposClienteExecute(Sender: TObject); procedure actDocumentosFacturasExecute(Sender: TObject); - procedure actDocumentosPresupuestosExecute(Sender: TObject); + procedure actDocumentosPedidosExecute(Sender: TObject); procedure actDocumentosAlbaranesExecute(Sender: TObject); procedure actDocumentosRecibosExecute(Sender: TObject); protected @@ -83,10 +83,10 @@ begin (FController as IClientesController).VerFacturasDeCliente(IBizCliente(FContacto)); end; -procedure TfEditorCliente.actDocumentosPresupuestosExecute(Sender: TObject); +procedure TfEditorCliente.actDocumentosPedidosExecute(Sender: TObject); begin inherited; - (FController as IClientesController).VerPresupuestosDeCliente(IBizCliente(FContacto)); + (FController as IClientesController).VerPedidosDeCliente(IBizCliente(FContacto)); end; procedure TfEditorCliente.actDocumentosRecibosExecute(Sender: TObject); diff --git a/Source/Modulos/Contactos/Views/uEditorClientes.dfm b/Source/Modulos/Contactos/Views/uEditorClientes.dfm index 1145a76..28daa02 100644 --- a/Source/Modulos/Contactos/Views/uEditorClientes.dfm +++ b/Source/Modulos/Contactos/Views/uEditorClientes.dfm @@ -60,7 +60,7 @@ inherited fEditorClientes: TfEditorClientes ImageIndex = 24 Images = SmallImages object TBXItem43: TTBXItem - Action = actDocumentosPresupuestos + Action = actDocumentosPedidos end object TBXItem42: TTBXItem Action = actDocumentosAlbaranes @@ -89,7 +89,7 @@ inherited fEditorClientes: TfEditorClientes ImageIndex = 24 Images = SmallImages object TBXItem40: TTBXItem - Action = actDocumentosPresupuestos + Action = actDocumentosPedidos end object TBXItem39: TTBXItem Action = actDocumentosAlbaranes @@ -138,6 +138,19 @@ inherited fEditorClientes: TfEditorClientes ExplicitWidth = 857 ExplicitHeight = 270 inherited cxGridView: TcxGridDBTableView + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = '0 clientes' + Kind = skCount + Position = spFooter + Column = frViewClientes1.cxGridViewREFERENCIA + end> + DataController.Summary.FooterSummaryItems = < + item + Format = '0 clientes' + Kind = skCount + Column = frViewClientes1.cxGridViewREFERENCIA + end> end end inherited frViewFiltroBase1: TfrViewFiltroBase @@ -254,11 +267,11 @@ inherited fEditorClientes: TfEditorClientes Enabled = True Visible = True end - object actDocumentosPresupuestos: TAction + object actDocumentosPedidos: TAction Category = 'Acciones' - Caption = 'Presupuestos' + Caption = 'Pedidos' ImageIndex = 25 - OnExecute = actDocumentosPresupuestosExecute + OnExecute = actDocumentosPedidosExecute OnUpdate = actDocumentosFacturasUpdate end object actDocumentosAlbaranes: TAction @@ -2208,7 +2221,7 @@ inherited fEditorClientes: TfEditorClientes Caption = 'Documentos relacionados' ImageIndex = 24 object Presupuestos1: TMenuItem - Action = actDocumentosPresupuestos + Action = actDocumentosPedidos end object Albaranes1: TMenuItem Action = actDocumentosAlbaranes diff --git a/Source/Modulos/Contactos/Views/uEditorClientes.pas b/Source/Modulos/Contactos/Views/uEditorClientes.pas index 732f28c..61acb76 100644 --- a/Source/Modulos/Contactos/Views/uEditorClientes.pas +++ b/Source/Modulos/Contactos/Views/uEditorClientes.pas @@ -21,7 +21,7 @@ type actGruposCliente: TAction; JsListaContactosNoEliminados: TJSDialog; frViewClientes1: TfrViewClientes; - actDocumentosPresupuestos: TAction; + actDocumentosPedidos: TAction; actDocumentosAlbaranes: TAction; actDocumentosFacturas: TAction; TBXItem381: TTBXItem; @@ -44,7 +44,7 @@ type TBXItem45: TTBXItem; procedure actGruposClienteExecute(Sender: TObject); procedure actDocumentosFacturasUpdate(Sender: TObject); - procedure actDocumentosPresupuestosExecute(Sender: TObject); + procedure actDocumentosPedidosExecute(Sender: TObject); procedure actDocumentosFacturasExecute(Sender: TObject); procedure actDocumentosAlbaranesExecute(Sender: TObject); procedure actDocumentosRecibosExecute(Sender: TObject); @@ -90,10 +90,10 @@ begin and ViewGrid.EsSeleccionCeldaDatos end; -procedure TfEditorClientes.actDocumentosPresupuestosExecute(Sender: TObject); +procedure TfEditorClientes.actDocumentosPedidosExecute(Sender: TObject); begin inherited; - (FController as IClientesController).VerPresupuestosDeCliente(IBizCliente(FContactos)); + (FController as IClientesController).VerPedidosDeCliente(IBizCliente(FContactos)); end; procedure TfEditorClientes.actDocumentosRecibosExecute(Sender: TObject); diff --git a/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas index cf147e4..fba2cc0 100644 --- a/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas +++ b/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas @@ -81,7 +81,7 @@ end; function TDataModuleFacturasCliente.GetRptWordFactura(const AID: Integer; const VerSello: Boolean = True): Binary; begin - Result := (RORemoteService as IsrvFacturasCliente).GenerarInformeEnWord(AID, VerSello) +// Result := (RORemoteService as IsrvFacturasCliente).GenerarInformeEnWord(AID, VerSello) end; function TDataModuleFacturasCliente.NewItem: IBizFacturaCliente; diff --git a/Source/Modulos/Informe margen por articulo/Data/InfMargenArticulo_data.drc b/Source/Modulos/Informe margen por articulo/Data/InfMargenArticulo_data.drc index d4884fc..b0a7b04 100644 --- a/Source/Modulos/Informe margen por articulo/Data/InfMargenArticulo_data.drc +++ b/Source/Modulos/Informe margen por articulo/Data/InfMargenArticulo_data.drc @@ -14,4 +14,4 @@ END /* C:\Codigo\Source\Modulos\Informe margen por articulo\Data\uDataModuleInfMargenArticulo.dfm */ /* C:\Codigo\Source\Modulos\Informe margen por articulo\Data\InfMargenArticulo_data.res */ -/* c:\temp\dtf98.tmp */ +/* c:\temp\dtf843.tmp */ diff --git a/Source/Modulos/Informe margen por articulo/Model/InfMargenArticulo_model.drc b/Source/Modulos/Informe margen por articulo/Model/InfMargenArticulo_model.drc index 7cd8140..7997e59 100644 --- a/Source/Modulos/Informe margen por articulo/Model/InfMargenArticulo_model.drc +++ b/Source/Modulos/Informe margen por articulo/Model/InfMargenArticulo_model.drc @@ -13,4 +13,4 @@ BEGIN END /* C:\Codigo\Source\Modulos\Informe margen por articulo\Model\InfMargenArticulo_model.res */ -/* c:\temp\dtf96.tmp */ +/* c:\temp\dtf841.tmp */ diff --git a/Source/Modulos/Informe margen por articulo/Views/InfMargenArticulo_view.drc b/Source/Modulos/Informe margen por articulo/Views/InfMargenArticulo_view.drc index 2a1fd0e..ea461e5 100644 --- a/Source/Modulos/Informe margen por articulo/Views/InfMargenArticulo_view.drc +++ b/Source/Modulos/Informe margen por articulo/Views/InfMargenArticulo_view.drc @@ -16,4 +16,4 @@ END /* C:\Codigo\Source\Modulos\Informe margen por articulo\Views\uViewInfMargenArticulo.dfm */ /* C:\Codigo\Source\Modulos\Informe margen por articulo\Views\uEditorInfMargenArticulo.dfm */ /* C:\Codigo\Source\Modulos\Informe margen por articulo\Views\InfMargenArticulo_view.res */ -/* c:\temp\dtf9C.tmp */ +/* c:\temp\dtf847.tmp */ diff --git a/Source/Modulos/Informe ventas por articulo/Data/InfVentasArticulo_data.drc b/Source/Modulos/Informe ventas por articulo/Data/InfVentasArticulo_data.drc index 5611266..5383ab1 100644 --- a/Source/Modulos/Informe ventas por articulo/Data/InfVentasArticulo_data.drc +++ b/Source/Modulos/Informe ventas por articulo/Data/InfVentasArticulo_data.drc @@ -14,4 +14,4 @@ END /* C:\Codigo\Source\Modulos\Informe ventas por articulo\Data\uDataModuleInfVentasArticulo.dfm */ /* C:\Codigo\Source\Modulos\Informe ventas por articulo\Data\InfVentasArticulo_data.res */ -/* c:\temp\dtf8E.tmp */ +/* c:\temp\dtf839.tmp */ diff --git a/Source/Modulos/Informe ventas por articulo/Model/InfVentasArticulo_model.drc b/Source/Modulos/Informe ventas por articulo/Model/InfVentasArticulo_model.drc index b01c9d4..8d9e567 100644 --- a/Source/Modulos/Informe ventas por articulo/Model/InfVentasArticulo_model.drc +++ b/Source/Modulos/Informe ventas por articulo/Model/InfVentasArticulo_model.drc @@ -13,4 +13,4 @@ BEGIN END /* C:\Codigo\Source\Modulos\Informe ventas por articulo\Model\InfVentasArticulo_model.res */ -/* c:\temp\dtf8C.tmp */ +/* c:\temp\dtf837.tmp */ diff --git a/Source/Modulos/Informe ventas por articulo/Views/InfVentasArticulo_view.drc b/Source/Modulos/Informe ventas por articulo/Views/InfVentasArticulo_view.drc index 72e432b..d3a0c2d 100644 --- a/Source/Modulos/Informe ventas por articulo/Views/InfVentasArticulo_view.drc +++ b/Source/Modulos/Informe ventas por articulo/Views/InfVentasArticulo_view.drc @@ -19,4 +19,4 @@ END /* C:\Codigo\Source\Modulos\Informe ventas por articulo\Views\uViewInfVentasAlbArticulo.dfm */ /* C:\Codigo\Source\Modulos\Informe ventas por articulo\Views\uEditorInfVentasAlbArticulo.dfm */ /* C:\Codigo\Source\Modulos\Informe ventas por articulo\Views\InfVentasArticulo_view.res */ -/* c:\temp\dtf92.tmp */ +/* c:\temp\dtf83D.tmp */ diff --git a/Source/Modulos/Informes base/Controller/InformesBase_controller.drc b/Source/Modulos/Informes base/Controller/InformesBase_controller.drc index b413b3c..10978d0 100644 --- a/Source/Modulos/Informes base/Controller/InformesBase_controller.drc +++ b/Source/Modulos/Informes base/Controller/InformesBase_controller.drc @@ -13,4 +13,4 @@ BEGIN END /* C:\Codigo\Source\Modulos\Informes base\Controller\InformesBase_controller.res */ -/* c:\temp\dtf82.tmp */ +/* c:\temp\dtf82D.tmp */ diff --git a/Source/Modulos/Informes base/Data/Informes_data.drc b/Source/Modulos/Informes base/Data/Informes_data.drc index 8c710d5..84bf41f 100644 --- a/Source/Modulos/Informes base/Data/Informes_data.drc +++ b/Source/Modulos/Informes base/Data/Informes_data.drc @@ -14,4 +14,4 @@ END /* C:\Codigo\Source\Modulos\Informes base\Data\uDataModuleInformes.dfm */ /* C:\Codigo\Source\Modulos\Informes base\Data\Informes_data.res */ -/* c:\temp\dtf7E.tmp */ +/* c:\temp\dtf829.tmp */ diff --git a/Source/Modulos/Informes base/Model/Informes_model.drc b/Source/Modulos/Informes base/Model/Informes_model.drc index 221c9b2..b55c4d7 100644 --- a/Source/Modulos/Informes base/Model/Informes_model.drc +++ b/Source/Modulos/Informes base/Model/Informes_model.drc @@ -13,4 +13,4 @@ BEGIN END /* C:\Codigo\Source\Modulos\Informes base\Model\Informes_model.res */ -/* c:\temp\dtf7C.tmp */ +/* c:\temp\dtf827.tmp */ diff --git a/Source/Modulos/Informes base/Views/Informes_view.drc b/Source/Modulos/Informes base/Views/Informes_view.drc index d8fa450..7d98190 100644 --- a/Source/Modulos/Informes base/Views/Informes_view.drc +++ b/Source/Modulos/Informes base/Views/Informes_view.drc @@ -15,4 +15,4 @@ END /* C:\Codigo\Source\Modulos\Informes base\Views\uViewInformes.dfm */ /* C:\Codigo\Source\Modulos\Informes base\Views\uEditorInformes.dfm */ /* C:\Codigo\Source\Modulos\Informes base\Views\Informes_view.res */ -/* c:\temp\dtf86.tmp */ +/* c:\temp\dtf831.tmp */ diff --git a/Source/Modulos/Pedidos a proveedor/Data/uDataModulePedidosProveedor.dfm b/Source/Modulos/Pedidos a proveedor/Data/uDataModulePedidosProveedor.dfm index 6c19862..ee68c8e 100644 --- a/Source/Modulos/Pedidos a proveedor/Data/uDataModulePedidosProveedor.dfm +++ b/Source/Modulos/Pedidos a proveedor/Data/uDataModulePedidosProveedor.dfm @@ -234,6 +234,11 @@ inherited DataModulePedidosProveedor: TDataModulePedidosProveedor ServerAutoRefresh = True DictionaryEntry = 'PedidosProveedor_REF_PED_CLIENTE' end + item + Name = 'REFERENCIA_CLIENTE' + DataType = datString + Size = 255 + end item Name = 'IMPORTE_NETO' DataType = datCurrency diff --git a/Source/Modulos/Pedidos a proveedor/Data/uDataModulePedidosProveedor.pas b/Source/Modulos/Pedidos a proveedor/Data/uDataModulePedidosProveedor.pas index 4aae065..faad2ec 100644 --- a/Source/Modulos/Pedidos a proveedor/Data/uDataModulePedidosProveedor.pas +++ b/Source/Modulos/Pedidos a proveedor/Data/uDataModulePedidosProveedor.pas @@ -111,8 +111,8 @@ function TDataModulePedidosProveedor.GetRptWordPedido( const AID: Integer; const ImprimirPrecio: Boolean = True; const ImprimirRefProveedor: Boolean = True): Binary; begin - Result := (RORemoteService as IsrvPedidosProveedor).GenerarInformeEnWord(AID, - ImprimirPrecio, ImprimirRefProveedor); +// Result := (RORemoteService as IsrvPedidosProveedor).GenerarInformeEnWord(AID, +// ImprimirPrecio, ImprimirRefProveedor); end; function TDataModulePedidosProveedor.NewItem: IBizPedidoProveedor; diff --git a/Source/Modulos/Pedidos a proveedor/Model/schPedidosProveedorClient_Intf.pas b/Source/Modulos/Pedidos a proveedor/Model/schPedidosProveedorClient_Intf.pas index cf06220..e6ef996 100644 --- a/Source/Modulos/Pedidos a proveedor/Model/schPedidosProveedorClient_Intf.pas +++ b/Source/Modulos/Pedidos a proveedor/Model/schPedidosProveedorClient_Intf.pas @@ -9,10 +9,10 @@ const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosPedidos = '{0CF426F5-0E7A-4D31-B771-4F0EB05D0996}'; - RID_PedidosProveedor = '{B9580F94-5437-478A-90F5-3D27A6CFFDA1}'; - RID_PedidosProveedor_Detalles = '{0A1F339A-A148-4057-B7E2-89076A2F465F}'; - RID_PedidosProveedor_Articulos_Pendientes = '{D6F47337-9293-44B1-BFFA-48F19BD0E00E}'; + RID_ListaAnosPedidos = '{635625C8-D72D-4D12-9B57-638A5788C270}'; + RID_PedidosProveedor = '{58CBD283-42B3-4063-8975-7B6FA85D1830}'; + RID_PedidosProveedor_Detalles = '{4B8364C5-2E99-499C-A908-A481EA53196E}'; + RID_PedidosProveedor_Articulos_Pendientes = '{216A742F-57E6-4005-83DC-AFFD66A523AD}'; { Data table names } nme_ListaAnosPedidos = 'ListaAnosPedidos'; @@ -59,6 +59,7 @@ const fld_PedidosProveedorUSUARIO = 'USUARIO'; fld_PedidosProveedorID_PEDIDO_CLIENTE = 'ID_PEDIDO_CLIENTE'; fld_PedidosProveedorREF_PED_CLIENTE = 'REF_PED_CLIENTE'; + fld_PedidosProveedorREFERENCIA_CLIENTE = 'REFERENCIA_CLIENTE'; fld_PedidosProveedorIMPORTE_NETO = 'IMPORTE_NETO'; fld_PedidosProveedorIMPORTE_PORTE = 'IMPORTE_PORTE'; fld_PedidosProveedorDESCUENTO = 'DESCUENTO'; @@ -105,18 +106,19 @@ const idx_PedidosProveedorUSUARIO = 29; idx_PedidosProveedorID_PEDIDO_CLIENTE = 30; idx_PedidosProveedorREF_PED_CLIENTE = 31; - idx_PedidosProveedorIMPORTE_NETO = 32; - idx_PedidosProveedorIMPORTE_PORTE = 33; - idx_PedidosProveedorDESCUENTO = 34; - idx_PedidosProveedorIMPORTE_DESCUENTO = 35; - idx_PedidosProveedorBASE_IMPONIBLE = 36; - idx_PedidosProveedorIVA = 37; - idx_PedidosProveedorIMPORTE_IVA = 38; - idx_PedidosProveedorID_FORMA_PAGO = 39; - idx_PedidosProveedorID_FACTURA = 40; - idx_PedidosProveedorREF_FACTURA_PROV = 41; - idx_PedidosProveedorNUM_COPIAS = 42; - idx_PedidosProveedorNUM_CORREOS = 43; + idx_PedidosProveedorREFERENCIA_CLIENTE = 32; + idx_PedidosProveedorIMPORTE_NETO = 33; + idx_PedidosProveedorIMPORTE_PORTE = 34; + idx_PedidosProveedorDESCUENTO = 35; + idx_PedidosProveedorIMPORTE_DESCUENTO = 36; + idx_PedidosProveedorBASE_IMPONIBLE = 37; + idx_PedidosProveedorIVA = 38; + idx_PedidosProveedorIMPORTE_IVA = 39; + idx_PedidosProveedorID_FORMA_PAGO = 40; + idx_PedidosProveedorID_FACTURA = 41; + idx_PedidosProveedorREF_FACTURA_PROV = 42; + idx_PedidosProveedorNUM_COPIAS = 43; + idx_PedidosProveedorNUM_CORREOS = 44; { PedidosProveedor_Detalles fields } fld_PedidosProveedor_DetallesID = 'ID'; @@ -173,7 +175,7 @@ const type { IListaAnosPedidos } IListaAnosPedidos = interface(IDAStronglyTypedDataTable) - ['{B738AA83-D8BD-4C38-98CD-DD28E31C9858}'] + ['{908891AE-AD5B-4BE0-9B4A-E7DC5049478B}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -208,7 +210,7 @@ type { IPedidosProveedor } IPedidosProveedor = interface(IDAStronglyTypedDataTable) - ['{78E9FF8F-05A2-4515-9C75-BB069DAF094B}'] + ['{0FDFA1C6-129E-4578-B028-76E752BCB8CF}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -336,6 +338,10 @@ type procedure SetREF_PED_CLIENTEValue(const aValue: String); function GetREF_PED_CLIENTEIsNull: Boolean; procedure SetREF_PED_CLIENTEIsNull(const aValue: Boolean); + function GetREFERENCIA_CLIENTEValue: String; + procedure SetREFERENCIA_CLIENTEValue(const aValue: String); + function GetREFERENCIA_CLIENTEIsNull: Boolean; + procedure SetREFERENCIA_CLIENTEIsNull(const aValue: Boolean); function GetIMPORTE_NETOValue: Currency; procedure SetIMPORTE_NETOValue(const aValue: Currency); function GetIMPORTE_NETOIsNull: Boolean; @@ -451,6 +457,8 @@ type property ID_PEDIDO_CLIENTEIsNull: Boolean read GetID_PEDIDO_CLIENTEIsNull write SetID_PEDIDO_CLIENTEIsNull; property REF_PED_CLIENTE: String read GetREF_PED_CLIENTEValue write SetREF_PED_CLIENTEValue; property REF_PED_CLIENTEIsNull: Boolean read GetREF_PED_CLIENTEIsNull write SetREF_PED_CLIENTEIsNull; + property REFERENCIA_CLIENTE: String read GetREFERENCIA_CLIENTEValue write SetREFERENCIA_CLIENTEValue; + property REFERENCIA_CLIENTEIsNull: Boolean read GetREFERENCIA_CLIENTEIsNull write SetREFERENCIA_CLIENTEIsNull; property IMPORTE_NETO: Currency read GetIMPORTE_NETOValue write SetIMPORTE_NETOValue; property IMPORTE_NETOIsNull: Boolean read GetIMPORTE_NETOIsNull write SetIMPORTE_NETOIsNull; property IMPORTE_PORTE: Currency read GetIMPORTE_PORTEValue write SetIMPORTE_PORTEValue; @@ -612,6 +620,10 @@ type procedure SetREF_PED_CLIENTEValue(const aValue: String); virtual; function GetREF_PED_CLIENTEIsNull: Boolean; virtual; procedure SetREF_PED_CLIENTEIsNull(const aValue: Boolean); virtual; + function GetREFERENCIA_CLIENTEValue: String; virtual; + procedure SetREFERENCIA_CLIENTEValue(const aValue: String); virtual; + function GetREFERENCIA_CLIENTEIsNull: Boolean; virtual; + procedure SetREFERENCIA_CLIENTEIsNull(const aValue: Boolean); virtual; function GetIMPORTE_NETOValue: Currency; virtual; procedure SetIMPORTE_NETOValue(const aValue: Currency); virtual; function GetIMPORTE_NETOIsNull: Boolean; virtual; @@ -726,6 +738,8 @@ type property ID_PEDIDO_CLIENTEIsNull: Boolean read GetID_PEDIDO_CLIENTEIsNull write SetID_PEDIDO_CLIENTEIsNull; property REF_PED_CLIENTE: String read GetREF_PED_CLIENTEValue write SetREF_PED_CLIENTEValue; property REF_PED_CLIENTEIsNull: Boolean read GetREF_PED_CLIENTEIsNull write SetREF_PED_CLIENTEIsNull; + property REFERENCIA_CLIENTE: String read GetREFERENCIA_CLIENTEValue write SetREFERENCIA_CLIENTEValue; + property REFERENCIA_CLIENTEIsNull: Boolean read GetREFERENCIA_CLIENTEIsNull write SetREFERENCIA_CLIENTEIsNull; property IMPORTE_NETO: Currency read GetIMPORTE_NETOValue write SetIMPORTE_NETOValue; property IMPORTE_NETOIsNull: Boolean read GetIMPORTE_NETOIsNull write SetIMPORTE_NETOIsNull; property IMPORTE_PORTE: Currency read GetIMPORTE_PORTEValue write SetIMPORTE_PORTEValue; @@ -759,7 +773,7 @@ type { IPedidosProveedor_Detalles } IPedidosProveedor_Detalles = interface(IDAStronglyTypedDataTable) - ['{E2F0E04D-0D79-474B-A2E9-32934B613F97}'] + ['{15F9DCB0-65A0-49DF-A820-EAC0A86FC9A8}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -974,7 +988,7 @@ type { IPedidosProveedor_Articulos_Pendientes } IPedidosProveedor_Articulos_Pendientes = interface(IDAStronglyTypedDataTable) - ['{7F61AF69-4E60-41A2-9429-E67F707C289C}'] + ['{FCC15986-D146-4D07-9E5E-ACFDE2998EC9}'] { Property getters and setters } function GetID_PEDIDOValue: Integer; procedure SetID_PEDIDOValue(const aValue: Integer); @@ -1799,6 +1813,27 @@ begin DataTable.Fields[idx_PedidosProveedorREF_PED_CLIENTE].AsVariant := Null; end; +function TPedidosProveedorDataTableRules.GetREFERENCIA_CLIENTEValue: String; +begin + result := DataTable.Fields[idx_PedidosProveedorREFERENCIA_CLIENTE].AsString; +end; + +procedure TPedidosProveedorDataTableRules.SetREFERENCIA_CLIENTEValue(const aValue: String); +begin + DataTable.Fields[idx_PedidosProveedorREFERENCIA_CLIENTE].AsString := aValue; +end; + +function TPedidosProveedorDataTableRules.GetREFERENCIA_CLIENTEIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidosProveedorREFERENCIA_CLIENTE].IsNull; +end; + +procedure TPedidosProveedorDataTableRules.SetREFERENCIA_CLIENTEIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidosProveedorREFERENCIA_CLIENTE].AsVariant := Null; +end; + function TPedidosProveedorDataTableRules.GetIMPORTE_NETOValue: Currency; begin result := DataTable.Fields[idx_PedidosProveedorIMPORTE_NETO].AsCurrency; diff --git a/Source/Modulos/Pedidos a proveedor/Model/schPedidosProveedorServer_Intf.pas b/Source/Modulos/Pedidos a proveedor/Model/schPedidosProveedorServer_Intf.pas index e21486a..41341c0 100644 --- a/Source/Modulos/Pedidos a proveedor/Model/schPedidosProveedorServer_Intf.pas +++ b/Source/Modulos/Pedidos a proveedor/Model/schPedidosProveedorServer_Intf.pas @@ -9,15 +9,15 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosPedidosDelta = '{70208471-680B-41B3-AB3C-0DC5FCD26D51}'; - RID_PedidosProveedorDelta = '{CB41A028-BDED-41AB-9C88-A581E3DE6CCC}'; - RID_PedidosProveedor_DetallesDelta = '{0CE5E016-2EBE-4452-9E33-C5BC9A358EF8}'; - RID_PedidosProveedor_Articulos_PendientesDelta = '{7DB1761B-D15F-4075-9CB7-14F89144CD43}'; + RID_ListaAnosPedidosDelta = '{FDE726DF-381E-4F3C-8A65-08F25374E75C}'; + RID_PedidosProveedorDelta = '{4AEABC2F-78CA-45F0-86FE-776F7D3D2D73}'; + RID_PedidosProveedor_DetallesDelta = '{CDC0D46D-13EA-41FE-8DA2-3434BC0FBE51}'; + RID_PedidosProveedor_Articulos_PendientesDelta = '{37F1083E-ECCD-488C-8A48-C3A20099E8E4}'; type { IListaAnosPedidosDelta } IListaAnosPedidosDelta = interface(IListaAnosPedidos) - ['{70208471-680B-41B3-AB3C-0DC5FCD26D51}'] + ['{FDE726DF-381E-4F3C-8A65-08F25374E75C}'] { Property getters and setters } function GetOldANOValue : String; @@ -51,7 +51,7 @@ type { IPedidosProveedorDelta } IPedidosProveedorDelta = interface(IPedidosProveedor) - ['{CB41A028-BDED-41AB-9C88-A581E3DE6CCC}'] + ['{4AEABC2F-78CA-45F0-86FE-776F7D3D2D73}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -85,6 +85,7 @@ type function GetOldUSUARIOValue : String; function GetOldID_PEDIDO_CLIENTEValue : Integer; function GetOldREF_PED_CLIENTEValue : String; + function GetOldREFERENCIA_CLIENTEValue : String; function GetOldIMPORTE_NETOValue : Currency; function GetOldIMPORTE_PORTEValue : Currency; function GetOldDESCUENTOValue : Float; @@ -131,6 +132,7 @@ type property OldUSUARIO : String read GetOldUSUARIOValue; property OldID_PEDIDO_CLIENTE : Integer read GetOldID_PEDIDO_CLIENTEValue; property OldREF_PED_CLIENTE : String read GetOldREF_PED_CLIENTEValue; + property OldREFERENCIA_CLIENTE : String read GetOldREFERENCIA_CLIENTEValue; property OldIMPORTE_NETO : Currency read GetOldIMPORTE_NETOValue; property OldIMPORTE_PORTE : Currency read GetOldIMPORTE_PORTEValue; property OldDESCUENTO : Float read GetOldDESCUENTOValue; @@ -344,6 +346,12 @@ type function GetOldREF_PED_CLIENTEIsNull: Boolean; virtual; procedure SetREF_PED_CLIENTEValue(const aValue: String); virtual; procedure SetREF_PED_CLIENTEIsNull(const aValue: Boolean); virtual; + function GetREFERENCIA_CLIENTEValue: String; virtual; + function GetREFERENCIA_CLIENTEIsNull: Boolean; virtual; + function GetOldREFERENCIA_CLIENTEValue: String; virtual; + function GetOldREFERENCIA_CLIENTEIsNull: Boolean; virtual; + procedure SetREFERENCIA_CLIENTEValue(const aValue: String); virtual; + procedure SetREFERENCIA_CLIENTEIsNull(const aValue: Boolean); virtual; function GetIMPORTE_NETOValue: Currency; virtual; function GetIMPORTE_NETOIsNull: Boolean; virtual; function GetOldIMPORTE_NETOValue: Currency; virtual; @@ -546,6 +554,10 @@ type property REF_PED_CLIENTEIsNull : Boolean read GetREF_PED_CLIENTEIsNull write SetREF_PED_CLIENTEIsNull; property OldREF_PED_CLIENTE : String read GetOldREF_PED_CLIENTEValue; property OldREF_PED_CLIENTEIsNull : Boolean read GetOldREF_PED_CLIENTEIsNull; + property REFERENCIA_CLIENTE : String read GetREFERENCIA_CLIENTEValue write SetREFERENCIA_CLIENTEValue; + property REFERENCIA_CLIENTEIsNull : Boolean read GetREFERENCIA_CLIENTEIsNull write SetREFERENCIA_CLIENTEIsNull; + property OldREFERENCIA_CLIENTE : String read GetOldREFERENCIA_CLIENTEValue; + property OldREFERENCIA_CLIENTEIsNull : Boolean read GetOldREFERENCIA_CLIENTEIsNull; property IMPORTE_NETO : Currency read GetIMPORTE_NETOValue write SetIMPORTE_NETOValue; property IMPORTE_NETOIsNull : Boolean read GetIMPORTE_NETOIsNull write SetIMPORTE_NETOIsNull; property OldIMPORTE_NETO : Currency read GetOldIMPORTE_NETOValue; @@ -603,7 +615,7 @@ type { IPedidosProveedor_DetallesDelta } IPedidosProveedor_DetallesDelta = interface(IPedidosProveedor_Detalles) - ['{0CE5E016-2EBE-4452-9E33-C5BC9A358EF8}'] + ['{CDC0D46D-13EA-41FE-8DA2-3434BC0FBE51}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_PEDIDOValue : Integer; @@ -817,7 +829,7 @@ type { IPedidosProveedor_Articulos_PendientesDelta } IPedidosProveedor_Articulos_PendientesDelta = interface(IPedidosProveedor_Articulos_Pendientes) - ['{7DB1761B-D15F-4075-9CB7-14F89144CD43}'] + ['{37F1083E-ECCD-488C-8A48-C3A20099E8E4}'] { Property getters and setters } function GetOldID_PEDIDOValue : Integer; function GetOldREFERENCIAValue : String; @@ -1974,6 +1986,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorREF_PED_CLIENTE] := Null; end; +function TPedidosProveedorBusinessProcessorRules.GetREFERENCIA_CLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorREFERENCIA_CLIENTE]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetREFERENCIA_CLIENTEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorREFERENCIA_CLIENTE]); +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldREFERENCIA_CLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorREFERENCIA_CLIENTE]; +end; + +function TPedidosProveedorBusinessProcessorRules.GetOldREFERENCIA_CLIENTEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidosProveedorREFERENCIA_CLIENTE]); +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetREFERENCIA_CLIENTEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorREFERENCIA_CLIENTE] := aValue; +end; + +procedure TPedidosProveedorBusinessProcessorRules.SetREFERENCIA_CLIENTEIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorREFERENCIA_CLIENTE] := Null; +end; + function TPedidosProveedorBusinessProcessorRules.GetIMPORTE_NETOValue: Currency; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidosProveedorIMPORTE_NETO]; diff --git a/Source/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.dfm b/Source/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.dfm index cf1b90e..f7fb7c3 100644 --- a/Source/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.dfm +++ b/Source/Modulos/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.dfm @@ -222,6 +222,10 @@ object srvPedidosProveedor: TsrvPedidosProveedor item DatasetField = 'NUM_CORREOS' TableField = 'NUM_CORREOS' + end + item + DatasetField = 'REFERENCIA_CLIENTE' + TableField = 'REFERENCIA_CLIENTE' end> end> Name = 'PedidosProveedor' @@ -409,6 +413,11 @@ object srvPedidosProveedor: TsrvPedidosProveedor ServerAutoRefresh = True DictionaryEntry = 'PedidosProveedor_REF_PED_CLIENTE' end + item + Name = 'REFERENCIA_CLIENTE' + DataType = datString + Size = 255 + end item Name = 'IMPORTE_NETO' DataType = datCurrency @@ -765,10 +774,6 @@ object srvPedidosProveedor: TsrvPedidosProveedor end item Params = < - item - Name = 'PERSONA_CONTACTO_PROV' - Value = '' - end item Name = 'ID' DataType = datAutoInc @@ -777,126 +782,177 @@ object srvPedidosProveedor: TsrvPedidosProveedor end item Name = 'ID_EMPRESA' + DataType = datInteger Value = '' end item Name = 'ID_PROVEEDOR' + DataType = datInteger Value = '' end item Name = 'ID_DIRECCION' + DataType = datInteger + Value = '' + end + item + Name = 'PERSONA_CONTACTO_PROV' + DataType = datString + Size = 255 Value = '' end item Name = 'REFERENCIA' + DataType = datString + Size = 255 Value = '' end item Name = 'FECHA_PEDIDO' + DataType = datDateTime Value = '' end item Name = 'FECHA_CONFIRMACION' + DataType = datDateTime Value = '' end item Name = 'FECHA_ENTREGA' + DataType = datDateTime Value = '' end item Name = 'ID_ALMACEN' + DataType = datInteger Value = '' end item Name = 'ID_OBRA' + DataType = datInteger Value = '' end item Name = 'OBSERVACIONES' + DataType = datMemo Value = '' end item Name = 'INCIDENCIAS' + DataType = datMemo Value = '' end item Name = 'INCIDENCIAS_ACTIVAS' + DataType = datSmallInt Value = '' end item Name = 'CALLE' + DataType = datString + Size = 255 Value = '' end item Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 Value = '' end item Name = 'POBLACION' + DataType = datString + Size = 255 Value = '' end item Name = 'PROVINCIA' + DataType = datString + Size = 255 Value = '' end item Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 Value = '' end item Name = 'TELEFONO' + DataType = datString + Size = 25 Value = '' end item Name = 'ID_PEDIDO_CLIENTE' + DataType = datInteger Value = '' end item Name = 'IMPORTE_NETO' + DataType = datCurrency Value = '' end item Name = 'IMPORTE_PORTE' + DataType = datCurrency Value = '' end item Name = 'DESCUENTO' + DataType = datFloat Value = '' end item Name = 'IMPORTE_DESCUENTO' + DataType = datCurrency Value = '' end item Name = 'BASE_IMPONIBLE' + DataType = datCurrency Value = '' end item Name = 'IVA' + DataType = datFloat Value = '' end item Name = 'IMPORTE_IVA' + DataType = datCurrency Value = '' end item Name = 'IMPORTE_TOTAL' + DataType = datCurrency Value = '' end item Name = 'ID_FORMA_PAGO' + DataType = datInteger Value = '' end item Name = 'FECHA_ENVIO' + DataType = datDateTime Value = '' end item Name = 'USUARIO' + DataType = datString + Size = 30 Value = '' end item Name = 'ID_FACTURA' + DataType = datInteger + Value = '' + end + item + Name = 'REFERENCIA_CLIENTE' + DataType = datString + Size = 255 Value = '' end> Statements = < @@ -912,15 +968,16 @@ object srvPedidosProveedor: TsrvPedidosProveedor 'EFONO, ID_PEDIDO_CLIENTE,'#10' IMPORTE_NETO, IMPORTE_PORTE, DESC' + 'UENTO, IMPORTE_DESCUENTO,'#10' BASE_IMPONIBLE, IVA, IMPORTE_IVA,' + ' IMPORTE_TOTAL, ID_FORMA_PAGO,'#10' FECHA_ENVIO, USUARIO, FECHA_' + - 'ALTA, ID_FACTURA)'#10' VALUES'#10' (:ID, :ID_EMPRESA, :ID_PROVEEDOR,' + - ' :ID_DIRECCION,'#10' :PERSONA_CONTACTO_PROV, :REFERENCIA, :FECHA' + - '_PEDIDO,'#10' :FECHA_CONFIRMACION, :FECHA_ENTREGA, :ID_ALMACEN, ' + - ':ID_OBRA,'#10' :OBSERVACIONES, :INCIDENCIAS, :INCIDENCIAS_ACTIVA' + - 'S,'#10' :CALLE, :CODIGO_POSTAL, :POBLACION, :PROVINCIA, :PERSONA' + - '_CONTACTO,'#10' :TELEFONO, :ID_PEDIDO_CLIENTE, :IMPORTE_NETO, :I' + - 'MPORTE_PORTE,'#10' :DESCUENTO, :IMPORTE_DESCUENTO, :BASE_IMPONIB' + - 'LE, :IVA,'#10' :IMPORTE_IVA, :IMPORTE_TOTAL, :ID_FORMA_PAGO, :FE' + - 'CHA_ENVIO,'#10' :USUARIO, CURRENT_TIMESTAMP, :ID_FACTURA)'#10 + 'ALTA, ID_FACTURA, REFERENCIA_CLIENTE)'#10' VALUES'#10' (:ID, :ID_EMP' + + 'RESA, :ID_PROVEEDOR, :ID_DIRECCION,'#10' :PERSONA_CONTACTO_PROV,' + + ' :REFERENCIA, :FECHA_PEDIDO,'#10' :FECHA_CONFIRMACION, :FECHA_EN' + + 'TREGA, :ID_ALMACEN, :ID_OBRA,'#10' :OBSERVACIONES, :INCIDENCIAS,' + + ' :INCIDENCIAS_ACTIVAS,'#10' :CALLE, :CODIGO_POSTAL, :POBLACION, ' + + ':PROVINCIA, :PERSONA_CONTACTO,'#10' :TELEFONO, :ID_PEDIDO_CLIENT' + + 'E, :IMPORTE_NETO, :IMPORTE_PORTE,'#10' :DESCUENTO, :IMPORTE_DESC' + + 'UENTO, :BASE_IMPONIBLE, :IVA,'#10' :IMPORTE_IVA, :IMPORTE_TOTAL,' + + ' :ID_FORMA_PAGO, :FECHA_ENVIO,'#10' :USUARIO, CURRENT_TIMESTAMP,' + + ' :ID_FACTURA, :REFERENCIA_CLIENTE)'#10 StatementType = stSQL ColumnMappings = <> end> @@ -928,10 +985,6 @@ object srvPedidosProveedor: TsrvPedidosProveedor end item Params = < - item - Name = 'PERSONA_CONTACTO_PROV' - Value = '' - end item Name = 'ID' DataType = datAutoInc @@ -940,126 +993,177 @@ object srvPedidosProveedor: TsrvPedidosProveedor end item Name = 'OBSERVACIONES' + DataType = datMemo Value = '' end item Name = 'REFERENCIA' + DataType = datString + Size = 255 Value = '' end item Name = 'ID_EMPRESA' + DataType = datInteger Value = '' end item Name = 'ID_PROVEEDOR' + DataType = datInteger Value = '' end item Name = 'ID_DIRECCION' + DataType = datInteger + Value = '' + end + item + Name = 'PERSONA_CONTACTO_PROV' + DataType = datString + Size = 255 Value = '' end item Name = 'FECHA_ENVIO' + DataType = datDateTime Value = '' end item Name = 'FECHA_PEDIDO' + DataType = datDateTime Value = '' end item Name = 'FECHA_CONFIRMACION' + DataType = datDateTime Value = '' end item Name = 'FECHA_ENTREGA' + DataType = datDateTime Value = '' end item Name = 'INCIDENCIAS' + DataType = datMemo Value = '' end item Name = 'IMPORTE_TOTAL' + DataType = datCurrency Value = '' end item Name = 'INCIDENCIAS_ACTIVAS' + DataType = datSmallInt Value = '' end item Name = 'ID_ALMACEN' + DataType = datInteger Value = '' end item Name = 'ID_OBRA' + DataType = datInteger Value = '' end item Name = 'CALLE' + DataType = datString + Size = 255 Value = '' end item Name = 'POBLACION' + DataType = datString + Size = 255 Value = '' end item Name = 'PROVINCIA' + DataType = datString + Size = 255 Value = '' end item Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 Value = '' end item Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 Value = '' end item Name = 'TELEFONO' + DataType = datString + Size = 25 Value = '' end item Name = 'ID_PEDIDO_CLIENTE' + DataType = datInteger Value = '' end item Name = 'IMPORTE_NETO' + DataType = datCurrency Value = '' end item Name = 'IMPORTE_PORTE' + DataType = datCurrency Value = '' end item Name = 'DESCUENTO' + DataType = datFloat Value = '' end item Name = 'IMPORTE_DESCUENTO' + DataType = datCurrency Value = '' end item Name = 'BASE_IMPONIBLE' + DataType = datCurrency Value = '' end item Name = 'IVA' + DataType = datFloat Value = '' end item Name = 'IMPORTE_IVA' + DataType = datCurrency Value = '' end item Name = 'ID_FORMA_PAGO' + DataType = datInteger Value = '' end item Name = 'USUARIO' + DataType = datString + Size = 30 Value = '' end item Name = 'ID_FACTURA' + DataType = datInteger + Value = '' + end + item + Name = 'REFERENCIA_CLIENTE' + DataType = datString + Size = 255 Value = '' end item @@ -1089,7 +1193,8 @@ object srvPedidosProveedor: TsrvPedidosProveedor ', '#10' BASE_IMPONIBLE = :BASE_IMPONIBLE, '#10' IVA = :IVA, '#10' I' + 'MPORTE_IVA = :IMPORTE_IVA, '#10' ID_FORMA_PAGO = :ID_FORMA_PAGO,'#10 + ' USUARIO = :USUARIO,'#10' FECHA_MODIFICACION = CURRENT_TIMESTA' + - 'MP,'#10' ID_FACTURA = :ID_FACTURA'#10' WHERE'#10' (ID = :OLD_ID)'#10 + 'MP,'#10' ID_FACTURA = :ID_FACTURA,'#10' REFERENCIA_CLIENTE = :REFE' + + 'RENCIA_CLIENTE'#10' WHERE'#10' (ID = :OLD_ID)'#10 StatementType = stSQL ColumnMappings = <> end> diff --git a/Source/Modulos/Pedidos a proveedor/Views/uEditorPedidosProveedor.pas b/Source/Modulos/Pedidos a proveedor/Views/uEditorPedidosProveedor.pas index afb609d..9bec63a 100644 --- a/Source/Modulos/Pedidos a proveedor/Views/uEditorPedidosProveedor.pas +++ b/Source/Modulos/Pedidos a proveedor/Views/uEditorPedidosProveedor.pas @@ -188,7 +188,8 @@ end; procedure TfEditorPedidosProveedor.actRecibirPedidoExecute(Sender: TObject); begin inherited; - RecibirPedidoProv(FPedidos); + GenerarAlbaranProv(FPedidos); +// RecibirPedidoProv(FPedidos); actRefrescar.Execute; end; diff --git a/Source/Modulos/Pedidos a proveedor/Views/uViewPedidoProveedor.dfm b/Source/Modulos/Pedidos a proveedor/Views/uViewPedidoProveedor.dfm index a8cd3e3..4c4be23 100644 --- a/Source/Modulos/Pedidos a proveedor/Views/uViewPedidoProveedor.dfm +++ b/Source/Modulos/Pedidos a proveedor/Views/uViewPedidoProveedor.dfm @@ -67,7 +67,7 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.SkinName = '' - TabOrder = 7 + TabOrder = 8 Width = 344 end object edtFechaEntrega: TcxDBDateEdit @@ -90,11 +90,11 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.SkinName = '' - TabOrder = 8 + TabOrder = 9 Width = 344 end object memObservaciones: TcxDBMemo - Left = 488 + Left = 605 Top = 265 Anchors = [akLeft, akTop, akRight, akBottom] DataBinding.DataField = 'OBSERVACIONES' @@ -111,7 +111,7 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.SkinName = '' - TabOrder = 11 + TabOrder = 12 Height = 200 Width = 459 end @@ -152,7 +152,7 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor Font.Name = 'Tahoma' Font.Style = [] ParentFont = False - TabOrder = 9 + TabOrder = 10 ReadOnly = False ExplicitLeft = 22 ExplicitTop = 279 @@ -189,9 +189,9 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor Width = 551 end inherited bModificar: TBitBtn - Left = 298 + Left = 415 Top = 161 - ExplicitLeft = 298 + ExplicitLeft = 415 ExplicitTop = 161 end inherited txtDireccion: TStaticText @@ -274,7 +274,7 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor Width = 195 end object bFormasPago: TButton - Left = 326 + Left = 443 Top = 82 Width = 132 Height = 21 @@ -304,7 +304,7 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.NativeStyle = True StyleHot.LookAndFeel.SkinName = '' - TabOrder = 6 + TabOrder = 7 Width = 344 end object eReferenciaPedidoCli: TcxTextEdit @@ -335,15 +335,15 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor Width = 195 end object bVerPedidoCliente: TButton - Left = 326 + Left = 443 Top = 109 Width = 132 Height = 23 Action = actVerPedidoCli - TabOrder = 5 + TabOrder = 6 end inline frViewObraReserva1: TfrViewObraReserva - Left = 488 + Left = 605 Top = 441 Width = 422 Height = 97 @@ -353,9 +353,9 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor Font.Name = 'Tahoma' Font.Style = [] ParentFont = False - TabOrder = 12 + TabOrder = 13 ReadOnly = False - ExplicitLeft = 488 + ExplicitLeft = 605 ExplicitTop = 441 ExplicitWidth = 422 ExplicitHeight = 97 @@ -390,7 +390,7 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor end end inline frViewDatosYSeleccionProveedorPedido1: TfrViewDatosYSeleccionProveedorPedido - Left = 488 + Left = 605 Top = 28 Width = 480 Height = 201 @@ -400,9 +400,9 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor Font.Name = 'Tahoma' Font.Style = [] ParentFont = False - TabOrder = 10 + TabOrder = 11 ReadOnly = False - ExplicitLeft = 488 + ExplicitLeft = 605 ExplicitTop = 28 ExplicitWidth = 480 ExplicitHeight = 201 @@ -420,12 +420,12 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor Width = 224 end inherited edtCODIGO_ASIGNADO: TcxDBTextEdit - Left = 342 + Left = 225 Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 342 + ExplicitLeft = 225 end inherited edtPersonaContacto: TcxDBTextEdit Style.LookAndFeel.SkinName = '' @@ -444,19 +444,43 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor Width = 121 end inherited Button4: TButton - Left = 422 - ExplicitLeft = 422 + Left = 305 + ExplicitLeft = 305 end inherited Button5: TButton - Left = 422 - ExplicitLeft = 422 + Left = 305 + ExplicitLeft = 305 end inherited Button3: TBitBtn - Left = 247 - ExplicitLeft = 247 + Left = 130 + ExplicitLeft = 130 end end end + object edtReferenciaCliente: TcxDBTextEdit + Left = 294 + Top = 109 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'REFERENCIA_CLIENTE' + DataBinding.DataSource = DADataSource + ParentFont = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.SkinName = '' + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.SkinName = '' + TabOrder = 5 + Height = 21 + Width = 258 + end object dxLayoutControl1Group_Root: TdxLayoutGroup ShowCaption = False Hidden = True @@ -519,6 +543,13 @@ inherited frViewPedidoProveedor: TfrViewPedidoProveedor Control = eReferenciaPedidoCli ControlOptions.ShowBorder = False end + object dxLayoutControl1Item14: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Ref. Cliente:' + Control = edtReferenciaCliente + ControlOptions.ShowBorder = False + end object dxLayoutControl1Item12: TdxLayoutItem AutoAligns = [aaVertical] AlignHorz = ahRight diff --git a/Source/Modulos/Pedidos a proveedor/Views/uViewPedidoProveedor.pas b/Source/Modulos/Pedidos a proveedor/Views/uViewPedidoProveedor.pas index c894dc3..a651ede 100644 --- a/Source/Modulos/Pedidos a proveedor/Views/uViewPedidoProveedor.pas +++ b/Source/Modulos/Pedidos a proveedor/Views/uViewPedidoProveedor.pas @@ -75,6 +75,8 @@ type dxLayoutControl1Group11: TdxLayoutGroup; frViewDatosYSeleccionProveedorPedido1: TfrViewDatosYSeleccionProveedorPedido; dxLayoutControl1Item1: TdxLayoutItem; + dxLayoutControl1Item14: TdxLayoutItem; + edtReferenciaCliente: TcxDBTextEdit; procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure bFormasPagoClick(Sender: TObject); @@ -255,10 +257,12 @@ begin if Assigned(FPedidoCliAsociado) then begin FPedidoCliAsociado.DataTable.Active := True; - eReferenciaPedidoCli.Text := FPedidoCliAsociado.REFERENCIA + eReferenciaPedidoCli.Text := FPedidoCliAsociado.REFERENCIA; end else + begin eReferenciaPedidoCli.Text := ''; + end; end else eReferenciaPedidoCli.Text := 'No hay pedido asociado'; diff --git a/Source/Modulos/Pedidos a proveedor/Views/uViewPedidosProveedor.dfm b/Source/Modulos/Pedidos a proveedor/Views/uViewPedidosProveedor.dfm index 6b20b96..cd8c925 100644 --- a/Source/Modulos/Pedidos a proveedor/Views/uViewPedidosProveedor.dfm +++ b/Source/Modulos/Pedidos a proveedor/Views/uViewPedidosProveedor.dfm @@ -158,6 +158,10 @@ inherited frViewPedidosProveedor: TfrViewPedidosProveedor DataBinding.FieldName = 'REF_PED_CLIENTE' Width = 65 end + object cxGridViewREFERENCIA_CLIENTE: TcxGridDBColumn + Caption = 'Ref. Cliente' + DataBinding.FieldName = 'REFERENCIA_CLIENTE' + end object cxGridViewIMPORTE_TOTAL: TcxGridDBColumn Caption = 'Importe total' DataBinding.FieldName = 'IMPORTE_TOTAL' diff --git a/Source/Modulos/Pedidos a proveedor/Views/uViewPedidosProveedor.pas b/Source/Modulos/Pedidos a proveedor/Views/uViewPedidosProveedor.pas index ea57af5..87e2175 100644 --- a/Source/Modulos/Pedidos a proveedor/Views/uViewPedidosProveedor.pas +++ b/Source/Modulos/Pedidos a proveedor/Views/uViewPedidosProveedor.pas @@ -56,6 +56,7 @@ type cxGridViewINCIDENCIAS: TcxGridDBColumn; cxGridViewREF_FACTURA_PROV: TcxGridDBColumn; cxGridViewNOMBRE_OBRA: TcxGridDBColumn; + cxGridViewREFERENCIA_CLIENTE: TcxGridDBColumn; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; diff --git a/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc b/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc index e797665..bdcb842 100644 --- a/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc +++ b/Source/Modulos/Pedidos de cliente/Controller/PedidosCliente_controller.drc @@ -13,4 +13,4 @@ BEGIN END /* C:\Codigo\Source\Modulos\Pedidos de cliente\Controller\PedidosCliente_controller.RES */ -/* c:\temp\dtfBC.tmp */ +/* c:\temp\dtf867.tmp */ diff --git a/Source/Modulos/Pedidos de cliente/Controller/uPedidosClienteController.pas b/Source/Modulos/Pedidos de cliente/Controller/uPedidosClienteController.pas index 2a441e2..4c70b97 100644 --- a/Source/Modulos/Pedidos de cliente/Controller/uPedidosClienteController.pas +++ b/Source/Modulos/Pedidos de cliente/Controller/uPedidosClienteController.pas @@ -24,6 +24,7 @@ type function BuscarTodos(const AID_Cliente: Integer): IBizPedidoCliente; overload; function BuscarPendientes : IBizPedidoCliente; function BuscarPendientesPedir(const ID : Integer): IBizPedidoClienteArticulosPendientesPedirAProv; + function BuscarPendientesPedirNoArticulos(const ID : Integer): IBizPedidoClienteArticulosPendientesPedirAProv; // function BuscarSinFacturar : IBizPedidoCliente; procedure Ver(APedido : IBizPedidoCliente); @@ -118,6 +119,7 @@ type function BuscarTodos(const AID_Cliente: Integer): IBizPedidoCliente; overload; function BuscarPendientes : IBizPedidoCliente; function BuscarPendientesPedir(const ID : Integer): IBizPedidoClienteArticulosPendientesPedirAProv; + function BuscarPendientesPedirNoArticulos(const ID : Integer): IBizPedidoClienteArticulosPendientesPedirAProv; // function BuscarSinFacturar : IBizPedidoCliente; function Nuevo : IBizPedidoCliente; @@ -265,6 +267,16 @@ begin end; end; +function TPedidosClienteController.BuscarPendientesPedirNoArticulos(const ID: Integer): IBizPedidoClienteArticulosPendientesPedirAProv; +begin + ShowHourglassCursor; + try + Result := FDataModule.GetArticulosPendientesPedirAProvNoArticulos(ID); + finally + HideHourglassCursor; + end; +end; + {function TPedidosClienteController.BuscarSinFacturar: IBizPedidoCliente; var Condicion: TDAWhereExpression; @@ -827,7 +839,7 @@ begin if not Assigned(APedido) then raise Exception.Create ('Pedido no asignado: EsModificable'); - Result := (APedido.SITUACION <> SITUACION_PEDIDO_SERVIDO); + Result := ((APedido.SITUACION <> SITUACION_PEDIDO_SERVIDO) and (APedido.SITUACION <> SITUACION_PEDIDO_ALBARANADO)); end; procedure TPedidosClienteController.RecalcularImportes( diff --git a/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc b/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc index 0976694..16fabbc 100644 --- a/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc +++ b/Source/Modulos/Pedidos de cliente/Data/PedidosCliente_data.drc @@ -14,4 +14,4 @@ END /* C:\Codigo\Source\Modulos\Pedidos de cliente\Data\uDataModulePedidosCliente.dfm */ /* C:\Codigo\Source\Modulos\Pedidos de cliente\Data\PedidosCliente_data.RES */ -/* c:\temp\dtfBA.tmp */ +/* c:\temp\dtf865.tmp */ diff --git a/Source/Modulos/Pedidos de cliente/Data/uDataModulePedidosCliente.dfm b/Source/Modulos/Pedidos de cliente/Data/uDataModulePedidosCliente.dfm index be39e1f..dc9ff0f 100644 --- a/Source/Modulos/Pedidos de cliente/Data/uDataModulePedidosCliente.dfm +++ b/Source/Modulos/Pedidos de cliente/Data/uDataModulePedidosCliente.dfm @@ -1,6 +1,6 @@ inherited DataModulePedidosCliente: TDataModulePedidosCliente OnCreate = DAClientDataModuleCreate - Height = 301 + Height = 461 Width = 621 object RORemoteService: TRORemoteService Message = dmConexion.ROMessage @@ -67,16 +67,33 @@ inherited DataModulePedidosCliente: TDataModulePedidosCliente end item Name = 'CANT_PEDIDA_PROVEEDOR' - DataType = datCurrency + DataType = datInteger end item Name = 'CANT_PENDIENTE_PEDIR' DataType = datCurrency + end + item + Name = 'CONCEPTO' + DataType = datString + Size = 2000 + end + item + Name = 'IMPORTE_UNIDAD' + DataType = datCurrency + end + item + Name = 'DESCUENTO' + DataType = datFloat + end + item + Name = 'IMPORTE_TOTAL' + DataType = datCurrency end> Params = < item Name = 'ID' - Value = '41' + Value = '1138' ParamType = daptInput end> StreamingOptions = [soDisableEventsWhileStreaming] @@ -477,4 +494,68 @@ inherited DataModulePedidosCliente: TDataModulePedidosCliente Left = 512 Top = 16 end + object tbl_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID_PEDIDO' + DataType = datInteger + end + item + Name = 'ID_ARTICULO' + DataType = datInteger + DictionaryEntry = 'PedidosProveedor_Detalles_ID_ARTICULO' + end + item + Name = 'CANT_PEDIDA_CLIENTE' + DataType = datCurrency + end + item + Name = 'ID_PROVEEDOR' + DataType = datInteger + end + item + Name = 'CANT_PEDIDA_PROVEEDOR' + DataType = datInteger + end + item + Name = 'CANT_PENDIENTE_PEDIR' + DataType = datCurrency + end + item + Name = 'CONCEPTO' + DataType = datString + Size = 2000 + end + item + Name = 'IMPORTE_UNIDAD' + DataType = datCurrency + end + item + Name = 'DESCUENTO' + DataType = datFloat + end + item + Name = 'IMPORTE_TOTAL' + DataType = datCurrency + end> + Params = < + item + Name = 'ID' + Value = '1138' + ParamType = daptInput + end> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_PedidosCliente + LogicalName = 'PedidoCliente_ArticulosPendientesPedirAProvNoArticulos' + IndexDefs = <> + Left = 256 + Top = 320 + end + object ds_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos: TDADataSource + DataSet = tbl_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos.Dataset + DataTable = tbl_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos + Left = 256 + Top = 272 + end end diff --git a/Source/Modulos/Pedidos de cliente/Data/uDataModulePedidosCliente.pas b/Source/Modulos/Pedidos de cliente/Data/uDataModulePedidosCliente.pas index f8d8792..651ace9 100644 --- a/Source/Modulos/Pedidos de cliente/Data/uDataModulePedidosCliente.pas +++ b/Source/Modulos/Pedidos de cliente/Data/uDataModulePedidosCliente.pas @@ -29,6 +29,8 @@ type ds_PedidosCliente_Articulos_Pendientes: TDADataSource; tbl_PedidosCliente_Detalles: TDAMemDataTable; ds_PedidosCliente_Detalles: TDADataSource; + tbl_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos: TDAMemDataTable; + ds_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); private @@ -42,6 +44,7 @@ type function GetItem(const ID : Integer) : IBizPedidoCliente; function NewItem : IBizPedidoCliente; function GetArticulosPendientesPedirAProv(const IDPedido: Integer): IBizPedidoClienteArticulosPendientesPedirAProv; + function GetArticulosPendientesPedirAProvNoArticulos(const IDPedido: Integer): IBizPedidoClienteArticulosPendientesPedirAProv; function GetArticulosPendientes(const IDPedido: Integer): IBizPedidoClienteArticulosPend; @@ -230,4 +233,20 @@ begin end; end; +function TDataModulePedidosCliente.GetArticulosPendientesPedirAProvNoArticulos( + const IDPedido: Integer): IBizPedidoClienteArticulosPendientesPedirAProv; +var + AArticulos : TDAMemDataTable; +begin + ShowHourglassCursor; + try + AArticulos := CloneDataTable(tbl_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos); + AArticulos.BusinessRulesID := BIZ_CLIENT_PEDIDO_CLIENTE_ARTICULOS_PENDIENTES_PEDIR_A_PROV; + AArticulos.ParamByName('ID').AsInteger := IDPedido; + Result := (AArticulos as IBizPedidoClienteArticulosPendientesPedirAProv); + finally + HideHourglassCursor; + end; +end; + end. diff --git a/Source/Modulos/Pedidos de cliente/Model/Data/uIDataModulePedidosCliente.pas b/Source/Modulos/Pedidos de cliente/Model/Data/uIDataModulePedidosCliente.pas index 2671a55..5878bce 100644 --- a/Source/Modulos/Pedidos de cliente/Model/Data/uIDataModulePedidosCliente.pas +++ b/Source/Modulos/Pedidos de cliente/Model/Data/uIDataModulePedidosCliente.pas @@ -13,7 +13,8 @@ type function GetItem(const ID : Integer) : IBizPedidoCliente; function NewItem : IBizPedidoCliente; function GetArticulosPendientes(const IDPedido: Integer): IBizPedidoClienteArticulosPend; - function GetArticulosPendientesPedirAProv(const IDPedido: Integer): IBizPedidoClienteArticulosPendientesPedirAProv; + function GetArticulosPendientesPedirAProv(const IDPedido: Integer): IBizPedidoClienteArticulosPendientesPedirAProv; + function GetArticulosPendientesPedirAProvNoArticulos(const IDPedido: Integer): IBizPedidoClienteArticulosPendientesPedirAProv; end; implementation diff --git a/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc b/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc index 586c364..56721f5 100644 --- a/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc +++ b/Source/Modulos/Pedidos de cliente/Model/PedidosCliente_model.drc @@ -13,4 +13,4 @@ BEGIN END /* C:\Codigo\Source\Modulos\Pedidos de cliente\Model\PedidosCliente_model.RES */ -/* c:\temp\dtfB8.tmp */ +/* c:\temp\dtf863.tmp */ diff --git a/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteClient_Intf.pas b/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteClient_Intf.pas index a0518b3..dafbd93 100644 --- a/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteClient_Intf.pas +++ b/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteClient_Intf.pas @@ -9,11 +9,12 @@ const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosPedidos = '{8644576E-4752-47D5-BDE9-34F3514BF462}'; - RID_PedidosCliente = '{8B5249E3-D172-4515-B5B4-8FBD06AC80B0}'; - RID_PedidosCliente_Detalles = '{D9E8FE15-B19F-4B65-B694-490801AD5904}'; - RID_PedidosCliente_Articulos_Pendientes = '{AA7867B3-1CA3-489D-9F64-EA06960AFB0D}'; - RID_PedidoCliente_ArticulosPendientesPedirAProv = '{BCB573CE-4B7A-4FEE-9415-68E28D9782E6}'; + RID_ListaAnosPedidos = '{39AEA87B-B095-43F4-AE81-2407C4D498F0}'; + RID_PedidosCliente = '{2C37EE57-27DA-49CE-BBFC-93C2D1771DB4}'; + RID_PedidosCliente_Detalles = '{389CA843-A89F-4A47-95F3-6D2FB17E6DF9}'; + RID_PedidosCliente_Articulos_Pendientes = '{29EB047A-4B49-42D4-A8E9-C42EE3E471FB}'; + RID_PedidoCliente_ArticulosPendientesPedirAProv = '{1E6FC371-3B83-48DB-BB55-FEC98F3915D1}'; + RID_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos = '{D624CEBB-93E5-4C10-9A10-CC433745B1F7}'; { Data table names } nme_ListaAnosPedidos = 'ListaAnosPedidos'; @@ -21,6 +22,7 @@ const nme_PedidosCliente_Detalles = 'PedidosCliente_Detalles'; nme_PedidosCliente_Articulos_Pendientes = 'PedidosCliente_Articulos_Pendientes'; nme_PedidoCliente_ArticulosPendientesPedirAProv = 'PedidoCliente_ArticulosPendientesPedirAProv'; + nme_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos = 'PedidoCliente_ArticulosPendientesPedirAProvNoArticulos'; { ListaAnosPedidos fields } fld_ListaAnosPedidosANO = 'ANO'; @@ -151,6 +153,10 @@ const fld_PedidoCliente_ArticulosPendientesPedirAProvID_PROVEEDOR = 'ID_PROVEEDOR'; fld_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR = 'CANT_PEDIDA_PROVEEDOR'; fld_PedidoCliente_ArticulosPendientesPedirAProvCANT_PENDIENTE_PEDIR = 'CANT_PENDIENTE_PEDIR'; + fld_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO = 'CONCEPTO'; + fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD = 'IMPORTE_UNIDAD'; + fld_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO = 'DESCUENTO'; + fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL = 'IMPORTE_TOTAL'; { PedidoCliente_ArticulosPendientesPedirAProv field indexes } idx_PedidoCliente_ArticulosPendientesPedirAProvID_PEDIDO = 0; @@ -159,11 +165,39 @@ const idx_PedidoCliente_ArticulosPendientesPedirAProvID_PROVEEDOR = 3; idx_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR = 4; idx_PedidoCliente_ArticulosPendientesPedirAProvCANT_PENDIENTE_PEDIR = 5; + idx_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO = 6; + idx_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD = 7; + idx_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO = 8; + idx_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL = 9; + + { PedidoCliente_ArticulosPendientesPedirAProvNoArticulos fields } + fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO = 'ID_PEDIDO'; + fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO = 'ID_ARTICULO'; + fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE = 'CANT_PEDIDA_CLIENTE'; + fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR = 'ID_PROVEEDOR'; + fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR = 'CANT_PEDIDA_PROVEEDOR'; + fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR = 'CANT_PENDIENTE_PEDIR'; + fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO = 'CONCEPTO'; + fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD = 'IMPORTE_UNIDAD'; + fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO = 'DESCUENTO'; + fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL = 'IMPORTE_TOTAL'; + + { PedidoCliente_ArticulosPendientesPedirAProvNoArticulos field indexes } + idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO = 0; + idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO = 1; + idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE = 2; + idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR = 3; + idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR = 4; + idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR = 5; + idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO = 6; + idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD = 7; + idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO = 8; + idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL = 9; type { IListaAnosPedidos } IListaAnosPedidos = interface(IDAStronglyTypedDataTable) - ['{54A9119E-7703-4619-A695-FEF92E6C9303}'] + ['{013A26BB-689A-4EDF-85F8-2F1499B427B4}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -198,7 +232,7 @@ type { IPedidosCliente } IPedidosCliente = interface(IDAStronglyTypedDataTable) - ['{5F14B45E-56DB-4F10-8EAF-FA89609A5EB8}'] + ['{D51AD7F0-21DB-4794-9721-69888B3E52F6}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -629,7 +663,7 @@ type { IPedidosCliente_Detalles } IPedidosCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{EC4E915D-1631-414A-AA6F-1743A167B8C3}'] + ['{574ABC3C-F487-4F6C-8D8B-E2C94B8EAA2C}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -820,7 +854,7 @@ type { IPedidosCliente_Articulos_Pendientes } IPedidosCliente_Articulos_Pendientes = interface(IDAStronglyTypedDataTable) - ['{A8193AC8-9646-4B77-92C5-0737D99A546B}'] + ['{F94E52AB-7983-45C1-9522-8F8558864380}'] { Property getters and setters } function GetID_ARTICULOValue: Integer; procedure SetID_ARTICULOValue(const aValue: Integer); @@ -891,7 +925,7 @@ type { IPedidoCliente_ArticulosPendientesPedirAProv } IPedidoCliente_ArticulosPendientesPedirAProv = interface(IDAStronglyTypedDataTable) - ['{7C12E66E-BD01-4F60-9755-974CE324343B}'] + ['{8D82D999-A50C-4EB0-8E4F-1CDF6439C646}'] { Property getters and setters } function GetID_PEDIDOValue: Integer; procedure SetID_PEDIDOValue(const aValue: Integer); @@ -909,14 +943,30 @@ type procedure SetID_PROVEEDORValue(const aValue: Integer); function GetID_PROVEEDORIsNull: Boolean; procedure SetID_PROVEEDORIsNull(const aValue: Boolean); - function GetCANT_PEDIDA_PROVEEDORValue: Currency; - procedure SetCANT_PEDIDA_PROVEEDORValue(const aValue: Currency); + function GetCANT_PEDIDA_PROVEEDORValue: Integer; + procedure SetCANT_PEDIDA_PROVEEDORValue(const aValue: Integer); function GetCANT_PEDIDA_PROVEEDORIsNull: Boolean; procedure SetCANT_PEDIDA_PROVEEDORIsNull(const aValue: Boolean); function GetCANT_PENDIENTE_PEDIRValue: Currency; procedure SetCANT_PENDIENTE_PEDIRValue(const aValue: Currency); function GetCANT_PENDIENTE_PEDIRIsNull: Boolean; procedure SetCANT_PENDIENTE_PEDIRIsNull(const aValue: Boolean); + function GetCONCEPTOValue: String; + procedure SetCONCEPTOValue(const aValue: String); + function GetCONCEPTOIsNull: Boolean; + procedure SetCONCEPTOIsNull(const aValue: Boolean); + function GetIMPORTE_UNIDADValue: Currency; + procedure SetIMPORTE_UNIDADValue(const aValue: Currency); + function GetIMPORTE_UNIDADIsNull: Boolean; + procedure SetIMPORTE_UNIDADIsNull(const aValue: Boolean); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetDESCUENTOIsNull: Boolean; + procedure SetDESCUENTOIsNull(const aValue: Boolean); + function GetIMPORTE_TOTALValue: Currency; + procedure SetIMPORTE_TOTALValue(const aValue: Currency); + function GetIMPORTE_TOTALIsNull: Boolean; + procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); { Properties } @@ -928,10 +978,18 @@ type property CANT_PEDIDA_CLIENTEIsNull: Boolean read GetCANT_PEDIDA_CLIENTEIsNull write SetCANT_PEDIDA_CLIENTEIsNull; property ID_PROVEEDOR: Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue; property ID_PROVEEDORIsNull: Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull; - property CANT_PEDIDA_PROVEEDOR: Currency read GetCANT_PEDIDA_PROVEEDORValue write SetCANT_PEDIDA_PROVEEDORValue; + property CANT_PEDIDA_PROVEEDOR: Integer read GetCANT_PEDIDA_PROVEEDORValue write SetCANT_PEDIDA_PROVEEDORValue; property CANT_PEDIDA_PROVEEDORIsNull: Boolean read GetCANT_PEDIDA_PROVEEDORIsNull write SetCANT_PEDIDA_PROVEEDORIsNull; property CANT_PENDIENTE_PEDIR: Currency read GetCANT_PENDIENTE_PEDIRValue write SetCANT_PENDIENTE_PEDIRValue; property CANT_PENDIENTE_PEDIRIsNull: Boolean read GetCANT_PENDIENTE_PEDIRIsNull write SetCANT_PENDIENTE_PEDIRIsNull; + property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + property IMPORTE_UNIDAD: Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue; + property IMPORTE_UNIDADIsNull: Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull; + property IMPORTE_TOTAL: Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; end; { TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules } @@ -955,14 +1013,30 @@ type procedure SetID_PROVEEDORValue(const aValue: Integer); virtual; function GetID_PROVEEDORIsNull: Boolean; virtual; procedure SetID_PROVEEDORIsNull(const aValue: Boolean); virtual; - function GetCANT_PEDIDA_PROVEEDORValue: Currency; virtual; - procedure SetCANT_PEDIDA_PROVEEDORValue(const aValue: Currency); virtual; + function GetCANT_PEDIDA_PROVEEDORValue: Integer; virtual; + procedure SetCANT_PEDIDA_PROVEEDORValue(const aValue: Integer); virtual; function GetCANT_PEDIDA_PROVEEDORIsNull: Boolean; virtual; procedure SetCANT_PEDIDA_PROVEEDORIsNull(const aValue: Boolean); virtual; function GetCANT_PENDIENTE_PEDIRValue: Currency; virtual; procedure SetCANT_PENDIENTE_PEDIRValue(const aValue: Currency); virtual; function GetCANT_PENDIENTE_PEDIRIsNull: Boolean; virtual; procedure SetCANT_PENDIENTE_PEDIRIsNull(const aValue: Boolean); virtual; + function GetCONCEPTOValue: String; virtual; + procedure SetCONCEPTOValue(const aValue: String); virtual; + function GetCONCEPTOIsNull: Boolean; virtual; + procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual; + function GetIMPORTE_UNIDADValue: Currency; virtual; + procedure SetIMPORTE_UNIDADValue(const aValue: Currency); virtual; + function GetIMPORTE_UNIDADIsNull: Boolean; virtual; + procedure SetIMPORTE_UNIDADIsNull(const aValue: Boolean); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetDESCUENTOIsNull: Boolean; virtual; + procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual; + function GetIMPORTE_TOTALValue: Currency; virtual; + procedure SetIMPORTE_TOTALValue(const aValue: Currency); virtual; + function GetIMPORTE_TOTALIsNull: Boolean; virtual; + procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); virtual; { Properties } property ID_PEDIDO: Integer read GetID_PEDIDOValue write SetID_PEDIDOValue; @@ -973,10 +1047,161 @@ type property CANT_PEDIDA_CLIENTEIsNull: Boolean read GetCANT_PEDIDA_CLIENTEIsNull write SetCANT_PEDIDA_CLIENTEIsNull; property ID_PROVEEDOR: Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue; property ID_PROVEEDORIsNull: Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull; - property CANT_PEDIDA_PROVEEDOR: Currency read GetCANT_PEDIDA_PROVEEDORValue write SetCANT_PEDIDA_PROVEEDORValue; + property CANT_PEDIDA_PROVEEDOR: Integer read GetCANT_PEDIDA_PROVEEDORValue write SetCANT_PEDIDA_PROVEEDORValue; property CANT_PEDIDA_PROVEEDORIsNull: Boolean read GetCANT_PEDIDA_PROVEEDORIsNull write SetCANT_PEDIDA_PROVEEDORIsNull; property CANT_PENDIENTE_PEDIR: Currency read GetCANT_PENDIENTE_PEDIRValue write SetCANT_PENDIENTE_PEDIRValue; property CANT_PENDIENTE_PEDIRIsNull: Boolean read GetCANT_PENDIENTE_PEDIRIsNull write SetCANT_PENDIENTE_PEDIRIsNull; + property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + property IMPORTE_UNIDAD: Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue; + property IMPORTE_UNIDADIsNull: Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull; + property IMPORTE_TOTAL: Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IPedidoCliente_ArticulosPendientesPedirAProvNoArticulos } + IPedidoCliente_ArticulosPendientesPedirAProvNoArticulos = interface(IDAStronglyTypedDataTable) + ['{B3551FC7-D507-4452-8454-B2815339D817}'] + { Property getters and setters } + function GetID_PEDIDOValue: Integer; + procedure SetID_PEDIDOValue(const aValue: Integer); + function GetID_PEDIDOIsNull: Boolean; + procedure SetID_PEDIDOIsNull(const aValue: Boolean); + function GetID_ARTICULOValue: Integer; + procedure SetID_ARTICULOValue(const aValue: Integer); + function GetID_ARTICULOIsNull: Boolean; + procedure SetID_ARTICULOIsNull(const aValue: Boolean); + function GetCANT_PEDIDA_CLIENTEValue: Currency; + procedure SetCANT_PEDIDA_CLIENTEValue(const aValue: Currency); + function GetCANT_PEDIDA_CLIENTEIsNull: Boolean; + procedure SetCANT_PEDIDA_CLIENTEIsNull(const aValue: Boolean); + function GetID_PROVEEDORValue: Integer; + procedure SetID_PROVEEDORValue(const aValue: Integer); + function GetID_PROVEEDORIsNull: Boolean; + procedure SetID_PROVEEDORIsNull(const aValue: Boolean); + function GetCANT_PEDIDA_PROVEEDORValue: Integer; + procedure SetCANT_PEDIDA_PROVEEDORValue(const aValue: Integer); + function GetCANT_PEDIDA_PROVEEDORIsNull: Boolean; + procedure SetCANT_PEDIDA_PROVEEDORIsNull(const aValue: Boolean); + function GetCANT_PENDIENTE_PEDIRValue: Currency; + procedure SetCANT_PENDIENTE_PEDIRValue(const aValue: Currency); + function GetCANT_PENDIENTE_PEDIRIsNull: Boolean; + procedure SetCANT_PENDIENTE_PEDIRIsNull(const aValue: Boolean); + function GetCONCEPTOValue: String; + procedure SetCONCEPTOValue(const aValue: String); + function GetCONCEPTOIsNull: Boolean; + procedure SetCONCEPTOIsNull(const aValue: Boolean); + function GetIMPORTE_UNIDADValue: Currency; + procedure SetIMPORTE_UNIDADValue(const aValue: Currency); + function GetIMPORTE_UNIDADIsNull: Boolean; + procedure SetIMPORTE_UNIDADIsNull(const aValue: Boolean); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetDESCUENTOIsNull: Boolean; + procedure SetDESCUENTOIsNull(const aValue: Boolean); + function GetIMPORTE_TOTALValue: Currency; + procedure SetIMPORTE_TOTALValue(const aValue: Currency); + function GetIMPORTE_TOTALIsNull: Boolean; + procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); + + + { Properties } + property ID_PEDIDO: Integer read GetID_PEDIDOValue write SetID_PEDIDOValue; + property ID_PEDIDOIsNull: Boolean read GetID_PEDIDOIsNull write SetID_PEDIDOIsNull; + property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; + property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property CANT_PEDIDA_CLIENTE: Currency read GetCANT_PEDIDA_CLIENTEValue write SetCANT_PEDIDA_CLIENTEValue; + property CANT_PEDIDA_CLIENTEIsNull: Boolean read GetCANT_PEDIDA_CLIENTEIsNull write SetCANT_PEDIDA_CLIENTEIsNull; + property ID_PROVEEDOR: Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue; + property ID_PROVEEDORIsNull: Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull; + property CANT_PEDIDA_PROVEEDOR: Integer read GetCANT_PEDIDA_PROVEEDORValue write SetCANT_PEDIDA_PROVEEDORValue; + property CANT_PEDIDA_PROVEEDORIsNull: Boolean read GetCANT_PEDIDA_PROVEEDORIsNull write SetCANT_PEDIDA_PROVEEDORIsNull; + property CANT_PENDIENTE_PEDIR: Currency read GetCANT_PENDIENTE_PEDIRValue write SetCANT_PENDIENTE_PEDIRValue; + property CANT_PENDIENTE_PEDIRIsNull: Boolean read GetCANT_PENDIENTE_PEDIRIsNull write SetCANT_PENDIENTE_PEDIRIsNull; + property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + property IMPORTE_UNIDAD: Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue; + property IMPORTE_UNIDADIsNull: Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull; + property IMPORTE_TOTAL: Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; + end; + + { TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules } + TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules = class(TIntfObjectDADataTableRules, IPedidoCliente_ArticulosPendientesPedirAProvNoArticulos) + private + protected + { Property getters and setters } + function GetID_PEDIDOValue: Integer; virtual; + procedure SetID_PEDIDOValue(const aValue: Integer); virtual; + function GetID_PEDIDOIsNull: Boolean; virtual; + procedure SetID_PEDIDOIsNull(const aValue: Boolean); virtual; + function GetID_ARTICULOValue: Integer; virtual; + procedure SetID_ARTICULOValue(const aValue: Integer); virtual; + function GetID_ARTICULOIsNull: Boolean; virtual; + procedure SetID_ARTICULOIsNull(const aValue: Boolean); virtual; + function GetCANT_PEDIDA_CLIENTEValue: Currency; virtual; + procedure SetCANT_PEDIDA_CLIENTEValue(const aValue: Currency); virtual; + function GetCANT_PEDIDA_CLIENTEIsNull: Boolean; virtual; + procedure SetCANT_PEDIDA_CLIENTEIsNull(const aValue: Boolean); virtual; + function GetID_PROVEEDORValue: Integer; virtual; + procedure SetID_PROVEEDORValue(const aValue: Integer); virtual; + function GetID_PROVEEDORIsNull: Boolean; virtual; + procedure SetID_PROVEEDORIsNull(const aValue: Boolean); virtual; + function GetCANT_PEDIDA_PROVEEDORValue: Integer; virtual; + procedure SetCANT_PEDIDA_PROVEEDORValue(const aValue: Integer); virtual; + function GetCANT_PEDIDA_PROVEEDORIsNull: Boolean; virtual; + procedure SetCANT_PEDIDA_PROVEEDORIsNull(const aValue: Boolean); virtual; + function GetCANT_PENDIENTE_PEDIRValue: Currency; virtual; + procedure SetCANT_PENDIENTE_PEDIRValue(const aValue: Currency); virtual; + function GetCANT_PENDIENTE_PEDIRIsNull: Boolean; virtual; + procedure SetCANT_PENDIENTE_PEDIRIsNull(const aValue: Boolean); virtual; + function GetCONCEPTOValue: String; virtual; + procedure SetCONCEPTOValue(const aValue: String); virtual; + function GetCONCEPTOIsNull: Boolean; virtual; + procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual; + function GetIMPORTE_UNIDADValue: Currency; virtual; + procedure SetIMPORTE_UNIDADValue(const aValue: Currency); virtual; + function GetIMPORTE_UNIDADIsNull: Boolean; virtual; + procedure SetIMPORTE_UNIDADIsNull(const aValue: Boolean); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetDESCUENTOIsNull: Boolean; virtual; + procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual; + function GetIMPORTE_TOTALValue: Currency; virtual; + procedure SetIMPORTE_TOTALValue(const aValue: Currency); virtual; + function GetIMPORTE_TOTALIsNull: Boolean; virtual; + procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID_PEDIDO: Integer read GetID_PEDIDOValue write SetID_PEDIDOValue; + property ID_PEDIDOIsNull: Boolean read GetID_PEDIDOIsNull write SetID_PEDIDOIsNull; + property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; + property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property CANT_PEDIDA_CLIENTE: Currency read GetCANT_PEDIDA_CLIENTEValue write SetCANT_PEDIDA_CLIENTEValue; + property CANT_PEDIDA_CLIENTEIsNull: Boolean read GetCANT_PEDIDA_CLIENTEIsNull write SetCANT_PEDIDA_CLIENTEIsNull; + property ID_PROVEEDOR: Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue; + property ID_PROVEEDORIsNull: Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull; + property CANT_PEDIDA_PROVEEDOR: Integer read GetCANT_PEDIDA_PROVEEDORValue write SetCANT_PEDIDA_PROVEEDORValue; + property CANT_PEDIDA_PROVEEDORIsNull: Boolean read GetCANT_PEDIDA_PROVEEDORIsNull write SetCANT_PEDIDA_PROVEEDORIsNull; + property CANT_PENDIENTE_PEDIR: Currency read GetCANT_PENDIENTE_PEDIRValue write SetCANT_PENDIENTE_PEDIRValue; + property CANT_PENDIENTE_PEDIRIsNull: Boolean read GetCANT_PENDIENTE_PEDIRIsNull write SetCANT_PENDIENTE_PEDIRIsNull; + property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + property IMPORTE_UNIDAD: Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue; + property IMPORTE_UNIDADIsNull: Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull; + property IMPORTE_TOTAL: Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; public constructor Create(aDataTable: TDADataTable); override; @@ -2256,14 +2481,14 @@ begin DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvID_PROVEEDOR].AsVariant := Null; end; -function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetCANT_PEDIDA_PROVEEDORValue: Currency; +function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetCANT_PEDIDA_PROVEEDORValue: Integer; begin - result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR].AsCurrency; + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR].AsInteger; end; -procedure TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.SetCANT_PEDIDA_PROVEEDORValue(const aValue: Currency); +procedure TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.SetCANT_PEDIDA_PROVEEDORValue(const aValue: Integer); begin - DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR].AsCurrency := aValue; + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR].AsInteger := aValue; end; function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetCANT_PEDIDA_PROVEEDORIsNull: boolean; @@ -2298,6 +2523,312 @@ begin DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvCANT_PENDIENTE_PEDIR].AsVariant := Null; end; +function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetCONCEPTOValue: String; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO].AsString; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.SetCONCEPTOValue(const aValue: String); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO].AsString := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetCONCEPTOIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.SetCONCEPTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetIMPORTE_UNIDADValue: Currency; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD].AsCurrency; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.SetIMPORTE_UNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD].AsCurrency := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetIMPORTE_UNIDADIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.SetIMPORTE_UNIDADIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO].AsFloat; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO].AsFloat := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetDESCUENTOIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.SetDESCUENTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetIMPORTE_TOTALValue: Currency; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL].AsCurrency; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.SetIMPORTE_TOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL].AsCurrency := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.GetIMPORTE_TOTALIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.SetIMPORTE_TOTALIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL].AsVariant := Null; +end; + + +{ TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules } +constructor TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.Destroy; +begin + inherited; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetID_PEDIDOValue: Integer; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO].AsInteger; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetID_PEDIDOValue(const aValue: Integer); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO].AsInteger := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetID_PEDIDOIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetID_PEDIDOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetID_ARTICULOValue: Integer; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO].AsInteger; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetID_ARTICULOValue(const aValue: Integer); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO].AsInteger := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetID_ARTICULOIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetID_ARTICULOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetCANT_PEDIDA_CLIENTEValue: Currency; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE].AsCurrency; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetCANT_PEDIDA_CLIENTEValue(const aValue: Currency); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE].AsCurrency := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetCANT_PEDIDA_CLIENTEIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetCANT_PEDIDA_CLIENTEIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetID_PROVEEDORValue: Integer; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR].AsInteger; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetID_PROVEEDORValue(const aValue: Integer); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR].AsInteger := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetID_PROVEEDORIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetID_PROVEEDORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetCANT_PEDIDA_PROVEEDORValue: Integer; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR].AsInteger; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetCANT_PEDIDA_PROVEEDORValue(const aValue: Integer); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR].AsInteger := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetCANT_PEDIDA_PROVEEDORIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetCANT_PEDIDA_PROVEEDORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetCANT_PENDIENTE_PEDIRValue: Currency; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR].AsCurrency; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetCANT_PENDIENTE_PEDIRValue(const aValue: Currency); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR].AsCurrency := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetCANT_PENDIENTE_PEDIRIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetCANT_PENDIENTE_PEDIRIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetCONCEPTOValue: String; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO].AsString; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetCONCEPTOValue(const aValue: String); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO].AsString := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetCONCEPTOIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetCONCEPTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetIMPORTE_UNIDADValue: Currency; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD].AsCurrency; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetIMPORTE_UNIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD].AsCurrency := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetIMPORTE_UNIDADIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetIMPORTE_UNIDADIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO].AsFloat; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO].AsFloat := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetDESCUENTOIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetDESCUENTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO].AsVariant := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetIMPORTE_TOTALValue: Currency; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL].AsCurrency; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetIMPORTE_TOTALValue(const aValue: Currency); +begin + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL].AsCurrency := aValue; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.GetIMPORTE_TOTALIsNull: boolean; +begin + result := DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL].IsNull; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules.SetIMPORTE_TOTALIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL].AsVariant := Null; +end; + initialization RegisterDataTableRules(RID_ListaAnosPedidos, TListaAnosPedidosDataTableRules); @@ -2305,5 +2836,6 @@ initialization RegisterDataTableRules(RID_PedidosCliente_Detalles, TPedidosCliente_DetallesDataTableRules); RegisterDataTableRules(RID_PedidosCliente_Articulos_Pendientes, TPedidosCliente_Articulos_PendientesDataTableRules); RegisterDataTableRules(RID_PedidoCliente_ArticulosPendientesPedirAProv, TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules); + RegisterDataTableRules(RID_PedidoCliente_ArticulosPendientesPedirAProvNoArticulos, TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDataTableRules); end. diff --git a/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteServer_Intf.pas b/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteServer_Intf.pas index 3b24d0b..bb019aa 100644 --- a/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteServer_Intf.pas +++ b/Source/Modulos/Pedidos de cliente/Model/schPedidosClienteServer_Intf.pas @@ -9,16 +9,17 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosPedidosDelta = '{76D21809-9389-466A-8EA6-770F2C9CC4CE}'; - RID_PedidosClienteDelta = '{04D07B96-AF61-4C4B-B0BB-B3990FD371B0}'; - RID_PedidosCliente_DetallesDelta = '{F54283EE-DC22-47FE-B6E9-C16541FFF323}'; - RID_PedidosCliente_Articulos_PendientesDelta = '{25A809D3-7A74-4693-9174-971D6E346DB8}'; - RID_PedidoCliente_ArticulosPendientesPedirAProvDelta = '{B2CCEE7F-A2FE-4853-868F-7C6C8E5BC340}'; + RID_ListaAnosPedidosDelta = '{AFC97261-540F-44C4-9AD7-057298F1B086}'; + RID_PedidosClienteDelta = '{E50F050B-03E8-4C84-91AA-9B8205480C0D}'; + RID_PedidosCliente_DetallesDelta = '{506DEE40-B318-405D-BF82-CCE6502097E8}'; + RID_PedidosCliente_Articulos_PendientesDelta = '{FB70B126-428D-454B-AA03-814B3F03B317}'; + RID_PedidoCliente_ArticulosPendientesPedirAProvDelta = '{14A7355B-4DDA-4A3F-AFF0-A0C79E98EE09}'; + RID_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDelta = '{1D7515BA-4719-4377-BF5D-F3027714E5E8}'; type { IListaAnosPedidosDelta } IListaAnosPedidosDelta = interface(IListaAnosPedidos) - ['{76D21809-9389-466A-8EA6-770F2C9CC4CE}'] + ['{AFC97261-540F-44C4-9AD7-057298F1B086}'] { Property getters and setters } function GetOldANOValue : String; @@ -52,7 +53,7 @@ type { IPedidosClienteDelta } IPedidosClienteDelta = interface(IPedidosCliente) - ['{04D07B96-AF61-4C4B-B0BB-B3990FD371B0}'] + ['{E50F050B-03E8-4C84-91AA-9B8205480C0D}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -484,7 +485,7 @@ type { IPedidosCliente_DetallesDelta } IPedidosCliente_DetallesDelta = interface(IPedidosCliente_Detalles) - ['{F54283EE-DC22-47FE-B6E9-C16541FFF323}'] + ['{506DEE40-B318-405D-BF82-CCE6502097E8}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_PEDIDOValue : Integer; @@ -674,7 +675,7 @@ type { IPedidosCliente_Articulos_PendientesDelta } IPedidosCliente_Articulos_PendientesDelta = interface(IPedidosCliente_Articulos_Pendientes) - ['{25A809D3-7A74-4693-9174-971D6E346DB8}'] + ['{FB70B126-428D-454B-AA03-814B3F03B317}'] { Property getters and setters } function GetOldID_ARTICULOValue : Integer; function GetOldCANTIDAD_PEDValue : Currency; @@ -744,22 +745,30 @@ type { IPedidoCliente_ArticulosPendientesPedirAProvDelta } IPedidoCliente_ArticulosPendientesPedirAProvDelta = interface(IPedidoCliente_ArticulosPendientesPedirAProv) - ['{B2CCEE7F-A2FE-4853-868F-7C6C8E5BC340}'] + ['{14A7355B-4DDA-4A3F-AFF0-A0C79E98EE09}'] { Property getters and setters } function GetOldID_PEDIDOValue : Integer; function GetOldID_ARTICULOValue : Integer; function GetOldCANT_PEDIDA_CLIENTEValue : Currency; function GetOldID_PROVEEDORValue : Integer; - function GetOldCANT_PEDIDA_PROVEEDORValue : Currency; + function GetOldCANT_PEDIDA_PROVEEDORValue : Integer; function GetOldCANT_PENDIENTE_PEDIRValue : Currency; + function GetOldCONCEPTOValue : String; + function GetOldIMPORTE_UNIDADValue : Currency; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTE_TOTALValue : Currency; { Properties } property OldID_PEDIDO : Integer read GetOldID_PEDIDOValue; property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue; property OldCANT_PEDIDA_CLIENTE : Currency read GetOldCANT_PEDIDA_CLIENTEValue; property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue; - property OldCANT_PEDIDA_PROVEEDOR : Currency read GetOldCANT_PEDIDA_PROVEEDORValue; + property OldCANT_PEDIDA_PROVEEDOR : Integer read GetOldCANT_PEDIDA_PROVEEDORValue; property OldCANT_PENDIENTE_PEDIR : Currency read GetOldCANT_PENDIENTE_PEDIRValue; + property OldCONCEPTO : String read GetOldCONCEPTOValue; + property OldIMPORTE_UNIDAD : Currency read GetOldIMPORTE_UNIDADValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue; end; { TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules } @@ -791,11 +800,11 @@ type function GetOldID_PROVEEDORIsNull: Boolean; virtual; procedure SetID_PROVEEDORValue(const aValue: Integer); virtual; procedure SetID_PROVEEDORIsNull(const aValue: Boolean); virtual; - function GetCANT_PEDIDA_PROVEEDORValue: Currency; virtual; + function GetCANT_PEDIDA_PROVEEDORValue: Integer; virtual; function GetCANT_PEDIDA_PROVEEDORIsNull: Boolean; virtual; - function GetOldCANT_PEDIDA_PROVEEDORValue: Currency; virtual; + function GetOldCANT_PEDIDA_PROVEEDORValue: Integer; virtual; function GetOldCANT_PEDIDA_PROVEEDORIsNull: Boolean; virtual; - procedure SetCANT_PEDIDA_PROVEEDORValue(const aValue: Currency); virtual; + procedure SetCANT_PEDIDA_PROVEEDORValue(const aValue: Integer); virtual; procedure SetCANT_PEDIDA_PROVEEDORIsNull(const aValue: Boolean); virtual; function GetCANT_PENDIENTE_PEDIRValue: Currency; virtual; function GetCANT_PENDIENTE_PEDIRIsNull: Boolean; virtual; @@ -803,6 +812,30 @@ type function GetOldCANT_PENDIENTE_PEDIRIsNull: Boolean; virtual; procedure SetCANT_PENDIENTE_PEDIRValue(const aValue: Currency); virtual; procedure SetCANT_PENDIENTE_PEDIRIsNull(const aValue: Boolean); virtual; + function GetCONCEPTOValue: String; virtual; + function GetCONCEPTOIsNull: Boolean; virtual; + function GetOldCONCEPTOValue: String; virtual; + function GetOldCONCEPTOIsNull: Boolean; virtual; + procedure SetCONCEPTOValue(const aValue: String); virtual; + procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual; + function GetIMPORTE_UNIDADValue: Currency; virtual; + function GetIMPORTE_UNIDADIsNull: Boolean; virtual; + function GetOldIMPORTE_UNIDADValue: Currency; virtual; + function GetOldIMPORTE_UNIDADIsNull: Boolean; virtual; + procedure SetIMPORTE_UNIDADValue(const aValue: Currency); virtual; + procedure SetIMPORTE_UNIDADIsNull(const aValue: Boolean); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetDESCUENTOIsNull: Boolean; virtual; + function GetOldDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOIsNull: Boolean; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual; + function GetIMPORTE_TOTALValue: Currency; virtual; + function GetIMPORTE_TOTALIsNull: Boolean; virtual; + function GetOldIMPORTE_TOTALValue: Currency; virtual; + function GetOldIMPORTE_TOTALIsNull: Boolean; virtual; + procedure SetIMPORTE_TOTALValue(const aValue: Currency); virtual; + procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); virtual; { Properties } property ID_PEDIDO : Integer read GetID_PEDIDOValue write SetID_PEDIDOValue; @@ -821,14 +854,172 @@ type property ID_PROVEEDORIsNull : Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull; property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue; property OldID_PROVEEDORIsNull : Boolean read GetOldID_PROVEEDORIsNull; - property CANT_PEDIDA_PROVEEDOR : Currency read GetCANT_PEDIDA_PROVEEDORValue write SetCANT_PEDIDA_PROVEEDORValue; + property CANT_PEDIDA_PROVEEDOR : Integer read GetCANT_PEDIDA_PROVEEDORValue write SetCANT_PEDIDA_PROVEEDORValue; property CANT_PEDIDA_PROVEEDORIsNull : Boolean read GetCANT_PEDIDA_PROVEEDORIsNull write SetCANT_PEDIDA_PROVEEDORIsNull; - property OldCANT_PEDIDA_PROVEEDOR : Currency read GetOldCANT_PEDIDA_PROVEEDORValue; + property OldCANT_PEDIDA_PROVEEDOR : Integer read GetOldCANT_PEDIDA_PROVEEDORValue; property OldCANT_PEDIDA_PROVEEDORIsNull : Boolean read GetOldCANT_PEDIDA_PROVEEDORIsNull; property CANT_PENDIENTE_PEDIR : Currency read GetCANT_PENDIENTE_PEDIRValue write SetCANT_PENDIENTE_PEDIRValue; property CANT_PENDIENTE_PEDIRIsNull : Boolean read GetCANT_PENDIENTE_PEDIRIsNull write SetCANT_PENDIENTE_PEDIRIsNull; property OldCANT_PENDIENTE_PEDIR : Currency read GetOldCANT_PENDIENTE_PEDIRValue; property OldCANT_PENDIENTE_PEDIRIsNull : Boolean read GetOldCANT_PENDIENTE_PEDIRIsNull; + property CONCEPTO : String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull : Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + property OldCONCEPTO : String read GetOldCONCEPTOValue; + property OldCONCEPTOIsNull : Boolean read GetOldCONCEPTOIsNull; + property IMPORTE_UNIDAD : Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue; + property IMPORTE_UNIDADIsNull : Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull; + property OldIMPORTE_UNIDAD : Currency read GetOldIMPORTE_UNIDADValue; + property OldIMPORTE_UNIDADIsNull : Boolean read GetOldIMPORTE_UNIDADIsNull; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property DESCUENTOIsNull : Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldDESCUENTOIsNull : Boolean read GetOldDESCUENTOIsNull; + property IMPORTE_TOTAL : Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property IMPORTE_TOTALIsNull : Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; + property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue; + property OldIMPORTE_TOTALIsNull : Boolean read GetOldIMPORTE_TOTALIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDelta } + IPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDelta = interface(IPedidoCliente_ArticulosPendientesPedirAProvNoArticulos) + ['{1D7515BA-4719-4377-BF5D-F3027714E5E8}'] + { Property getters and setters } + function GetOldID_PEDIDOValue : Integer; + function GetOldID_ARTICULOValue : Integer; + function GetOldCANT_PEDIDA_CLIENTEValue : Currency; + function GetOldID_PROVEEDORValue : Integer; + function GetOldCANT_PEDIDA_PROVEEDORValue : Integer; + function GetOldCANT_PENDIENTE_PEDIRValue : Currency; + function GetOldCONCEPTOValue : String; + function GetOldIMPORTE_UNIDADValue : Currency; + function GetOldDESCUENTOValue : Float; + function GetOldIMPORTE_TOTALValue : Currency; + + { Properties } + property OldID_PEDIDO : Integer read GetOldID_PEDIDOValue; + property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue; + property OldCANT_PEDIDA_CLIENTE : Currency read GetOldCANT_PEDIDA_CLIENTEValue; + property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue; + property OldCANT_PEDIDA_PROVEEDOR : Integer read GetOldCANT_PEDIDA_PROVEEDORValue; + property OldCANT_PENDIENTE_PEDIR : Currency read GetOldCANT_PENDIENTE_PEDIRValue; + property OldCONCEPTO : String read GetOldCONCEPTOValue; + property OldIMPORTE_UNIDAD : Currency read GetOldIMPORTE_UNIDADValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue; + end; + + { TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules } + TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules = class(TDABusinessProcessorRules, IPedidoCliente_ArticulosPendientesPedirAProvNoArticulos, IPedidoCliente_ArticulosPendientesPedirAProvNoArticulosDelta) + private + protected + { Property getters and setters } + function GetID_PEDIDOValue: Integer; virtual; + function GetID_PEDIDOIsNull: Boolean; virtual; + function GetOldID_PEDIDOValue: Integer; virtual; + function GetOldID_PEDIDOIsNull: Boolean; virtual; + procedure SetID_PEDIDOValue(const aValue: Integer); virtual; + procedure SetID_PEDIDOIsNull(const aValue: Boolean); virtual; + function GetID_ARTICULOValue: Integer; virtual; + function GetID_ARTICULOIsNull: Boolean; virtual; + function GetOldID_ARTICULOValue: Integer; virtual; + function GetOldID_ARTICULOIsNull: Boolean; virtual; + procedure SetID_ARTICULOValue(const aValue: Integer); virtual; + procedure SetID_ARTICULOIsNull(const aValue: Boolean); virtual; + function GetCANT_PEDIDA_CLIENTEValue: Currency; virtual; + function GetCANT_PEDIDA_CLIENTEIsNull: Boolean; virtual; + function GetOldCANT_PEDIDA_CLIENTEValue: Currency; virtual; + function GetOldCANT_PEDIDA_CLIENTEIsNull: Boolean; virtual; + procedure SetCANT_PEDIDA_CLIENTEValue(const aValue: Currency); virtual; + procedure SetCANT_PEDIDA_CLIENTEIsNull(const aValue: Boolean); virtual; + function GetID_PROVEEDORValue: Integer; virtual; + function GetID_PROVEEDORIsNull: Boolean; virtual; + function GetOldID_PROVEEDORValue: Integer; virtual; + function GetOldID_PROVEEDORIsNull: Boolean; virtual; + procedure SetID_PROVEEDORValue(const aValue: Integer); virtual; + procedure SetID_PROVEEDORIsNull(const aValue: Boolean); virtual; + function GetCANT_PEDIDA_PROVEEDORValue: Integer; virtual; + function GetCANT_PEDIDA_PROVEEDORIsNull: Boolean; virtual; + function GetOldCANT_PEDIDA_PROVEEDORValue: Integer; virtual; + function GetOldCANT_PEDIDA_PROVEEDORIsNull: Boolean; virtual; + procedure SetCANT_PEDIDA_PROVEEDORValue(const aValue: Integer); virtual; + procedure SetCANT_PEDIDA_PROVEEDORIsNull(const aValue: Boolean); virtual; + function GetCANT_PENDIENTE_PEDIRValue: Currency; virtual; + function GetCANT_PENDIENTE_PEDIRIsNull: Boolean; virtual; + function GetOldCANT_PENDIENTE_PEDIRValue: Currency; virtual; + function GetOldCANT_PENDIENTE_PEDIRIsNull: Boolean; virtual; + procedure SetCANT_PENDIENTE_PEDIRValue(const aValue: Currency); virtual; + procedure SetCANT_PENDIENTE_PEDIRIsNull(const aValue: Boolean); virtual; + function GetCONCEPTOValue: String; virtual; + function GetCONCEPTOIsNull: Boolean; virtual; + function GetOldCONCEPTOValue: String; virtual; + function GetOldCONCEPTOIsNull: Boolean; virtual; + procedure SetCONCEPTOValue(const aValue: String); virtual; + procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual; + function GetIMPORTE_UNIDADValue: Currency; virtual; + function GetIMPORTE_UNIDADIsNull: Boolean; virtual; + function GetOldIMPORTE_UNIDADValue: Currency; virtual; + function GetOldIMPORTE_UNIDADIsNull: Boolean; virtual; + procedure SetIMPORTE_UNIDADValue(const aValue: Currency); virtual; + procedure SetIMPORTE_UNIDADIsNull(const aValue: Boolean); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetDESCUENTOIsNull: Boolean; virtual; + function GetOldDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOIsNull: Boolean; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + procedure SetDESCUENTOIsNull(const aValue: Boolean); virtual; + function GetIMPORTE_TOTALValue: Currency; virtual; + function GetIMPORTE_TOTALIsNull: Boolean; virtual; + function GetOldIMPORTE_TOTALValue: Currency; virtual; + function GetOldIMPORTE_TOTALIsNull: Boolean; virtual; + procedure SetIMPORTE_TOTALValue(const aValue: Currency); virtual; + procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID_PEDIDO : Integer read GetID_PEDIDOValue write SetID_PEDIDOValue; + property ID_PEDIDOIsNull : Boolean read GetID_PEDIDOIsNull write SetID_PEDIDOIsNull; + property OldID_PEDIDO : Integer read GetOldID_PEDIDOValue; + property OldID_PEDIDOIsNull : Boolean read GetOldID_PEDIDOIsNull; + property ID_ARTICULO : Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; + property ID_ARTICULOIsNull : Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue; + property OldID_ARTICULOIsNull : Boolean read GetOldID_ARTICULOIsNull; + property CANT_PEDIDA_CLIENTE : Currency read GetCANT_PEDIDA_CLIENTEValue write SetCANT_PEDIDA_CLIENTEValue; + property CANT_PEDIDA_CLIENTEIsNull : Boolean read GetCANT_PEDIDA_CLIENTEIsNull write SetCANT_PEDIDA_CLIENTEIsNull; + property OldCANT_PEDIDA_CLIENTE : Currency read GetOldCANT_PEDIDA_CLIENTEValue; + property OldCANT_PEDIDA_CLIENTEIsNull : Boolean read GetOldCANT_PEDIDA_CLIENTEIsNull; + property ID_PROVEEDOR : Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue; + property ID_PROVEEDORIsNull : Boolean read GetID_PROVEEDORIsNull write SetID_PROVEEDORIsNull; + property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue; + property OldID_PROVEEDORIsNull : Boolean read GetOldID_PROVEEDORIsNull; + property CANT_PEDIDA_PROVEEDOR : Integer read GetCANT_PEDIDA_PROVEEDORValue write SetCANT_PEDIDA_PROVEEDORValue; + property CANT_PEDIDA_PROVEEDORIsNull : Boolean read GetCANT_PEDIDA_PROVEEDORIsNull write SetCANT_PEDIDA_PROVEEDORIsNull; + property OldCANT_PEDIDA_PROVEEDOR : Integer read GetOldCANT_PEDIDA_PROVEEDORValue; + property OldCANT_PEDIDA_PROVEEDORIsNull : Boolean read GetOldCANT_PEDIDA_PROVEEDORIsNull; + property CANT_PENDIENTE_PEDIR : Currency read GetCANT_PENDIENTE_PEDIRValue write SetCANT_PENDIENTE_PEDIRValue; + property CANT_PENDIENTE_PEDIRIsNull : Boolean read GetCANT_PENDIENTE_PEDIRIsNull write SetCANT_PENDIENTE_PEDIRIsNull; + property OldCANT_PENDIENTE_PEDIR : Currency read GetOldCANT_PENDIENTE_PEDIRValue; + property OldCANT_PENDIENTE_PEDIRIsNull : Boolean read GetOldCANT_PENDIENTE_PEDIRIsNull; + property CONCEPTO : String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull : Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + property OldCONCEPTO : String read GetOldCONCEPTOValue; + property OldCONCEPTOIsNull : Boolean read GetOldCONCEPTOIsNull; + property IMPORTE_UNIDAD : Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue; + property IMPORTE_UNIDADIsNull : Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull; + property OldIMPORTE_UNIDAD : Currency read GetOldIMPORTE_UNIDADValue; + property OldIMPORTE_UNIDADIsNull : Boolean read GetOldIMPORTE_UNIDADIsNull; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property DESCUENTOIsNull : Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldDESCUENTOIsNull : Boolean read GetOldDESCUENTOIsNull; + property IMPORTE_TOTAL : Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property IMPORTE_TOTALIsNull : Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; + property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue; + property OldIMPORTE_TOTALIsNull : Boolean read GetOldIMPORTE_TOTALIsNull; public constructor Create(aBusinessProcessor: TDABusinessProcessor); override; @@ -2681,7 +2872,7 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvID_PROVEEDOR] := Null; end; -function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetCANT_PEDIDA_PROVEEDORValue: Currency; +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetCANT_PEDIDA_PROVEEDORValue: Integer; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR]; end; @@ -2691,7 +2882,7 @@ begin result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR]); end; -function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetOldCANT_PEDIDA_PROVEEDORValue: Currency; +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetOldCANT_PEDIDA_PROVEEDORValue: Integer; begin result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR]; end; @@ -2701,7 +2892,7 @@ begin result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR]); end; -procedure TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.SetCANT_PEDIDA_PROVEEDORValue(const aValue: Currency); +procedure TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.SetCANT_PEDIDA_PROVEEDORValue(const aValue: Integer); begin BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCANT_PEDIDA_PROVEEDOR] := aValue; end; @@ -2743,6 +2934,452 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCANT_PENDIENTE_PEDIR] := Null; end; +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetCONCEPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetCONCEPTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetOldCONCEPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetOldCONCEPTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.SetCONCEPTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.SetCONCEPTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvCONCEPTO] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetIMPORTE_UNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetIMPORTE_UNIDADIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetOldIMPORTE_UNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetOldIMPORTE_UNIDADIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.SetIMPORTE_UNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.SetIMPORTE_UNIDADIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_UNIDAD] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetDESCUENTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetOldDESCUENTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.SetDESCUENTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvDESCUENTO] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetIMPORTE_TOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetIMPORTE_TOTALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetOldIMPORTE_TOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.GetOldIMPORTE_TOTALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.SetIMPORTE_TOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.SetIMPORTE_TOTALIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvIMPORTE_TOTAL] := Null; +end; + + +{ TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules } +constructor TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetID_PEDIDOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetID_PEDIDOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldID_PEDIDOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldID_PEDIDOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetID_PEDIDOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetID_PEDIDOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PEDIDO] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetID_ARTICULOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetID_ARTICULOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldID_ARTICULOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldID_ARTICULOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetID_ARTICULOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetID_ARTICULOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_ARTICULO] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetCANT_PEDIDA_CLIENTEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetCANT_PEDIDA_CLIENTEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldCANT_PEDIDA_CLIENTEValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldCANT_PEDIDA_CLIENTEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetCANT_PEDIDA_CLIENTEValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetCANT_PEDIDA_CLIENTEIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_CLIENTE] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetID_PROVEEDORValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetID_PROVEEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldID_PROVEEDORValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldID_PROVEEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetID_PROVEEDORValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetID_PROVEEDORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosID_PROVEEDOR] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetCANT_PEDIDA_PROVEEDORValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetCANT_PEDIDA_PROVEEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldCANT_PEDIDA_PROVEEDORValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldCANT_PEDIDA_PROVEEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetCANT_PEDIDA_PROVEEDORValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetCANT_PEDIDA_PROVEEDORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PEDIDA_PROVEEDOR] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetCANT_PENDIENTE_PEDIRValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetCANT_PENDIENTE_PEDIRIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldCANT_PENDIENTE_PEDIRValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldCANT_PENDIENTE_PEDIRIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetCANT_PENDIENTE_PEDIRValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetCANT_PENDIENTE_PEDIRIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCANT_PENDIENTE_PEDIR] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetCONCEPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetCONCEPTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldCONCEPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldCONCEPTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetCONCEPTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetCONCEPTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosCONCEPTO] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetIMPORTE_UNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetIMPORTE_UNIDADIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldIMPORTE_UNIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldIMPORTE_UNIDADIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetIMPORTE_UNIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetIMPORTE_UNIDADIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_UNIDAD] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetDESCUENTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldDESCUENTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetDESCUENTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDESCUENTO] := Null; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetIMPORTE_TOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetIMPORTE_TOTALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL]); +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldIMPORTE_TOTALValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL]; +end; + +function TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.GetOldIMPORTE_TOTALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL]); +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetIMPORTE_TOTALValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL] := aValue; +end; + +procedure TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules.SetIMPORTE_TOTALIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosIMPORTE_TOTAL] := Null; +end; + initialization RegisterBusinessProcessorRules(RID_ListaAnosPedidosDelta, TListaAnosPedidosBusinessProcessorRules); @@ -2750,5 +3387,6 @@ initialization RegisterBusinessProcessorRules(RID_PedidosCliente_DetallesDelta, TPedidosCliente_DetallesBusinessProcessorRules); RegisterBusinessProcessorRules(RID_PedidosCliente_Articulos_PendientesDelta, TPedidosCliente_Articulos_PendientesBusinessProcessorRules); RegisterBusinessProcessorRules(RID_PedidoCliente_ArticulosPendientesPedirAProvDelta, TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_PedidoCliente_ArticulosPendientesPedirAProvNoArticulosDelta, TPedidoCliente_ArticulosPendientesPedirAProvNoArticulosBusinessProcessorRules); end. diff --git a/Source/Modulos/Pedidos de cliente/Model/uBizPedidosCliente.pas b/Source/Modulos/Pedidos de cliente/Model/uBizPedidosCliente.pas index 3a82230..1f82844 100644 --- a/Source/Modulos/Pedidos de cliente/Model/uBizPedidosCliente.pas +++ b/Source/Modulos/Pedidos de cliente/Model/uBizPedidosCliente.pas @@ -14,6 +14,7 @@ const SITUACION_PEDIDO_PENDIENTE = 'PENDIENTE'; SITUACION_PEDIDO_ENPROCESO = 'EN PROCESO'; SITUACION_PEDIDO_SERVIDO = 'SERVIDO'; + SITUACION_PEDIDO_ALBARANADO = 'ALBARANADO'; type IBizPedidoCliente = interface(IPedidosCliente) @@ -158,8 +159,9 @@ begin with Result do begin Add(SITUACION_PEDIDO_PENDIENTE); - Add(SITUACION_PEDIDO_ENPROCESO); - Add(SITUACION_PEDIDO_SERVIDO); +// Add(SITUACION_PEDIDO_ENPROCESO); +// Add(SITUACION_PEDIDO_SERVIDO); + Add(SITUACION_PEDIDO_ALBARANADO); end; end; diff --git a/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc b/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc index f6f6002..51d14a8 100644 --- a/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc +++ b/Source/Modulos/Pedidos de cliente/Plugin/PedidosCliente_plugin.drc @@ -14,4 +14,4 @@ END /* C:\Codigo\Source\Modulos\Pedidos de cliente\Plugin\uPluginPedidosCliente.dfm */ /* C:\Codigo\Source\Modulos\Pedidos de cliente\Plugin\PedidosCliente_plugin.RES */ -/* c:\temp\dtf124.tmp */ +/* c:\temp\dtf8CF.tmp */ diff --git a/Source/Modulos/Pedidos de cliente/Plugin/uPluginPedidosCliente.pas b/Source/Modulos/Pedidos de cliente/Plugin/uPluginPedidosCliente.pas index 16f16e8..c129044 100644 --- a/Source/Modulos/Pedidos de cliente/Plugin/uPluginPedidosCliente.pas +++ b/Source/Modulos/Pedidos de cliente/Plugin/uPluginPedidosCliente.pas @@ -53,7 +53,7 @@ end; constructor TPluginPedidosCliente.Create(AOwner: TComponent); begin inherited; - ModuleName := MODULENAME_PEDIDOS_PROVEEDOR; + ModuleName := MODULENAME_PEDIDOS_CLIENTE; uPedidosClienteViewRegister.RegisterViews; end; diff --git a/Source/Modulos/Pedidos de cliente/Servidor/srvPedidosCliente_Impl.dfm b/Source/Modulos/Pedidos de cliente/Servidor/srvPedidosCliente_Impl.dfm index a20dc76..5eae702 100644 --- a/Source/Modulos/Pedidos de cliente/Servidor/srvPedidosCliente_Impl.dfm +++ b/Source/Modulos/Pedidos de cliente/Servidor/srvPedidosCliente_Impl.dfm @@ -591,16 +591,23 @@ object srvPedidosCliente: TsrvPedidosCliente Params = < item Name = 'ID' - Value = '41' + Value = '1138' ParamType = daptInput end> Statements = < item Connection = 'IBX' SQL = - 'SELECT'#10' ID_PEDIDO, ID_ARTICULO, CANT_PEDIDA_CLIENTE, ID_PROVE' + - 'EDOR,'#10' CANT_PEDIDA_PROVEEDOR, CANT_PENDIENTE_PEDIR'#10' FROM'#10' ' + - ' V_PED_CLI_ART_PEND_PEDIR_PROV'#10' WHERE ID_PEDIDO = :ID'#10 + 'SELECT PEDIDOS_CLIENTE_DETALLES.id_pedido, PEDIDOS_CLIENTE_DETA' + + 'LLES.id_articulo,'#10'PEDIDOS_CLIENTE_DETALLES.CANTIDAD as CANT_PEDI' + + 'DA_CLIENTE, articulos.id_PROVEEDOR,'#10'0 as CANT_PEDIDA_PROVEEDOR, ' + + 'PEDIDOS_CLIENTE_DETALLES.CANTIDAD as CANT_PENDIENTE_PEDIR,'#10'PEDID' + + 'OS_CLIENTE_DETALLES.CONCEPTO,'#10'PEDIDOS_CLIENTE_DETALLES.importe_u' + + 'nidad, PEDIDOS_CLIENTE_DETALLES.descuento, PEDIDOS_CLIENTE_DETAL' + + 'LES.importe_total'#10#10'FROM PEDIDOS_CLIENTE_DETALLES'#10'left join artic' + + 'ulos on (articulos.id = PEDIDOS_CLIENTE_DETALLES.id_articulo)'#10'wh' + + 'ere id_pedido =:ID'#10'and PEDIDOS_CLIENTE_DETALLES.id_articulo is n' + + 'ot null'#10'order by ARTICULOS.ID_PROVEEDOR'#10#10#10#10#10#10 StatementType = stSQL ColumnMappings = < item @@ -626,6 +633,22 @@ object srvPedidosCliente: TsrvPedidosCliente item DatasetField = 'CANT_PENDIENTE_PEDIR' TableField = 'CANT_PENDIENTE_PEDIR' + end + item + DatasetField = 'CONCEPTO' + TableField = 'CONCEPTO' + end + item + DatasetField = 'IMPORTE_UNIDAD' + TableField = 'IMPORTE_UNIDAD' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTE_TOTAL' + TableField = 'IMPORTE_TOTAL' end> end> Name = 'PedidoCliente_ArticulosPendientesPedirAProv' @@ -649,11 +672,137 @@ object srvPedidosCliente: TsrvPedidosCliente end item Name = 'CANT_PEDIDA_PROVEEDOR' - DataType = datCurrency + DataType = datInteger end item Name = 'CANT_PENDIENTE_PEDIR' DataType = datCurrency + end + item + Name = 'CONCEPTO' + DataType = datString + Size = 2000 + end + item + Name = 'IMPORTE_UNIDAD' + DataType = datCurrency + end + item + Name = 'DESCUENTO' + DataType = datFloat + end + item + Name = 'IMPORTE_TOTAL' + DataType = datCurrency + end> + end + item + Params = < + item + Name = 'ID' + Value = '1138' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'SELECT PEDIDOS_CLIENTE_DETALLES.id_pedido, PEDIDOS_CLIENTE_DETA' + + 'LLES.id_articulo,'#10'PEDIDOS_CLIENTE_DETALLES.CANTIDAD as CANT_PEDI' + + 'DA_CLIENTE, articulos.id_PROVEEDOR,'#10'0 as CANT_PEDIDA_PROVEEDOR, ' + + 'PEDIDOS_CLIENTE_DETALLES.CANTIDAD as CANT_PENDIENTE_PEDIR,'#10'PEDID' + + 'OS_CLIENTE_DETALLES.CONCEPTO,'#10'PEDIDOS_CLIENTE_DETALLES.importe_u' + + 'nidad, PEDIDOS_CLIENTE_DETALLES.descuento, PEDIDOS_CLIENTE_DETAL' + + 'LES.importe_total'#10#10'FROM PEDIDOS_CLIENTE_DETALLES'#10'left join artic' + + 'ulos on (articulos.id = PEDIDOS_CLIENTE_DETALLES.id_articulo)'#10'wh' + + 'ere id_pedido =:ID'#10'and PEDIDOS_CLIENTE_DETALLES.id_articulo is n' + + 'ull'#10'order by ARTICULOS.ID_PROVEEDOR'#10#10#10#10#10#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID_ARTICULO' + TableField = 'ID_ARTICULO' + end + item + DatasetField = 'ID_PEDIDO' + TableField = 'ID_PEDIDO' + end + item + DatasetField = 'CANT_PEDIDA_CLIENTE' + TableField = 'CANT_PEDIDA_CLIENTE' + end + item + DatasetField = 'ID_PROVEEDOR' + TableField = 'ID_PROVEEDOR' + end + item + DatasetField = 'CANT_PEDIDA_PROVEEDOR' + TableField = 'CANT_PEDIDA_PROVEEDOR' + end + item + DatasetField = 'CANT_PENDIENTE_PEDIR' + TableField = 'CANT_PENDIENTE_PEDIR' + end + item + DatasetField = 'CONCEPTO' + TableField = 'CONCEPTO' + end + item + DatasetField = 'IMPORTE_UNIDAD' + TableField = 'IMPORTE_UNIDAD' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'IMPORTE_TOTAL' + TableField = 'IMPORTE_TOTAL' + end> + end> + Name = 'PedidoCliente_ArticulosPendientesPedirAProvNoArticulos' + Fields = < + item + Name = 'ID_PEDIDO' + DataType = datInteger + end + item + Name = 'ID_ARTICULO' + DataType = datInteger + DictionaryEntry = 'PedidosProveedor_Detalles_ID_ARTICULO' + end + item + Name = 'CANT_PEDIDA_CLIENTE' + DataType = datCurrency + end + item + Name = 'ID_PROVEEDOR' + DataType = datInteger + end + item + Name = 'CANT_PEDIDA_PROVEEDOR' + DataType = datInteger + end + item + Name = 'CANT_PENDIENTE_PEDIR' + DataType = datCurrency + end + item + Name = 'CONCEPTO' + DataType = datString + Size = 2000 + end + item + Name = 'IMPORTE_UNIDAD' + DataType = datCurrency + end + item + Name = 'DESCUENTO' + DataType = datFloat + end + item + Name = 'IMPORTE_TOTAL' + DataType = datCurrency end> end> JoinDataTables = <> diff --git a/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc b/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc index b8cfd49..523820a 100644 --- a/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc +++ b/Source/Modulos/Pedidos de cliente/Views/PedidosCliente_view.drc @@ -26,4 +26,4 @@ END /* C:\Codigo\Source\Modulos\Pedidos de cliente\Views\uEditorElegirArticulosPedidoCliente.dfm */ /* C:\Codigo\Source\Modulos\Pedidos de cliente\Views\uEditorDireccionEntregaPedidoCliente.dfm */ /* C:\Codigo\Source\Modulos\Pedidos de cliente\Views\PedidosCliente_view.RES */ -/* c:\temp\dtf122.tmp */ +/* c:\temp\dtf8CD.tmp */ diff --git a/Source/Modulos/Pedidos de cliente/Views/uEditorPedidosCliente.dfm b/Source/Modulos/Pedidos de cliente/Views/uEditorPedidosCliente.dfm index cb8a6d1..5ba3b8c 100644 --- a/Source/Modulos/Pedidos de cliente/Views/uEditorPedidosCliente.dfm +++ b/Source/Modulos/Pedidos de cliente/Views/uEditorPedidosCliente.dfm @@ -5,6 +5,7 @@ inherited fEditorPedidosCliente: TfEditorPedidosCliente ClientWidth = 700 Position = poDesigned ExplicitWidth = 708 + ExplicitHeight = 240 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader @@ -156,22 +157,26 @@ inherited fEditorPedidosCliente: TfEditorPedidosCliente StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 243 + Width = 243 end inherited edtFechaFinFiltro: TcxDateEdit - Left = 233 + Left = 244 Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 233 + ExplicitLeft = 244 + ExplicitWidth = 482 + Width = 482 end inherited eLista: TcxComboBox - Left = 577 + Left = 605 Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' - ExplicitLeft = 577 + ExplicitLeft = 605 ExplicitWidth = 140 Width = 140 end @@ -2034,10 +2039,7 @@ inherited fEditorPedidosCliente: TfEditorPedidosCliente Value = 100 Default = True Info.Strings = ( - - 'Se generar'#225' un albar'#225'n de cliente basado en este pedido. Solo se' + - ' tendr'#225'n en cuenta aquellos art'#237'culos que existan en el cat'#225'logo' + - ' y sean inventariables.' + 'Se generar'#225' un albar'#225'n de cliente basado en este pedido.' '') end item @@ -2046,7 +2048,7 @@ inherited fEditorPedidosCliente: TfEditorPedidosCliente Info.Strings = ( 'Generar pedidos a los proveedores con los art'#237'culos de este pedi' + - 'do que existan en el cat'#225'logo y sean inventariables.') + 'do.') end> ButtonBar.Buttons = [cbCancel] MainIcon = tdiCustom diff --git a/Source/Modulos/Pedidos de cliente/Views/uEditorPedidosCliente.pas b/Source/Modulos/Pedidos de cliente/Views/uEditorPedidosCliente.pas index cffb950..720581b 100644 --- a/Source/Modulos/Pedidos de cliente/Views/uEditorPedidosCliente.pas +++ b/Source/Modulos/Pedidos de cliente/Views/uEditorPedidosCliente.pas @@ -210,7 +210,7 @@ begin (Sender as TAction).Enabled := HayDatos and not (ViewGrid.NumSeleccionados > 1) and ViewGrid.esSeleccionCeldaDatos and - (FPedidos.SITUACION <> SITUACION_PEDIDO_SERVIDO); + ((FPedidos.SITUACION <> SITUACION_PEDIDO_SERVIDO) and (FPedidos.SITUACION <> SITUACION_PEDIDO_ALBARANADO)); end; procedure TfEditorPedidosCliente.actInformesExecute(Sender: TObject); diff --git a/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.dfm b/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.dfm index bd08e96..681f50f 100644 --- a/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.dfm +++ b/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.dfm @@ -97,6 +97,10 @@ inherited frViewPedidosCliente: TfrViewPedidosCliente DataBinding.FieldName = 'FECHA_PREVISTA_ENVIO' Width = 44 end + object cxGridViewREFERENCIA_CLIENTE: TcxGridDBColumn + Caption = 'Ref. Cliente' + DataBinding.FieldName = 'REFERENCIA_CLIENTE' + end object cxGridViewNOMBRE: TcxGridDBColumn Caption = 'Cliente' DataBinding.FieldName = 'NOMBRE' @@ -155,10 +159,7 @@ inherited frViewPedidosCliente: TfrViewPedidosCliente Caption = 'Pendientes' end object cxGridLevel2: TcxGridLevel - Caption = 'En proceso' - end - object cxGridLevel3: TcxGridLevel - Caption = 'Servidos' + Caption = 'Albaranado' end end inherited frViewFiltroBase1: TfrViewFiltroBase @@ -202,6 +203,8 @@ inherited frViewPedidosCliente: TfrViewPedidosCliente StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' ExplicitLeft = 673 + ExplicitWidth = 215 + Width = 215 end end inherited TBXAlignmentPanel1: TTBXAlignmentPanel diff --git a/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.pas b/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.pas index d632a81..08b07ae 100644 --- a/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.pas +++ b/Source/Modulos/Pedidos de cliente/Views/uViewPedidosCliente.pas @@ -26,7 +26,6 @@ type cxGridDBTableView1: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; cxGridLevel2: TcxGridLevel; - cxGridLevel3: TcxGridLevel; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewINCIDENCIASACTIVAS: TcxGridDBColumn; cxGridViewNOMBRE: TcxGridDBColumn; @@ -50,6 +49,7 @@ type cxGridViewINCIDENCIAS: TcxGridDBColumn; cxGridViewNUM_COPIAS: TcxGridDBColumn; cxGridViewNUM_CORREOS: TcxGridDBColumn; + cxGridViewREFERENCIA_CLIENTE: TcxGridDBColumn; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; @@ -146,8 +146,9 @@ begin case cxGrid.ActiveLevel.Index of 1 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_PENDIENTE, SITUACION_PEDIDO_PENDIENTE); - 2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_ENPROCESO, SITUACION_PEDIDO_ENPROCESO); - 3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_SERVIDO, SITUACION_PEDIDO_SERVIDO); + 2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_ALBARANADO, SITUACION_PEDIDO_ALBARANADO); +// 2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_ENPROCESO, SITUACION_PEDIDO_ENPROCESO); +// 3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_PEDIDO_SERVIDO, SITUACION_PEDIDO_SERVIDO); end; end; @@ -275,6 +276,8 @@ begin else if ASituacion = SITUACION_PEDIDO_ENPROCESO then AStyle := cxStyleENPROCESO else if ASituacion = SITUACION_PEDIDO_SERVIDO then + AStyle := cxStyleSERVIDO + else if ASituacion = SITUACION_PEDIDO_ALBARANADO then AStyle := cxStyleSERVIDO; end; end; diff --git a/Source/Modulos/Relaciones/Pedidos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas b/Source/Modulos/Relaciones/Pedidos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas index 83bac4f..64a4051 100644 --- a/Source/Modulos/Relaciones/Pedidos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas +++ b/Source/Modulos/Relaciones/Pedidos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas @@ -69,6 +69,70 @@ begin AAlbaran.FECHA_PREVISTA_ENVIO := APedido.FECHA_PREVISTA_ENVIO; end; +procedure CopiarDetallesAAlbaran( + APedido: IBizPedidoCliente; + AAlbaran: IBizAlbaranCliente; + AArticulos: IBizDetallesPedidoCliente); +var + i : integer; + ADetalles : IBizDetallesAlbaranCliente; + ADetallesController : IDetallesAlbaranClienteController; +begin + if not Assigned(AAlbaran) then + raise Exception.Create ('Albaran no asignado(CopiarDetallesAAlbaran)'); + + if not Assigned(APedido) then + raise Exception.Create ('Pedido no asignado (CopiarDetallesAAlbaran)'); + + if not Assigned(AArticulos) then + raise Exception.Create ('Artículos no asignado (CopiarDetallesAAlbaran)'); + + if not AArticulos.DataTable.Active then + AArticulos.DataTable.Active := True; + + // El contrato tiene que venir ya abierto y posicionado donde hay que copiar + + ADetalles := AAlbaran.Detalles; + ADetallesController := TDetallesAlbaranClienteController.Create; + try + //OJO IMPORTANTE + //Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para + //obligarle siempre a recalcular los detalles una sola vez + ADetallesController.BeginUpdate(ADetalles); + + AArticulos.DataTable.First; + for i := 0 to AArticulos.DataTable.RecordCount - 1 do + begin + ADetallesController.Add(ADetalles, AArticulos.TIPO_DETALLE); + ADetalles.Edit; + ADetalles.REFERENCIA := AArticulos.REFERENCIA; + ADetalles.ID_ARTICULO := AArticulos.ID_ARTICULO; +// if (AArticulos.PROPIEDAD <> '') then +// ADetalles.CONCEPTO := AArticulos.PROPIEDAD + ' '+ AArticulos.CONCEPTO +// else + ADetalles.CONCEPTO := AArticulos.CONCEPTO; + + if not AArticulos.CANTIDADIsNull then + ADetalles.CANTIDAD := AArticulos.CANTIDAD; + if not AArticulos.IMPORTE_UNIDADIsNull then + ADetalles.IMPORTE_UNIDAD := AArticulos.IMPORTE_UNIDAD; + if not AArticulos.IMPORTE_TOTALIsNull then + ADetalles.IMPORTE_TOTAL := AArticulos.IMPORTE_TOTAL; + if not AArticulos.DESCUENTOIsNull then + ADetalles.DESCUENTO := AArticulos.DESCUENTO; + if not AArticulos.IMPORTE_PORTEIsNull then + ADetalles.IMPORTE_PORTE := AArticulos.IMPORTE_PORTE; + ADetalles.VISIBLE := AArticulos.VISIBLE; + ADetalles.REFERENCIA_PROVEEDOR := AArticulos.REFERENCIA_PROVEEDOR; + ADetalles.Post; + AArticulos.Next; + end; + finally + ADetallesController.EndUpdate(ADetalles); + ADetallesController := NIL; + end; +end; + procedure CopiarArticulosPendAAlbaran( APedido: IBizPedidoCliente; AAlbaran: IBizAlbaranCliente; @@ -206,6 +270,7 @@ begin Inicializar; try +{ AArticulosPendientes := APedidosClienteController.ArticulosPendientes(APedido.ID); if not Assigned(AArticulosPendientes) then raise Exception.Create('Error al recuperar los artículos sin albarán del pedido (GenerarAlbaranCli)'); @@ -216,10 +281,12 @@ begin ShowWarningMessage('Generar albarán a partir del pedido', 'Todos los artículos de este pedido ya figuran en uno o más albaranes de cliente. Por lo que no se pueden generar nuevos albaranes para este pedido'); Exit; // Aunque es un exit, se ejecuta la parte del finally antes de salir. end; +} AuxAlbaran := AAlbaranesClienteController.Nuevo; CopiarPedidoAAlbaran(APedido, AuxAlbaran); - CopiarArticulosPendAAlbaran(APedido, AuxAlbaran, AArticulosPendientes); +// CopiarArticulosPendAAlbaran(APedido, AuxAlbaran, AArticulosPendientes); + CopiarDetallesAAlbaran(APedido, AuxAlbaran, APedido.Detalles); //Sustituir por if de guardar if AAlbaranesClienteController.Guardar(AuxAlbaran) then @@ -246,7 +313,7 @@ begin Result := True; finally - AArticulosPendientes := NIL; +// AArticulosPendientes := NIL; if Assigned(APedidosClienteController) then Finalizar; end; diff --git a/Source/Modulos/Relaciones/Pedidos de cliente - Pedidos a proveedor/uGenerarPedidosProvUtils.dfm b/Source/Modulos/Relaciones/Pedidos de cliente - Pedidos a proveedor/uGenerarPedidosProvUtils.dfm index bd0f9f2..421c8ad 100644 --- a/Source/Modulos/Relaciones/Pedidos de cliente - Pedidos a proveedor/uGenerarPedidosProvUtils.dfm +++ b/Source/Modulos/Relaciones/Pedidos de cliente - Pedidos a proveedor/uGenerarPedidosProvUtils.dfm @@ -302,4 +302,320 @@ object dmGenerarPedidosProv: TdmGenerarPedidosProv Left = 40 Top = 16 end + object JsListaArticulosSinProveedor: TJSDialog + Glyph.Data = { + 0B546478504E47496D61676589504E470D0A1A0A0000000D494844520000001C + 0000001C0806000000720DDF94000000017352474200AECE1CE9000000046741 + 4D410000B18F0BFC6105000000206348524D00007A26000080840000FA000000 + 80E8000075300000EA6000003A98000017709CBA513C00000009704859730000 + 0AEA00000AEA0150CCEFBE000004CE49444154484BBDD67F50D3751CC7F12FE3 + 57DA2576E41919D28F3941C656271A982C08952B03059193CC5444D24E44C008 + 8F08C323E48708D655C60F393DA5D3ABCCC34A0B4DB3E4C7F8A10213D94070FC + DA2F366243FFE8FBEAF3FD22935F1B5B1771F7FD737BECF979BFF7191400CADA + BFB4348AD372C4A390BCD2C6DAD752FF06D47FB6709DEC9B80BF8F25506BA71D + 3C7D9AB2D51DE7D7EB15B9F82163A618A4D62AD4DA4255DEA270437D0C8634D9 + 905C5C4E97245261D3068A8F52F6DAE35EF50FB45F41AF4C81B6633BA974A849 + 7B8DB2B318B5A6507998BF565F17431BD49918542463B0772F1ACBBDE8A2382B + 6669290866762784E207DA2F8DD85F3D7BA069DB84739F3AD6595C69293890E7 + B1C650B71D72E97EECDA198C8D914178FFBD37D07E2B1A4DE59E288AA7D65974 + AC1683A59EB54C5DC627E1F0F7F787482482AFAF2F529383A06E8DC0B90C879B + FF193870C83DD450174316251DE9A96146CCDBDB1B49F101E86FDF04C979771C + DD4D6D98129DAA90F99E694B1789EF933A6666FB53D6B0650C2610089018EB47 + E61809A56435CE673ADE22B790F98D9D0A5465F343F5B5D1F460DFC718E8DA85 + 93C5E146CCC3C303854702A1964690630D43D3D9F9F4D77154A4D94A732073AB + 684BBDC4F7359FB3984EBE0395156FB3650CB66001170D5742584C7527047D4D + 2BF063D6638DA7D7530E265173A0F2B070ADBE761B3DD89BC262DACE6828A59B + B174091F5C2E173E4B79464CD9B21A0A491024E52FD2457BA84D5683E453DAEA + 8E09AA86D405464C7B770BBB205B367AC3CDCD0D3BA3846CD908D6D71C88EEBA + 25F8E9A0BDC464A5A9425DAEE75B86DA28B228C96CD908A69145223FD30F2E2E + 2E28CCF781F2F670595FD3EBE86D14A1E7A62F9ACFCE45713CB575D2CAC940E6 + F76EA0445033A4CA9F80A9A5EBF1F39940383B3BA3E23BD128CC8FC57A1A9640 + 5EBD0817B2EC5BD3269BE564A02687BFDA20DE4A0F74278D296330756B287A9B + 83F1F4DCD9E8695CF9B0EC11D65DFF12BA6A3DD1FCBD335D1CCFD936A1723C48 + FE01B0D116F26B87D4F9E86767F60E34B20D64F5D74345307666B7DF04F779A7 + 3158778337463079CD42745E77C3C56CFBF68258CA710C3A1E54667985E8C551 + F4803CD124A690AC328BDDAB7A019D95F349E52CBA3481B3D324C8DC2ABA22CF + AA21551E6DAA4C7E63150EA404206EC732A4EF5B8CF6EAB1652358C79F2E68BF + EA4CFF9A632F4B8BA1661AD1D1859A3CAF357A323BDDBDDD638FB165F81899B2 + FCCC00F66A130A85E0F178484DE0B13393D7F0301ABB7B6D0EDA7F9F8DE66F67 + D027F67262278097C91DD85FE2556950E48CC3828D18B3FAFBE29719B179F3E6 + 6173C43393604FB158DB95C721AD704045AE5D475614F5048B8E146A0EBF1CA2 + AFDE426B3B63C982840F2F48CB682C00BDB7FC5090E14DAEB4056030272727A4 + C6CD1D57F608935D7684F412078D676CE953499CDD4690B955B4C582EB064596 + 196C39F99EF980D9C6535F78E040921B4A0E3DFB10730533B3BBD7087675B86C + 0493565068FD85C2A543765D6C2553A8C91104EBAEAEA4552DEF928A15E8BD19 + 809E1B22F2E6AF92ABEA1532A3C5E4D884B857CD4767953B59792E3AFE788E00 + AEE4E85C0830076DBF3D09D9A559E4086710C001772E7270E702657C9ACA6CE9 + B20F391FB0E0ED6CD7ECB28F6C6A4EA650D3FA14C7DB9C65C1FFF3F90772E0BD + 22E5E8ABC20000000049454E44AE426082} + Instruction.Text = 'Lista de art'#237'culos no incluidos, por no tener proveedor asignado' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + ButtonBar.Buttons = [cbOK] + ButtonBar.Cancel = cbOK + ButtonBar.UseCancel = False + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 40 + Top = 72 + end end diff --git a/Source/Modulos/Relaciones/Pedidos de cliente - Pedidos a proveedor/uGenerarPedidosProvUtils.pas b/Source/Modulos/Relaciones/Pedidos de cliente - Pedidos a proveedor/uGenerarPedidosProvUtils.pas index 0139517..b27f749 100644 --- a/Source/Modulos/Relaciones/Pedidos de cliente - Pedidos a proveedor/uGenerarPedidosProvUtils.pas +++ b/Source/Modulos/Relaciones/Pedidos de cliente - Pedidos a proveedor/uGenerarPedidosProvUtils.pas @@ -3,11 +3,12 @@ unit uGenerarPedidosProvUtils; interface uses - SysUtils, Classes, uBizPedidosCliente, pngimage, JSDialog; + SysUtils, Classes, uBizPedidosCliente, pngimage, JSDialog, dxGDIPlusClasses; type TdmGenerarPedidosProv = class(TDataModule) JsListaPedidosGenerados: TJSDialog; + JsListaArticulosSinProveedor: TJSDialog; end; function GenerarPedidosProv(const IDPedido : Integer) : Boolean; overload; @@ -19,10 +20,10 @@ implementation {$R *.dfm} uses - uDialogUtils, + uDialogUtils, Windows, uRTFUtils, uPedidosClienteController, uPedidosProveedorController, uProveedoresController, uDetallesPedidoProveedorController, uControllerDetallesBase, - uBizPedidosProveedor, uBizContactos, schPedidosProveedorClient_Intf; + uBizPedidosProveedor, uBizDetallesPedidoProveedor, uBizContactos, schPedidosProveedorClient_Intf; var dmGenerarPedidosProv: TdmGenerarPedidosProv; @@ -50,6 +51,49 @@ begin AProveedoresController := nil; end; +procedure AnadirLineasNoArticulos(AOrigen: IBizPedidoClienteArticulosPendientesPedirAProv; + ADestino : IBizDetallesPedidoProveedor); +var + i : integer; +begin + if not Assigned(AOrigen) then + raise Exception.Create ('Origen no asignado (AnadirLineasNoArticulos)'); + + if not Assigned(ADestino) then + raise Exception.Create ('Destino no asignado (AnadirLineasNoArticulos)'); + + if not AOrigen.DataTable.Active then + AOrigen.DataTable.Active := True; + + if not ADestino.DataTable.Active then + ADestino.DataTable.Active := True; + + try + //OJO IMPORTANTE + //Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para + //obligarle siempre a recalcular los detalles una sola vez + ADetallesPedidosProvController.BeginUpdate(ADestino); + + AOrigen.DataTable.First; + for i := 0 to AOrigen.DataTable.RecordCount - 1 do + begin + ADetallesPedidosProvController.Add(ADestino, TIPO_DETALLE_CONCEPTO); + ADestino.Edit; + ADestino.CONCEPTO := AOrigen.CONCEPTO; + ADestino.CANTIDAD := AOrigen.CANT_PENDIENTE_PEDIR; +// ADestino.IMPORTE_UNIDAD := AOrigen.IMPORTE_UNIDAD; +// ADestino.IMPORTE_TOTAL := AOrigen.IMPORTE_TOTAL; +// ADestino.DESCUENTO := AOrigen.DESCUENTO; +// ADestino.IMPORTE_PORTE := AOrigen.IMPORTE_PORTE; + ADestino.Post; + AOrigen.Next; + end; + finally + ADetallesPedidosProvController.EndUpdate(ADestino); + end; +end; + + function GenerarPedidosProv(const IDPedido : Integer) : Boolean; overload; var @@ -74,7 +118,10 @@ function GenerarPedidosProv(APedidoCli : IBizPedidoCliente) : Boolean; overload; var APedidoProv : IBizPedidoProveedor; AArticulosPend : IBizPedidoClienteArticulosPendientesPedirAProv; + AArticulosPendNoArticulos : IBizPedidoClienteArticulosPendientesPedirAProv; + bAnadirNoArticulos: Boolean; ALista : TStringList; + AListaArticulosSinProveedor : TStringList; begin Result := False; @@ -88,20 +135,31 @@ begin Inicializar; AArticulosPend := APedidosClienteController.BuscarPendientesPedir(APedidoCli.ID); - if not Assigned(AArticulosPend) then + AArticulosPendNoArticulos := APedidosClienteController.BuscarPendientesPedirNoArticulos(APedidoCli.ID); + if not Assigned(AArticulosPend) + or not Assigned(AArticulosPendNoArticulos) then raise Exception.Create('Error al recuperar la lista de artículos pendientes de pedir (GenerarPedidosProv)'); ALista := TStringList.Create; + AListaArticulosSinProveedor := TStringList.Create; try if not AArticulosPend.DataTable.Active then AArticulosPend.DataTable.Active := True; - if AArticulosPend.DataTable.RecordCount = 0 then + if not AArticulosPendNoArticulos.DataTable.Active then + AArticulosPendNoArticulos.DataTable.Active := True; + + if (AArticulosPend.DataTable.RecordCount = 0) + and (AArticulosPendNoArticulos.DataTable.RecordCount = 0) then begin ShowInfoMessage('Este pedido a cliente no tiene artículos pendientes que se tengan que pedir a los proveedores'); Exit; end; + bAnadirNoArticulos := False; + if (AArticulosPendNoArticulos.DataTable.RecordCount > 0) then + bAnadirNoArticulos := (ShowConfirmMessage('Articulos', 'Desea añadir en el/los pedido/s a proveedor las lineas que no se corresponden con artículos (lineas texto libre)') = IDYES); + APedidoProv := NIL; AArticulosPend.DataTable.First; while not AArticulosPend.DataTable.EOF do @@ -109,6 +167,7 @@ begin if Assigned(APedidoProv) and (AArticulosPend.ID_PROVEEDOR <> APedidoProv.ID_PROVEEDOR) then begin + AnadirLineasNoArticulos(AArticulosPendNoArticulos, APedidoProv.Detalles); APedidosProveedorController.Guardar(APedidoProv); ALista.Add(APedidoProv.REFERENCIA + ': ' + APedidoProv.NOMBRE); APedidoProv := NIL; @@ -118,8 +177,14 @@ begin begin APedidoProv := APedidosProveedorController.Nuevo; APedidoProv.Edit; + while (AArticulosPend.ID_PROVEEDOR = 0) do + begin + AListaArticulosSinProveedor.Add(RtfToText(AArticulosPend.CONCEPTO)); + AArticulosPend.Next; + end; APedidoProv.Proveedor := (AProveedoresController.Buscar(AArticulosPend.ID_PROVEEDOR) as IBizProveedor); APedidoProv.ID_PEDIDO_CLIENTE := APedidoCli.ID; + APedidoProv.REFERENCIA_CLIENTE := APedidoCli.REFERENCIA_CLIENTE; end; //OJO IMPORTANTE @@ -132,6 +197,7 @@ begin with APedidoProv.Detalles do begin Edit; + CONCEPTO := AArticulosPend.CONCEPTO; CANTIDAD := AArticulosPend.CANT_PENDIENTE_PEDIR; Post; end; @@ -141,11 +207,19 @@ begin if Assigned(APedidoProv) then begin + AnadirLineasNoArticulos(AArticulosPendNoArticulos, APedidoProv.Detalles); APedidosProveedorController.Guardar(APedidoProv); ALista.Add(APedidoProv.REFERENCIA + ': ' + APedidoProv.NOMBRE); APedidoProv := NIL; end; + if AListaArticulosSinProveedor.Count > 0 then + begin + dmGenerarPedidosProv.JsListaArticulosSinProveedor.Content.Clear; + dmGenerarPedidosProv.JsListaArticulosSinProveedor.Content.AddStrings(AListaArticulosSinProveedor); + dmGenerarPedidosProv.JsListaArticulosSinProveedor.Execute; + end; + if ALista.Count > 0 then begin dmGenerarPedidosProv.JsListaPedidosGenerados.Content.Clear; @@ -156,6 +230,7 @@ begin Result := True; finally FreeAndNIL(ALista); + FreeAndNIL(AListaArticulosSinProveedor); AArticulosPend := NIL; if Assigned(APedidosClienteController) then diff --git a/Source/Modulos/Relaciones/Pedidos de proveedor - Albaranes de proveedor/uGenerarAlbaranesProvUtils.pas b/Source/Modulos/Relaciones/Pedidos de proveedor - Albaranes de proveedor/uGenerarAlbaranesProvUtils.pas index 4d1bce0..8c2236d 100644 --- a/Source/Modulos/Relaciones/Pedidos de proveedor - Albaranes de proveedor/uGenerarAlbaranesProvUtils.pas +++ b/Source/Modulos/Relaciones/Pedidos de proveedor - Albaranes de proveedor/uGenerarAlbaranesProvUtils.pas @@ -74,6 +74,70 @@ begin AAlbaran.ID_FORMA_PAGO := APedido.ID_FORMA_PAGO; end; +procedure CopiarDetallesAAlbaran( + APedido: IBizPedidoProveedor; + AAlbaran: IBizAlbaranProveedor; + AArticulos: IBizDetallesPedidoProveedor); +var + i : integer; + ADetalles : IBizDetallesAlbaranProveedor; + ADetallesController : IDetallesAlbaranProveedorController; +begin + if not Assigned(AAlbaran) then + raise Exception.Create ('Albaran no asignado(CopiarDetallesAAlbaran)'); + + if not Assigned(APedido) then + raise Exception.Create ('Pedido no asignado (CopiarDetallesAAlbaran)'); + + if not Assigned(AArticulos) then + raise Exception.Create ('Artículos no asignado (CopiarDetallesAAlbaran)'); + + if not AArticulos.DataTable.Active then + AArticulos.DataTable.Active := True; + + // El contrato tiene que venir ya abierto y posicionado donde hay que copiar + + ADetalles := AAlbaran.Detalles; + ADetallesController := TDetallesAlbaranProveedorController.Create; + try + //OJO IMPORTANTE + //Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para + //obligarle siempre a recalcular los detalles una sola vez + ADetallesController.BeginUpdate(ADetalles); + + AArticulos.DataTable.First; + for i := 0 to AArticulos.DataTable.RecordCount - 1 do + begin + ADetallesController.Add(ADetalles, AArticulos.TIPO_DETALLE); + ADetalles.Edit; + ADetalles.REFERENCIA := AArticulos.REFERENCIA; + ADetalles.ID_ARTICULO := AArticulos.ID_ARTICULO; +// if (AArticulos.PROPIEDAD <> '') then +// ADetalles.CONCEPTO := AArticulos.PROPIEDAD + ' '+ AArticulos.CONCEPTO +// else + ADetalles.CONCEPTO := AArticulos.CONCEPTO; + + if not AArticulos.CANTIDADIsNull then + ADetalles.CANTIDAD := AArticulos.CANTIDAD; + if not AArticulos.IMPORTE_UNIDADIsNull then + ADetalles.IMPORTE_UNIDAD := AArticulos.IMPORTE_UNIDAD; + if not AArticulos.IMPORTE_TOTALIsNull then + ADetalles.IMPORTE_TOTAL := AArticulos.IMPORTE_TOTAL; + if not AArticulos.DESCUENTOIsNull then + ADetalles.DESCUENTO := AArticulos.DESCUENTO; + if not AArticulos.IMPORTE_PORTEIsNull then + ADetalles.IMPORTE_PORTE := AArticulos.IMPORTE_PORTE; + ADetalles.VISIBLE := AArticulos.VISIBLE; + ADetalles.REFERENCIA_PROVEEDOR := AArticulos.REFERENCIA_PROVEEDOR; + ADetalles.Post; + AArticulos.Next; + end; + finally + ADetallesController.EndUpdate(ADetalles); + ADetallesController := NIL; + end; +end; + procedure CopiarArticulosPendAAlbaran( APedido: IBizPedidoProveedor; AAlbaran: IBizAlbaranProveedor; @@ -195,7 +259,7 @@ begin try if not Assigned(APedidosProveedorController) then Inicializar; - +{ AArticulosPendientes := ADetallesPedidosProveedorController.ArticulosPendientes(APedido.ID); if not Assigned(AArticulosPendientes) then raise Exception.Create('Error al recuperar los artículos sin albarán del pedido (GenerarAlbaranProv)'); @@ -208,10 +272,11 @@ begin if (ARespuesta = IDNO) then Exit; // Aunque es un exit, se ejecuta la parte del finally antes de salir. end; - +} AAlbaran := AAlbaranesProveedorController.Nuevo; CopiarPedidoAAlbaran(APedido, AAlbaran); - CopiarArticulosPendAAlbaran(APedido, AAlbaran, AArticulosPendientes); +// CopiarArticulosPendAAlbaran(APedido, AAlbaran, AArticulosPendientes); + CopiarDetallesAAlbaran(APedido, AAlbaran, APedido.Detalles); //Sustituir por if de guardar if AAlbaranesProveedorController.Guardar(AAlbaran) then @@ -222,7 +287,7 @@ begin begin Instruction.Text := 'Se ha generado el albarán'; Content.Clear; - Content.Add(Format('Se ha generado correctamente el albarán %s a partir del pedido de cliente' + #10#13, [AAlbaran.REFERENCIA])); + Content.Add(Format('Se ha generado correctamente el albarán %s a partir del pedido de proveedor' + #10#13, [AAlbaran.REFERENCIA])); Execute; ARespuesta := CustomButtonResult; diff --git a/Source/Modulos/Remesas de cliente/Views/uEditorRemesaClienteReport.dfm b/Source/Modulos/Remesas de cliente/Views/uEditorRemesaClienteReport.dfm index 2f04463..064b260 100644 --- a/Source/Modulos/Remesas de cliente/Views/uEditorRemesaClienteReport.dfm +++ b/Source/Modulos/Remesas de cliente/Views/uEditorRemesaClienteReport.dfm @@ -1,12 +1,5 @@ inherited fEditorRemesaClientePreview: TfEditorRemesaClientePreview Caption = 'Previsualizar la remesa' - ExplicitWidth = 660 - ExplicitHeight = 494 PixelsPerInch = 96 TextHeight = 13 - inherited frxReport1: TfrxReport - Datasets = <> - Variables = <> - Style = <> - end end diff --git a/Source/Modulos/Remesas de cliente/Views/uEditorRemesaClienteReport.pas b/Source/Modulos/Remesas de cliente/Views/uEditorRemesaClienteReport.pas index 90fd8b7..efd1695 100644 --- a/Source/Modulos/Remesas de cliente/Views/uEditorRemesaClienteReport.pas +++ b/Source/Modulos/Remesas de cliente/Views/uEditorRemesaClienteReport.pas @@ -10,7 +10,8 @@ uses JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorRemesasClientePreview, - JvExComCtrls, JvStatusBar; + JvExComCtrls, JvStatusBar, frxExportText, frxExportRTF, frxExportMail, + frxExportXLS; type TfEditorRemesaClientePreview = class(TfEditorPreview, IEditorRemesasClientePreview) diff --git a/Source/Modulos/Tienda web/Controller/Utiles/uActualizarPedidosUtils.pas b/Source/Modulos/Tienda web/Controller/Utiles/uActualizarPedidosUtils.pas index 4a7ff4d..bf23d20 100644 --- a/Source/Modulos/Tienda web/Controller/Utiles/uActualizarPedidosUtils.pas +++ b/Source/Modulos/Tienda web/Controller/Utiles/uActualizarPedidosUtils.pas @@ -23,10 +23,12 @@ function DarNumSituacionEquivalente(ASituacion : String) : Integer; begin if ASituacion = SITUACION_PEDIDO_PENDIENTE then Result := 1 - else if ASituacion = SITUACION_PEDIDO_ENPROCESO then + else if ASituacion = SITUACION_PEDIDO_ALBARANADO then Result := 2 - else if ASituacion = SITUACION_PEDIDO_SERVIDO then - Result := 3 +// else if ASituacion = SITUACION_PEDIDO_ENPROCESO then +// Result := 2 +// else if ASituacion = SITUACION_PEDIDO_SERVIDO then +// Result := 3 else Result := -1; end; diff --git a/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc b/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc index 4c7b731..5f6023d 100644 --- a/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc +++ b/Source/Modulos/Tienda web/Data/TiendaWeb_data.drc @@ -14,4 +14,4 @@ END /* C:\Codigo\Source\Modulos\Tienda web\Data\uDataModuleTiendaWeb.dfm */ /* C:\Codigo\Source\Modulos\Tienda web\Data\TiendaWeb_data.res */ -/* c:\temp\dtfD2.tmp */ +/* c:\temp\dtf87D.tmp */ diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL index 585ea87..5f8200c 100644 --- a/Source/Servicios/FactuGES.RODL +++ b/Source/Servicios/FactuGES.RODL @@ -426,9 +426,7 @@ - - - + diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas index 650c47c..c19bccb 100644 --- a/Source/Servicios/FactuGES_Intf.pas +++ b/Source/Servicios/FactuGES_Intf.pas @@ -616,7 +616,7 @@ type ['{6E910718-9AB0-47BB-9875-B0DE66A68D7A}'] function GenerarInforme(const ListaID: TIntegerArray; const VerPrecios: Boolean; const VerRefProveedor: Boolean; const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary; - function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; + function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerPrecios: Boolean; const VerRefProveedor: Boolean; const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary; function DarListaAnos: StringArray; @@ -634,7 +634,7 @@ type function GenerarInforme(const ListaID: TIntegerArray; const VerPrecios: Boolean; const VerRefProveedor: Boolean; const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary; - function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; + function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerPrecios: Boolean; const VerRefProveedor: Boolean; const VerObservaciones: Boolean; const VerIncidencias: Boolean): Binary; function DarListaAnos: StringArray; @@ -2215,13 +2215,12 @@ begin end end; -function TsrvAlbaranesCliente_Proxy.GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; +function TsrvAlbaranesCliente_Proxy.GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; begin try result := nil; __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeEtiquetas'); - __Message.Write('ID', TypeInfo(Integer), ID, []); - __Message.Write('withRefCliente', TypeInfo(Boolean), withRefCliente, []); + __Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas index 1a091dd..ee99edb 100644 --- a/Source/Servicios/FactuGES_Invk.pas +++ b/Source/Servicios/FactuGES_Invk.pas @@ -1372,19 +1372,18 @@ begin end; procedure TsrvAlbaranesCliente_Invoker.Invoke_GenerarInformeEtiquetas(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; } +{ function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; } var - ID: Integer; - withRefCliente: Boolean; + ListaID: FactuGES_Intf.TIntegerArray; lResult: Binary; __lObjectDisposer: TROObjectDisposer; begin + ListaID := nil; lResult := nil; try - __Message.Read('ID', TypeInfo(Integer), ID, []); - __Message.Read('withRefCliente', TypeInfo(Boolean), withRefCliente, []); + __Message.Read('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []); - lResult := (__Instance as IsrvAlbaranesCliente).GenerarInformeEtiquetas(ID, withRefCliente); + lResult := (__Instance as IsrvAlbaranesCliente).GenerarInformeEtiquetas(ListaID); __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvAlbaranesCliente', 'GenerarInformeEtiquetasResponse'); __Message.Write('Result', TypeInfo(Binary), lResult, []); @@ -1394,6 +1393,7 @@ begin finally __lObjectDisposer := TROObjectDisposer.Create(__Instance); try + __lObjectDisposer.Add(ListaID); __lObjectDisposer.Add(lResult); finally __lObjectDisposer.Free(); diff --git a/Source/Servicios/RODLFile.res b/Source/Servicios/RODLFile.res index 40218f1..442cce8 100644 Binary files a/Source/Servicios/RODLFile.res and b/Source/Servicios/RODLFile.res differ diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES index 126ba91..09df67b 100644 Binary files a/Source/Servidor/FactuGES_Server.RES and b/Source/Servidor/FactuGES_Server.RES differ diff --git a/Source/Servidor/FactuGES_Server.dpr b/Source/Servidor/FactuGES_Server.dpr index 4c9e1dc..4ae9af9 100644 --- a/Source/Servidor/FactuGES_Server.dpr +++ b/Source/Servidor/FactuGES_Server.dpr @@ -110,8 +110,6 @@ uses uBizAgentesServer in '..\Modulos\Contactos\Model\uBizAgentesServer.pas', srvPedidosCliente_Impl in '..\Modulos\Pedidos de cliente\Servidor\srvPedidosCliente_Impl.pas' {srvPedidosCliente: TDataAbstractService}, uBizPedidosClienteServer in '..\Modulos\Pedidos de cliente\Model\uBizPedidosClienteServer.pas', - schPedidosClienteClient_Intf in '..\Modulos\Pedidos de cliente\Model\schPedidosClienteClient_Intf.pas', - schPedidosClienteServer_Intf in '..\Modulos\Pedidos de cliente\Model\schPedidosClienteServer_Intf.pas', schArticulosClient_Intf in '..\Modulos\Articulos\Model\schArticulosClient_Intf.pas', schArticulosServer_Intf in '..\Modulos\Articulos\Model\schArticulosServer_Intf.pas', schRecibosClienteClient_Intf in '..\Modulos\Recibos de cliente\Model\schRecibosClienteClient_Intf.pas', @@ -123,8 +121,6 @@ uses schRecibosProveedorClient_Intf in '..\Modulos\Recibos de proveedor\Model\schRecibosProveedorClient_Intf.pas', schRecibosProveedorServer_Intf in '..\Modulos\Recibos de proveedor\Model\schRecibosProveedorServer_Intf.pas', uRptRemesasProveedor_Server in '..\Modulos\Remesas de proveedor\Reports\uRptRemesasProveedor_Server.pas' {RptRemesasProveedor: TDataModule}, - schPedidosProveedorClient_Intf in '..\Modulos\Pedidos a proveedor\Model\schPedidosProveedorClient_Intf.pas', - schPedidosProveedorServer_Intf in '..\Modulos\Pedidos a proveedor\Model\schPedidosProveedorServer_Intf.pas', schFacturasClienteClient_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteClient_Intf.pas', schFacturasClienteServer_Intf in '..\Modulos\Facturas de cliente\Model\schFacturasClienteServer_Intf.pas', srvImpresiones_Impl in '..\Modulos\Impresiones\Servidor\srvImpresiones_Impl.pas' {srvImpresiones: TDARemoteService}, @@ -163,7 +159,11 @@ uses schInfVentasArticuloClient_Intf in '..\Modulos\Informe ventas por articulo\Model\schInfVentasArticuloClient_Intf.pas', schInfVentasArticuloServer_Intf in '..\Modulos\Informe ventas por articulo\Model\schInfVentasArticuloServer_Intf.pas', schAlbaranesProveedorClient_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorClient_Intf.pas', - schAlbaranesProveedorServer_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorServer_Intf.pas'; + schAlbaranesProveedorServer_Intf in '..\Modulos\Albaranes de proveedor\Model\schAlbaranesProveedorServer_Intf.pas', + schPedidosClienteClient_Intf in '..\Modulos\Pedidos de cliente\Model\schPedidosClienteClient_Intf.pas', + schPedidosClienteServer_Intf in '..\Modulos\Pedidos de cliente\Model\schPedidosClienteServer_Intf.pas', + schPedidosProveedorClient_Intf in '..\Modulos\Pedidos a proveedor\Model\schPedidosProveedorClient_Intf.pas', + schPedidosProveedorServer_Intf in '..\Modulos\Pedidos a proveedor\Model\schPedidosProveedorServer_Intf.pas'; {$R *.res} {$R ..\Servicios\RODLFile.res} diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj index b2cf1e6..8b4ad0c 100644 --- a/Source/Servidor/FactuGES_Server.dproj +++ b/Source/Servidor/FactuGES_Server.dproj @@ -1,405 +1,407 @@ - + - - {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} - FactuGES_Server.dpr - Debug - AnyCPU - DCC32 - ..\..\Output\Debug\Servidor\FactuGES_Server.exe - vcl;rtl;vclx;vclactnband;dbrtl;vcldb;vcldbx;bdertl;dsnap;dsnapcon;teeUI;teedb;tee;adortl;vclib;ibxpress;dbxcds;dbexpress;DbxCommonDriver;IndyCore;IndySystem;IndyProtocols;VclSmp;vclie;webdsnap;xmlrtl;inet;inetdbbde;inetdbxpress;RemObjects_BPDX_D11;RemObjects_RODX_D11;RemObjects_Indy_D11;RemObjects_Synapse_D11;RemObjects_WebBroker_D11;DataAbstract_Core_D11;DataAbstract_DBXDriver_D11;DataAbstract_IDE_D11;DataAbstract_Scripting_D11;DataAbstract_SDACDriver_D11;sdac105;dac105;DataAbstract_SQLiteDriver_D11;cxEditorsD10;cxLibraryD10;dxThemeD10;cxDataD10;cxExtEditorsD10;cxGridD10;cxPageControlD10;cxSchedulerD10;cxTreeListD10;cxVerticalGridD10;dxBarD10;dxComnD10;dxBarDBNavD10;dxBarExtDBItemsD10;dxBarExtItemsD10;dxDockingD10;dxLayoutControlD10;dxNavBarD10;dxPSCoreD10;dxsbD10;dxPScxCommonD10;dxPSLnksD10;vclshlctrls;dxPScxExtCommonD10;dxPScxGridLnkD10;dxPScxPCProdD10;dxPScxScheduler2LnkD10;dxPScxTLLnkD10;dxPSdxLCLnkD10;dxPsPrVwAdvD10;pckMD5;pckUCDataConnector;pckUserControl_RT;PluginSDK_D10R;PNG_D10;PngComponentsD10;tb2k_d10;tbx_d10;JclVcl;Jcl;JvXPCtrlsD11R;JvCoreD11R;JvSystemD11R;JvStdCtrlsD11R;JvAppFrmD11R;JvBandsD11R;JvDBD11R;JvDlgsD11R;JvBDED11R;JvCmpD11R;JvCryptD11R;JvCtrlsD11R;JvCustomD11R;JvDockingD11R;JvDotNetCtrlsD11R;JvEDID11R;JvGlobusD11R;JvHMID11R;JvInterpreterD11R;JvJansD11R;JvManagedThreadsD11R;JvMMD11R;JvNetD11R;JvPageCompsD11R;JvPluginD11R;JvPrintPreviewD11R;JvRuntimeDesignD11R;JvTimeFrameworkD11R;JvUIBD11R;JvValidatorsD11R;JvWizardD11R;pckUCADOConn;pckUCBDEConn;pckUCIBXConn;pckUCMidasConn;cxIntlPrintSys3D10;cxExportD10;cxIntl5D10;GUISDK_D11R;ccpackD11;JSDialog100;fsTee11;fs11;frx11;frxADO11;frxBDE11;frxDB11;frxDBX11;frxe11;frxIBX11;frxTee11;fsADO11;fsBDE11;fsDB11;fsIBX11;websnap;soaprtl;IntrawebDB_90_100;Intraweb_90_100 - - - 7.0 - False - False - 0 - 3 - ..\..\Output\Release\Servidor - RELEASE - - - 7.0 - 3 - ..\..\Output\Debug\Servidor - DEBUG; - True - True - True - C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - - - Delphi.Personality - - -FalseTrueFalse/standaloneTrueFalse4290FalseFalseFalseFalseFalse308212524.2.9.04.2.9.0miércoles, 13 de febrero de 2013 12:02 - - - - - - - - - - - - - - - - - - - - - - - ExpressPrinting System by Developer Express Inc. - FactuGES_Server.dprFalse - - - - - MainSource - - - - - -
srvEmpresas
- TDARemoteService -
- -
srvProvinciasPoblaciones_Impl
- TDataModule -
- - - -
srvUsuarios
- TDataAbstractService -
- - - - - - - -
RptAlbaranesCliente
- TDataModule -
- -
srvAlbaranesCliente
- TDataAbstractService -
- - - - -
RptAlbaranesProveedor
- TDataModule -
- -
srvAlbaranesProveedor
- TDataAbstractService -
- - - -
srvAlmacenes
- TDARemoteService -
- - - - -
srvArticulos
- TDARemoteService -
- - - - -
RptComisiones
- TDataModule -
- -
srvComisiones
- TDataAbstractService -
- - - - - - - - -
RptEtiquetasContacto
- TDataModule -
- -
RptFichasEmpleado
- TDataModule -
- -
srvContactos
- TDARemoteService -
- - - -
srvFabricantes
- TDataAbstractService -
- - - - -
RptFacturasCliente
- TDataModule -
- -
srvFacturasCliente
- TDataAbstractService -
- - - - -
RptFacturasProveedor
- TDataModule -
- -
srvFacturasProveedor
- TDataAbstractService -
- - - -
srvFamilias
- TDataAbstractService -
- - - -
srvFormasPago
- TDataAbstractService -
- -
srvGestorDocumentos
- TDataAbstractService -
- -
srvGestorInformes
- TDataAbstractService -
- - - -
srvHistoricoMovimientos
- TDataAbstractService -
- - - -
srvImpresiones
- TDARemoteService -
- -
srvInfMargenArticulo
- TDARemoteService -
- - - -
srvInfVentasArticulo
- TDataAbstractService -
- - - -
srvInformes
- TDataAbstractService -
- - - -
srvInventario
- TDataAbstractService -
- - - - -
srvObras
- TDataAbstractService -
- - - - -
RptPedidosProveedor
- TDataModule -
- -
srvPedidosProveedor
- TDataAbstractService -
- - - - -
RptPedidosCliente
- TDataModule -
- -
srvPedidosCliente
- TDataAbstractService -
- - - - -
RptPresupuestosCliente
- TDataModule -
- -
srvPresupuestosCliente
- TDataAbstractService -
- - - -
RptRecibosCliente
- TDataModule -
- -
srvRecibosCliente
- TDataAbstractService -
- - - -
RptRecibosProveedor
- TDataModule -
- -
srvRecibosProveedor
- TDataAbstractService -
- - - -
srvReferencias
- TDataAbstractService -
- -
srvRegistroCorreos
- TDataAbstractService -
- - - - -
RptRemesasCliente
- TDataModule -
- -
srvRemesasCliente
- TDataAbstractService -
- - - - -
RptRemesasProveedor
- TDataModule -
- -
srvRemesasProveedor
- TDataAbstractService -
- - - - - - - - - -
srvTiendaWeb
- TDataAbstractService -
- - - -
srvTiposIVA
- TDataAbstractService -
- - - -
srvUnidadesMedida
- TDataAbstractService -
- - - -
srvConfiguracion
- TDataAbstractService -
- -
frConexionBD
- TFrame -
- -
frConexionOSC
- TFrame -
- -
frConfGeneral
- TFrame -
- -
fConfiguracion
- TForm -
- -
FrameConfiguracion
- TFrame -
- -
srvLogin
- TDARemoteService -
- -
fAcercaDe
-
- -
dmServer
- TDataModule -
- -
fServerForm
-
- - - - - - - - - - -
+ + {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} + FactuGES_Server.dpr + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Servidor\FactuGES_Server.exe + vcl;rtl;vclx;vclactnband;dbrtl;vcldb;vcldbx;bdertl;dsnap;dsnapcon;teeUI;teedb;tee;adortl;vclib;ibxpress;dbxcds;dbexpress;DbxCommonDriver;IndyCore;IndySystem;IndyProtocols;VclSmp;vclie;webdsnap;xmlrtl;inet;inetdbbde;inetdbxpress;RemObjects_BPDX_D11;RemObjects_RODX_D11;RemObjects_Indy_D11;RemObjects_Synapse_D11;RemObjects_WebBroker_D11;DataAbstract_Core_D11;DataAbstract_DBXDriver_D11;DataAbstract_IDE_D11;DataAbstract_Scripting_D11;DataAbstract_SDACDriver_D11;sdac105;dac105;DataAbstract_SQLiteDriver_D11;cxEditorsD10;cxLibraryD10;dxThemeD10;cxDataD10;cxExtEditorsD10;cxGridD10;cxPageControlD10;cxSchedulerD10;cxTreeListD10;cxVerticalGridD10;dxBarD10;dxComnD10;dxBarDBNavD10;dxBarExtDBItemsD10;dxBarExtItemsD10;dxDockingD10;dxLayoutControlD10;dxNavBarD10;dxPSCoreD10;dxsbD10;dxPScxCommonD10;dxPSLnksD10;vclshlctrls;dxPScxExtCommonD10;dxPScxGridLnkD10;dxPScxPCProdD10;dxPScxScheduler2LnkD10;dxPScxTLLnkD10;dxPSdxLCLnkD10;dxPsPrVwAdvD10;pckMD5;pckUCDataConnector;pckUserControl_RT;PluginSDK_D10R;PNG_D10;PngComponentsD10;tb2k_d10;tbx_d10;JclVcl;Jcl;JvXPCtrlsD11R;JvCoreD11R;JvSystemD11R;JvStdCtrlsD11R;JvAppFrmD11R;JvBandsD11R;JvDBD11R;JvDlgsD11R;JvBDED11R;JvCmpD11R;JvCryptD11R;JvCtrlsD11R;JvCustomD11R;JvDockingD11R;JvDotNetCtrlsD11R;JvEDID11R;JvGlobusD11R;JvHMID11R;JvInterpreterD11R;JvJansD11R;JvManagedThreadsD11R;JvMMD11R;JvNetD11R;JvPageCompsD11R;JvPluginD11R;JvPrintPreviewD11R;JvRuntimeDesignD11R;JvTimeFrameworkD11R;JvUIBD11R;JvValidatorsD11R;JvWizardD11R;pckUCADOConn;pckUCBDEConn;pckUCIBXConn;pckUCMidasConn;cxIntlPrintSys3D10;cxExportD10;cxIntl5D10;GUISDK_D11R;ccpackD11;JSDialog100;fsTee11;fs11;frx11;frxADO11;frxBDE11;frxDB11;frxDBX11;frxe11;frxIBX11;frxTee11;fsADO11;fsBDE11;fsDB11;fsIBX11;websnap;soaprtl;IntrawebDB_90_100;Intraweb_90_100 + + + 7.0 + False + False + 0 + 3 + ..\..\Output\Release\Servidor + RELEASE + + + 7.0 + 3 + ..\..\Output\Debug\Servidor + DEBUG; + True + True + True + C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + C:\jcl\lib\d11\debug;C:\JCL\lib\d11\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + + + Delphi.Personality + + + FalseTrueFalse/standaloneTrueFalse4310FalseFalseFalseFalseFalse308212524.3.1.04.3.1.0martes, 25 de junio de 2013 13:34 + ExpressPrinting System by Developer Express Inc. + FactuGES_Server.dprFalse + + + + + MainSource + + + + + +
srvEmpresas
+ TDARemoteService +
+ +
srvProvinciasPoblaciones_Impl
+ TDataModule +
+ + + +
srvUsuarios
+ TDataAbstractService +
+ + + + + + + +
RptAlbaranesCliente
+ TDataModule +
+ + TDataModule +
RptWordAlbaranCliente
+
+ +
srvAlbaranesCliente
+ TDataAbstractService +
+ + + + +
RptAlbaranesProveedor
+ TDataModule +
+ + TDataModule +
RptWordAlbaranProveedor
+
+ +
srvAlbaranesProveedor
+ TDataAbstractService +
+ + + +
srvAlmacenes
+ TDARemoteService +
+ + + + +
srvArticulos
+ TDARemoteService +
+ + + + +
RptComisiones
+ TDataModule +
+ +
srvComisiones
+ TDataAbstractService +
+ + + + + + + + +
RptEtiquetasContacto
+ TDataModule +
+ +
RptFichasEmpleado
+ TDataModule +
+ +
srvContactos
+ TDARemoteService +
+ + + +
srvFabricantes
+ TDataAbstractService +
+ + + + +
RptFacturasCliente
+ TDataModule +
+ + TDataModule +
RptWordFacturaCliente
+
+ +
srvFacturasCliente
+ TDataAbstractService +
+ + + + +
RptFacturasProveedor
+ TDataModule +
+ +
srvFacturasProveedor
+ TDataAbstractService +
+ + + +
srvFamilias
+ TDataAbstractService +
+ + + +
srvFormasPago
+ TDataAbstractService +
+ +
srvGestorDocumentos
+ TDataAbstractService +
+ +
srvGestorInformes
+ TDataAbstractService +
+ + + +
srvHistoricoMovimientos
+ TDataAbstractService +
+ + + +
srvImpresiones
+ TDARemoteService +
+ +
srvInfMargenArticulo
+ TDARemoteService +
+ + + +
srvInfVentasArticulo
+ TDataAbstractService +
+ + + +
srvInformes
+ TDataAbstractService +
+ + + +
srvInventario
+ TDataAbstractService +
+ + + + +
srvObras
+ TDataAbstractService +
+ + + + +
RptPedidosProveedor
+ TDataModule +
+ + TDataModule +
RptWordPedidoProveedor
+
+ +
srvPedidosProveedor
+ TDataAbstractService +
+ + + + +
RptPedidosCliente
+ TDataModule +
+ +
srvPedidosCliente
+ TDataAbstractService +
+ + + + +
RptPresupuestosCliente
+ TDataModule +
+ + TDataModule +
RptWordCertificadoTrabajo
+
+ + TDataModule +
RptWordPresupuestoCliente
+
+ +
srvPresupuestosCliente
+ TDataAbstractService +
+ + + +
RptRecibosCliente
+ TDataModule +
+ +
srvRecibosCliente
+ TDataAbstractService +
+ + + +
RptRecibosProveedor
+ TDataModule +
+ +
srvRecibosProveedor
+ TDataAbstractService +
+ + + +
srvReferencias
+ TDataAbstractService +
+ +
srvRegistroCorreos
+ TDataAbstractService +
+ + + + +
RptRemesasCliente
+ TDataModule +
+ +
srvRemesasCliente
+ TDataAbstractService +
+ + + + +
RptRemesasProveedor
+ TDataModule +
+ +
srvRemesasProveedor
+ TDataAbstractService +
+ + + + + + + + + +
srvTiendaWeb
+ TDataAbstractService +
+ + + +
srvTiposIVA
+ TDataAbstractService +
+ + + +
srvUnidadesMedida
+ TDataAbstractService +
+ + + +
srvConfiguracion
+ TDataAbstractService +
+ +
frConexionBD
+ TFrame +
+ +
frConexionOSC
+ TFrame +
+ +
frConfGeneral
+ TFrame +
+ +
fConfiguracion
+ TForm +
+ +
FrameConfiguracion
+ TFrame +
+ +
srvLogin
+ TDARemoteService +
+ +
fAcercaDe
+
+ +
dmServer
+ TDataModule +
+ +
fServerForm
+
+ + + + + + + + + + +
+
+

+ + + +
+ + +

+

+

NAME

+

upx - compress or expand executable files

+

+

+
+

SYNOPSIS

+

upxcommand ] [ options ] filename...

+

+

+
+

ABSTRACT

+
+                    The Ultimate Packer for eXecutables
+   Copyright (c) 1996-2013 Markus Oberhumer, Laszlo Molnar & John Reiser
+                        http://upx.sourceforge.net
+

UPX is a portable, extendable, high-performance executable packer for +several different executable formats. It achieves an excellent compression +ratio and offers *very* fast decompression. Your executables suffer +no memory overhead or other drawbacks for most of the formats supported, +because of in-place decompression.

+

While you may use UPX freely for both non-commercial and commercial +executables (for details see the file LICENSE), we would highly +appreciate if you credit UPX and ourselves in the documentation, +possibly including a reference to the UPX home page. Thanks.

+

[ Using UPX in non-OpenSource applications without proper credits +is considered not politically correct ;-) ]

+

+

+
+

DISCLAIMER

+

UPX comes with ABSOLUTELY NO WARRANTY; for details see the file LICENSE.

+

This is the first production quality release, and we plan that future 1.xx +releases will be backward compatible with this version.

+

Please report all problems or suggestions to the authors. Thanks.

+

+

+
+

DESCRIPTION

+

UPX is a versatile executable packer with the following features:

+
+  - excellent compression ratio: compresses better than zip/gzip,
+      use UPX to decrease the size of your distribution !
+
+  - very fast decompression: about 10 MiB/sec on an ancient Pentium 133,
+      about 200 MiB/sec on an Athlon XP 2000+.
+
+  - no memory overhead for your compressed executables for most of the
+      supported formats
+
+  - safe: you can list, test and unpack your executables
+      Also, a checksum of both the compressed and uncompressed file is
+      maintained internally.
+
+  - universal: UPX can pack a number of executable formats:
+      * atari/tos
+      * bvmlinuz/386    [bootable Linux kernel]
+      * djgpp2/coff
+      * dos/com
+      * dos/exe
+      * dos/sys
+      * linux/386
+      * linux/elf386
+      * linux/sh386
+      * ps1/exe
+      * rtm32/pe
+      * tmt/adam
+      * vmlinuz/386     [bootable Linux kernel]
+      * vmlinux/386
+      * watcom/le (supporting DOS4G, PMODE/W, DOS32a and CauseWay)
+      * win32/pe (exe and dll)
+      * arm/pe (exe and dll)
+      * linux/elfamd64
+      * linux/elfppc32
+      * mach/elfppc32
+
+  - portable: UPX is written in portable endian-neutral C++
+
+  - extendable: because of the class layout it's very easy to support
+      new executable formats or add new compression algorithms
+
+  - free: UPX can be distributed and used freely. And from version 0.99
+      the full source code of UPX is released under the GNU General Public
+      License (GPL) !
+

You probably understand now why we call UPX the "ultimate" +executable packer.

+

+

+
+

COMMANDS

+

+

+

Compress

+

This is the default operation, eg. upx yourfile.exe will compress the file +specified on the command line.

+

+

+

Decompress

+

All UPX supported file formats can be unpacked using the -d switch, eg. +upx -d yourfile.exe will uncompress the file you've just compressed.

+

+

+

Test

+

The -t command tests the integrity of the compressed and uncompressed +data, eg. upx -t yourfile.exe check whether your file can be safely +decompressed. Note, that this command doesn't check the whole file, only +the part that will be uncompressed during program execution. This means +that you should not use this command instead of a virus checker.

+

+

+

List

+

The -l command prints out some information about the compressed files +specified on the command line as parameters, eg upx -l yourfile.exe +shows the compressed / uncompressed size and the compression ratio of +yourfile.exe.

+

+

+
+

OPTIONS

+

-q: be quiet, suppress warnings

+

-q -q (or -qq): be very quiet, suppress errors

+

-q -q -q (or -qqq): produce no output at all

+

--help: prints the help

+

--version: print the version of UPX

+

--exact: when compressing, require to be able to get a byte-identical file +after decompression with option -d. [NOTE: this is work in progress and is +not supported for all formats yet. If you do care, as a workaround you can +compress and then decompress your program a first time - any further +compress-decompress steps should then yield byte-identical results +as compared to the first decompressed version.]

+

[ ...to be written... - type `upx --help' for now ]

+

+

+
+

COMPRESSION LEVELS & TUNING

+

UPX offers ten different compression levels from -1 to -9, +and --best. The default compression level is -8 for files +smaller than 512 KiB, and -7 otherwise.

+
    +
  • +

    Compression levels 1, 2 and 3 are pretty fast.

    +
  • +
  • +

    Compression levels 4, 5 and 6 achieve a good time/ratio performance.

    +
  • +
  • +

    Compression levels 7, 8 and 9 favor compression ratio over speed.

    +
  • +
  • +

    Compression level --best may take a long time.

    +
  • +
+

Note that compression level --best can be somewhat slow for large +files, but you definitely should use it when releasing a final version +of your program.

+

Quick info for achieving the best compression ratio:

+
    +
  • +

    Try upx --brute myfile.exe or even upx --ultra-brute myfile.exe.

    +
  • +
  • +

    Try if --overlay=strip works.

    +
  • +
  • +

    For win32/pe programs there's --strip-relocs=0. See notes below.

    +
  • +
+

+

+
+

OVERLAY HANDLING OPTIONS

+

Info: An "overlay" means auxiliary data attached after the logical end of +an executable, and it often contains application specific data +(this is a common practice to avoid an extra data file, though +it would be better to use resource sections).

+

UPX handles overlays like many other executable packers do: it simply +copies the overlay after the compressed image. This works with some +files, but doesn't work with others, depending on how an application +actually accesses this overlayed data.

+
+  --overlay=copy    Copy any extra data attached to the file. [DEFAULT]
+
+  --overlay=strip   Strip any overlay from the program instead of
+                    copying it. Be warned, this may make the compressed
+                    program crash or otherwise unusable.
+
+  --overlay=skip    Refuse to compress any program which has an overlay.
+

+

+
+

ENVIRONMENT

+

The environment variable UPX can hold a set of default +options for UPX. These options are interpreted first and +can be overwritten by explicit command line parameters. +For example:

+
+    for DOS/Windows:   set UPX=-9 --compress-icons#0
+    for sh/ksh/zsh:    UPX="-9 --compress-icons=0"; export UPX
+    for csh/tcsh:      setenv UPX "-9 --compress-icons=0"
+

Under DOS/Windows you must use '#' instead of '=' when setting the +environment variable because of a COMMAND.COM limitation.

+

Not all of the options are valid in the environment variable - +UPX will tell you.

+

You can explicitly use the --no-env option to ignore the +environment variable.

+

+

+
+

NOTES FOR THE SUPPORTED EXECUTABLE FORMATS

+

+

+

NOTES FOR ATARI/TOS

+

This is the executable format used by the Atari ST/TT, a Motorola 68000 +based personal computer which was popular in the late '80s. Support +of this format is only because of nostalgic feelings of one of +the authors and serves no practical purpose :-). +See http://www.freemint.de for more info.

+

Packed programs will be byte-identical to the original after uncompression. +All debug information will be stripped, though.

+

Extra options available for this executable format:

+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+

+

+

NOTES FOR BVMLINUZ/I386

+

Same as vmlinuz/i386.

+

+

+

NOTES FOR DOS/COM

+

Obviously UPX won't work with executables that want to read data from +themselves (like some commandline utilities that ship with Win95/98/ME).

+

Compressed programs only work on a 286+.

+

Packed programs will be byte-identical to the original after uncompression.

+

Maximum uncompressed size: ~65100 bytes.

+

Extra options available for this executable format:

+
+  --8086              Create an executable that works on any 8086 CPU.
+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+

NOTES FOR DOS/EXE

+

dos/exe stands for all "normal" 16-bit DOS executables.

+

Obviously UPX won't work with executables that want to read data from +themselves (like some command line utilities that ship with Win95/98/ME).

+

Compressed programs only work on a 286+.

+

Extra options available for this executable format:

+
+  --8086              Create an executable that works on any 8086 CPU.
+
+  --no-reloc          Use no relocation records in the exe header.
+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+

+

+

NOTES FOR DOS/SYS

+

Compressed programs only work on a 286+.

+

Packed programs will be byte-identical to the original after uncompression.

+

Maximum uncompressed size: ~65350 bytes.

+

Extra options available for this executable format:

+
+  --8086              Create an executable that works on any 8086 CPU.
+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+

NOTES FOR DJGPP2/COFF

+

First of all, it is recommended to use UPX *instead* of strip. strip has +the very bad habit of replacing your stub with its own (outdated) version. +Additionally UPX corrects a bug/feature in strip v2.8.x: it +will fix the 4 KiB alignment of the stub.

+

UPX includes the full functionality of stubify. This means it will +automatically stubify your COFF files. Use the option --coff to +disable this functionality (see below).

+

UPX automatically handles Allegro packfiles.

+

The DLM format (a rather exotic shared library extension) is not supported.

+

Packed programs will be byte-identical to the original after uncompression. +All debug information and trailing garbage will be stripped, though.

+

Extra options available for this executable format:

+
+  --coff              Produce COFF output instead of EXE. By default
+                      UPX keeps your current stub.
+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+

NOTES FOR LINUX [general]

+

Introduction

+
+  Linux/386 support in UPX consists of 3 different executable formats,
+  one optimized for ELF executables ("linux/elf386"), one optimized
+  for shell scripts ("linux/sh386"), and one generic format
+  ("linux/386").
+
+  We will start with a general discussion first, but please
+  also read the relevant docs for each of the individual formats.
+
+  Also, there is special support for bootable kernels - see the
+  description of the vmlinuz/386 format.
+

General user's overview

+
+  Running a compressed executable program trades less space on a
+  ``permanent'' storage medium (such as a hard disk, floppy disk,
+  CD-ROM, flash memory, EPROM, etc.) for more space in one or more
+  ``temporary'' storage media (such as RAM, swap space, /tmp, etc.).
+  Running a compressed executable also requires some additional CPU
+  cycles to generate the compressed executable in the first place,
+  and to decompress it at each invocation.
+
+  How much space is traded?  It depends on the executable, but many
+  programs save 30% to 50% of permanent disk space.  How much CPU
+  overhead is there?  Again, it depends on the executable, but
+  decompression speed generally is at least many megabytes per second,
+  and frequently is limited by the speed of the underlying disk
+  or network I/O.
+
+  Depending on the statistics of usage and access, and the relative
+  speeds of CPU, RAM, swap space, /tmp, and file system storage, then
+  invoking and running a compressed executable can be faster than
+  directly running the corresponding uncompressed program.
+  The operating system might perform fewer expensive I/O operations
+  to invoke the compressed program.  Paging to or from swap space
+  or /tmp might be faster than paging from the general file system.
+  ``Medium-sized'' programs which access about 1/3 to 1/2 of their
+  stored program bytes can do particularly well with compression.
+  Small programs tend not to benefit as much because the absolute
+  savings is less.  Big programs tend not to benefit proportionally
+  because each invocation may use only a small fraction of the program,
+  yet UPX decompresses the entire program before invoking it.
+  But in environments where disk or flash memory storage is limited,
+  then compression may win anyway.
+
+  Currently, executables compressed by UPX do not share RAM at runtime
+  in the way that executables mapped from a file system do.  As a
+  result, if the same program is run simultaneously by more than one
+  process, then using the compressed version will require more RAM and/or
+  swap space.  So, shell programs (bash, csh, etc.)  and ``make''
+  might not be good candidates for compression.
+
+  UPX recognizes three executable formats for Linux: Linux/elf386,
+  Linux/sh386, and Linux/386.  Linux/386 is the most generic format;
+  it accommodates any file that can be executed.  At runtime, the UPX
+  decompression stub re-creates in /tmp a copy of the original file,
+  and then the copy is (re-)executed with the same arguments.
+  ELF binary executables prefer the Linux/elf386 format by default,
+  because UPX decompresses them directly into RAM, uses only one
+  exec, does not use space in /tmp, and does not use /proc.
+  Shell scripts where the underlying shell accepts a ``-c'' argument
+  can use the Linux/sh386 format.  UPX decompresses the shell script
+  into low memory, then maps the shell and passes the entire text of the
+  script as an argument with a leading ``-c''.
+

General benefits:

+
+  - UPX can compress all executables, be it AOUT, ELF, libc4, libc5,
+    libc6, Shell/Perl/Python/... scripts, standalone Java .class
+    binaries, or whatever...
+    All scripts and programs will work just as before.
+
+  - Compressed programs are completely self-contained. No need for
+    any external program.
+
+  - UPX keeps your original program untouched. This means that
+    after decompression you will have a byte-identical version,
+    and you can use UPX as a file compressor just like gzip.
+    [ Note that UPX maintains a checksum of the file internally,
+      so it is indeed a reliable alternative. ]
+
+  - As the stub only uses syscalls and isn't linked against libc it
+    should run under any Linux configuration that can run ELF
+    binaries.
+
+  - For the same reason compressed executables should run under
+    FreeBSD and other systems which can run Linux binaries.
+    [ Please send feedback on this topic ]
+

General drawbacks:

+
+  - It is not advisable to compress programs which usually have many
+    instances running (like `sh' or `make') because the common segments of
+    compressed programs won't be shared any longer between different
+    processes.
+
+  - `ldd' and `size' won't show anything useful because all they
+    see is the statically linked stub.  Since version 0.82 the section
+    headers are stripped from the UPX stub and `size' doesn't even
+    recognize the file format.  The file patches/patch-elfcode.h has a
+    patch to fix this bug in `size' and other programs which use GNU BFD.
+

General notes:

+
+  - As UPX leaves your original program untouched it is advantageous
+    to strip it before compression.
+
+  - If you compress a script you will lose platform independence -
+    this could be a problem if you are using NFS mounted disks.
+
+  - Compression of suid, guid and sticky-bit programs is rejected
+    because of possible security implications.
+
+  - For the same reason there is no sense in making any compressed
+    program suid.
+
+  - Obviously UPX won't work with executables that want to read data
+    from themselves. E.g., this might be a problem for Perl scripts
+    which access their __DATA__ lines.
+
+  - In case of internal errors the stub will abort with exitcode 127.
+    Typical reasons for this to happen are that the program has somehow
+    been modified after compression.
+    Running `strace -o strace.log compressed_file' will tell you more.
+

+

+

NOTES FOR LINUX/ELF386

+

Please read the general Linux description first.

+

The linux/elf386 format decompresses directly into RAM, +uses only one exec, does not use space in /tmp, +and does not use /proc.

+

Linux/elf386 is automatically selected for Linux ELF executables.

+

Packed programs will be byte-identical to the original after uncompression.

+

How it works:

+
+  For ELF executables, UPX decompresses directly to memory, simulating
+  the mapping that the operating system kernel uses during exec(),
+  including the PT_INTERP program interpreter (if any).
+  The brk() is set by a special PT_LOAD segment in the compressed
+  executable itself.  UPX then wipes the stack clean except for
+  arguments, environment variables, and Elf_auxv entries (this is
+  required by bugs in the startup code of /lib/ld-linux.so as of
+  May 2000), and transfers control to the program interpreter or
+  the e_entry address of the original executable.
+
+  The UPX stub is about 1700 bytes long, partly written in assembler
+  and only uses kernel syscalls. It is not linked against any libc.
+

Specific drawbacks:

+
+  - For linux/elf386 and linux/sh386 formats, you will be relying on
+    RAM and swap space to hold all of the decompressed program during
+    the lifetime of the process.  If you already use most of your swap
+    space, then you may run out.  A system that is "out of memory"
+    can become fragile.  Many programs do not react gracefully when
+    malloc() returns 0.  With newer Linux kernels, the kernel
+    may decide to kill some processes to regain memory, and you
+    may not like the kernel's choice of which to kill.  Running
+    /usr/bin/top is one way to check on the usage of swap space.
+

Extra options available for this executable format:

+
+  (none)
+

+

+

NOTES FOR LINUX/SH386

+

Please read the general Linux description first.

+

Shell scripts where the underling shell accepts a ``-c'' argument +can use the Linux/sh386 format. UPX decompresses the shell script +into low memory, then maps the shell and passes the entire text of the +script as an argument with a leading ``-c''. +It does not use space in /tmp, and does not use /proc.

+

Linux/sh386 is automatically selected for shell scripts that +use a known shell.

+

Packed programs will be byte-identical to the original after uncompression.

+

How it works:

+
+  For shell script executables (files beginning with "#!/" or "#! /")
+  where the shell is known to accept "-c <command>", UPX decompresses
+  the file into low memory, then maps the shell (and its PT_INTERP),
+  and passes control to the shell with the entire decompressed file
+  as the argument after "-c".  Known shells are sh, ash, bash, bsh, csh,
+  ksh, tcsh, pdksh.  Restriction: UPX cannot use this method
+  for shell scripts which use the one optional string argument after
+  the shell name in the script (example: "#! /bin/sh option3\n".)
+
+  The UPX stub is about 1700 bytes long, partly written in assembler
+  and only uses kernel syscalls. It is not linked against any libc.
+

Specific drawbacks:

+
+  - For linux/elf386 and linux/sh386 formats, you will be relying on
+    RAM and swap space to hold all of the decompressed program during
+    the lifetime of the process.  If you already use most of your swap
+    space, then you may run out.  A system that is "out of memory"
+    can become fragile.  Many programs do not react gracefully when
+    malloc() returns 0.  With newer Linux kernels, the kernel
+    may decide to kill some processes to regain memory, and you
+    may not like the kernel's choice of which to kill.  Running
+    /usr/bin/top is one way to check on the usage of swap space.
+

Extra options available for this executable format:

+
+  (none)
+

+

+

NOTES FOR LINUX/386

+

Please read the general Linux description first.

+

The generic linux/386 format decompresses to /tmp and needs +/proc file system support. It starts the decompressed program +via the execve() syscall.

+

Linux/386 is only selected if the specialized linux/elf386 +and linux/sh386 won't recognize a file.

+

Packed programs will be byte-identical to the original after uncompression.

+

How it works:

+
+  For files which are not ELF and not a script for a known "-c" shell,
+  UPX uses kernel execve(), which first requires decompressing to a
+  temporary file in the file system.  Interestingly -
+  because of the good memory management of the Linux kernel - this
+  often does not introduce a noticeable delay, and in fact there
+  will be no disk access at all if you have enough free memory as
+  the entire process takes places within the file system buffers.
+
+  A compressed executable consists of the UPX stub and an overlay
+  which contains the original program in a compressed form.
+
+  The UPX stub is a statically linked ELF executable and does
+  the following at program startup:
+
+    1) decompress the overlay to a temporary location in /tmp
+    2) open the temporary file for reading
+    3) try to delete the temporary file and start (execve)
+       the uncompressed program in /tmp using /proc/<pid>/fd/X as
+       attained by step 2)
+    4) if that fails, fork off a subprocess to clean up and
+       start the program in /tmp in the meantime
+
+  The UPX stub is about 1700 bytes long, partly written in assembler
+  and only uses kernel syscalls. It is not linked against any libc.
+

Specific drawbacks:

+
+  - You need additional free disk space for the uncompressed program
+    in your /tmp directory. This program is deleted immediately after
+    decompression, but you still need it for the full execution time
+    of the program.
+
+  - You must have /proc file system support as the stub wants to open
+    /proc/<pid>/exe and needs /proc/<pid>/fd/X. This also means that you
+    cannot compress programs that are used during the boot sequence
+    before /proc is mounted.
+
+  - Utilities like `top' will display numerical values in the process
+    name field. This is because Linux computes the process name from
+    the first argument of the last execve syscall (which is typically
+    something like /proc/<pid>/fd/3).
+
+  - Because of temporary decompression to disk the decompression speed
+    is not as fast as with the other executable formats. Still, I can see
+    no noticeable delay when starting programs like my ~3 MiB emacs (which
+    is less than 1 MiB when compressed :-).
+

Extra options available for this executable format:

+
+  --force-execve      Force the use of the generic linux/386 "execve"
+                      format, i.e. do not try the linux/elf386 and
+                      linux/sh386 formats.
+

+

+

NOTES FOR PS1/EXE

+

This is the executable format used by the Sony PlayStation (PSone), +a Mips R3000 based gaming console which is popular since the late '90s. +Support of this format is very similar to the Atari one, because of +nostalgic feelings of one of the authors.

+

Packed programs will be byte-identical to the original after uncompression, +until further notice.

+

Maximum uncompressed size: ~1.89 / ~7.60 MiB.

+

Notes:

+
+  - UPX creates as default a suitable executable for CD-Mastering
+    and console transfer. For a CD-Master main executable you could also try
+    the special option "--boot-only" as described below.
+    It has been reported that upx packed executables are fully compatible with
+    the Sony PlayStation 2 (PS2, PStwo) and Sony PlayStation Portable (PSP) in
+    Sony PlayStation (PSone) emulation mode.
+
+  - Normally the packed files use the same memory areas like the uncompressed
+    versions, so they will not override other memory areas while unpacking.
+    If this isn't possible UPX will abort showing a 'packed data overlap'
+    error. With the "--force" option UPX will relocate the loading address
+    for the packed file, but this isn't a real problem if it is a single or
+    the main executable.
+

Extra options available for this executable format:

+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --8-bit             Uses 8 bit size compression [default: 32 bit]
+
+  --8mib-ram          PSone has 8 MiB ram available [default: 2 MiB]
+
+  --boot-only         This format is for main exes and CD-Mastering only !
+                      It may slightly improve the compression ratio,
+                      decompression routines are faster than default ones.
+                      But it cannot be used for console transfer !
+
+  --no-align          This option disables CD mode 2 data sector format
+                      alignment. May slightly improves the compression ratio,
+                      but the compressed executable will not boot from a CD.
+                      Use it for console transfer only !
+

+

+

NOTES FOR RTM32/PE and ARM/PE

+

Same as win32/pe.

+

+

+

NOTES FOR TMT/ADAM

+

This format is used by the TMT Pascal compiler - see http://www.tmt.com/ .

+

Extra options available for this executable format:

+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+

NOTES FOR VMLINUZ/386

+

The vmlinuz/386 and bvmlinuz/386 formats take a gzip-compressed +bootable Linux kernel image ("vmlinuz", "zImage", "bzImage"), +gzip-decompress it and re-compress it with the UPX compression method.

+

vmlinuz/386 is completely unrelated to the other Linux executable +formats, and it does not share any of their drawbacks.

+

Notes:

+
+  - Be sure that "vmlinuz/386" or "bvmlinuz/386" is displayed
+  during compression - otherwise a wrong executable format
+  may have been used, and the kernel won't boot.
+

Benefits:

+
+  - Better compression (but note that the kernel was already compressed,
+  so the improvement is not as large as with other formats).
+  Still, the bytes saved may be essential for special needs like
+  boot disks.
+
+     For example, this is what I get for my 2.2.16 kernel:
+        1589708  vmlinux
+         641073  bzImage        [original]
+         560755  bzImage.upx    [compressed by "upx -9"]
+
+  - Much faster decompression at kernel boot time (but kernel
+    decompression speed is not really an issue these days).
+

Drawbacks:

+
+  (none)
+

Extra options available for this executable format:

+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+

NOTES FOR WATCOM/LE

+

UPX has been successfully tested with the following extenders: + DOS4G, DOS4GW, PMODE/W, DOS32a, CauseWay. + The WDOS/X extender is partly supported (for details + see the file bugs BUGS).

+

DLLs and the LX format are not supported.

+

Extra options available for this executable format:

+
+  --le                Produce an unbound LE output instead of
+                      keeping the current stub.
+

+

+

NOTES FOR WIN32/PE

+

The PE support in UPX is quite stable now, but probably there are +still some incompatibilities with some files.

+

Because of the way UPX (and other packers for this format) works, you +can see increased memory usage of your compressed files because the whole +program is loaded into memory at startup. +If you start several instances of huge compressed programs you're +wasting memory because the common segments of the program won't +get shared across the instances. +On the other hand if you're compressing only smaller programs, or +running only one instance of larger programs, then this penalty is +smaller, but it's still there.

+

If you're running executables from network, then compressed programs +will load faster, and require less bandwidth during execution.

+

DLLs are supported. But UPX compressed DLLs can not share common data and +code when they got used by multiple applications. So compressing msvcrt.dll +is a waste of memory, but compressing the dll plugins of a particular +application may be a better idea.

+

Screensavers are supported, with the restriction that the filename +must end with ".scr" (as screensavers are handled slightly different +than normal exe files).

+

UPX compressed PE files have some minor memory overhead (usually in the +10 - 30 KiB range) which can be seen by specifying the "-i" command +line switch during compression.

+

Extra options available for this executable format:

+
+ --compress-exports=0 Don't compress the export section.
+                      Use this if you plan to run the compressed
+                      program under Wine.
+ --compress-exports=1 Compress the export section. [DEFAULT]
+                      Compression of the export section can improve the
+                      compression ratio quite a bit but may not work
+                      with all programs (like winword.exe).
+                      UPX never compresses the export section of a DLL
+                      regardless of this option.
+
+  --compress-icons=0  Don't compress any icons.
+  --compress-icons=1  Compress all but the first icon.
+  --compress-icons=2  Compress all icons which are not in the
+                      first icon directory. [DEFAULT]
+  --compress-icons=3  Compress all icons.
+
+  --compress-resources=0  Don't compress any resources at all.
+
+  --keep-resource=list Don't compress resources specified by the list.
+                      The members of the list are separated by commas.
+                      A list member has the following format: I<type[/name]>.
+                      I<Type> is the type of the resource. Standard types
+                      must be specified as decimal numbers, user types can be
+                      specified by decimal IDs or strings. I<Name> is the
+                      identifier of the resource. It can be a decimal number
+                      or a string. For example:
+
+                      --keep-resource=2/MYBITMAP,5,6/12345
+
+                      UPX won't compress the named bitmap resource "MYBITMAP",
+                      it leaves every dialog (5) resource uncompressed, and
+                      it won't touch the string table resource with identifier
+                      12345.
+
+  --force             Force compression even when there is an
+                      unexpected value in a header field.
+                      Use with care.
+
+  --strip-relocs=0    Don't strip relocation records.
+  --strip-relocs=1    Strip relocation records. [DEFAULT]
+                      This option only works on executables with base
+                      address greater or equal to 0x400000. Usually the
+                      compressed files becomes smaller, but some files
+                      may become larger. Note that the resulting file will
+                      not work under Windows 3.x (Win32s).
+                      UPX never strips relocations from a DLL
+                      regardless of this option.
+
+  --all-methods       Compress the program several times, using all
+                      available compression methods. This may improve
+                      the compression ratio in some cases, but usually
+                      the default method gives the best results anyway.
+
+  --all-filters       Compress the program several times, using all
+                      available preprocessing filters. This may improve
+                      the compression ratio in some cases, but usually
+                      the default filter gives the best results anyway.
+

+

+
+

DIAGNOSTICS

+

Exit status is normally 0; if an error occurs, exit status +is 1. If a warning occurs, exit status is 2.

+

UPX's diagnostics are intended to be self-explanatory.

+

+

+
+

BUGS

+

Please report all bugs immediately to the authors.

+

+

+
+

AUTHORS

+
+ Markus F.X.J. Oberhumer <markus@oberhumer.com>
+ http://www.oberhumer.com
+
+ Laszlo Molnar <ml1050@users.sourceforge.net>
+
+ John F. Reiser <jreiser@BitWagon.com>
+
+ Jens Medoch <jssg@users.sourceforge.net>
+

+

+
+

COPYRIGHT

+

Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer

+

Copyright (C) 1996-2013 Laszlo Molnar

+

Copyright (C) 2000-2013 John F. Reiser

+

Copyright (C) 2002-2013 Jens Medoch

+

This program may be used freely, and you are welcome to +redistribute it under certain conditions.

+

This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +UPX License Agreement for more details.

+

You should have received a copy of the UPX License Agreement along +with this program; see the file LICENSE. If not, visit the UPX home page.

+ + + +