From b2d7ac0cba70dc60490395884b45ef24cc65eeff Mon Sep 17 00:00:00 2001 From: roberto Date: Mon, 2 Jun 2008 11:29:05 +0000 Subject: [PATCH] Segundo repaso de relaciones entre modulos git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@402 0c75b7a4-871f-7646-8a2f-f78d34cc349f --- Build/Build.fbp5 | 14 +- Database/scripts/factuges.sql | 12 +- Source/Base/Base.dproj | 102 +-- .../uAlbaranesClienteController.pas | 9 +- .../uAlbaranesProveedorController.pas | 7 +- .../Views/AlbaranesProveedor_view.dpk | Bin 2631 -> 2660 bytes .../Views/AlbaranesProveedor_view.dproj | 1 + .../Views/uEditorAlbaranesProveedor.pas | 4 +- .../Views/uEditorElegirAlbaranesProveedor.dfm | 23 +- .../Views/uEditorElegirAlbaranesProveedor.pas | 2 +- .../FacturasProveedor_Group.groupproj | 56 +- .../Views/uEditorFacturasProveedor.dfm | 47 +- .../Views/uEditorFacturasProveedor.pas | 14 +- .../PedidosProveedor_Group.groupproj | 16 +- .../Views/uEditorElegirPedidosProveedor.dfm | 40 +- .../Views/uEditorElegirPedidosProveedor.pas | 2 +- .../Views/uEditorPedidosProveedor.dfm | 8 + .../Data/uDataModulePresupuestosCliente.dfm | 9 + .../schPresupuestosClienteClient_Intf.pas | 78 ++- .../schPresupuestosClienteServer_Intf.pas | 94 ++- .../PresupuestosCliente_Group.groupproj | 46 +- .../Servidor/srvPresupuestosCliente_Impl.dfm | 50 +- .../Views/PresupuestosCliente_view.dpk | Bin 1979 -> 2006 bytes .../Views/PresupuestosCliente_view.dproj | 2 + .../Views/uEditorPresupuestosCliente.dfm | 4 +- .../Views/uEditorPresupuestosCliente.pas | 30 +- .../Views/uViewPresupuestosCliente.dfm | 1 - .../uGenerarFacturasCliAlbCliUtils.pas | 10 +- .../uGenerarFacturasProvAlbProvUtils.pas | 12 +- .../uGenerarAlbaranesCliUtils.pas | 10 +- .../uGenerarAlbaranesProvUtils.pas | 11 +- .../uGenerarFacturasProvPedProvUtils.pas | 10 +- .../uGenerarFacturasProvUtils.pas | 10 +- .../uGenerarAlbaranesCliUtils.pas | 224 ++++-- .../PedProv_FacProv_relation.bdsproj | 530 ++++++++++++++ .../PedProv_FacProv_relation.dpk | 48 ++ .../PedProv_FacProv_relation.dproj | 219 ++++++ .../PedProv_FacProv_relation.rc | 0 .../PedProv_FacProv_relation.res | Bin 0 -> 5056 bytes .../PreCli_FacCli_relation.dpk | 36 + .../PreCli_FacCli_relation.dproj | 650 ++++++++++++++++++ .../uGenerarFacturasCliPreCliUtils.dfm | 315 +++++++++ .../uGenerarFacturasCliPreCliUtils.pas | 429 ++++++++++++ .../uGenerarFacturasProvPedProvUtils.dfm | 315 +++++++++ .../uGenerarFacturasProvPedProvUtils.pas | 234 +++++++ .../uGenerarFacturasProvUtils.dfm | 315 +++++++++ .../uGenerarFacturasProvUtils.pas | 234 +++++++ Source/Servidor/FactuGES_Server.RES | Bin 5156 -> 23200 bytes Source/Servidor/FactuGES_Server.dpr | 6 +- Source/Servidor/FactuGES_Server.dproj | 542 +++++++-------- Source/Servidor/FactuGES_Server.rc | 2 +- 51 files changed, 4299 insertions(+), 534 deletions(-) create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.bdsproj create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.dpk create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.dproj create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.rc create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.res create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PreCli_FacCli_relation.dpk create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PreCli_FacCli_relation.dproj create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasCliPreCliUtils.dfm create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasCliPreCliUtils.pas create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvPedProvUtils.dfm create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvPedProvUtils.pas create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvUtils.dfm create mode 100644 Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvUtils.pas diff --git a/Build/Build.fbp5 b/Build/Build.fbp5 index 702bf60c..51ac3bc9 100644 --- a/Build/Build.fbp5 +++ b/Build/Build.fbp5 @@ -15288,7 +15288,7 @@ Comments= - + 0 @@ -15299,12 +15299,12 @@ Comments= True 0 1252 - 11 + 12 Release False - + - False + True True False @@ -15330,7 +15330,7 @@ Comments= 0 False 0 - + True 0 @@ -15343,7 +15343,7 @@ Comments= False False False - [] + [usPackages,usCompiler,usLinker,usVersionInfo] False False False False False - True + False True True False diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql index 03af111f..cb03c47e 100644 --- a/Database/scripts/factuges.sql +++ b/Database/scripts/factuges.sql @@ -963,7 +963,8 @@ CREATE TABLE PRESUPUESTOS_CLIENTE ( IMPORTE_TOTAL TIPO_IMPORTE, ID_FORMA_PAGO TIPO_ID, REFERENCIA_CLIENTE VARCHAR(255), - CLIENTE_FINAL VARCHAR(255) + CLIENTE_FINAL VARCHAR(255), + ID_FACTURA TIPO_ID ); @@ -2649,7 +2650,9 @@ CREATE VIEW V_PRESUPUESTOS_CLIENTE( IVA, IMPORTE_IVA, IMPORTE_TOTAL, - ID_FORMA_PAGO) + ID_FORMA_PAGO, + ID_FACTURA, + FACTURA) AS SELECT PRESUPUESTOS_CLIENTE.ID, @@ -2680,10 +2683,13 @@ SELECT PRESUPUESTOS_CLIENTE.IVA, PRESUPUESTOS_CLIENTE.IMPORTE_IVA, PRESUPUESTOS_CLIENTE.IMPORTE_TOTAL, - PRESUPUESTOS_CLIENTE.ID_FORMA_PAGO + PRESUPUESTOS_CLIENTE.ID_FORMA_PAGO, + PRESUPUESTOS_CLIENTE.ID_FACTURA, + FACTURAS_CLIENTE.REFERENCIA FROM PRESUPUESTOS_CLIENTE LEFT OUTER JOIN V_CLIENTES ON (PRESUPUESTOS_CLIENTE.ID_CLIENTE = V_CLIENTES.ID) + LEFT OUTER JOIN FACTURAS_CLIENTE ON (FACTURAS_CLIENTE.ID = PRESUPUESTOS_CLIENTE.ID_FACTURA) ; diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index c915d5eb..0b0251a4 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -53,58 +53,58 @@ MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
fConfigurarConexion
TForm diff --git a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas index 9ebfa8e4..d62fbfe0 100644 --- a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas +++ b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas @@ -29,7 +29,7 @@ type procedure VerTodosAlbaranes(AAlbarans: IBizAlbaranCliente); procedure VerTodosAlbaranesDev(AAlbarans: IBizAlbaranCliente); procedure VerDireccionEntrega(AAlbaran : IBizAlbaranCliente); - function Nuevo : IBizAlbaranCliente; + function Nuevo(withInsert: Boolean = True): IBizAlbaranCliente; function Anadir(AAlbaran : IBizAlbaranCliente): Boolean; overload; function AnadirAlbaranDev(AAlbaran : IBizAlbaranCliente) : Boolean; function Eliminar(const ID : Integer): Boolean; overload; @@ -108,7 +108,7 @@ type function BuscarPendientes : IBizAlbaranCliente; function BuscarSinFacturar : IBizAlbaranCliente; - function Nuevo : IBizAlbaranCliente; + function Nuevo (withInsert: Boolean = True) : IBizAlbaranCliente; procedure Ver(AAlbaran : IBizAlbaranCliente); procedure VerTodosAlbaranes(AAlbarans: IBizAlbaranCliente); procedure VerTodosAlbaranesDev(AAlbarans: IBizAlbaranCliente); @@ -886,14 +886,15 @@ begin end; end; -function TAlbaranesClienteController.Nuevo: IBizAlbaranCliente; +function TAlbaranesClienteController.Nuevo(withInsert: Boolean = True): IBizAlbaranCliente; var AAlbaran : IBizAlbaranCliente; begin AAlbaran := FDataModule.NewItem; FiltrarEmpresa(AAlbaran); AAlbaran.DataTable.Active := True; - AAlbaran.Insert; + if WithInsert then + AAlbaran.Insert; Result := AAlbaran; end; diff --git a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas index d532462f..b109a326 100644 --- a/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas +++ b/Source/Modulos/Albaranes de proveedor/Controller/uAlbaranesProveedorController.pas @@ -952,11 +952,10 @@ begin if ValidarAlbaran(AAlbaran) then begin ShowHourglassCursor; - - // Asegurarnos de que todos los importes están bien. - RecalcularImportes(AAlbaran); - try + // Asegurarnos de que todos los importes están bien. + RecalcularImportes(AAlbaran); + AAlbaran.DataTable.ApplyUpdates; Result := True; finally diff --git a/Source/Modulos/Albaranes de proveedor/Views/AlbaranesProveedor_view.dpk b/Source/Modulos/Albaranes de proveedor/Views/AlbaranesProveedor_view.dpk index 51bba10d5b9d834a53d9889dc31f6cdd09210a34..6d5038f98deeb0d297bbabd08115ed77b3653a3e 100644 GIT binary patch delta 29 kcmX>u@ZNfYg+LqWrRW$DE|iElh{m0g>$q+W-In delta 12 UcmaDNa$ID?M5fK_n6|M403}5QHvj+t diff --git a/Source/Modulos/Albaranes de proveedor/Views/AlbaranesProveedor_view.dproj b/Source/Modulos/Albaranes de proveedor/Views/AlbaranesProveedor_view.dproj index 772dd0ce..2eddaa04 100644 --- a/Source/Modulos/Albaranes de proveedor/Views/AlbaranesProveedor_view.dproj +++ b/Source/Modulos/Albaranes de proveedor/Views/AlbaranesProveedor_view.dproj @@ -56,6 +56,7 @@ +
fEditorAlbaranDevProveedor
diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas index 71573981..b31a7af2 100644 --- a/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas +++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranesProveedor.pas @@ -61,7 +61,7 @@ implementation uses uDataModuleAlbaranesProveedor, uDataModuleUsuarios, uFactuGES_App, uGenerarFacturasProvAlbProvUtils, -// uGenerarAlbaranesProvUtils, + uGenerarAlbaranesProvUtils, uEditorBase, schAlbaranesProveedorClient_Intf, uGridStatusUtils, uDBSelectionListUtils; @@ -261,7 +261,7 @@ begin begin case JsNuevoAlbaranDialog.CustomButtonResult of 200 : begin // Utilizar un pedido -// GenerarAlbaranProv; + GenerarAlbaranProv; actRefrescar.Execute; end; 100 : begin // Albaran nuevo vacio diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.dfm b/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.dfm index d3c801d4..0bc21b7b 100644 --- a/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.dfm +++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.dfm @@ -2,7 +2,6 @@ inherited fEditorElegirAlbaranesProveedor: TfEditorElegirAlbaranesProveedor Caption = 'Seleccionar albar'#225'n de proveedor' ClientWidth = 790 ExplicitWidth = 798 - ExplicitHeight = 478 PixelsPerInch = 96 TextHeight = 13 object JvgWizardHeader1: TJvgWizardHeader [0] @@ -50,12 +49,10 @@ inherited fEditorElegirAlbaranesProveedor: TfEditorElegirAlbaranesProveedor inherited TBXDock: TTBXDock Top = 87 Width = 790 - Height = 49 ExplicitTop = 87 ExplicitWidth = 790 - ExplicitHeight = 49 inherited tbxMain: TTBXToolbar - ExplicitWidth = 117 + ExplicitWidth = 278 inherited TBXItem2: TTBXItem Visible = False end @@ -91,11 +88,11 @@ inherited fEditorElegirAlbaranesProveedor: TfEditorElegirAlbaranesProveedor end end inherited tbxFiltro: TTBXToolbar - Left = 117 + Left = 278 Top = 23 DockPos = 104 DockRow = 1 - ExplicitLeft = 117 + ExplicitLeft = 278 ExplicitTop = 23 inherited TBXItem34: TTBXItem Action = actQuitarFiltro2 @@ -104,10 +101,14 @@ inherited fEditorElegirAlbaranesProveedor: TfEditorElegirAlbaranesProveedor inherited tbxMenu: TTBXToolbar ExplicitWidth = 790 end + inherited TBXTMain2: TTBXToolbar + Left = 334 + Visible = False + ExplicitLeft = 334 + end end inherited StatusBar: TJvStatusBar Width = 790 - ExplicitTop = 425 ExplicitWidth = 790 end inline frViewBarraSeleccion1: TfrViewBarraSeleccion [4] @@ -171,10 +172,16 @@ inherited fEditorElegirAlbaranesProveedor: TfEditorElegirAlbaranesProveedor end inherited StatusBarImages: TPngImageList [11] end - inherited GridPopupMenu: TPopupMenu + inherited GridPopupMenu: TPopupMenu [12] Left = 56 Top = 192 end + inherited JsNuevoAlbaranDialog: TJSDialog [13] + end + inherited JsPrevisualizarDialog: TJSDialog [14] + end + inherited JsImprimirDialog: TJSDialog [15] + end object EditorSeleccionActionList: TActionList Images = SmallImages Left = 152 diff --git a/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.pas b/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.pas index 4ebafb18..b257bbcc 100644 --- a/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.pas +++ b/Source/Modulos/Albaranes de proveedor/Views/uEditorElegirAlbaranesProveedor.pas @@ -11,7 +11,7 @@ uses TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uViewBarraSeleccion, JvgWizardHeader, StdCtrls, uEditorAlbaranesProveedor, uBizAlbaranesProveedor, uIEditorElegirAlbaranesProveedor, - JvExComCtrls, JvStatusBar, JSDialog; + JvExComCtrls, JvStatusBar, JSDialog, uDAInterfaces; type TfEditorElegirAlbaranesProveedor = class(TfEditorAlbaranesProveedor, IEditorElegirAlbaranesProveedor) diff --git a/Source/Modulos/Facturas de proveedor/FacturasProveedor_Group.groupproj b/Source/Modulos/Facturas de proveedor/FacturasProveedor_Group.groupproj index a068b6fc..eceefbab 100644 --- a/Source/Modulos/Facturas de proveedor/FacturasProveedor_Group.groupproj +++ b/Source/Modulos/Facturas de proveedor/FacturasProveedor_Group.groupproj @@ -9,9 +9,14 @@ + + + + + @@ -141,14 +146,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + \ No newline at end of file diff --git a/Source/Modulos/Facturas de proveedor/Views/uEditorFacturasProveedor.dfm b/Source/Modulos/Facturas de proveedor/Views/uEditorFacturasProveedor.dfm index f02deaef..9da4c96e 100644 --- a/Source/Modulos/Facturas de proveedor/Views/uEditorFacturasProveedor.dfm +++ b/Source/Modulos/Facturas de proveedor/Views/uEditorFacturasProveedor.dfm @@ -9,7 +9,7 @@ inherited fEditorFacturasProveedor: TfEditorFacturasProveedor inherited JvNavPanelHeader: TJvNavPanelHeader Width = 849 Caption = 'Lista de facturas de proveedor' - ExplicitWidth = 640 + ExplicitWidth = 849 inherited Image1: TImage Left = 822 Picture.Data = { @@ -36,7 +36,7 @@ inherited fEditorFacturasProveedor: TfEditorFacturasProveedor end inherited TBXDock: TTBXDock Width = 849 - ExplicitWidth = 640 + ExplicitWidth = 849 inherited tbxMain: TTBXToolbar ExplicitWidth = 474 object TBXSubmenuItem2: TTBXSubmenuItem [0] @@ -66,7 +66,7 @@ inherited fEditorFacturasProveedor: TfEditorFacturasProveedor Top = 647 Width = 849 ExplicitTop = 647 - ExplicitWidth = 640 + ExplicitWidth = 849 end inline frViewFacturasProveedor1: TfrViewFacturasProveedor [3] Left = 0 @@ -83,13 +83,12 @@ inherited fEditorFacturasProveedor: TfEditorFacturasProveedor TabOrder = 3 ReadOnly = False ExplicitTop = 102 - ExplicitWidth = 640 + ExplicitWidth = 849 ExplicitHeight = 545 inherited cxGrid: TcxGrid Width = 849 Height = 417 - ExplicitTop = 102 - ExplicitWidth = 640 + ExplicitWidth = 849 ExplicitHeight = 417 inherited cxGridView: TcxGridDBTableView DataController.Summary.DefaultGroupSummaryItems = < @@ -125,27 +124,27 @@ inherited fEditorFacturasProveedor: TfEditorFacturasProveedor end inherited frViewFiltroBase1: TfrViewFiltroBase Width = 849 - ExplicitWidth = 640 + ExplicitWidth = 849 inherited TBXDockablePanel1: TTBXDockablePanel - ExplicitWidth = 640 + ExplicitWidth = 849 inherited dxLayoutControl1: TdxLayoutControl Width = 849 - ExplicitWidth = 640 + ExplicitWidth = 849 inherited txtFiltroTodo: TcxTextEdit Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' - ExplicitWidth = 543 - Width = 543 + ExplicitWidth = 752 + Width = 752 end inherited edtFechaIniFiltro: TcxDateEdit Style.LookAndFeel.SkinName = '' StyleDisabled.LookAndFeel.SkinName = '' StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' - ExplicitWidth = 191 - Width = 191 + ExplicitWidth = 282 + Width = 282 end inherited edtFechaFinFiltro: TcxDateEdit Left = 386 @@ -154,16 +153,16 @@ inherited fEditorFacturasProveedor: TfEditorFacturasProveedor StyleFocused.LookAndFeel.SkinName = '' StyleHot.LookAndFeel.SkinName = '' ExplicitLeft = 386 - ExplicitWidth = 335 - Width = 335 + ExplicitWidth = 453 + Width = 453 end end inherited TBXAlignmentPanel1: TTBXAlignmentPanel Width = 849 - ExplicitWidth = 640 + ExplicitWidth = 849 inherited tbxBotones: TTBXToolbar Width = 839 - ExplicitWidth = 630 + ExplicitWidth = 839 end end end @@ -175,13 +174,13 @@ inherited fEditorFacturasProveedor: TfEditorFacturasProveedor inherited pnlAgrupaciones: TTBXDockablePanel Top = 519 ExplicitTop = 519 - ExplicitWidth = 640 + ExplicitWidth = 849 inherited TBXAlignmentPanel1: TTBXAlignmentPanel Width = 849 - ExplicitWidth = 640 + ExplicitWidth = 849 inherited TBXToolbar1: TTBXToolbar Width = 839 - ExplicitWidth = 630 + ExplicitWidth = 839 end end end @@ -196,6 +195,14 @@ inherited fEditorFacturasProveedor: TfEditorFacturasProveedor BuiltInStyle = True end end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewFacturasProveedor1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end end inherited EditorActionList: TActionList [4] Left = 136 diff --git a/Source/Modulos/Facturas de proveedor/Views/uEditorFacturasProveedor.pas b/Source/Modulos/Facturas de proveedor/Views/uEditorFacturasProveedor.pas index ca1eea05..beab164f 100644 --- a/Source/Modulos/Facturas de proveedor/Views/uEditorFacturasProveedor.pas +++ b/Source/Modulos/Facturas de proveedor/Views/uEditorFacturasProveedor.pas @@ -65,9 +65,7 @@ uses uDataModuleFacturasProveedor, uDataModuleUsuarios, uGridStatusUtils, uDBSelectionListUtils, uFactuGES_App, uAlbaranesProveedorController, uBizAlbaranesProveedor, - uEditorBase; - -// , uGenerarFacturasProvAlbProvUtils; + uEditorBase, uGenerarFacturasProvAlbProvUtils; {$R *.dfm} @@ -310,13 +308,13 @@ begin end;} end; 200 : begin // Utilizar albaranes -// GenerarFacturaProv; + GenerarFacturaProv; actRefrescar.Execute; end; - 100 : begin // Factura nuevo vacio - if FController.Anadir(Facturas) then - FController.Ver(Facturas); - end; + 100 : begin // Factura nuevo vacio + if FController.Anadir(Facturas) then + FController.Ver(Facturas); + end; end; end; end; diff --git a/Source/Modulos/Pedidos a proveedor/PedidosProveedor_Group.groupproj b/Source/Modulos/Pedidos a proveedor/PedidosProveedor_Group.groupproj index dece2928..fa0ea82a 100644 --- a/Source/Modulos/Pedidos a proveedor/PedidosProveedor_Group.groupproj +++ b/Source/Modulos/Pedidos a proveedor/PedidosProveedor_Group.groupproj @@ -12,6 +12,7 @@ + @@ -201,14 +202,23 @@ + + + + + + + + + - + - + - + \ No newline at end of file diff --git a/Source/Modulos/Pedidos a proveedor/Views/uEditorElegirPedidosProveedor.dfm b/Source/Modulos/Pedidos a proveedor/Views/uEditorElegirPedidosProveedor.dfm index c20ab54b..4764a179 100644 --- a/Source/Modulos/Pedidos a proveedor/Views/uEditorElegirPedidosProveedor.dfm +++ b/Source/Modulos/Pedidos a proveedor/Views/uEditorElegirPedidosProveedor.dfm @@ -2,7 +2,6 @@ inherited fEditorElegirPedidosProveedor: TfEditorElegirPedidosProveedor Caption = 'Seleccionar pedido de cliente' ClientWidth = 656 ExplicitWidth = 664 - ExplicitHeight = 478 PixelsPerInch = 96 TextHeight = 13 object JvgWizardHeader1: TJvgWizardHeader [0] @@ -138,15 +137,15 @@ inherited fEditorElegirPedidosProveedor: TfEditorElegirPedidosProveedor Top = 162 Width = 656 Height = 214 - ExplicitTop = 162 + ExplicitTop = 159 ExplicitWidth = 656 - ExplicitHeight = 214 + ExplicitHeight = 217 inherited cxGrid: TcxGrid Width = 656 Height = 86 RootLevelOptions.DetailTabsPosition = dtpNone ExplicitWidth = 656 - ExplicitHeight = 86 + ExplicitHeight = 89 inherited cxGridView: TcxGridDBTableView DataController.Summary.DefaultGroupSummaryItems = < item @@ -161,9 +160,6 @@ inherited fEditorElegirPedidosProveedor: TfEditorElegirPedidosProveedor Kind = skCount Column = frViewPedidosProveedor1.cxGridViewNOMBRE end> - inherited cxGridViewCODIGO: TcxGridDBColumn - IsCaptionAssigned = True - end end end inherited frViewFiltroBase1: TfrViewFiltroBase @@ -174,9 +170,25 @@ inherited fEditorElegirPedidosProveedor: TfEditorElegirPedidosProveedor inherited dxLayoutControl1: TdxLayoutControl Width = 656 ExplicitWidth = 656 + inherited txtFiltroTodo: TcxTextEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + end + inherited edtFechaIniFiltro: TcxDateEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + end inherited edtFechaFinFiltro: TcxDateEdit - ExplicitWidth = 404 - Width = 404 + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 277 + Width = 277 end end inherited TBXAlignmentPanel1: TTBXAlignmentPanel @@ -191,7 +203,7 @@ inherited fEditorElegirPedidosProveedor: TfEditorElegirPedidosProveedor end inherited pnlAgrupaciones: TTBXDockablePanel Top = 188 - ExplicitTop = 188 + ExplicitTop = 191 ExplicitWidth = 656 inherited TBXAlignmentPanel1: TTBXAlignmentPanel Width = 656 @@ -212,6 +224,14 @@ inherited fEditorElegirPedidosProveedor: TfEditorElegirPedidosProveedor BuiltInStyle = True end end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewPedidosProveedor1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end end inherited EditorActionList: TActionList [8] Left = 112 diff --git a/Source/Modulos/Pedidos a proveedor/Views/uEditorElegirPedidosProveedor.pas b/Source/Modulos/Pedidos a proveedor/Views/uEditorElegirPedidosProveedor.pas index 0c070f23..a506bfab 100644 --- a/Source/Modulos/Pedidos a proveedor/Views/uEditorElegirPedidosProveedor.pas +++ b/Source/Modulos/Pedidos a proveedor/Views/uEditorElegirPedidosProveedor.pas @@ -12,7 +12,7 @@ uses JvNavigationPane, uViewBarraSeleccion, JvgWizardHeader, StdCtrls, uBizPedidosProveedor, uIEditorElegirPedidosProveedor, JvExComCtrls, JvStatusBar, uEditorPedidosProveedor, uViewPedidosProveedor, - JSDialog; + JSDialog, uDAInterfaces; type TfEditorElegirPedidosProveedor = class(TfEditorPedidosProveedor, IEditorElegirPedidosProveedor) diff --git a/Source/Modulos/Pedidos a proveedor/Views/uEditorPedidosProveedor.dfm b/Source/Modulos/Pedidos a proveedor/Views/uEditorPedidosProveedor.dfm index 89fa7d90..8d414643 100644 --- a/Source/Modulos/Pedidos a proveedor/Views/uEditorPedidosProveedor.dfm +++ b/Source/Modulos/Pedidos a proveedor/Views/uEditorPedidosProveedor.dfm @@ -177,6 +177,14 @@ inherited fEditorPedidosProveedor: TfEditorPedidosProveedor BuiltInStyle = True end end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewPedidosProveedor1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end end inherited EditorActionList: TActionList [4] Left = 16 diff --git a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm index 618c1881..ec71f732 100644 --- a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm @@ -212,6 +212,15 @@ inherited DataModulePresupuestosCliente: TDataModulePresupuestosCliente Name = 'ID_FORMA_PAGO' DataType = datInteger DictionaryEntry = 'PresupuestosCliente_ID_FORMA_PAGO' + end + item + Name = 'ID_FACTURA' + DataType = datInteger + end + item + Name = 'FACTURA' + DataType = datString + Size = 255 end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] diff --git a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas index 0e6b11d9..96a4ac69 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas @@ -9,8 +9,8 @@ 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_PresupuestosCliente = '{D3A7E867-7723-4779-B542-60D5E98F8E76}'; - RID_PresupuestosCliente_Detalles = '{6E3FCEDE-6365-4A46-A5C1-DD370767BDE4}'; + RID_PresupuestosCliente = '{B9E832BD-6305-49C7-AA35-31028B7132F6}'; + RID_PresupuestosCliente_Detalles = '{61CD0D2F-5617-4C93-8933-9BA83AC58651}'; { Data table names } nme_PresupuestosCliente = 'PresupuestosCliente'; @@ -46,6 +46,8 @@ const fld_PresupuestosClienteIMPORTE_IVA = 'IMPORTE_IVA'; fld_PresupuestosClienteIMPORTE_TOTAL = 'IMPORTE_TOTAL'; fld_PresupuestosClienteID_FORMA_PAGO = 'ID_FORMA_PAGO'; + fld_PresupuestosClienteID_FACTURA = 'ID_FACTURA'; + fld_PresupuestosClienteFACTURA = 'FACTURA'; { PresupuestosCliente field indexes } idx_PresupuestosClienteID = 0; @@ -77,6 +79,8 @@ const idx_PresupuestosClienteIMPORTE_IVA = 26; idx_PresupuestosClienteIMPORTE_TOTAL = 27; idx_PresupuestosClienteID_FORMA_PAGO = 28; + idx_PresupuestosClienteID_FACTURA = 29; + idx_PresupuestosClienteFACTURA = 30; { PresupuestosCliente_Detalles fields } fld_PresupuestosCliente_DetallesID = 'ID'; @@ -115,7 +119,7 @@ const type { IPresupuestosCliente } IPresupuestosCliente = interface(IDAStronglyTypedDataTable) - ['{1C22CC0C-D0FB-4720-8528-8455BBAFA3B0}'] + ['{4D356A02-95BC-4923-AE73-1CCD1AB6BC31}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -229,6 +233,14 @@ type procedure SetID_FORMA_PAGOValue(const aValue: Integer); function GetID_FORMA_PAGOIsNull: Boolean; procedure SetID_FORMA_PAGOIsNull(const aValue: Boolean); + function GetID_FACTURAValue: Integer; + procedure SetID_FACTURAValue(const aValue: Integer); + function GetID_FACTURAIsNull: Boolean; + procedure SetID_FACTURAIsNull(const aValue: Boolean); + function GetFACTURAValue: String; + procedure SetFACTURAValue(const aValue: String); + function GetFACTURAIsNull: Boolean; + procedure SetFACTURAIsNull(const aValue: Boolean); { Properties } @@ -290,6 +302,10 @@ type property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; property ID_FORMA_PAGOIsNull: Boolean read GetID_FORMA_PAGOIsNull write SetID_FORMA_PAGOIsNull; + property ID_FACTURA: Integer read GetID_FACTURAValue write SetID_FACTURAValue; + property ID_FACTURAIsNull: Boolean read GetID_FACTURAIsNull write SetID_FACTURAIsNull; + property FACTURA: String read GetFACTURAValue write SetFACTURAValue; + property FACTURAIsNull: Boolean read GetFACTURAIsNull write SetFACTURAIsNull; end; { TPresupuestosClienteDataTableRules } @@ -417,6 +433,14 @@ type procedure SetID_FORMA_PAGOValue(const aValue: Integer); virtual; function GetID_FORMA_PAGOIsNull: Boolean; virtual; procedure SetID_FORMA_PAGOIsNull(const aValue: Boolean); virtual; + function GetID_FACTURAValue: Integer; virtual; + procedure SetID_FACTURAValue(const aValue: Integer); virtual; + function GetID_FACTURAIsNull: Boolean; virtual; + procedure SetID_FACTURAIsNull(const aValue: Boolean); virtual; + function GetFACTURAValue: String; virtual; + procedure SetFACTURAValue(const aValue: String); virtual; + function GetFACTURAIsNull: Boolean; virtual; + procedure SetFACTURAIsNull(const aValue: Boolean); virtual; { Properties } property ID: Integer read GetIDValue write SetIDValue; @@ -477,6 +501,10 @@ type property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; property ID_FORMA_PAGOIsNull: Boolean read GetID_FORMA_PAGOIsNull write SetID_FORMA_PAGOIsNull; + property ID_FACTURA: Integer read GetID_FACTURAValue write SetID_FACTURAValue; + property ID_FACTURAIsNull: Boolean read GetID_FACTURAIsNull write SetID_FACTURAIsNull; + property FACTURA: String read GetFACTURAValue write SetFACTURAValue; + property FACTURAIsNull: Boolean read GetFACTURAIsNull write SetFACTURAIsNull; public constructor Create(aDataTable: TDADataTable); override; @@ -486,7 +514,7 @@ type { IPresupuestosCliente_Detalles } IPresupuestosCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{1EBF41FD-FA98-4313-B352-5903FF6C09AC}'] + ['{8318DFDD-437C-44E0-A922-58813F4B6CDB}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -1333,6 +1361,48 @@ begin DataTable.Fields[idx_PresupuestosClienteID_FORMA_PAGO].AsVariant := Null; end; +function TPresupuestosClienteDataTableRules.GetID_FACTURAValue: Integer; +begin + result := DataTable.Fields[idx_PresupuestosClienteID_FACTURA].AsInteger; +end; + +procedure TPresupuestosClienteDataTableRules.SetID_FACTURAValue(const aValue: Integer); +begin + DataTable.Fields[idx_PresupuestosClienteID_FACTURA].AsInteger := aValue; +end; + +function TPresupuestosClienteDataTableRules.GetID_FACTURAIsNull: boolean; +begin + result := DataTable.Fields[idx_PresupuestosClienteID_FACTURA].IsNull; +end; + +procedure TPresupuestosClienteDataTableRules.SetID_FACTURAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PresupuestosClienteID_FACTURA].AsVariant := Null; +end; + +function TPresupuestosClienteDataTableRules.GetFACTURAValue: String; +begin + result := DataTable.Fields[idx_PresupuestosClienteFACTURA].AsString; +end; + +procedure TPresupuestosClienteDataTableRules.SetFACTURAValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosClienteFACTURA].AsString := aValue; +end; + +function TPresupuestosClienteDataTableRules.GetFACTURAIsNull: boolean; +begin + result := DataTable.Fields[idx_PresupuestosClienteFACTURA].IsNull; +end; + +procedure TPresupuestosClienteDataTableRules.SetFACTURAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PresupuestosClienteFACTURA].AsVariant := Null; +end; + { TPresupuestosCliente_DetallesDataTableRules } constructor TPresupuestosCliente_DetallesDataTableRules.Create(aDataTable: TDADataTable); diff --git a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas index 0804d5e4..b206ee0c 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas @@ -9,13 +9,13 @@ 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_PresupuestosClienteDelta = '{DCB50BF3-1A19-4576-9518-052B46AA131D}'; - RID_PresupuestosCliente_DetallesDelta = '{7F662AE1-222D-4747-8A74-1B5A652617CD}'; + RID_PresupuestosClienteDelta = '{847BF54E-B493-4CC6-83DA-08F63562FD49}'; + RID_PresupuestosCliente_DetallesDelta = '{FF9DAE1E-856C-4BD5-B64B-0A3B9F5AAD80}'; type { IPresupuestosClienteDelta } IPresupuestosClienteDelta = interface(IPresupuestosCliente) - ['{DCB50BF3-1A19-4576-9518-052B46AA131D}'] + ['{847BF54E-B493-4CC6-83DA-08F63562FD49}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -46,6 +46,8 @@ type function GetOldIMPORTE_IVAValue : Currency; function GetOldIMPORTE_TOTALValue : Currency; function GetOldID_FORMA_PAGOValue : Integer; + function GetOldID_FACTURAValue : Integer; + function GetOldFACTURAValue : String; { Properties } property OldID : Integer read GetOldIDValue; @@ -77,6 +79,8 @@ type property OldIMPORTE_IVA : Currency read GetOldIMPORTE_IVAValue; property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue; property OldID_FORMA_PAGO : Integer read GetOldID_FORMA_PAGOValue; + property OldID_FACTURA : Integer read GetOldID_FACTURAValue; + property OldFACTURA : String read GetOldFACTURAValue; end; { TPresupuestosClienteBusinessProcessorRules } @@ -262,6 +266,18 @@ type function GetOldID_FORMA_PAGOIsNull: Boolean; virtual; procedure SetID_FORMA_PAGOValue(const aValue: Integer); virtual; procedure SetID_FORMA_PAGOIsNull(const aValue: Boolean); virtual; + function GetID_FACTURAValue: Integer; virtual; + function GetID_FACTURAIsNull: Boolean; virtual; + function GetOldID_FACTURAValue: Integer; virtual; + function GetOldID_FACTURAIsNull: Boolean; virtual; + procedure SetID_FACTURAValue(const aValue: Integer); virtual; + procedure SetID_FACTURAIsNull(const aValue: Boolean); virtual; + function GetFACTURAValue: String; virtual; + function GetFACTURAIsNull: Boolean; virtual; + function GetOldFACTURAValue: String; virtual; + function GetOldFACTURAIsNull: Boolean; virtual; + procedure SetFACTURAValue(const aValue: String); virtual; + procedure SetFACTURAIsNull(const aValue: Boolean); virtual; { Properties } property ID : Integer read GetIDValue write SetIDValue; @@ -380,6 +396,14 @@ type property ID_FORMA_PAGOIsNull : Boolean read GetID_FORMA_PAGOIsNull write SetID_FORMA_PAGOIsNull; property OldID_FORMA_PAGO : Integer read GetOldID_FORMA_PAGOValue; property OldID_FORMA_PAGOIsNull : Boolean read GetOldID_FORMA_PAGOIsNull; + property ID_FACTURA : Integer read GetID_FACTURAValue write SetID_FACTURAValue; + property ID_FACTURAIsNull : Boolean read GetID_FACTURAIsNull write SetID_FACTURAIsNull; + property OldID_FACTURA : Integer read GetOldID_FACTURAValue; + property OldID_FACTURAIsNull : Boolean read GetOldID_FACTURAIsNull; + property FACTURA : String read GetFACTURAValue write SetFACTURAValue; + property FACTURAIsNull : Boolean read GetFACTURAIsNull write SetFACTURAIsNull; + property OldFACTURA : String read GetOldFACTURAValue; + property OldFACTURAIsNull : Boolean read GetOldFACTURAIsNull; public constructor Create(aBusinessProcessor: TDABusinessProcessor); override; @@ -389,7 +413,7 @@ type { IPresupuestosCliente_DetallesDelta } IPresupuestosCliente_DetallesDelta = interface(IPresupuestosCliente_Detalles) - ['{7F662AE1-222D-4747-8A74-1B5A652617CD}'] + ['{FF9DAE1E-856C-4BD5-B64B-0A3B9F5AAD80}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_PRESUPUESTOValue : Integer; @@ -1530,6 +1554,68 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteID_FORMA_PAGO] := Null; end; +function TPresupuestosClienteBusinessProcessorRules.GetID_FACTURAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteID_FACTURA]; +end; + +function TPresupuestosClienteBusinessProcessorRules.GetID_FACTURAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteID_FACTURA]); +end; + +function TPresupuestosClienteBusinessProcessorRules.GetOldID_FACTURAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosClienteID_FACTURA]; +end; + +function TPresupuestosClienteBusinessProcessorRules.GetOldID_FACTURAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosClienteID_FACTURA]); +end; + +procedure TPresupuestosClienteBusinessProcessorRules.SetID_FACTURAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteID_FACTURA] := aValue; +end; + +procedure TPresupuestosClienteBusinessProcessorRules.SetID_FACTURAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteID_FACTURA] := Null; +end; + +function TPresupuestosClienteBusinessProcessorRules.GetFACTURAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteFACTURA]; +end; + +function TPresupuestosClienteBusinessProcessorRules.GetFACTURAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteFACTURA]); +end; + +function TPresupuestosClienteBusinessProcessorRules.GetOldFACTURAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosClienteFACTURA]; +end; + +function TPresupuestosClienteBusinessProcessorRules.GetOldFACTURAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosClienteFACTURA]); +end; + +procedure TPresupuestosClienteBusinessProcessorRules.SetFACTURAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteFACTURA] := aValue; +end; + +procedure TPresupuestosClienteBusinessProcessorRules.SetFACTURAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosClienteFACTURA] := Null; +end; + { TPresupuestosCliente_DetallesBusinessProcessorRules } constructor TPresupuestosCliente_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); diff --git a/Source/Modulos/Presupuestos de cliente/PresupuestosCliente_Group.groupproj b/Source/Modulos/Presupuestos de cliente/PresupuestosCliente_Group.groupproj index 6d523a84..13ecdb3d 100644 --- a/Source/Modulos/Presupuestos de cliente/PresupuestosCliente_Group.groupproj +++ b/Source/Modulos/Presupuestos de cliente/PresupuestosCliente_Group.groupproj @@ -9,12 +9,16 @@ + + + + @@ -171,14 +175,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + \ No newline at end of file diff --git a/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm b/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm index f2b441ea..c8e603ac 100644 --- a/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm +++ b/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm @@ -41,6 +41,10 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente DatasetField = 'REFERENCIA' TableField = 'REFERENCIA' end + item + DatasetField = 'REFERENCIA_AUX' + TableField = 'REFERENCIA_AUX' + end item DatasetField = 'SITUACION' TableField = 'SITUACION' @@ -134,8 +138,12 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente TableField = 'ID_FORMA_PAGO' end item - DatasetField = 'REFERENCIA_AUX' - TableField = 'REFERENCIA_AUX' + DatasetField = 'ID_FACTURA' + TableField = 'ID_FACTURA' + end + item + DatasetField = 'FACTURA' + TableField = 'FACTURA' end> end> Name = 'PresupuestosCliente' @@ -297,6 +305,15 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente Name = 'ID_FORMA_PAGO' DataType = datInteger DictionaryEntry = 'PresupuestosCliente_ID_FORMA_PAGO' + end + item + Name = 'ID_FACTURA' + DataType = datInteger + end + item + Name = 'FACTURA' + DataType = datString + Size = 255 end> end item @@ -585,6 +602,10 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente item Name = 'ID_FORMA_PAGO' Value = '' + end + item + Name = 'ID_FACTURA' + Value = '' end> Statements = < item @@ -598,14 +619,15 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente 'DA, MEMORIA, OBSERVACIONES, INCIDENCIAS, '#10' INCIDENCIAS_ACTIV' + 'AS, FECHA_ALTA, FECHA_MODIFICACION, '#10' USUARIO, IMPORTE_NETO,' + ' IMPORTE_PORTE, DESCUENTO, IMPORTE_DESCUENTO, '#10' BASE_IMPONIB' + - 'LE, IVA, IMPORTE_IVA, IMPORTE_TOTAL, ID_FORMA_PAGO)'#10' VALUES'#10' ' + - ' (:ID, :ID_EMPRESA, :FECHA_PRESUPUESTO, :FECHA_DECISION, :REFERE' + - 'NCIA,'#10' :REFERENCIA_AUX, :SITUACION, :ID_CLIENTE, :REFERENCIA' + - '_CLIENTE,'#10' :CLIENTE_FINAL, :PORTADA, :MEMORIA, :OBSERVACIONE' + - 'S, '#10' :INCIDENCIAS, :INCIDENCIAS_ACTIVAS, :FECHA_ALTA, :FECHA' + - '_MODIFICACION, '#10' :USUARIO, :IMPORTE_NETO, :IMPORTE_PORTE, :D' + - 'ESCUENTO, '#10' :IMPORTE_DESCUENTO, :BASE_IMPONIBLE, :IVA, :IMPO' + - 'RTE_IVA, '#10' :IMPORTE_TOTAL, :ID_FORMA_PAGO)'#10 + 'LE, IVA, IMPORTE_IVA, IMPORTE_TOTAL, ID_FORMA_PAGO, ID_FACTURA)'#10 + + ' VALUES'#10' (:ID, :ID_EMPRESA, :FECHA_PRESUPUESTO, :FECHA_DECIS' + + 'ION, :REFERENCIA,'#10' :REFERENCIA_AUX, :SITUACION, :ID_CLIENTE,' + + ' :REFERENCIA_CLIENTE,'#10' :CLIENTE_FINAL, :PORTADA, :MEMORIA, :' + + 'OBSERVACIONES, '#10' :INCIDENCIAS, :INCIDENCIAS_ACTIVAS, :FECHA_' + + 'ALTA, :FECHA_MODIFICACION, '#10' :USUARIO, :IMPORTE_NETO, :IMPOR' + + 'TE_PORTE, :DESCUENTO, '#10' :IMPORTE_DESCUENTO, :BASE_IMPONIBLE,' + + ' :IVA, :IMPORTE_IVA, '#10' :IMPORTE_TOTAL, :ID_FORMA_PAGO, :ID_F' + + 'ACTURA)'#10 StatementType = stSQL ColumnMappings = <> end> @@ -743,6 +765,10 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente Name = 'ID_FORMA_PAGO' Value = '' end + item + Name = 'ID_FACTURA' + Value = '' + end item Name = 'OLD_ID' Value = '' @@ -767,8 +793,8 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente 'IMPORTE_PORTE, '#10' DESCUENTO = :DESCUENTO, '#10' IMPORTE_DESCUEN' + 'TO = :IMPORTE_DESCUENTO, '#10' BASE_IMPONIBLE = :BASE_IMPONIBLE, ' + #10' IVA = :IVA, '#10' IMPORTE_IVA = :IMPORTE_IVA, '#10' IMPORTE_T' + - 'OTAL = :IMPORTE_TOTAL, '#10' ID_FORMA_PAGO = :ID_FORMA_PAGO'#10' WHE' + - 'RE'#10' (ID = :OLD_ID)'#10 + 'OTAL = :IMPORTE_TOTAL, '#10' ID_FORMA_PAGO = :ID_FORMA_PAGO,'#10' ' + + 'ID_FACTURA = :ID_FACTURA'#10' WHERE'#10' (ID = :OLD_ID)'#10 StatementType = stSQL ColumnMappings = <> end> diff --git a/Source/Modulos/Presupuestos de cliente/Views/PresupuestosCliente_view.dpk b/Source/Modulos/Presupuestos de cliente/Views/PresupuestosCliente_view.dpk index e0371ffac3b5ec99f15b9ae25011e9cd8b7dbf6a..4097cc3cc5483abf0f0a9a21f1cec5c8c351a1df 100644 GIT binary patch delta 28 jcmdnZe~o`b9uvO~FPDNsKvAl5PG-DYV)EuBrbt!*evb%$ delta 12 Tcmcb{zngzU9@FMdCSO(nA!Gz# diff --git a/Source/Modulos/Presupuestos de cliente/Views/PresupuestosCliente_view.dproj b/Source/Modulos/Presupuestos de cliente/Views/PresupuestosCliente_view.dproj index e6028ba6..11122028 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/PresupuestosCliente_view.dproj +++ b/Source/Modulos/Presupuestos de cliente/Views/PresupuestosCliente_view.dproj @@ -43,6 +43,7 @@ Package FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + Intraweb 8.0 Design Package for Borland Development Studio 2006 PresupuestosCliente_view.dpk @@ -55,6 +56,7 @@ + diff --git a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.dfm b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.dfm index 7d39e08e..487bb27c 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.dfm @@ -143,7 +143,7 @@ inherited fEditorPresupuestosCliente: TfEditorPresupuestosCliente end inherited TBXTMain2: TTBXToolbar Visible = True - ExplicitWidth = 91 + ExplicitWidth = 117 object TBXItem40: TTBXItem Action = actGenerar DisplayMode = nbdmImageAndText @@ -181,7 +181,7 @@ inherited fEditorPresupuestosCliente: TfEditorPresupuestosCliente end object actGenerar: TAction Category = 'Acciones' - Caption = 'Generar...' + Caption = 'Generar factura' ImageIndex = 26 OnExecute = actGenerarExecute OnUpdate = actGenerarUpdate diff --git a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.pas b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.pas index ebba2f81..fe44728d 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.pas @@ -75,7 +75,7 @@ uses uDataModulePresupuestosCliente, uDataModuleUsuarios, uFactuGES_App, uEditorBase, uEditorDBBase, uDialogUtils, uDBSelectionListUtils, uGridStatusUtils, -// uGenerarPresupuestosProvUtils, + uGenerarFacturasCliPreCliUtils, // uBizAlbaranesCliente, uAlbaranesClienteController, // uFacturasClienteController, uBizFacturasCliente, uGenerarAlbaranesCliUtils; @@ -94,19 +94,19 @@ begin end; procedure TfEditorPresupuestosCliente.actGenerarAlbaranCliExecute(Sender: TObject); -var - IDAlbaranAux : Integer; begin inherited; - GenerarAlbaranCli(FPresupuestos.ID, IDAlbaranAux); + GenerarAlbaranCli(FPresupuestos.ID); end; procedure TfEditorPresupuestosCliente.actGenerarExecute(Sender: TObject); -var - Respuesta : Integer; +//var +// Respuesta : Integer; begin inherited; + actGenerarFactura.Execute; +{ Respuesta := JsGenerarDialog.Execute; if Respuesta <> IDCANCEL then @@ -116,29 +116,19 @@ begin actGenerarFactura.Execute; end; 100 : begin // Generar albaran de cliente - actGenerarAlbaranCli.Execute; +// actGenerarAlbaranCli.Execute; end; end; actRefrescar.Execute; end; +} end; procedure TfEditorPresupuestosCliente.actGenerarFacturaExecute(Sender: TObject); -{var - AFacturasController : IFacturasClienteController; - AFactura : IBizFacturaCliente;} begin inherited; -{ AFacturasController := TFacturasClienteController.Create; - try - AFactura := AFacturasController.Nuevo; - if AFacturasController.Anadir(AFactura, FPresupuestos.ID) then - AFacturasController.Ver(AFactura); - actRefrescar.Execute; - finally - AFacturasController := NIL; - AFactura := NIL; - end;} + GenerarFacturaCli(Presupuestos.ID); + actRefrescar.Execute; end; procedure TfEditorPresupuestosCliente.actGenerarFacturaUpdate(Sender: TObject); diff --git a/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.dfm b/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.dfm index c1aa2723..57256797 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Views/uViewPresupuestosCliente.dfm @@ -8,7 +8,6 @@ inherited frViewPresupuestosCliente: TfrViewPresupuestosCliente Height = 397 RootLevelOptions.DetailTabsPosition = dtpTop OnActiveTabChanged = cxGridActiveTabChanged - ExplicitTop = 102 ExplicitWidth = 903 ExplicitHeight = 397 inherited cxGridView: TcxGridDBTableView diff --git a/Source/Modulos/Relaciones/Albaranes de cliente - Facturas de cliente/uGenerarFacturasCliAlbCliUtils.pas b/Source/Modulos/Relaciones/Albaranes de cliente - Facturas de cliente/uGenerarFacturasCliAlbCliUtils.pas index 22ca10b5..a6131e3b 100644 --- a/Source/Modulos/Relaciones/Albaranes de cliente - Facturas de cliente/uGenerarFacturasCliAlbCliUtils.pas +++ b/Source/Modulos/Relaciones/Albaranes de cliente - Facturas de cliente/uGenerarFacturasCliAlbCliUtils.pas @@ -100,14 +100,14 @@ begin ADetalles := AAlbaran.Detalles; ADetallesController := TDetallesFacturaClieedorController.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); + AArticulosPendientes.DataTable.First; for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do begin - //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); - AAlbaran.Detalles.First; if (AAlbaran.Detalles.Locate('ID_ARTICULO', AArticulosPendientes.ID_ARTICULO, [])) then if (AArticulosPendientes.CANTIDAD_PENDIENTE > 0) then diff --git a/Source/Modulos/Relaciones/Albaranes de proveedor - Facturas de proveedor/uGenerarFacturasProvAlbProvUtils.pas b/Source/Modulos/Relaciones/Albaranes de proveedor - Facturas de proveedor/uGenerarFacturasProvAlbProvUtils.pas index b644ed82..97673cb5 100644 --- a/Source/Modulos/Relaciones/Albaranes de proveedor - Facturas de proveedor/uGenerarFacturasProvAlbProvUtils.pas +++ b/Source/Modulos/Relaciones/Albaranes de proveedor - Facturas de proveedor/uGenerarFacturasProvAlbProvUtils.pas @@ -111,14 +111,14 @@ begin ADetalles := AAlbaran.Detalles; ADetallesController := TDetallesFacturaProveedorController.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); + AArticulosPendientes.DataTable.First; for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do begin - //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); - AAlbaran.Detalles.First; if (AAlbaran.Detalles.Locate('ID_ARTICULO', AArticulosPendientes.ID_ARTICULO, [])) then if (AArticulosPendientes.CANTIDAD_PENDIENTE > 0) then @@ -450,8 +450,6 @@ begin AAlbaranesController := NIL; // HideHourglassCursor 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 8ec79a3f..5edab2fd 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 @@ -95,14 +95,14 @@ begin 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); + AArticulosPendientes.DataTable.First; for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do begin - //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); - APedido.Detalles.First; if (APedido.Detalles.Locate('ID_ARTICULO', AArticulosPendientes.ID_ARTICULO, [])) then if (AArticulosPendientes.CANTIDAD_PENDIENTE > 0) 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 7c5820a4..1ed66f69 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 @@ -80,6 +80,7 @@ var ADetalles : IBizDetallesAlbaranProveedor; ADetallesController : IDetallesAlbaranProveedorController; begin + if not Assigned(AAlbaran) then raise Exception.Create ('Albarán no asignado (CopiarArticulosPendAAlbaran)'); @@ -97,14 +98,14 @@ begin 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); + AArticulosPendientes.DataTable.First; for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do begin - //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); - APedido.Detalles.First; if (APedido.Detalles.Locate('ID_ARTICULO', AArticulosPendientes.ID_ARTICULO, [])) then if (AArticulosPendientes.CANTIDAD > 0) then diff --git a/Source/Modulos/Relaciones/Pedidos de proveedor - Facturas de proveedor/uGenerarFacturasProvPedProvUtils.pas b/Source/Modulos/Relaciones/Pedidos de proveedor - Facturas de proveedor/uGenerarFacturasProvPedProvUtils.pas index 4933d43a..fc04178d 100644 --- a/Source/Modulos/Relaciones/Pedidos de proveedor - Facturas de proveedor/uGenerarFacturasProvPedProvUtils.pas +++ b/Source/Modulos/Relaciones/Pedidos de proveedor - Facturas de proveedor/uGenerarFacturasProvPedProvUtils.pas @@ -99,14 +99,14 @@ begin ADetalles := APedido.Detalles; ADetallesController := TDetallesFacturaProveedorController.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); + AArticulosPendientes.DataTable.First; for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do begin - //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); - APedido.Detalles.First; if (APedido.Detalles.Locate('ID_ARTICULO', AArticulosPendientes.ID_ARTICULO, [])) then if (AArticulosPendientes.CANTIDAD_PENDIENTE > 0) then diff --git a/Source/Modulos/Relaciones/Pedidos de proveedor - Facturas de proveedor/uGenerarFacturasProvUtils.pas b/Source/Modulos/Relaciones/Pedidos de proveedor - Facturas de proveedor/uGenerarFacturasProvUtils.pas index b8c39e33..ad87ec5d 100644 --- a/Source/Modulos/Relaciones/Pedidos de proveedor - Facturas de proveedor/uGenerarFacturasProvUtils.pas +++ b/Source/Modulos/Relaciones/Pedidos de proveedor - Facturas de proveedor/uGenerarFacturasProvUtils.pas @@ -99,14 +99,14 @@ begin ADetalles := AAlbaran.Detalles; ADetallesController := TDetallesFacturaProveedorController.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); + AArticulosPendientes.DataTable.First; for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do begin - //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); - APedido.Detalles.First; if (APedido.Detalles.Locate('ID_ARTICULO', AArticulosPendientes.ID_ARTICULO, [])) then if (AArticulosPendientes.CANTIDAD_PENDIENTE > 0) then diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas b/Source/Modulos/Relaciones/Presupuestos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas index 4651c06e..8df9b106 100644 --- a/Source/Modulos/Relaciones/Presupuestos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Albaranes de cliente/uGenerarAlbaranesCliUtils.pas @@ -11,10 +11,12 @@ type JsListaAlbaranesGenerados: TJSDialog; end; - function GenerarAlbaranCli(const IDPresupuesto : Integer; var IDAlbaran: Integer) : Boolean; overload; + function GenerarAlbaranCli(const IDPresupuesto : Integer) : Boolean; overload; function GenerarAlbaranCli(APresupuesto : IBizPresupuestoCliente) : Boolean; overload; // function ElegirPedidoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean; +// function GenerarAlbaranes(AAlbaranes : IBizAlbaraneCliente; AListaPresupuestos : IBizPresupuestoCliente): Boolean; + implementation {$R *.dfm} @@ -95,14 +97,14 @@ begin 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); + AArticulosPendientes.DataTable.First; for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do begin - //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); - APedido.Detalles.First; if (APedido.Detalles.Locate('ID_ARTICULO', AArticulosPendientes.ID_ARTICULO, [])) then if (AArticulosPendientes.CANTIDAD_PENDIENTE > 0) then @@ -150,28 +152,27 @@ begin end; -function GenerarAlbaranCli(const IDPresupuesto : Integer; var IDAlbaran: Integer) : Boolean; overload; +function GenerarAlbaranCli(const IDPresupuesto : Integer) : Boolean; overload; var APresupuesto : IBizPresupuestoCliente; - AAlbaran : IBizAlbaranCliente; + begin Result := False; - IDAlbaran := -1; try if not Assigned(APresupuestosClienteController) then Inicializar; APresupuesto := APresupuestosClienteController.Buscar(IDPresupuesto); + if Assigned(APresupuesto) then - begin Result := GenerarAlbaranCli(APresupuesto); - if Result then - IDAlbaran := AAlbaran.ID; - end; - finally + if Assigned(APresupuestosClienteController) then Finalizar; + + finally + APresupuesto := NIL; end; end; @@ -183,19 +184,19 @@ var begin Result := False; - - if not Assigned(APresupuestosClienteController) then - Inicializar; - +{ if not Assigned(APresupuesto) then raise Exception.Create('Presupuesto de cliente no asignado (GenerarAlbaranCli)'); if not APresupuesto.DataTable.Active then APresupuesto.DataTable.Active := True; + if not Assigned(APresupuestosClienteController) then + Inicializar; + try -// AlbaranesNuevos := AAlbaranesClienteController.Nuevo(False); -{ if AAlbaranesClienteController.Anadir(AlbaranesNuevos, APresupuesto) then + AlbaranesNuevos := AAlbaranesClienteController.Nuevo(False); + if GenerarAlbaranes(AlbaranesNuevos, APresupuesto) then begin if AlbaranesNuevos.DataTable.RecordCount = 1 then ShowInfoMessage('El albarán se ha dado de alta con el código ' + AlbaranesNuevos.REFERENCIA) @@ -213,46 +214,16 @@ begin end; dmGenerarAlbaranesCli.JsListaAlbaranesGenerados.Execute; end; + + Result := True; end; -} + finally AlbaranesNuevos := NIL; + if Assigned(APresupuestosClienteController) then + Finalizar; end; - -// AuxAlbaran := AAlbaranesClienteController.Nuevo; -// CopiarPedidoAAlbaran(APedido, AuxAlbaran); -// CopiarArticulosPendAAlbaran(APedido, AuxAlbaran, AArticulosPendientes); - - //Sustituir por if de guardar -{ if AAlbaranesClienteController.Guardar(AuxAlbaran) then - begin - AAlbaran := AuxAlbaran; - with dmGenerarAlbaranesCli.JsListaAlbaranesGenerados do - 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, [AuxAlbaran.REFERENCIA])); - Execute; - - ARespuesta := CustomButtonResult; - case ARespuesta of - 100 : begin - // Ver el albarán - AAlbaranesClienteController.Ver(AuxAlbaran); - end; - 200 : // Continuar; - end; - end; - end; - - Result := True; - finally - AArticulosPendientes := NIL; - if Assigned(APedidosClienteController) then - Finalizar; - end; -} +} end; { @@ -286,4 +257,145 @@ begin end; } +{function GenerarAlbaranes(AAlbaranes : IBizAlbaraneCliente; AListaPresupuestos : IBizPresupuestoCliente): Boolean; +var + AAlbaranActual : IBizAlbaranCliente; + APresupuestosController : IPresupuestosClienteController; + I: Integer; + bEnEdicion : Boolean; + +begin + // ATENCIÓN!!! AFacturas tiene que estar vacio para no pisar facturas + // ya generadas. +{ if not Assigned(AAlbaranes) then + raise Exception.Create ('Albaran no asignado (Anadir)'); + + if not Assigned(AListaPresupuestos) then + raise Exception.Create ('Presupuestos no asignados (Anadir)'); + + + + if not AAlbaranes.DataTable.Active then + AAlbaranes.DataTable.Active := True; + + if not AListaPresupuestos.DataTable.Active then + AListaPresupuestos.DataTable.Active := True; + + // ShowHourglassCursor; + // Application.ProcessMessages; + + APresupuestosController := TPresupuestosClienteController.Create; + try + // Ordenar por fecha de albaran + AListaPresupuestos.DataTable.Sort([fld_PresupuestosClienteFECHA_PRESUPUESTO], [uDADataTable.sdAscending]); + AListaPresupuestos.First; + for I := 0 to AListaPresupuestos.DataTable.RecordCount - 1 do + begin + AListaPresupuestos._Cliente := NIL; + AAlbaranActual := NIL; + + // Busco si hay alguna factura ya hecha de ese Proveedor + AAlbaranes.DataTable.First; + if AAlbaranes.DataTable.Locate(fld_AlbaranesClienteID_Cliente, AListaPresupuestos.ID_Cliente, []) then + begin + AAlbaranActual := AAlbaranes; + AAlbaranesClienteController.RecuperarProveedor(AAlbaranActual); + AAlbaranActual.Proveedor.DataTable.Active := True; + end + else begin + // No hay factura de ese Proveedor. Creo una nueva + AAlbaranesClienteController.Anadir(AAlbaranes); + APresupuestosController.RecuperarProveedor(AListaPresupuestos); + AAlbaranes.Proveedor := AListaPresupuestos.Proveedor; + + //Siempre asignaremos por defecto la referencia de factura de proveedor que tenga el primer albaran del proveedor + bEnEdicion := (AAlbaranes.DataTable.State in dsEditModes); + if not bEnEdicion then + AAlbaranes.Edit; + AAlbaranes.REFERENCIA_PROVEEDOR := AListaPresupuestos.REF_FACTURA_PROV; + AAlbaranes.Post; + if bEnEdicion then + AAlbaranes.Edit; + + //Si el albaran es de tipo devolución hacemos la factura de tipo abono + if (AListaPresupuestos.TIPO = CTE_TIPO_ALBARAN_DEV) then + begin + bEnEdicion := (AAlbaranes.DataTable.State in dsEditModes); + if not bEnEdicion then + AAlbaranes.Edit; + AAlbaranes.TIPO := CTE_TIPO_ABONO; + AAlbaranes.Post; + if bEnEdicion then + AAlbaranes.Edit; + end; + + AAlbaranActual := AAlbaranes; + end; + + // Ya tengo la factura. Le añado los conceptos del albarán + AAlbaranActual.Detalles.DataTable.Last; + // Añado el título + AAlbaranesClienteController.DetallesController.Add(AAlbaranActual.Detalles, TIPO_DETALLE_TITULO); + // Self.DetallesController.Add(AAlbaranActual.Detalles, TIPO_DETALLE_TITULO); + with AAlbaranActual.Detalles do + begin + Edit; + CONCEPTO := 'Albarán ' + AListaPresupuestos.REFERENCIA + ' del ' + DateToStr(AListaPresupuestos.FECHA_ALBARAN); + Post; + end; + // Añado el contenido del albarán + CopiarArticulosPresupuesto(AListaPresupuestos.Detalles, AAlbaranActual.Detalles); + + {En los albaranes a proveedor el porte es a nivel del artículo + Self.DetallesController.Add(AAlbaranActual.Detalles, TIPO_DETALLE_CONCEPTO); + with AAlbaranActual.Detalles do + begin + Edit; + CONCEPTO := 'Porte del albarán'; + CANTIDAD := 1; + IMPORTE_UNIDAD := AListaPresupuestos.IMPORTE_PORTE; + Post; + end; + } + +{ // Añado el resumen + AAlbaranesClienteController.DetallesController.Add(AAlbaranActual.Detalles, TIPO_DETALLE_SUBTOTAL); + //Self.DetallesController.Add(AAlbaranActual.Detalles, TIPO_DETALLE_SUBTOTAL); + with AAlbaranActual.Detalles do + begin + Edit; + CONCEPTO := 'Total del albarán ' + AListaPresupuestos.REFERENCIA; + Post; + end; + + // Añado una línea en blanco + AAlbaranesClienteController.DetallesController.Add(AAlbaranActual.Detalles, TIPO_DETALLE_CONCEPTO); + // Self.DetallesController.Add(AAlbaranActual.Detalles, TIPO_DETALLE_CONCEPTO); + with AAlbaranActual.Detalles do + begin + Edit; + CONCEPTO := ''; + Post; + end; + + // Guardo la factura que acabo de generar o editar + AAlbaranActual.CalcularImporteTotal; + AAlbaranesClienteController.Guardar(AAlbaranActual); + // Self.Guardar(AAlbaranActual); + // Asocio la factura con el albarán + AListaPresupuestos.Edit; + AListaPresupuestos.ID_FACTURA := AAlbaranActual.ID; + AListaPresupuestos.Post; + APresupuestosController.Guardar(AListaPresupuestos); + + AListaPresupuestos.Next; + end; + Result := True; + finally + APresupuestosController := NIL; +// HideHourglassCursor + end; + end; +} + end. diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.bdsproj b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.bdsproj new file mode 100644 index 00000000..a3c68fcb --- /dev/null +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.bdsproj @@ -0,0 +1,530 @@ + + + + + + + + + + + + PedProv_FacProv_relation.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + $00000000 + + + + Borland Sample Components + Delphi 1.0 Compatibility Components + Borland MyBase DataAccess Components + TeeChart Components + Borland SimpleDataset Component (DBX) + ExpressBars extended items by Developer Express Inc. + ExpressBars by Developer Express Inc. + ExpressScheduler 2 by Developer Express Inc. + ExpressVerticalGrid by Developer Express Inc. + ExpressBars DBNavigator by Developer Express Inc. + ExpressBars extended DB items by Developer Express Inc. + ExpressSideBar by Developer Express Inc. + JVCL Band Objects + JVCL Non-Visual Components + JVCL Encryption and Compression Components + JVCL Dialog Components + JVCL Docking Components + JVCL DotNet Controls + JVCL EDI Components Designtime Package + JVCL HMI Controls design time unit + JVCL Interpreter Components + JVCL Jans Components + JVCL Managed Threads + JVCL Multimedia and Image Components + JVCL Network Components + JVCL Page Style Components + JVCL Plugin Components + JVCL Print Preview Components + JVCL Runtime Design Components + JVCL Time Framework + JVCL Unified Interbase Components + JVCL Validators and Error Provider Components + SMImport suite: data importing into dataset. Scalabium/Mike Shkolnik, 2000-2005 + SMExport suite: data export from dataset. Written by Mike Shkolnik/Scalabium, 1998-2004. + Intraweb 8.0 Design Package for Borland Development Studio 2006 + Internet Explorer Components + + + + diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.dpk b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.dpk new file mode 100644 index 00000000..57cd9422 --- /dev/null +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.dpk @@ -0,0 +1,48 @@ +package PedProv_FacProv_relation; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + Base, + ControllerBase, + Contactos_model, + Contactos_controller, + PNG_D10, + vcl, + JSDialog100, + vclx, + vclactnband, + xmlrtl, + designide, + FacturasProveedor_model, + FacturasProveedor_controller, + PedidosProveedor_controller, + PedidosProveedor_model; + +contains + uGenerarFacturasProvPedProvUtils in 'uGenerarFacturasProvPedProvUtils.pas'; + +end. diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.dproj b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.dproj new file mode 100644 index 00000000..2322789d --- /dev/null +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.dproj @@ -0,0 +1,219 @@ + + + {69494a8c-0a35-41ea-b8ec-ea790bfc0662} + PedProv_FacProv_relation.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\PedProv_FacProv_relation.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + RELEASE + + + 7.0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Borland Sample Components + Delphi 1.0 Compatibility Components + Borland MyBase DataAccess Components + TeeChart Components + Borland SimpleDataset Component (DBX) + ExpressBars extended items by Developer Express Inc. + ExpressBars by Developer Express Inc. + ExpressScheduler 2 by Developer Express Inc. + ExpressVerticalGrid by Developer Express Inc. + ExpressBars DBNavigator by Developer Express Inc. + ExpressBars extended DB items by Developer Express Inc. + ExpressSideBar by Developer Express Inc. + JVCL Band Objects + JVCL Non-Visual Components + JVCL Encryption and Compression Components + JVCL Dialog Components + JVCL Docking Components + JVCL DotNet Controls + JVCL EDI Components Designtime Package + JVCL HMI Controls design time unit + JVCL Interpreter Components + JVCL Jans Components + JVCL Managed Threads + JVCL Multimedia and Image Components + JVCL Network Components + JVCL Page Style Components + JVCL Plugin Components + JVCL Print Preview Components + JVCL Runtime Design Components + JVCL Time Framework + JVCL Unified Interbase Components + JVCL Validators and Error Provider Components + SMImport suite: data importing into dataset. Scalabium/Mike Shkolnik, 2000-2005 + SMExport suite: data export from dataset. Written by Mike Shkolnik/Scalabium, 1998-2004. + Intraweb 8.0 Design Package for Borland Development Studio 2006 + Internet Explorer Components + + + PedProv_FacProv_relation.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.rc b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.res b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/PedProv_FacProv_relation.res new file mode 100644 index 0000000000000000000000000000000000000000..86c94e6ada7b3c85f6761b1ee234a9f34ef3c861 GIT binary patch literal 5056 zcmbW5&x;&Y5XWnifD(f4!IPI+L`3!=E9BmaF%VEA#@TDLXpF&R6XJUC)cc=I4kFSA z{{!hg%bp}hVRP_qjvmDJ`>A@>-7}euyEfF+`%$mH-*3IwZ-y~5+miKtn3_w^Pn$V^ zQ861nx4C)wN(Q~H#+K|o*@m~&(3=1I%Llk7>S*pvE7;Yjz^+ljNYba;|&8!P>=GYp<9J^QiRC`-*du(Wb zBJI+RemE@Tm2dSSKL$269_p-ia&WJ{$B|EYy#Bt1`fm?B(CB-l8nlXqgY!6fUOzP@ zr|Te|e4cZxgJWuLF8<`}dughP69?9a%ha4}r`jtX-7UCl^he&nV;_S<)Ya!2FlEJu zrr{t12%dXkNqpywX{@?Eb_MKs@29XRNI;2D%DxW zo|xv^jnf#kFIDZr^e=W==PW{#^6Ao{deqzuxId;ujOZ~3;otiwSzBXu3^t3 z&$C~D3=Umz@OQRR9+}nP>x>=u115dAI{rd2#Mbgv81-@e%IA6)a8SDwHm3Di`~F1x z)jhG~04Fd5o4f^Iah!WFIS0|E#)aohzS6onIG_;>-~Ytz3J0A}=DenTZ*cIo-Ves9 zp>qHmo5lV+rntk2He9_1!t%2yZsF;l)>iGc4jkU$0bBWEPmBKKP>uSjxhXIDsSodT z@EG|gFZa>|hHF!PaN};FzIxxlpPKT;87{i(!eu7T%H?}r^yeP=K2c}If`cyKd-3DW z_4ib`jDt-MZ?C~;z1O=EKN(!YbpFJR_c`u>(C=ph9O_Y*Jz5Z>`Zs7T9Mn$y@ay$^ z{gulxYxXwGq@TIGbG$~Hi*qk8?9|WMkNweF@MU18F;AQKZ>jcWAL86`f59r^Yh;+XfGU10gV*5=*FT)q#qz2B_Ik28(#vUlW{{>1m(1wXK3zHQ3+RoHfz^$cuqg(^F;eqz6WUMUE^m$ z9R1u2H_t9ue%}<_JcD5KB$svgjBysd-ql#|toxF$&>h1Qc)Vw6j~u{SeHg>my$i{SJtD^MnJV!{AK!ZgN9Q4bN2bs7?m1Qo zsLwc-c&GZ4_%7jWppm+9C(?(bpCye?f6Mv)ml~{r9)<=EoH5SYSxm8xsWZv%2MjL$ zd)R%{gxqI&lEaJ6!*jggJMcIz?<5?~hn@VA1Kzcrp$;C`m0CzQdy{!G?|FT$$5W3N zaydTsdE#>2dGSt*&wOX~r{!54?~lxS4gM|rOZH6mRCZMCP#!z)bEv-^up_gJ*i*BY zl>1d-%!E}5v+s{C_OF@Qj;!xrv5)P2yJ4TmKCqke`Aq-U;NJ}WpRu*&|7!3r$c7zU zF#m_6?>Cia!E%D)b;IaF{ zzPG~QEyw>z^LKm}whzS>Dx3Ct`1w98?Y5 + + {69494a8c-0a35-41ea-b8ec-ea790bfc0662} + PreCli_FacCli_relation.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\PreCli_FacCli_relation.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + RELEASE + + + 7.0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Borland Sample Components + Delphi 1.0 Compatibility Components + Borland MyBase DataAccess Components + TeeChart Components + Borland SimpleDataset Component (DBX) + ExpressBars extended items by Developer Express Inc. + ExpressBars by Developer Express Inc. + ExpressScheduler 2 by Developer Express Inc. + ExpressVerticalGrid by Developer Express Inc. + ExpressBars DBNavigator by Developer Express Inc. + ExpressBars extended DB items by Developer Express Inc. + ExpressSideBar by Developer Express Inc. + JVCL Band Objects + JVCL Non-Visual Components + JVCL Encryption and Compression Components + JVCL Dialog Components + JVCL Docking Components + JVCL DotNet Controls + JVCL EDI Components Designtime Package + JVCL HMI Controls design time unit + JVCL Interpreter Components + JVCL Jans Components + JVCL Managed Threads + JVCL Multimedia and Image Components + JVCL Network Components + JVCL Page Style Components + JVCL Plugin Components + JVCL Print Preview Components + JVCL Runtime Design Components + JVCL Time Framework + JVCL Unified Interbase Components + JVCL Validators and Error Provider Components + SMImport suite: data importing into dataset. Scalabium/Mike Shkolnik, 2000-2005 + SMExport suite: data export from dataset. Written by Mike Shkolnik/Scalabium, 1998-2004. + Intraweb 8.0 Design Package for Borland Development Studio 2006 + Internet Explorer Components + PreCli_FacCli_relation.dpk + + + + + MainSource + + + + + + +
dmGenerarFacturasCli
+
+
+ + + diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasCliPreCliUtils.dfm b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasCliPreCliUtils.dfm new file mode 100644 index 00000000..5d0c1afb --- /dev/null +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasCliPreCliUtils.dfm @@ -0,0 +1,315 @@ +object dmGenerarFacturasCli: TdmGenerarFacturasCli + OldCreateOrder = False + Height = 176 + Width = 254 + object JsListaFacturasGeneradas: TJSDialog + 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.Text = 'Se ha generado el albar'#195#161'n...' + 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 + CustomButtons = < + item + Caption = 'Ver el albar'#225'n' + Value = 100 + end + item + Caption = 'Continuar' + Value = 200 + Cancel = True + end> + ButtonBar.Buttons = [] + 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 = 72 + Top = 16 + end +end diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasCliPreCliUtils.pas b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasCliPreCliUtils.pas new file mode 100644 index 00000000..688dc2f7 --- /dev/null +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasCliPreCliUtils.pas @@ -0,0 +1,429 @@ +unit uGenerarFacturasCliPreCliUtils; + +interface + +uses + Windows, SysUtils, Classes, uBizFacturasCliente, uBizPresupuestosCliente, pngimage, JSDialog; + +type + TdmGenerarFacturasCli = class(TDataModule) + JsListaFacturasGeneradas: TJSDialog; + end; + + function GenerarFacturaCli(const IDPresupuesto : Integer) : Boolean; overload; + function GenerarFacturaCli(APresupuestos : IBizPresupuestoCliente) : Boolean; overload; + function GenerarFacturaCli : Boolean; overload; + + function GenerarFacturas(AFacturas : IBizFacturaCliente; AListaPresupuestos : IBizPresupuestoCliente): Boolean; + +implementation + +{$R *.dfm} + +uses + uDialogUtils, uDADataTable, uControllerDetallesBase, + uBizDetallesPresupuestoCliente, schPresupuestosClienteClient_Intf, + schFacturasClienteClient_Intf, uDetallesFacturaClienteController, + uPresupuestosClienteController, uDetallesPresupuestoClienteController, + uFacturasClienteController, uBizDetallesFacturaCliente; + +// , +// , uProveedoresController, +// , + + +// , uBizContactos, schPedidosClienteClient_Intf, +// ; + +var + dmGenerarFacturasCli: TdmGenerarFacturasCli; + APresupuestosClienteController : IPresupuestosClienteController; + ADetallesPresupuestosClienteController : IDetallesPresupuestoClienteController; + AFacturasClienteController : IFacturasClienteController; +// AProveedoresController : IProveedoresController; + +{ Métodos auxiliares } +{procedure CopiarPedidoAPedido(APedido: IBizPedidoCliente; + APedido : IBizFacturaProveedor); +begin + if not Assigned(APedido) then + raise Exception.Create ('Presupuesto no asignado (CopiarPedidoAPedido)'); + + if not Assigned(APedido) then + raise Exception.Create ('Pedido no asignado (CopiarPedidoAPedido)'); + + if not APedido.DataTable.Active then + APedido.DataTable.Active := True; + + // El presupuesto tiene que venir ya abierto y posicionado donde hay que copiar + APedido.ID_CLIENTE := APedido.ID_CLIENTE; + APedido.ID_PEDIDO := APedido.ID; + APedido.CALLE := APedido.CALLE; + APedido.CODIGO_POSTAL := APedido.CODIGO_POSTAL; + APedido.POBLACION := APedido.POBLACION; + APedido.PROVINCIA := APedido.PROVINCIA; + APedido.PERSONA_CONTACTO := APedido.PERSONA_CONTACTO; + APedido.TELEFONO := APedido.TELEFONO; + APedido.IMPORTE_NETO := APedido.IMPORTE_NETO; + APedido.IMPORTE_PORTE := APedido.IMPORTE_PORTE; + APedido.DESCUENTO := APedido.DESCUENTO; + APedido.IMPORTE_DESCUENTO := APedido.IMPORTE_DESCUENTO; + APedido.BASE_IMPONIBLE := APedido.BASE_IMPONIBLE; + APedido.IVA := APedido.IVA; + APedido.IMPORTE_IVA := APedido.IMPORTE_IVA; + APedido.IMPORTE_TOTAL := APedido.IMPORTE_TOTAL; + APedido.DataTable.FieldByName(fld_PedidosClienteOBSERVACIONES).AsVariant := APedido.DataTable.FieldByName(fld_PedidosClienteOBSERVACIONES).AsVariant; + APedido.ID_FORMA_PAGO := APedido.ID_FORMA_PAGO; +end; + +procedure CopiarArticulosPendAPedido( + APedido: IBizPedidoCliente; + APedido: IBizFacturaProveedor; + AArticulosPendientes: IBizPedidoClienteArticulosPend); +var + i : integer; + ADetalles : IBizDetallesFacturaProveedor; + ADetallesController : IDetallesFacturaProveedorController; +begin + if not Assigned(APedido) then + raise Exception.Create ('Presupuesto no asignado (CopiarArticulosPendAPedido)'); + + if not Assigned(APedido) then + raise Exception.Create ('Pedido no asignado (CopiarArticulosPendAPedido)'); + + if not Assigned(AArticulosPendientes) then + raise Exception.Create ('Artículos pendientes no asignado (CopiarArticulosPendAPedido)'); + + if not AArticulosPendientes.DataTable.Active then + AArticulosPendientes.DataTable.Active := True; + + // El presupuesto tiene que venir ya abierto y posicionado donde hay que copiar + + ADetalles := APedido.Detalles; + ADetallesController := TDetallesFacturaProveedorController.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); + + AArticulosPendientes.DataTable.First; + for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do + begin + APedido.Detalles.First; + if (APedido.Detalles.Locate('ID_ARTICULO', AArticulosPendientes.ID_ARTICULO, [])) then + if (AArticulosPendientes.CANTIDAD_PENDIENTE > 0) then + begin + ADetallesController.Add(ADetalles, TIPO_DETALLE_CONCEPTO); + ADetalles.Edit; + ADetalles.REFERENCIA := APedido.Detalles.REFERENCIA; + ADetalles.ID_ARTICULO := APedido.Detalles.ID_ARTICULO; + ADetalles.CONCEPTO := APedido.Detalles.CONCEPTO; + ADetalles.CANTIDAD := AArticulosPendientes.CANTIDAD_PENDIENTE; + ADetalles.IMPORTE_UNIDAD := APedido.Detalles.IMPORTE_UNIDAD; + ADetalles.IMPORTE_TOTAL := APedido.Detalles.IMPORTE_TOTAL; + ADetalles.DESCUENTO := APedido.Detalles.DESCUENTO; + ADetalles.IMPORTE_PORTE := APedido.Detalles.IMPORTE_PORTE; + ADetalles.VISIBLE := APedido.Detalles.VISIBLE; + ADetalles.REFERENCIA_PROVEEDOR := APedido.Detalles.REFERENCIA_PROVEEDOR; + ADetalles.Post; + AArticulosPendientes.Next; + end; + end; + finally + ADetallesController.EndUpdate(ADetalles); + ADetallesController := NIL; + end; +end; } + +procedure CopiarArticulosPresupuesto(AOrigen: IBizDetallesPresupuestoCliente; + ADestino : IBizDetallesFacturaCliente); +var + i : integer; + ADetallesController : IDetallesFacturaClienteController; +begin + if not Assigned(AOrigen) then + raise Exception.Create ('Origen no asignado (CopiarArticulosPresupuesto)'); + + if not Assigned(ADestino) then + raise Exception.Create ('Destino no asignado (CopiarArticulosPresupuesto)'); + + if not AOrigen.DataTable.Active then + AOrigen.DataTable.Active := True; + + if not ADestino.DataTable.Active then + ADestino.DataTable.Active := True; + + ADetallesController := TDetallesFacturaClienteController.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(ADestino); + + AOrigen.DataTable.First; + for i := 0 to AOrigen.DataTable.RecordCount - 1 do + begin + ADetallesController.Add(ADestino, TIPO_DETALLE_CONCEPTO); + ADestino.Edit; + ADestino.REFERENCIA := AOrigen.REFERENCIA; + if AOrigen.ID_ARTICULO > 0 then + ADestino.ID_ARTICULO := AOrigen.ID_ARTICULO; + ADestino.CONCEPTO := AOrigen.CONCEPTO; + ADestino.CANTIDAD := AOrigen.CANTIDAD; + ADestino.IMPORTE_UNIDAD := AOrigen.IMPORTE_UNIDAD; + ADestino.IMPORTE_TOTAL := AOrigen.IMPORTE_TOTAL; + ADestino.DESCUENTO := AOrigen.DESCUENTO; + ADestino.IMPORTE_PORTE := AOrigen.IMPORTE_PORTE; + ADestino.VISIBLE := AOrigen.VISIBLE; + ADestino.REFERENCIA_PROVEEDOR := AOrigen.REFERENCIA_PROVEEDOR; + ADestino.Post; + AOrigen.Next; + end; + finally + ADetallesController.EndUpdate(ADestino); + ADetallesController := NIL; + end; +end; + + +procedure Inicializar; +begin + dmGenerarFacturasCli := TdmGenerarFacturasCli.Create(nil); + APresupuestosClienteController := TPresupuestosClienteController.Create; + ADetallesPresupuestosClienteController := TDetallesPresupuestoClienteController.Create; + AFacturasClienteController := TFacturasClienteController.Create; +// AProveedoresController := TProveedoresController.Create; +end; + +procedure Finalizar; +begin + FreeAndNIL(dmGenerarFacturasCli); + APresupuestosClienteController := nil; + ADetallesPresupuestosClienteController := nil; + AFacturasClienteController := nil; +// AProveedoresController := nil; +end; + + +function GenerarFacturaCli(const IDPresupuesto : Integer) : Boolean; overload; +var + APresupuesto : IBizPresupuestoCliente; +begin + Result := False; + if not Assigned(APresupuestosClienteController) then + Inicializar; + + APresupuesto := APresupuestosClienteController.Buscar(IDPresupuesto); + Result := GenerarFacturaCli(APresupuesto); + + if Assigned(APresupuestosClienteController) then + Finalizar; +end; + +function GenerarFacturaCli(APresupuestos : IBizPresupuestoCliente) : Boolean; overload; +var + ARespuesta : Integer; + AFacturasNuevas : IBizFacturaCliente; + i: Integer; +begin + Result := False; + if not Assigned(APresupuestosClienteController) then + Inicializar; + + if not Assigned(APresupuestos) then + raise Exception.Create('Presupuesto de cliente no asignado (GenerarFacturaCli)'); + + if not APresupuestos.DataTable.Active then + APresupuestos.DataTable.Active := True; + + try + AFacturasNuevas := AFacturasClienteController.Nuevo(False); + if GenerarFacturas(AFacturasNuevas, APresupuestos) then + begin + if AFacturasNuevas.DataTable.RecordCount = 1 then + ShowInfoMessage('La factura se ha dado de alta con el código ' + AFacturasNuevas.REFERENCIA) + else begin + with dmGenerarFacturasCli.JsListaFacturasGeneradas.Content do + begin + Clear; + AFacturasNuevas.DataTable.Last; + for i := 0 to AFacturasNuevas.DataTable.RecordCount - 1 do + begin + if Length(AFacturasNuevas.REFERENCIA) > 0 then + Add(AFacturasNuevas.REFERENCIA + ': ' + AFacturasNuevas.NOMBRE); + AFacturasNuevas.DataTable.Prior; + end; + end; + dmGenerarFacturasCli.JsListaFacturasGeneradas.Execute; + end; + + Result := True; + end; + + finally + AFacturasNuevas := NIL; + if Assigned(APresupuestosClienteController) then + Finalizar; + end; +end; + +function GenerarFacturaCli : Boolean; overload; +var + APedidos : IBizPresupuestoCliente; +begin +{ + Result := False; + if not Assigned(APresupuestosClienteController) then + Inicializar; + + APedidos := APresupuestosClienteController.ElegirPedidos(APresupuestosClienteController.BuscarSinFacturar, + 'Elija el presupuesto o Pedidos de proveedor que desea utilizar para dar de alta la factura.' + + #10#13 + 'Si elige Pedidos de proveedores diferentes se dará de alta una factura por cada uno de ellos.' , True); + + Result := GenerarFacturaCli(APedidos); + + if Assigned(APresupuestosClienteController) then + Finalizar; +} +end; + +function GenerarFacturas(AFacturas : IBizFacturaCliente; AListaPresupuestos : IBizPresupuestoCliente): Boolean; +var + AFacturaActual : IBizFacturaCliente; + APresupuestosController : IPresupuestosClienteController; + I: Integer; + bEnEdicion : Boolean; + +begin + // ATENCIÓN!!! AFacturas tiene que estar vacio para no pisar facturas + // ya generadas. + if not Assigned(AFacturas) then + raise Exception.Create ('Factura no asignado (Anadir)'); + + if not Assigned(AListaPresupuestos) then + raise Exception.Create ('Presupuestos no asignados (Anadir)'); + + if not AFacturas.DataTable.Active then + AFacturas.DataTable.Active := True; + + if not AListaPresupuestos.DataTable.Active then + AListaPresupuestos.DataTable.Active := True; + + // ShowHourglassCursor; + // Application.ProcessMessages; + + APresupuestosController := TPresupuestosClienteController.Create; + try + // Ordenar por fecha de albaran + AListaPresupuestos.DataTable.Sort([fld_PresupuestosClienteFECHA_PRESUPUESTO], [uDADataTable.sdAscending]); + AListaPresupuestos.First; + for I := 0 to AListaPresupuestos.DataTable.RecordCount - 1 do + begin + AListaPresupuestos._Cliente := NIL; + AFacturaActual := NIL; + + // Busco si hay alguna factura ya hecha de ese Cliente + AFacturas.DataTable.First; + if AFacturas.DataTable.Locate(fld_FacturasClienteID_CLIENTE, AListaPresupuestos.ID_Cliente, []) then + begin + AFacturaActual := AFacturas; + AFacturasClienteController.RecuperarCliente(AFacturaActual); + AFacturaActual.Cliente.DataTable.Active := True; + end + else begin + // No hay factura de ese Cliente. Creo una nueva + AFacturasClienteController.Anadir(AFacturas); + APresupuestosController.RecuperarCliente(AListaPresupuestos); + AFacturas.Cliente := AListaPresupuestos.Cliente; + + //Siempre asignaremos por defecto la referencia de factura de Cliente que tenga el primer albaran del Cliente +{ bEnEdicion := (AFacturas.DataTable.State in dsEditModes); + if not bEnEdicion then + AFacturas.Edit; + AFacturas.REFERENCIA_CLIENTE := AListaPresupuestos.REF_FACTURA_PROV; + AFacturas.Post; + if bEnEdicion then + AFacturas.Edit; + + //Si el albaran es de tipo devolución hacemos la factura de tipo abono + if (AListaPresupuestos.TIPO = CTE_TIPO_ALBARAN_DEV) then + begin + bEnEdicion := (AFacturas.DataTable.State in dsEditModes); + if not bEnEdicion then + AFacturas.Edit; + AFacturas.TIPO := CTE_TIPO_ABONO; + AFacturas.Post; + if bEnEdicion then + AFacturas.Edit; + end; +} + AFacturaActual := AFacturas; + end; + + // Ya tengo la factura. Le añado los conceptos del presupuesto + AFacturaActual.Detalles.DataTable.Last; + // Añado el título + AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_TITULO); + // Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_TITULO); + with AFacturaActual.Detalles do + begin + Edit; + CONCEPTO := 'Presupuesto ' + AListaPresupuestos.REFERENCIA + ' del ' + DateToStr(AListaPresupuestos.FECHA_PRESUPUESTO); + Post; + end; + // Añado el contenido del presupuesto + CopiarArticulosPresupuesto(AListaPresupuestos.Detalles, AFacturaActual.Detalles); + + {En los albaranes a Cliente el porte es a nivel del artículo + Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO); + with AFacturaActual.Detalles do + begin + Edit; + CONCEPTO := 'Porte del presupuesto'; + CANTIDAD := 1; + IMPORTE_UNIDAD := AListaPresupuestos.IMPORTE_PORTE; + Post; + end; + } + + // Añado el resumen + AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_SUBTOTAL); + //Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_SUBTOTAL); + with AFacturaActual.Detalles do + begin + Edit; + CONCEPTO := 'Total del presupuesto ' + AListaPresupuestos.REFERENCIA; + Post; + end; + + // Añado una línea en blanco + AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO); + // Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO); + with AFacturaActual.Detalles do + begin + Edit; + CONCEPTO := ''; + Post; + end; + + // Guardo la factura que acabo de generar o editar + AFacturaActual.CalcularImporteTotal; + AFacturasClienteController.Guardar(AFacturaActual); + // Self.Guardar(AFacturaActual); + // Asocio la factura con el presupuesto + AListaPresupuestos.Edit; +// AListaPresupuestos.ID_FACTURA := AFacturaActual.ID; + AListaPresupuestos.Post; + APresupuestosController.Guardar(AListaPresupuestos); + + AListaPresupuestos.Next; + end; + Result := True; + finally + APresupuestosController := NIL; +// HideHourglassCursor + end; + end; + +end. diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvPedProvUtils.dfm b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvPedProvUtils.dfm new file mode 100644 index 00000000..182262d7 --- /dev/null +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvPedProvUtils.dfm @@ -0,0 +1,315 @@ +object dmGenerarFacturasProv: TdmGenerarFacturasProv + OldCreateOrder = False + Height = 176 + Width = 254 + object JsListaFacturasGeneradas: TJSDialog + 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.Text = 'Se ha generado el albar'#195#161'n...' + 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 + CustomButtons = < + item + Caption = 'Ver el albar'#225'n' + Value = 100 + end + item + Caption = 'Continuar' + Value = 200 + Cancel = True + end> + ButtonBar.Buttons = [] + 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 = 72 + Top = 16 + end +end diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvPedProvUtils.pas b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvPedProvUtils.pas new file mode 100644 index 00000000..fc04178d --- /dev/null +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvPedProvUtils.pas @@ -0,0 +1,234 @@ +unit uGenerarFacturasProvPedProvUtils; + +interface + +uses + Windows, SysUtils, Classes, uBizPedidosProveedor, pngimage, JSDialog; + +type + TdmGenerarFacturasProv = class(TDataModule) + JsListaFacturasGeneradas: TJSDialog; + end; + + function GenerarFacturaProv(const IDPedido : Integer) : Boolean; overload; + function GenerarFacturaProv(APedidos : IBizPedidoProveedor) : Boolean; overload; + function GenerarFacturaProv : Boolean; overload; + +implementation + +{$R *.dfm} + +uses + uDialogUtils, + uBizDetallesPedidoProveedor, + uPedidosProveedorController, uDetallesPedidoProveedorController, + uFacturasProveedorController, uBizFacturasProveedor, uBizDetallesFacturaProveedor; + +// , +// , uProveedoresController, +// , uControllerDetallesBase, + + +// , uBizContactos, schPedidosClienteClient_Intf, +// schPedidosProveedorClient_Intf; + +var + dmGenerarFacturasProv: TdmGenerarFacturasProv; + APedidosProveedorController : IPedidosProveedorController; + ADetallesPedidosProveedorController : IDetallesPedidoProveedorController; + AFacturasProveedorController : IFacturasProveedorController; +// AProveedoresController : IProveedoresController; + +{ Métodos auxiliares } +{procedure CopiarPedidoAPedido(APedido: IBizPedidoCliente; + APedido : IBizFacturaProveedor); +begin + if not Assigned(APedido) then + raise Exception.Create ('Albarán no asignado (CopiarPedidoAPedido)'); + + if not Assigned(APedido) then + raise Exception.Create ('Pedido no asignado (CopiarPedidoAPedido)'); + + if not APedido.DataTable.Active then + APedido.DataTable.Active := True; + + // El albarán tiene que venir ya abierto y posicionado donde hay que copiar + APedido.ID_CLIENTE := APedido.ID_CLIENTE; + APedido.ID_PEDIDO := APedido.ID; + APedido.CALLE := APedido.CALLE; + APedido.CODIGO_POSTAL := APedido.CODIGO_POSTAL; + APedido.POBLACION := APedido.POBLACION; + APedido.PROVINCIA := APedido.PROVINCIA; + APedido.PERSONA_CONTACTO := APedido.PERSONA_CONTACTO; + APedido.TELEFONO := APedido.TELEFONO; + APedido.IMPORTE_NETO := APedido.IMPORTE_NETO; + APedido.IMPORTE_PORTE := APedido.IMPORTE_PORTE; + APedido.DESCUENTO := APedido.DESCUENTO; + APedido.IMPORTE_DESCUENTO := APedido.IMPORTE_DESCUENTO; + APedido.BASE_IMPONIBLE := APedido.BASE_IMPONIBLE; + APedido.IVA := APedido.IVA; + APedido.IMPORTE_IVA := APedido.IMPORTE_IVA; + APedido.IMPORTE_TOTAL := APedido.IMPORTE_TOTAL; + APedido.DataTable.FieldByName(fld_PedidosClienteOBSERVACIONES).AsVariant := APedido.DataTable.FieldByName(fld_PedidosClienteOBSERVACIONES).AsVariant; + APedido.ID_FORMA_PAGO := APedido.ID_FORMA_PAGO; +end; + +procedure CopiarArticulosPendAPedido( + APedido: IBizPedidoCliente; + APedido: IBizFacturaProveedor; + AArticulosPendientes: IBizPedidoClienteArticulosPend); +var + i : integer; + ADetalles : IBizDetallesFacturaProveedor; + ADetallesController : IDetallesFacturaProveedorController; +begin + if not Assigned(APedido) then + raise Exception.Create ('Albarán no asignado (CopiarArticulosPendAPedido)'); + + if not Assigned(APedido) then + raise Exception.Create ('Pedido no asignado (CopiarArticulosPendAPedido)'); + + if not Assigned(AArticulosPendientes) then + raise Exception.Create ('Artículos pendientes no asignado (CopiarArticulosPendAPedido)'); + + if not AArticulosPendientes.DataTable.Active then + AArticulosPendientes.DataTable.Active := True; + + // El albarán tiene que venir ya abierto y posicionado donde hay que copiar + + ADetalles := APedido.Detalles; + ADetallesController := TDetallesFacturaProveedorController.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); + + AArticulosPendientes.DataTable.First; + for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do + begin + APedido.Detalles.First; + if (APedido.Detalles.Locate('ID_ARTICULO', AArticulosPendientes.ID_ARTICULO, [])) then + if (AArticulosPendientes.CANTIDAD_PENDIENTE > 0) then + begin + ADetallesController.Add(ADetalles, TIPO_DETALLE_CONCEPTO); + ADetalles.Edit; + ADetalles.REFERENCIA := APedido.Detalles.REFERENCIA; + ADetalles.ID_ARTICULO := APedido.Detalles.ID_ARTICULO; + ADetalles.CONCEPTO := APedido.Detalles.CONCEPTO; + ADetalles.CANTIDAD := AArticulosPendientes.CANTIDAD_PENDIENTE; + ADetalles.IMPORTE_UNIDAD := APedido.Detalles.IMPORTE_UNIDAD; + ADetalles.IMPORTE_TOTAL := APedido.Detalles.IMPORTE_TOTAL; + ADetalles.DESCUENTO := APedido.Detalles.DESCUENTO; + ADetalles.IMPORTE_PORTE := APedido.Detalles.IMPORTE_PORTE; + ADetalles.VISIBLE := APedido.Detalles.VISIBLE; + ADetalles.REFERENCIA_PROVEEDOR := APedido.Detalles.REFERENCIA_PROVEEDOR; + ADetalles.Post; + AArticulosPendientes.Next; + end; + end; + finally + ADetallesController.EndUpdate(ADetalles); + ADetallesController := NIL; + end; +end; } + +procedure Inicializar; +begin + dmGenerarFacturasProv := TdmGenerarFacturasProv.Create(nil); + APedidosProveedorController := TPedidosProveedorController.Create; + ADetallesPedidosProveedorController := TDetallesPedidoProveedorController.Create; + AFacturasProveedorController := TFacturasProveedorController.Create; +// AProveedoresController := TProveedoresController.Create; +end; + +procedure Finalizar; +begin + FreeAndNIL(dmGenerarFacturasProv); + APedidosProveedorController := nil; + ADetallesPedidosProveedorController := nil; + AFacturasProveedorController := nil; +// AProveedoresController := nil; +end; + + +function GenerarFacturaProv(const IDPedido : Integer) : Boolean; overload; +var + APedido : IBizPedidoProveedor; +begin + Result := False; + if not Assigned(APedidosProveedorController) then + Inicializar; + + APedido := APedidosProveedorController.Buscar(IDPedido); + Result := GenerarFacturaProv(APedido); + + if Assigned(APedidosProveedorController) then + Finalizar; +end; + +function GenerarFacturaProv(APedidos : IBizPedidoProveedor) : Boolean; overload; +var + ARespuesta : Integer; + AFacturasNuevas : IBizFacturaProveedor; +// AArticulos: IBizPedidoClienteArticulosPend; + i: Integer; +begin + Result := False; + if not Assigned(APedidosProveedorController) then + Inicializar; + + if not Assigned(APedidos) then + raise Exception.Create('Albarán de proveedor no asignado (GenerarFacturaProv)'); + + if not APedidos.DataTable.Active then + APedidos.DataTable.Active := True; + + try + AFacturasNuevas := AFacturasProveedorController.Nuevo(False); + if AFacturasProveedorController.Anadir(AFacturasNuevas, APedidos.ID) then + begin + if AFacturasNuevas.DataTable.RecordCount = 1 then + AFacturasProveedorController.Ver(AFacturasNuevas) + else begin + with dmGenerarFacturasProv.JsListaFacturasGeneradas.Content do + begin + Clear; + AFacturasNuevas.DataTable.Last; + for i := 0 to AFacturasNuevas.DataTable.RecordCount - 1 do + begin + if Length(AFacturasNuevas.REFERENCIA) > 0 then + Add(AFacturasNuevas.REFERENCIA + ': ' + AFacturasNuevas.NOMBRE); + AFacturasNuevas.DataTable.Prior; + end; + end; + dmGenerarFacturasProv.JsListaFacturasGeneradas.Execute; + end; +// actRefrescar.Execute; + end; + finally + AFacturasNuevas := NIL; + end; +end; + +function GenerarFacturaProv : Boolean; overload; +var + APedidos : IBizPedidoProveedor; +begin +{ + Result := False; + if not Assigned(APedidosProveedorController) then + Inicializar; + + APedidos := APedidosProveedorController.ElegirPedidos(APedidosProveedorController.BuscarSinFacturar, + 'Elija el albarán o Pedidos de proveedor que desea utilizar para dar de alta la factura.' + + #10#13 + 'Si elige Pedidos de proveedores diferentes se dará de alta una factura por cada uno de ellos.' , True); + + Result := GenerarFacturaProv(APedidos); + + if Assigned(APedidosProveedorController) then + Finalizar; +} +end; + +end. diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvUtils.dfm b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvUtils.dfm new file mode 100644 index 00000000..182262d7 --- /dev/null +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvUtils.dfm @@ -0,0 +1,315 @@ +object dmGenerarFacturasProv: TdmGenerarFacturasProv + OldCreateOrder = False + Height = 176 + Width = 254 + object JsListaFacturasGeneradas: TJSDialog + 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.Text = 'Se ha generado el albar'#195#161'n...' + 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 + CustomButtons = < + item + Caption = 'Ver el albar'#225'n' + Value = 100 + end + item + Caption = 'Continuar' + Value = 200 + Cancel = True + end> + ButtonBar.Buttons = [] + 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 = 72 + Top = 16 + end +end diff --git a/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvUtils.pas b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvUtils.pas new file mode 100644 index 00000000..ad87ec5d --- /dev/null +++ b/Source/Modulos/Relaciones/Presupuestos de cliente - Facturas de cliente/uGenerarFacturasProvUtils.pas @@ -0,0 +1,234 @@ +unit uGenerarFacturasProvUtils; + +interface + +uses + Windows, SysUtils, Classes, uBizAlbaranesProveedor, pngimage, JSDialog; + +type + TdmGenerarFacturasProv = class(TDataModule) + JsListaFacturasGeneradas: TJSDialog; + end; + + function GenerarFacturaProv(const IDAlbaran : Integer) : Boolean; overload; + function GenerarFacturaProv(AAlbaranes : IBizAlbaranProveedor) : Boolean; overload; + function GenerarFacturaProv : Boolean; overload; + +implementation + +{$R *.dfm} + +uses + uDialogUtils, + uBizDetallesAlbaranProveedor, + uAlbaranesProveedorController, uDetallesAlbaranProveedorController, + uFacturasProveedorController, uBizFacturasProveedor, uBizDetallesFacturaProveedor; + +// , +// , uProveedoresController, +// , uControllerDetallesBase, + + +// , uBizContactos, schPedidosClienteClient_Intf, +// schAlbaranesProveedorClient_Intf; + +var + dmGenerarFacturasProv: TdmGenerarFacturasProv; + AAlbaranesProveedorController : IAlbaranesProveedorController; + ADetallesAlbaranesProveedorController : IDetallesAlbaranProveedorController; + AFacturasProveedorController : IFacturasProveedorController; +// AProveedoresController : IProveedoresController; + +{ Métodos auxiliares } +{procedure CopiarPedidoAAlbaran(APedido: IBizPedidoCliente; + AAlbaran : IBizFacturaProveedor); +begin + if not Assigned(AAlbaran) then + raise Exception.Create ('Albarán no asignado (CopiarPedidoAAlbaran)'); + + if not Assigned(APedido) then + raise Exception.Create ('Pedido no asignado (CopiarPedidoAAlbaran)'); + + if not APedido.DataTable.Active then + APedido.DataTable.Active := True; + + // El albarán tiene que venir ya abierto y posicionado donde hay que copiar + AAlbaran.ID_CLIENTE := APedido.ID_CLIENTE; + AAlbaran.ID_PEDIDO := APedido.ID; + AAlbaran.CALLE := APedido.CALLE; + AAlbaran.CODIGO_POSTAL := APedido.CODIGO_POSTAL; + AAlbaran.POBLACION := APedido.POBLACION; + AAlbaran.PROVINCIA := APedido.PROVINCIA; + AAlbaran.PERSONA_CONTACTO := APedido.PERSONA_CONTACTO; + AAlbaran.TELEFONO := APedido.TELEFONO; + AAlbaran.IMPORTE_NETO := APedido.IMPORTE_NETO; + AAlbaran.IMPORTE_PORTE := APedido.IMPORTE_PORTE; + AAlbaran.DESCUENTO := APedido.DESCUENTO; + AAlbaran.IMPORTE_DESCUENTO := APedido.IMPORTE_DESCUENTO; + AAlbaran.BASE_IMPONIBLE := APedido.BASE_IMPONIBLE; + AAlbaran.IVA := APedido.IVA; + AAlbaran.IMPORTE_IVA := APedido.IMPORTE_IVA; + AAlbaran.IMPORTE_TOTAL := APedido.IMPORTE_TOTAL; + AAlbaran.DataTable.FieldByName(fld_AlbaranesClienteOBSERVACIONES).AsVariant := APedido.DataTable.FieldByName(fld_PedidosClienteOBSERVACIONES).AsVariant; + AAlbaran.ID_FORMA_PAGO := APedido.ID_FORMA_PAGO; +end; + +procedure CopiarArticulosPendAAlbaran( + APedido: IBizPedidoCliente; + AAlbaran: IBizFacturaProveedor; + AArticulosPendientes: IBizPedidoClienteArticulosPend); +var + i : integer; + ADetalles : IBizDetallesFacturaProveedor; + ADetallesController : IDetallesFacturaProveedorController; +begin + if not Assigned(AAlbaran) then + raise Exception.Create ('Albarán no asignado (CopiarArticulosPendAAlbaran)'); + + if not Assigned(APedido) then + raise Exception.Create ('Pedido no asignado (CopiarArticulosPendAAlbaran)'); + + if not Assigned(AArticulosPendientes) then + raise Exception.Create ('Artículos pendientes no asignado (CopiarArticulosPendAAlbaran)'); + + if not AArticulosPendientes.DataTable.Active then + AArticulosPendientes.DataTable.Active := True; + + // El albarán tiene que venir ya abierto y posicionado donde hay que copiar + + ADetalles := AAlbaran.Detalles; + ADetallesController := TDetallesFacturaProveedorController.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); + + AArticulosPendientes.DataTable.First; + for i := 0 to AArticulosPendientes.DataTable.RecordCount - 1 do + begin + APedido.Detalles.First; + if (APedido.Detalles.Locate('ID_ARTICULO', AArticulosPendientes.ID_ARTICULO, [])) then + if (AArticulosPendientes.CANTIDAD_PENDIENTE > 0) then + begin + ADetallesController.Add(ADetalles, TIPO_DETALLE_CONCEPTO); + ADetalles.Edit; + ADetalles.REFERENCIA := APedido.Detalles.REFERENCIA; + ADetalles.ID_ARTICULO := APedido.Detalles.ID_ARTICULO; + ADetalles.CONCEPTO := APedido.Detalles.CONCEPTO; + ADetalles.CANTIDAD := AArticulosPendientes.CANTIDAD_PENDIENTE; + ADetalles.IMPORTE_UNIDAD := APedido.Detalles.IMPORTE_UNIDAD; + ADetalles.IMPORTE_TOTAL := APedido.Detalles.IMPORTE_TOTAL; + ADetalles.DESCUENTO := APedido.Detalles.DESCUENTO; + ADetalles.IMPORTE_PORTE := APedido.Detalles.IMPORTE_PORTE; + ADetalles.VISIBLE := APedido.Detalles.VISIBLE; + ADetalles.REFERENCIA_PROVEEDOR := APedido.Detalles.REFERENCIA_PROVEEDOR; + ADetalles.Post; + AArticulosPendientes.Next; + end; + end; + finally + ADetallesController.EndUpdate(ADetalles); + ADetallesController := NIL; + end; +end; } + +procedure Inicializar; +begin + dmGenerarFacturasProv := TdmGenerarFacturasProv.Create(nil); + AAlbaranesProveedorController := TAlbaranesProveedorController.Create; + ADetallesAlbaranesProveedorController := TDetallesAlbaranProveedorController.Create; + AFacturasProveedorController := TFacturasProveedorController.Create; +// AProveedoresController := TProveedoresController.Create; +end; + +procedure Finalizar; +begin + FreeAndNIL(dmGenerarFacturasProv); + AAlbaranesProveedorController := nil; + ADetallesAlbaranesProveedorController := nil; + AFacturasProveedorController := nil; +// AProveedoresController := nil; +end; + + +function GenerarFacturaProv(const IDAlbaran : Integer) : Boolean; overload; +var + AAlbaran : IBizAlbaranProveedor; +begin + Result := False; + if not Assigned(AAlbaranesProveedorController) then + Inicializar; + + AAlbaran := AAlbaranesProveedorController.Buscar(IDAlbaran); + Result := GenerarFacturaProv(AAlbaran); + + if Assigned(AAlbaranesProveedorController) then + Finalizar; +end; + +function GenerarFacturaProv(AAlbaranes : IBizAlbaranProveedor) : Boolean; overload; +var + ARespuesta : Integer; + AFacturasNuevas : IBizFacturaProveedor; +// AArticulos: IBizPedidoClienteArticulosPend; + i: Integer; +begin +{ + Result := False; + if not Assigned(AAlbaranesProveedorController) then + Inicializar; + + if not Assigned(AAlbaranes) then + raise Exception.Create('Albarán de proveedor no asignado (GenerarFacturaProv)'); + + if not AAlbaranes.DataTable.Active then + AAlbaranes.DataTable.Active := True; + + try + AFacturasNuevas := AFacturasProveedorController.Nuevo(False); + if AFacturasProveedorController.Anadir(AFacturasNuevas, AAlbaranes) then + begin + if AFacturasNuevas.DataTable.RecordCount = 1 then + AFacturasProveedorController.Ver(AFacturasNuevas) + else begin + with dmGenerarFacturasProv.JsListaFacturasGeneradas.Content do + begin + Clear; + AFacturasNuevas.DataTable.Last; + for i := 0 to AFacturasNuevas.DataTable.RecordCount - 1 do + begin + if Length(AFacturasNuevas.REFERENCIA) > 0 then + Add(AFacturasNuevas.REFERENCIA + ': ' + AFacturasNuevas.NOMBRE); + AFacturasNuevas.DataTable.Prior; + end; + end; + dmGenerarFacturasProv.JsListaFacturasGeneradas.Execute; + end; +// actRefrescar.Execute; + end; + finally + AFacturasNuevas := NIL; + end; +} +end; + +function GenerarFacturaProv : Boolean; overload; +var + AAlbaranes : IBizAlbaranProveedor; +begin + Result := False; + if not Assigned(AAlbaranesProveedorController) then + Inicializar; + + AAlbaranes := AAlbaranesProveedorController.ElegirAlbaranes(AAlbaranesProveedorController.BuscarSinFacturar, + 'Elija el albarán o albaranes de proveedor que desea utilizar para dar de alta la factura.' + + #10#13 + 'Si elige albaranes de proveedores diferentes se dará de alta una factura por cada uno de ellos.' , True); + + Result := GenerarFacturaProv(AAlbaranes); + + if Assigned(AAlbaranesProveedorController) then + Finalizar; +end; + +end. diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES index 762c6e51bee37dc692c4dd1c19a460f5e7faaeaf..e347bb40363cd5766d1669d49b3dbcf9ea3c126d 100644 GIT binary patch literal 23200 zcmeHvcU+ZM^8N^xC?F;(Di)BdqKJS6MJ#}bD2jq8HV{RyA);Ux1;rYTs3fsQ!Gb*@ zS)<0pK-^T#O8iCFvQaU{B$~CX4S&Ws-)GLf@8zW!(PVf3*_Y4Z-1mJ?nK@<7%rkQ@ z5s@PjvoYagv1@E4?Y$++R8a3~)Tm~y6>5$THIN*UD$q;#PvmPXrat4LyinIGue?Ha z>eQjyU29X5CQZoTVjve67jk!Zr=}jws9n2uojZ3XD}O7p>1jjted|-*z`9gr zbQP*OtrmIqY)_uUy{P%<7UVXe4R!0*je7LxLA`qQqM+d3)N^oe>KhSC!y+OmA|jH4 z#`U9K@%_kub{Iv>jG>Xy(G)v+G>siSmd1`9OYw0NY5atEijR+{apRI{a$+J)oi?4O z&zM28X3e5mGm>e}oHvzFFk?w-D-{{L?T{u3kMYGq+j(W!w`nCi^6awSU}n@Y~EuC6W(h@7fb zd8vAhT7!dvx;VCQrVuNuDpe|14~h&5admZfp}IBI1KfwYy1O9)t`J8i;$B zUX8r$P*RP8b1BZo1I6Jwz^lu#K->H3F zyYP|G{X;@roXM$2U_d8(yP>hMqlOQ4b|+`wo`C_~I(G0GIE5_;;|&cOH24Q( zGebsm_3G7saxxeWLVohd=uzC#)iuq&e*HczTebv6#>>XWri#H}SOfXZkmC%Q&XCs( zxy?;lH)Y6GhV10ovuCR`abf~PCgYSLvbD9fgq;5?{7kHf?IadGRaG z5H70?$X?d!r>|I5sy@!9G@LVxbAWO7lxhPqn;~;KZQcTgj4oC`9%C?Y;J{p*NsRM? zK}V@JAnO^jnj!yr?Ya$|nwrXKX=$n*sXt`MkV`mQ7-tOk?%lgo8>?2X=5wdd@vBRg zG0p{57w4C1XL4c^4il`&KkxU!ehscW1N?a^N%Yb(+jXDZ{I<>27p>1cy-?x{9# z2D10zP{z5f+Q{0ng>f!1&L_q>#W=ed=NjX@W|x*NH`v?T*TK16i1UsaOkIs?o4khL!BFC-)+32iXW<5F$lOlO?$jI*9`<}-8-ZH;Y^ zy4p2<{P@k%hR~tsMd*+=pdT>w6K#F`RrZTkSIbRw6v}wWn997!+(KVrS!1$JWv$D8 z(dv}UWjst{dQj$8)`zSyS*NnrOP0Tl2YE=TriAQwFHIH|h%B-t+6fiU5jBi*$VgU6 zIVA6Wku-fURWFAi*YHAJkTdl1%P&*y+O?@}-MZAUVMA)@*^nCfG$JP_Cu-KL8MSBu zJ zC8E2j=x_#+Pk;}#5A&jCNiO8m-VB8J5!S*9h5HGX>kwg zw9JpXWb~o7+x@A-?jUm8??;{A2_?S;eJCg`oVullkl&gR3S5u;FN4T$|6uBIXgEcr zjiFJi6KT-aI12hGmO?&=qo_U8DEjSW^7yhRb@)7#JWqsDm#>FVr*DT)x0BFep}+RH z6sPpp{@0T!C3PMR{&7A<{_|BDbbBF1-hYke&!0~V7cQhFOP0{`<;!XH>eZC-#+$Tm z)f!s!hUl;BXyf{gwCSx)l(}{jZC#&5nVFfCot;g)x9*~SJND78-MeY;-o2EwJBM;| z-lIeB9ag$+?uWT_*_J1xv#sgRd{Nj-nott*olzQUxj+yq4lUE^`rAd0qMCx(({rw|m8~ z%J7=;z3*IO6HYcZR?r!1)@jh7er?05m4=lD-yS{Mwl%$XvW3)E9aOF#jMppCg0FA5 zZ)f9sZ^&g;0DaUmti)wlqi^5Isi=VI{d(Pd7bn|BMFk8QQa@Ao-r(feyQl@Hj1171 zRrKD|VCd7kv9SP{Fs#YQSZUZ=^xmbZb68&|Qvn+*!+I1jWb59$cns+8WG-M>zjjTA zVW;{1Vi%X;af1!!0*1`>Yu6g~7$CRi`hx%2t}UbEhZxKS3|T0E_ZWTe*|V3(`%wwQ znwkq3wr1^GZ+OR$JO|Z%=it5Tn90#D<^qQ7J!zS!@9OEDJZH`_L$asq*u+VZE;zyz z4Tc?a)3OYkHYIzyxVU*^{yg1ACnZjvIBd|sW;iPv8urZ1-oL`7W!GhytEakRiFkU( zOhJK!_&9fI!H~0O|DNovtLAlbb?Go~le~AEW-JgPL>hATzn!xuJ8SK#rSnp|VtFKc zd5)W*3QTC@Y;ZE{-?M*z&YrCsGhSO{FyLGvZ_f_XjRoT4hV~y}Fzl4~nHdIyRn@L| z@9XUuJ5wt#AS|>WR;66EFk5N?dwY3~*B1!s)ibcWe>W_-Wc7ZTx0hF`0s+-+Y+9<< zAQ1&(%`~8kkX{a0QP@YOD-9ZQhjAu0;|7HFam1P|dQG&<+tUjJHG1rrQ6q;(fK4ac zE?Q+{?(5~{*$x((t4m845bsj_t=wUtJUyj=i;Gw3x5g*Q$+KrKF7}ddTl;V-RS~KA z80jIB=q3fGl!shWsxIMUsVfyvOsN9$3VFt4SwJMI3fi$(xt^A?dWKEt z0DUoEY)jCfbbq0tQHMqhosnOPd5NJ9GEGHFL`oor9;w|?O$lf$jD$| zj>;a@)6lVFNB8#a+ustq6f`LNR-*xWEkjpj=%-Ax&@X7PoMy?;Tg`oI{X@qw_Ya+r zB|*1q9U?b_A0Q>RY1Km&sYWw(^1L7R()?HaPhR11bqS*&lZ|GW?L%>7G$&?}V< z3O!ckW$_Qeo+~yrXyEeDP<2ezQhjUve}43fV*LvZ`c$(2?%lg5h&>J(l+9Hh8ekth zwSVZ1>37&b$> z$3gms-dv0Zd3Ns1`EvIUyXlf(5kdp(6o$Q`#-TiOA$@%g8~><|26=Yz!sTc7FXj68 z@9z#fnn44@Ze!R&3>%5Hxp)>0(#G-6jx%fqh1p8azDhRPQ$TEtp{?PlJCvj3zU?BZO|Ah;I8o@CgF47*d|O4^$IJsPBq zbEnT1qd}hCxN)l#{|N~RW?FXa*rDD>L`38c9XgbS2H3F-+mvDNs`a3)$=@3X>FeV8 z3koxXy{E=Op25yj?ZakeNqXKz4yC83tM|ZMazO(N4X~RTHZjAdR_j65z9iL z=^yqkuLN!g8=TLcI;+|}k^c?DZstXc7xSptSOyltz(hDAGLqxsCaCd{y1=edKm!X6 zzz!51Cp5@704q>)0X%|%O)#*PQu{*MfNhQTGB6I`vs|$8IkbNm4+QUm8^Zo)*z62j zpMfy|M~-CRHHuE)Em4A>2@Sw77&t^R8e~1lnv{J3+@{pNkp5xMD;lKlYuA2Z-~jyH zxeE+@fq_vl@EaaHWT+a0vE#-w@Cycxp!y#(W{ksV;G-H1z(1Z!12C9U>p}W|@Zf=T z%{On}X5b1~3%3|Jgp$F)Fw~g<9E5?Hs092-^)33O=pLXUSEB)#4Fh{AlLlZo47^Io zNo{XR|8mKC1D3(SGWfy0LI&o+z(qL!>u)&k!%rC43j?1~{Yo8^E(b)A2v}&8V4;eJ z_|Xjf=czPka{*k6m7H83Vr~;y3qO90{vQ-V{@mn?=>Hq^{|Wk+J|*e&$<5NYc7cXV zW*Sx}GO(v-(jYjkoEN~+7?_&553MhK4t%kgE+=}m*0`;5z?^~U zDcl*@9|HqqV1f*6kbx1F)aBCkeQTdVL;9ah129Pj=Bn2x^F2H~)Vyo`>T}SLtET~& zV!76Xc`kJ00Gzg@9wmBpv2oY;EuYc9EzXuz73eervHQ{;n2gXl1#N0rbgMXz=* z+27OdOU{KRA4EopoD^9t=Y^bEa&7{XW#Gxh_NMOK%oW}KX?;EIIcShIS+p-qa#A}l zv~yF_A2dBmcV>xBoA9*u%ljNOMCoOec3x=brlvn=dX!0@OcA}hynU3XoXBd^c_C+3 zuIcQ~HR&*-Mvr&dnNM*|y|nzU;|PTug__%x*!ZCX(CuFVPlD?n|Y)V51o z>fqIZu!pE)S1;wikr*HA0Bfq=vpU&C*^pfiJF45auJY&98c>UB53Wu2VfHHar$T%M zsx+<=Sw&kB>_)N~X+sqfE0}#dG>542tjbh1sVdcsu1Ph=*CfY2j?}V8OKRosN=?I? zl52z;dHS~_Z(ncf7~YARPIji|Q(UR#bPsAZt1Y#g+KxPuJ5ZaHPSiQN$UlU$l7jof zClnkE-%t?sitI_DgZmkMLm~YM>qhy9B8Cp5h^S%8M>KlKaPk||g92mvQ1|h@sNdLr z)NOVU^^5LL5wQ^zIWv~925I!j(aL8uHadplW5!VQ_!t@+KL)W#<7mQ!@f1Ja7@L$h zCY}=G;%Q1;0!^BjKr@k#m^p$bPMJWXQYO%(Nt0;$q$HX;c?wOLGKFSNn?@n_wP&68TEVIJpqrB-Xa$?hE|YVdwba?k2YP9L_TW*>J{{-=%${i(~+UetL*A8NC$ z8+Cd+guD-gP}dIzlJD|h@=p(?;md}T|LgrJaN}SK*fxZQZpWC-2j3f}(%^0J6uD~( zjo3SbT7BM~S|1Bi@lqX6hEtc*!^rRaDC+;|BeU5{={3YyEnT{l(qCOh z>82Q~)yvXp<%)F5K%CXu<*O)T$a_wy?s0F-h#9}o8HOZO?%+WdUrQ`S^M_Ufqn1Np?BV+ z_j2B)1Mq9T|K5H&u>XDf@co1I!NEiH(SZ->!$TiX-oXzk@53YXS?(wF*H4bpS4Tgi zisU&YnF(-<>&27tVi21s5*RmG8f&Yd`)- z*MGW3H?IGa?%cYK_^-S4@IfIxEPP16Jr)GE)Rhxl#}ZfNz?f36Nj*Z{s*U4B%R}>$U zq%_J`u3W7uG-QV=FIiaHM$Q^PZ2gkKaWP@`_5s0q$^z@ys`eYZz|D-SdGi)7uf&ai zcXC+d@W{xR$e5TI`<$X40sxRoh3ZY3w4ALfv~a0?^kV+IlOu=63|GY?1Cq?;1MF3C z)q|~VW2w-h_L-k9o;flrOd3~zMdbtG%{O%*JXl+ye24sBu3r7e$A`-(9|;uKRKX6u zDAaJ9?G|?GmuuGwj($+O{FiWcn=07Z*`kIjA9Lr%jT={w9VuNN#RKe7Lr6jexxn(M z2e)tE{`vUFYH$?&_C|h_q`Y(>73}PUXB#-kVhiuwx%11ZFLmuls_}tY9?;oGBS|W# zJ|;c7fB*hXeR+F(DW4O7@{4@UB-xpGnDlF5Vd3pF$8_y0tpUvk4qT4%MI@>AlYaaE z4VQ2Gl0fI#WN zI7%2)JKG$7{Ohmx3r>W^XcYn^d;^C^@Q{`1OQpD(BpFte|Lt*M!KtvQq$I31bYicS zhfi>ojFPE_BFQcX)|x6GCNnSzb?j{`2U8f@eo*8#Sb z11T&dBzQ-5wv;z_pk~@s{(NLqWYQ!dC=BH-DL5=RY{!o5wNk#Q21t_fPYQoHAA-;b z8KE3w`7o5g{xdNqqD1X8Gc4_5xBu!(;r$;f93LjiQ zemDkowD!Zo_U+pBmW-?PV6HI@He_K=&d;Zg|9taq;k8pA#{}4*{m8JekUjhM?bP{My}XcGi{a;1CZB+x<3r*s*5AxcdPh^H4-MjJg#gjdowQ;dV1)}3JQhTMszMaxTkk&!HIsuV~ zfBx5l2X}rs=Iz?r&B?m5HOf;A%5T|kt}vvpR8XUY9onv~SMS)6rmbhso`Y?Q`_%59H2tNfrG{#N>>ny+KCjXXDXi~ z6*3PV+`s>Aj8f?eDRbvw!`W%gO9!fgFue~Ij1#9LX-+*6WJYNveVj*ym?-JNIB_L- zNcBefI!aiXC^{t-ViLf#8rI@HbWx%*z*N+j9Y*oUm?+b*V)2ETpC&ruMQNM5nwM9Tl^9pFb|QDo3nQBk>$PP&5R*IkQp-3MXc&7sbNJ0?9dRA z8fwE~&jkd2sVk-bXzD?>G|Ed2SxQBxqQ0#9d>&HF)Pu2u;9%XETdKG`I5EjwA>^5b z%WR?8LuE|CkYl8Nl8Z`|f*ghyVa34CBZ3%*-DS*?$-UTpk}C}gx!8bmFV*yUf$3h$ z^Gx?DhdQq1sq!56#d17S_kUKdYd;TdN`EQ`-34;5Nv;tm*b2U@xe z9=9NvBLTFnLRyWKf)s-kgyfCX3Q72@g=CE+{8U7;co9xov}j@L?ChL^_<&pBL1GKc zaSG+-0dpbqq2{JxgNEFpU3>Oy@A(-1|9`o=xqk<|@>9_FHqsiTR3zc2He9wgpglEi|@ybTQL&#?6wwmri(W?&NB(Wm2Y9lbg} z1eS6OJY5iekZb%*2i<{4jgX8R=NT-Z9b43Y2gU`12ZgCWjR)X84BUr-(XdSq8wOsZ zV*G&#F)$$pPNd>U#2)|*gMlwFFbW37!LaoixB&zEVBi?aKQL_AuqQq~KEEL{N%*-5 z8omMDuOYQY(j!x4a)C1Lh-tWlF;IAXSv=GUti!;G*kZbcInIKnK`Ko_N;t zehiv+A^9QMlu5MdVTTSK+<}FeV?)Z~0T>zs`%-Zt5+6aypw|>DqVWLSiz~%}_GoJc z#>T6cr895@&Rn;Vfq(EU_{?xP8flIl&7+Zoeti-?gnr=4zkzO9OFfW^bfXfCfKPYK z*)8zE;KA&VD2s=ZYss#=or*P4F*le8i$n|cT@T=LoV|G~1K;3-@cHfDn$5sv7+95= zem%`4KMVbcH+d%gDC3TJ_*>vXeP`rFcmU>Uo(GF03kI&pn=#(NV))2`!|>4^X5cyu zEQ!-F2io|Tq*;Go9{Tfm8DK%q#|u#K4tQ0tUsv zy%;!|^7HCxE$ef6=!Xv_U1Bi6gYxD45guqR_5${U#7vDIAIs-Xokq;USLXE5fkV6& zzS(7qmnwgFSv2dPJ&S%Q#6CJ7%pc|fN*oIhmNP6F7%vxmcY#ly$YY3tCzp$E2eZ3F&n$GcksG3YoCjL ziOs~Ej@9IUzkdB3V6&-M1&xQ!(Y|c|m*xyViP1FloN_(@%U2 zF(_wFo#MTS_1K6#AihEUUM=ghY5yv{3%0bJVe0&XA2R_w$al@mJiu?EzSjl+&L7?n z_#Pxrn>rOB%@e+bxSgAbUy*eF>^TOmk2spQo{N52kI?__YV^YgnJd0njR*Lg7(Nz; zuZ7{8Vr@TY{^=K)2l$1Q<#qSY9lnEg1fKxnJuWbO5uAxV4Bx0($B}XVz3~_N#kK$s zokVRAKQ4Gs@khdg->hEBw=O)uhg57&zbFqgXU0Wk12jlQ`_@;o;#vnm=6Q0sbt8KT7f7wV+$E zJ^iBRgT#=@_3NWw5qI;D;fF!Y;r9&x4{w7Ef=`-9j2NNfibjD>_^uh>F=PBrfr?dFaLO;X4Ns+nJ^8nu^YdpXYT1+mzC=Y;EjpGj)q>cZTD_0c#dqKbSuZ_9n+L+7u zPna-)r$TP@WQ_;-aLsZ_;zV9_E$P?)Benhu5%YGH zckSB6@K-awFR1paoC89S(68~MeU^EUd6)A9-;Yo>G~`x_=-zrBx?dQ>8V>=h2bkrO z{(N}ec_=P_?(y9_cln>tC&t4zoQ$>dJ@)d&ix>HmPd;JzhC>mV;Bo;UJ$jVk*Jk+56+bfmf_cdL7a59}h7?&>dLH1fXFU(_{WIbq{?I(g z`TGQGU(Q|l>+ya2`3%3e(&Nq`Ry6;s<9rl+?9STGZ@saGm(5?qh=*YK={fJCBYgJs z88tWZ-3-B9gnr1-0<0|`iBHn=fS3anQ>y1d_59q z!ib?^#NH^ZOmH%xU$9EZB?s9jdL9s0!684-D3b?GE@|h3#K4tjPtTY(jd$(bh4|Pt z4F9W={||5m-@I{yuVU?=J9UPSfBpsMV*McQfwR_bWW-Z2Vq6&UL2NU^M#YdiIy#!M zO7M^_`UB4BOL`s zQNNW?o_Xj#r|)x}aq?XqU`t$UEO4*rnv7U2MvN6BwuupE#fSk@bXQER$QJW0*m90# zS$J!{jJPN3cM)5S-@Pc$JZO6wu~>{)Ev0*l z{eXBbc6z-fBfg6f>&1xqQonUk@vTbF_r|KFGgkxT7;+n0qI-x5DiNm`$F4<0s)?NgEm#GdlMYfmFS z_i321_)y%RMr&EmWiKG*m&pV4B_&&*<9yI$Yguwha6Z8*pMraf59PUN*Z48r03UX3<-f?p?xu&}>n} z7PDY8f-eb1_6)sMd?oK;n?(Qt?}ot2k{9GqdjSZ_a5Yh`_|N!yivBTYNNaQAC6WN&D<1mPt-(>egdMojq4x%T{c z&X4}T_<)hv=^0BN?X30rUcB07YOOfToAc=&+myJOib=ccqp#S5p2V1zyyQtPZQWRm zM=jt5Hg#CwpfSe>yJ^k#g}t8~)K<<_4>(vm8*A;g6%ONp7aaNy{f%Syil5is)|(z1 z+8;~1bfX^*GkN7(e#no3O^t^-tDPL&tM75-Qy#Csuc7{%0}nL%9;pVcV&ULC_Mg{J zP08sxh$o-t9P8kinwyG0`TAa(YU0F!HR3XF&b3qR6_4%~+!gvGZ{V?y!6EAEa}AiX z;zLt#m^NjfrPcA$Q-9joFW%ayK&J?*6{(@#t@x*89}k8tnryHQ31k zUvL+&#eu%&5+AMP#ygL$XeXz}rgiA{m@dZPK%f10?3u79@RYCRC#(zo*34@MU&dU+ zo=2W%zx^B>y5QjNY@<9ftHIY9+v^8R`fzppnPP~o<*P92$CR# zzV@qoY{>ymU{dY`phZAkMdJTl-XHne3(?6)K+G`y+yu$;w^2MGO{mG#k^;2_GUi4ER z-s#{m@=spwr3Vbxru^W>-9ml!zJWh)$`@z2=&lQwi8w2l?|IRmd*u5>ofQiXx_s}& zk2}}jQ{gfWHaWb#0-yC>?@Ih+a0%1-6F1)HxC27JpAB%RM_u-4MvUs;ptW#NJMqJ> z*6;OKF2}6d+c1-U=JL+*8fh-hy}YnfKW9JoM{B{CftkiUZQj3y+LwKZbI1J!$H+xK z^!xs+jb5))t^A5(-g9<=6nG`h>)kze`~-*XrIz>fL0Dd$&t zqyFNivBbjj8v&n2&gB~T9?Z)9hK7P4^;cheYsNd8wTX9a*dMr6iql%(A9+8Ib$KVn zA-~&MvyAV3-F5!mkrX^jEAe#};$B0) z^azLip)t-6`uGjRd+y`vb59LtQ@n@)pF5E6Dsm+s717(QUB%%!{hZHz?N|98pq+P( zp9yjFb1&RHyI}c!Q*iSPg3Xg$R^chdzSXd0j%YRF>KYlket{fV*H+|5^wbJy;pE_9`bi&`aJKR zW0`>ZjAMy+px=-063zx1sT+49eK`7A()j#uIp6hVG@dwV`lT&_DR-a+x1@38)$Jj>(#u34|azh!^Pp2?odc8l%EV@G{<^tS`HYjzxa zYW9+HzbcH0uqt8p{qFJpw3%(m`u-LB%s#S9_POk1yDXp2{QnyKo1y&&}W%FyE96P76EB2Mu`uxPcRO^x>)Q)#iZJu9G{P_?0!cGjnVp30z zL@z$i3)__Mf!(v4wrw};qWmqpuFTu^t=-Y=X^+{Gsx2wpvUB19qt}JCrqMfg+wR&` z#XpqltLj}RsXv<@lQ}PF=DvO7Sa*eaQ){;~RGD8^bjDs$>^((~F=y?JV$KK~pZM^6 z;IZ4nzO}^QO~?OK^EZ4Jws*x7wKwcLt&Aslj&WZr;;LQKy4&*i?0YfECt@#`98?Y5 z + - - {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_D11;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 - $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 - - - Delphi.Personality - - -FalseTrueFalse/standaloneTrueFalse1040FalseFalseFalseFalseFalse308212521.0.4.01.0.4.0viernes, 16 de mayo de 2008 18:37FactuGES_Server.dpr - - - - - MainSource - - - - -
srvEmpresas
- TDARemoteService -
- - - - - - - - - - -
RptAlbaranesCliente
- TDataModule -
- -
RptWordAlbaranCliente
- TDataModule -
- -
srvAlbaranesCliente
- TDataAbstractService -
- - - - -
srvAlbaranesProveedor
- TDataAbstractService -
- - - -
srvAlmacenes
- TDARemoteService -
- - - - - - - - - - -
RptEtiquetasContacto
- TDataModule -
- -
RptFichasEmpleado
- TDataModule -
- -
srvContactos
- TDARemoteService -
- - - -
srvFabricantes
- TDataAbstractService -
- - - - -
RptFacturasCliente
- TDataModule -
- -
RptWordFacturaCliente
- TDataModule -
- -
srvFacturasCliente
- TDataAbstractService -
- - - - -
srvFacturasProveedor
- TDataAbstractService -
- - - - - - - - - - -
srvHistoricoMovimientos
- TDataAbstractService -
- - - -
srvInventario
- TDataAbstractService -
- - - - - - - - -
RptPedidosProveedor
- TDataModule -
- -
RptWordPedidoProveedor
- TDataModule -
- -
srvPedidosProveedor
- TDataAbstractService -
- - - - -
RptPresupuestosCliente
-
- -
RptWordPresupuestoCliente
- TDataModule -
- -
srvPresupuestosCliente
- TDataAbstractService -
- - - -
srvRecibosCliente
- TDataAbstractService -
- - - -
srvRecibosProveedor
- TDataAbstractService -
- - - -
srvReferencias
- TDataAbstractService -
- - - - -
srvRemesasCliente
- TDataAbstractService -
- - - - -
srvRemesasProveedor
- TDataAbstractService -
- - - - - - -
srvUnidadesMedida
- TDataAbstractService -
- - - -
srvConfiguracion
- TDataAbstractService -
- -
frConexionBD
- 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_D11;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 + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + + + Delphi.Personality + + + FalseTrueFalse/standaloneTrueFalse1040FalseFalseFalseFalseFalse308212521.0.4.01.0.4.0viernes, 16 de mayo de 2008 18:37FactuGES_Server.dpr + + + + + MainSource + + + + +
srvEmpresas
+ TDARemoteService +
+ + + + + + + + + + +
RptAlbaranesCliente
+ TDataModule +
+ +
RptWordAlbaranCliente
+ TDataModule +
+ +
srvAlbaranesCliente
+ TDataAbstractService +
+ + + + +
srvAlbaranesProveedor
+ TDataAbstractService +
+ + + +
srvAlmacenes
+ TDARemoteService +
+ + + + + + + + + + +
RptEtiquetasContacto
+ TDataModule +
+ +
RptFichasEmpleado
+ TDataModule +
+ +
srvContactos
+ TDARemoteService +
+ + + +
srvFabricantes
+ TDataAbstractService +
+ + + + +
RptFacturasCliente
+ TDataModule +
+ +
RptWordFacturaCliente
+ TDataModule +
+ +
srvFacturasCliente
+ TDataAbstractService +
+ + + + +
srvFacturasProveedor
+ TDataAbstractService +
+ + + + + + + + + + +
srvHistoricoMovimientos
+ TDataAbstractService +
+ + + +
srvInventario
+ TDataAbstractService +
+ + + + + + + + +
RptPedidosProveedor
+ TDataModule +
+ +
RptWordPedidoProveedor
+ TDataModule +
+ +
srvPedidosProveedor
+ TDataAbstractService +
+ + + + +
RptPresupuestosCliente
+
+ +
RptWordPresupuestoCliente
+ TDataModule +
+ +
srvPresupuestosCliente
+ TDataAbstractService +
+ + + +
srvRecibosCliente
+ TDataAbstractService +
+ + + +
srvRecibosProveedor
+ TDataAbstractService +
+ + + +
srvReferencias
+ TDataAbstractService +
+ + + + +
srvRemesasCliente
+ TDataAbstractService +
+ + + + +
srvRemesasProveedor
+ TDataAbstractService +
+ + + + + + +
srvUnidadesMedida
+ TDataAbstractService +
+ + + +
srvConfiguracion
+ TDataAbstractService +
+ +
frConexionBD
+ TFrame +
+ +
frConfGeneral
+ TFrame +
+ +
fConfiguracion
+ TForm +
+ +
FrameConfiguracion
+ TFrame +
+ +
srvLogin
+ TDARemoteService +
+ +
fAcercaDe
+
+ +
dmServer
+ TDataModule +
+ +
fServerForm
+
+ + + + + + + + + +