diff --git a/Build/Build.fbl6 b/Build/Build.fbl6
index 1db88da..32e3ad2 100644
Binary files a/Build/Build.fbl6 and b/Build/Build.fbl6 differ
diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql
index 800cf27..61c0b1a 100644
--- a/Database/scripts/factuges.sql
+++ b/Database/scripts/factuges.sql
@@ -2667,6 +2667,7 @@ CREATE VIEW V_FACTURAS_CLIENTE(
IMPORTE_TOTAL,
OBSERVACIONES,
ID_CLIENTE,
+ REFERENCIA_CLIENTE,
NOMBRE_CLIENTE,
NOMBRE_COMERCIAL_CLIENTE,
NIF_CIF,
@@ -2716,6 +2717,7 @@ SELECT FACTURAS_CLIENTE.ID,
FACTURAS_CLIENTE.IMPORTE_TOTAL,
FACTURAS_CLIENTE.OBSERVACIONES,
FACTURAS_CLIENTE.ID_CLIENTE,
+ CONTACTOS.REFERENCIA,
CONTACTOS.NOMBRE,
CLIENTES_DATOS.NOMBRE_COMERCIAL,
FACTURAS_CLIENTE.NIF_CIF,
@@ -2782,6 +2784,7 @@ CREATE VIEW V_FACTURAS_PROVEEDOR(
IMPORTE_TOTAL,
OBSERVACIONES,
ID_PROVEEDOR,
+ REF_PROVEEDOR,
NOMBRE_PROVEEDOR,
NOMBRE_COMERCIAL_PROVEEDOR,
NIF_CIF,
@@ -2828,6 +2831,7 @@ SELECT FACTURAS_PROVEEDOR.ID,
FACTURAS_PROVEEDOR.IMPORTE_TOTAL,
FACTURAS_PROVEEDOR.OBSERVACIONES,
FACTURAS_PROVEEDOR.ID_PROVEEDOR,
+ CONTACTOS.REFERENCIA,
CONTACTOS.NOMBRE,
PROVEEDORES_DATOS.NOMBRE_COMERCIAL,
FACTURAS_PROVEEDOR.NIF_CIF,
@@ -2864,8 +2868,7 @@ SELECT FACTURAS_PROVEEDOR.ID,
LEFT JOIN EMPRESAS_TIENDAS
ON (EMPRESAS_TIENDAS.ID = FACTURAS_PROVEEDOR.ID_TIENDA)
LEFT JOIN V_CONT_FAC_PRO_COMPRAS ON (V_CONT_FAC_PRO_COMPRAS.ID_FACTURA = FACTURAS_PROVEEDOR.ID)
-;
-
+;
/* Create view: V_COMISIONES */
CREATE VIEW V_COMISIONES(
diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj
index a0c3f23..057ca2e 100644
--- a/Source/Base/Base.dproj
+++ b/Source/Base/Base.dproj
@@ -44,13 +44,6 @@
Package
FalseTrueFalseLibreria base de FactuGESFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0
-
-
-
-
-
-
-
VCL for the Web Design Package for CodeGear RAD Studio
CodeGear WebSnap Components
CodeGear SOAP Components
@@ -65,55 +58,55 @@
MainSource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
TForm
diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj
index fb2c6b5..a3d883c 100644
--- a/Source/Cliente/FactuGES.dproj
+++ b/Source/Cliente/FactuGES.dproj
@@ -51,7 +51,7 @@
Delphi.Personality
VCLApplication
-FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2500FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.5.0.0FactuGESFactuGES2.5.0.0
+FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2510FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.5.1.0FactuGESFactuGES2.5.1.0
File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found
FactuGES.dprFalse
diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res
index ed2b904..75d4651 100644
Binary files a/Source/Cliente/FactuGES.res and b/Source/Cliente/FactuGES.res differ
diff --git a/Source/GUIBase/GUIBase.dproj b/Source/GUIBase/GUIBase.dproj
index f44e3be..e95f8e8 100644
--- a/Source/GUIBase/GUIBase.dproj
+++ b/Source/GUIBase/GUIBase.dproj
@@ -58,34 +58,34 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/1/InfAlbaranCliente.fr3 b/Source/Informes/1/InfAlbaranCliente.fr3
index 66fe6ad..e165474 100644
--- a/Source/Informes/1/InfAlbaranCliente.fr3
+++ b/Source/Informes/1/InfAlbaranCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -10,14 +10,14 @@
-
+
-
+
diff --git a/Source/Informes/1/InfFacturaCliente.fr3 b/Source/Informes/1/InfFacturaCliente.fr3
index 4d9413b..2041e53 100644
--- a/Source/Informes/1/InfFacturaCliente.fr3
+++ b/Source/Informes/1/InfFacturaCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -10,19 +10,20 @@
-
+
-
-
-
+
+
+
-
+
+
@@ -58,7 +59,7 @@
-
+
diff --git a/Source/Informes/1/InfReciboCliente.fr3 b/Source/Informes/1/InfReciboCliente.fr3
index 2182f73..ac32424 100644
--- a/Source/Informes/1/InfReciboCliente.fr3
+++ b/Source/Informes/1/InfReciboCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -59,8 +59,8 @@
-
-
+
+
diff --git a/Source/Informes/2/InfAlbaranCliente.fr3 b/Source/Informes/2/InfAlbaranCliente.fr3
index 66fe6ad..523ff53 100644
--- a/Source/Informes/2/InfAlbaranCliente.fr3
+++ b/Source/Informes/2/InfAlbaranCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -10,14 +10,14 @@
-
+
-
+
diff --git a/Source/Informes/2/InfFacturaCliente.fr3 b/Source/Informes/2/InfFacturaCliente.fr3
index 2a78fa8..1e0e954 100644
--- a/Source/Informes/2/InfFacturaCliente.fr3
+++ b/Source/Informes/2/InfFacturaCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -10,14 +10,14 @@
-
+
-
-
-
+
+
+
-
+
@@ -27,6 +27,7 @@
+
diff --git a/Source/Informes/2/InfReciboCliente.fr3 b/Source/Informes/2/InfReciboCliente.fr3
index 2182f73..9a18539 100644
--- a/Source/Informes/2/InfReciboCliente.fr3
+++ b/Source/Informes/2/InfReciboCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -59,8 +59,8 @@
-
-
+
+
diff --git a/Source/Informes/3/InfFacturaCliente.fr3 b/Source/Informes/3/InfFacturaCliente.fr3
index e6092d5..fe18a78 100644
--- a/Source/Informes/3/InfFacturaCliente.fr3
+++ b/Source/Informes/3/InfFacturaCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -12,9 +12,9 @@
-
-
-
+
+
+
@@ -23,6 +23,7 @@
+
@@ -44,13 +45,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -58,7 +59,7 @@
-
+
diff --git a/Source/Informes/4/InfFacturaCliente.fr3 b/Source/Informes/4/InfFacturaCliente.fr3
index e6092d5..920c8d9 100644
--- a/Source/Informes/4/InfFacturaCliente.fr3
+++ b/Source/Informes/4/InfFacturaCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -12,9 +12,9 @@
-
-
-
+
+
+
@@ -23,6 +23,7 @@
+
@@ -44,13 +45,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -58,7 +59,7 @@
-
+
diff --git a/Source/Informes/InfContratoCliente.fr3 b/Source/Informes/InfContratoCliente.fr3
index d889d6f..af7ab64 100644
--- a/Source/Informes/InfContratoCliente.fr3
+++ b/Source/Informes/InfContratoCliente.fr3
@@ -1,21 +1,21 @@
-
+
-
+
-
+
-
+
@@ -57,12 +57,12 @@
+
+
-
-
diff --git a/Source/Informes/InfPresupuestoCliente.fr3 b/Source/Informes/InfPresupuestoCliente.fr3
index a045039..02613c5 100644
--- a/Source/Informes/InfPresupuestoCliente.fr3
+++ b/Source/Informes/InfPresupuestoCliente.fr3
@@ -1,21 +1,21 @@
-
+
-
+
-
+
-
+
diff --git a/Source/Informes/InformeIVAClientes.fr3 b/Source/Informes/InformeIVAClientes.fr3
index 6fb6fe6..62aadcf 100644
--- a/Source/Informes/InformeIVAClientes.fr3
+++ b/Source/Informes/InformeIVAClientes.fr3
@@ -1,5 +1,5 @@
-
+
@@ -15,22 +15,24 @@
-
+
+
-
+
-
+
+
diff --git a/Source/Informes/InformeIVAClientesDesglosado.fr3 b/Source/Informes/InformeIVAClientesDesglosado.fr3
index 540f183..ed491aa 100644
--- a/Source/Informes/InformeIVAClientesDesglosado.fr3
+++ b/Source/Informes/InformeIVAClientesDesglosado.fr3
@@ -1,5 +1,5 @@
-
+
@@ -16,21 +16,23 @@
-
+
+
-
+
-
+
+
diff --git a/Source/Informes/InformeIVAProveedores.fr3 b/Source/Informes/InformeIVAProveedores.fr3
index ad220a0..ac35cf7 100644
--- a/Source/Informes/InformeIVAProveedores.fr3
+++ b/Source/Informes/InformeIVAProveedores.fr3
@@ -1,5 +1,5 @@
-
+
@@ -13,23 +13,25 @@
-
-
+
+
+
-
-
-
+
+
+
+
diff --git a/Source/Informes/InformeIVAProveedoresDesglosado.fr3 b/Source/Informes/InformeIVAProveedoresDesglosado.fr3
index 1a78de7..89b86f1 100644
--- a/Source/Informes/InformeIVAProveedoresDesglosado.fr3
+++ b/Source/Informes/InformeIVAProveedoresDesglosado.fr3
@@ -1,5 +1,5 @@
-
+
@@ -14,22 +14,24 @@
-
-
+
+
+
-
-
-
+
+
+
+
diff --git a/Source/Informes/InformeListadoFacturasCliente.fr3 b/Source/Informes/InformeListadoFacturasCliente.fr3
index 52250d0..008a9db 100644
--- a/Source/Informes/InformeListadoFacturasCliente.fr3
+++ b/Source/Informes/InformeListadoFacturasCliente.fr3
@@ -1,5 +1,5 @@
-
+
@@ -15,22 +15,26 @@
-
+
+
+
-
+
-
+
+
+
diff --git a/Source/Informes/InformeListadoFacturasRecibosCliente.fr3 b/Source/Informes/InformeListadoFacturasRecibosCliente.fr3
new file mode 100644
index 0000000..61b53e5
--- /dev/null
+++ b/Source/Informes/InformeListadoFacturasRecibosCliente.fr3
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Contactos/Views/Contactos_view.dpk b/Source/Modulos/Contactos/Views/Contactos_view.dpk
index 4eb9981..4c2a8bb 100644
--- a/Source/Modulos/Contactos/Views/Contactos_view.dpk
+++ b/Source/Modulos/Contactos/Views/Contactos_view.dpk
@@ -58,7 +58,8 @@ requires
GUISDK_D11R,
designide,
xmlrtl,
- vclactnband;
+ vclactnband,
+ GestorInformes_controller;
contains
uContactosViewRegister in 'uContactosViewRegister.pas',
diff --git a/Source/Modulos/Contactos/Views/Contactos_view.dproj b/Source/Modulos/Contactos/Views/Contactos_view.dproj
index f84744f..1feddfa 100644
--- a/Source/Modulos/Contactos/Views/Contactos_view.dproj
+++ b/Source/Modulos/Contactos/Views/Contactos_view.dproj
@@ -47,40 +47,41 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Contactos/Views/uEditorClientes.dfm b/Source/Modulos/Contactos/Views/uEditorClientes.dfm
index 8aa729a..7ed4333 100644
--- a/Source/Modulos/Contactos/Views/uEditorClientes.dfm
+++ b/Source/Modulos/Contactos/Views/uEditorClientes.dfm
@@ -57,6 +57,17 @@ inherited fEditorClientes: TfEditorClientes
inherited tbxMenu: TTBXToolbar
ExplicitWidth = 786
end
+ inherited TBXTMain2: TTBXToolbar
+ Left = 275
+ DockPos = 275
+ Visible = True
+ ExplicitLeft = 275
+ ExplicitWidth = 83
+ object TBXItem38: TTBXItem
+ Action = actInformes
+ DisplayMode = nbdmImageAndText
+ end
+ end
end
inherited StatusBar: TJvStatusBar
Top = 500
@@ -180,6 +191,12 @@ inherited fEditorClientes: TfEditorClientes
ImageIndex = 23
OnExecute = actGruposClienteExecute
end
+ object actInformes: TAction
+ Category = 'Informes'
+ Caption = 'Informes'
+ ImageIndex = 24
+ OnExecute = actInformesExecute
+ end
end
inherited SmallImages: TPngImageList [5]
PngImages = <
@@ -723,6 +740,27 @@ inherited fEditorClientes: TfEditorClientes
00000049454E44AE426082}
Name = 'PngImage23'
Background = clWindow
+ end
+ item
+ PngImage.Data = {
+ 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+ 610000000970485973000017120000171201679FD252000001A24944415478DA
+ 63FC61C0F09F71F72C86FFAE690C307A76D176065C2037CE9311C6FEFFFF3F03
+ E3CFD7B3FEFFEF5DC7C0D0B003883D18188B8318D84452E11AFE0115FDFDFB0F
+ 8CE7ACDACB306FE92686F33BA733C20D00B980E10403031BDB6F865FBF581918
+ 2C1818D8CFFF47D1FC076AC082B5FB1974D455188AEAFAC086E07481FB5A3B0C
+ A7AF8F926358B2E12043B0A70DC3CD7B2FC0869CDB318D91115B18B09E45D8FA
+ F71F82BD7CF361B01760006C008C3379D1F6FF39B11E0C5316EF6020047C9CCC
+ 1882926B300DC88C766330F5CA6138B26102D04654FF835C02A237EE39C9E061
+ 67C210965E8769405A840B83856F1E5EDB93A2FD189CAD0D19A2B31A310D480A
+ 7542B11542FF87DAFE1FC8FFCBF0E70F443C3EAF19D380B8400706FFA50F0986
+ 419F2D374372511BA601D17E76105BFFC1FCFD1FC287DAFA1BC90519A51D9806
+ 847BDB30ACDC7A84A00B8C74D419722ABB310D08F6B062F08EAD60583FAF151E
+ 06C8FE06D1A72E5E63D0D3546528A8E9C53420C0D582C12FA18A602CC0923386
+ 01BECEE6509BFE426D4762435D014AFF2080D500E4644A0C00190000D63E5BF0
+ 41A130430000000049454E44AE426082}
+ Name = 'PngImage24'
+ Background = clWindow
end>
Bitmap = {}
end
@@ -2480,4 +2518,310 @@ inherited fEditorClientes: TfEditorClientes
Left = 328
Top = 144
end
+ object JSInformesDialog: TJSDialog
+ Content.Strings = (
+ 'Seleccione el informe que desea realizar')
+ DialogOptions = [doCommandLinks, doModal]
+ 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 = 'Nuevo informe'
+ 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 = 'Listado facturas/cobros del cliente seleccionado'
+ Value = 400
+ end>
+ ButtonBar.Buttons = [cbCancel]
+ 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 = 408
+ Top = 80
+ end
end
diff --git a/Source/Modulos/Contactos/Views/uEditorClientes.pas b/Source/Modulos/Contactos/Views/uEditorClientes.pas
index 16d90ce..e26b394 100644
--- a/Source/Modulos/Contactos/Views/uEditorClientes.pas
+++ b/Source/Modulos/Contactos/Views/uEditorClientes.pas
@@ -21,7 +21,11 @@ type
actGruposCliente: TAction;
JsListaContactosNoEliminados: TJSDialog;
frViewClientes1: TfrViewClientes;
+ actInformes: TAction;
+ TBXItem38: TTBXItem;
+ JSInformesDialog: TJSDialog;
procedure actGruposClienteExecute(Sender: TObject);
+ procedure actInformesExecute(Sender: TObject);
protected
procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override;
@@ -36,7 +40,7 @@ implementation
uses
uGridUtils, uDataModuleContactos, uDMBase, uEditorGridBase, uBizContactos,
uDBSelectionListUtils, uDataModuleUsuarios, uDialogUtils, uFactuGES_App,
- uGruposClienteController, uBizGruposCliente, uClientesController;
+ uGruposClienteController, uBizGruposCliente, uClientesController, uGestorInformesController;
{$R *.dfm}
@@ -59,6 +63,31 @@ begin
end;
end;
+procedure TfEditorClientes.actInformesExecute(Sender: TObject);
+var
+ Respuesta : Integer;
+ AGestorInformesController : IGestorInformesController;
+
+begin
+ AGestorInformesController := TGestorInformesController.Create;
+ try
+
+ Respuesta := JsInformesDialog.Execute;
+
+ if Respuesta <> IDCANCEL then
+ begin
+ case JsInformesDialog.CustomButtonResult of
+ 400 : begin // Listado de facturas de cliente
+ AGestorInformesController.VerInformeListadoFacturasRecibosCli(Contactos.ID);
+ end;
+ end;
+ end;
+
+ finally
+ AGestorInformesController := NIL;
+ end;
+end;
+
constructor TfEditorClientes.Create(AOwner: TComponent);
begin
inherited;
diff --git a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dpk b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dpk
index 83d5781..95e5acb 100644
Binary files a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dpk and b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dpk differ
diff --git a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj
index cc9d93d..f309cba 100644
--- a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj
+++ b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj
@@ -1,4 +1,5 @@
-
+
+
{7ed85635-c723-4c0b-bf1d-f719e0ea33ad}
FacturasCliente_controller.dpk
@@ -48,24 +49,25 @@
MainSource
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas
index 6c6fa14..677d11e 100644
--- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas
+++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas
@@ -842,7 +842,7 @@ begin
if not Assigned(AFactura) then
raise Exception.Create ('Factura no asignado: EsEliminable');
-
+{
if (AFactura.SITUACION <> CTE_PENDIENTE) then
begin
Result := False;
@@ -858,6 +858,7 @@ begin
Result := False;
AComentario := 'La factura tiene un asiento asociado en la parte contable y está punteado, por lo que no puede ser eliminada';
end;
+ }
end;
function TFacturasClienteController.EsModificable(AFactura: IBizFacturaCliente; var AComentario: Variant): Boolean;
@@ -866,7 +867,7 @@ begin
if not Assigned(AFactura) then
raise Exception.Create ('Factura no asignado: EsModificable');
-
+{
if (AFactura.SITUACION <> CTE_PENDIENTE) then
begin
Result := False;
@@ -882,6 +883,7 @@ begin
Result := False;
AComentario := 'La factura tiene un asiento asociado en la parte contable y está punteado, por lo que no puede ser modificada';
end;
+}
end;
procedure TFacturasClienteController.RecalcularImportes(
@@ -1192,9 +1194,9 @@ begin
AFormasPagoController := TFormasPagoController.Create;
AFormaPago := AFormasPagoController.Buscar(AFactura.ID_FORMA_PAGO);
AFormaPago.DataTable.Active := True;
- if AFormaPago.DataTable.RecordCount <> 1 then
- Exit; //No hay forma de pago en la factura y por lo tanto no se generan recibos
- //raise Exception.Create('No existe la forma de pago de la factura');
+ if AFormaPago.Plazos.RecordCount = 0 then
+ Exit; //No hay plazos en la forma de pago en la factura y por lo tanto no se generan recibos
+
ARecibosClienteController := TRecibosClienteController.Create;
//Eliminamos todos los recibos que tuviera la factura porque sabemos que todos
diff --git a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas
index 5e150b8..c3ce569 100644
--- a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas
+++ b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas
@@ -9,9 +9,9 @@ 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_ListaAnosFacturas = '{BB9857AE-8858-44B1-A10B-EEBF38D61518}';
- RID_FacturasCliente = '{1746D02E-7BE8-4F08-9C96-54B091D8A1CA}';
- RID_FacturasCliente_Detalles = '{9296DD27-5DC8-48DE-9830-53497C1AAF6B}';
+ RID_ListaAnosFacturas = '{9504B0C5-CF6C-47DF-9BF1-D6EE693A246B}';
+ RID_FacturasCliente = '{E530BBA1-8BD8-4003-B11A-79C99E13E981}';
+ RID_FacturasCliente_Detalles = '{C963E80A-9A8F-4A71-82C8-4901A98FA7CC}';
{ Data table names }
nme_ListaAnosFacturas = 'ListaAnosFacturas';
@@ -159,7 +159,7 @@ const
type
{ IListaAnosFacturas }
IListaAnosFacturas = interface(IDAStronglyTypedDataTable)
- ['{4732CF5C-9ADB-4DF9-850E-DD63D351047D}']
+ ['{C9EB259F-ABF4-4646-BAE3-BDEED080DB84}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
@@ -194,7 +194,7 @@ type
{ IFacturasCliente }
IFacturasCliente = interface(IDAStronglyTypedDataTable)
- ['{4E6CAD4C-CB1B-475E-B8E2-A8689D3CD0FA}']
+ ['{8A5FD641-EA95-4CD6-9EAC-618D177DF7C0}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -793,7 +793,7 @@ type
{ IFacturasCliente_Detalles }
IFacturasCliente_Detalles = interface(IDAStronglyTypedDataTable)
- ['{C870BB3F-2BC1-4D03-866D-AE1901D32B6F}']
+ ['{51E6D6A2-EFC9-404B-B0EA-454ED0E4FBA4}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
diff --git a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas
index ba7c51d..6047301 100644
--- a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas
+++ b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas
@@ -9,14 +9,14 @@ 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_ListaAnosFacturasDelta = '{FEC79BF2-9523-44C6-8D31-052F8EB193E4}';
- RID_FacturasClienteDelta = '{02545CC3-5DF3-4C38-808E-85DE15E6A8DB}';
- RID_FacturasCliente_DetallesDelta = '{D1C6908F-F600-4774-BAB3-185998B8C0F7}';
+ RID_ListaAnosFacturasDelta = '{21A2ECEC-6B0B-464C-8545-1F8D439F3DCA}';
+ RID_FacturasClienteDelta = '{86F44C5A-7112-42F1-B15E-518660E2EAC2}';
+ RID_FacturasCliente_DetallesDelta = '{4FF3AB78-99DC-4F0F-B163-1155D2698082}';
type
{ IListaAnosFacturasDelta }
IListaAnosFacturasDelta = interface(IListaAnosFacturas)
- ['{FEC79BF2-9523-44C6-8D31-052F8EB193E4}']
+ ['{21A2ECEC-6B0B-464C-8545-1F8D439F3DCA}']
{ Property getters and setters }
function GetOldANOValue : String;
@@ -50,7 +50,7 @@ type
{ IFacturasClienteDelta }
IFacturasClienteDelta = interface(IFacturasCliente)
- ['{02545CC3-5DF3-4C38-808E-85DE15E6A8DB}']
+ ['{86F44C5A-7112-42F1-B15E-518660E2EAC2}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer;
@@ -649,7 +649,7 @@ type
{ IFacturasCliente_DetallesDelta }
IFacturasCliente_DetallesDelta = interface(IFacturasCliente_Detalles)
- ['{D1C6908F-F600-4774-BAB3-185998B8C0F7}']
+ ['{4FF3AB78-99DC-4F0F-B163-1155D2698082}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_FACTURAValue : Integer;
diff --git a/Source/Modulos/Facturas de cliente/Model/uBizFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Model/uBizFacturasCliente.pas
index 0d66e56..374be23 100644
--- a/Source/Modulos/Facturas de cliente/Model/uBizFacturasCliente.pas
+++ b/Source/Modulos/Facturas de cliente/Model/uBizFacturasCliente.pas
@@ -255,6 +255,7 @@ begin
USUARIO := AppFactuGES.UsuarioActivo.UserName;
FECHA_FACTURA := DateOf(Now);
TIPO := CTE_TIPO_FACTURA;
+ SITUACION := 'PENDIENTE';
ID_CLIENTE := ID_NULO;
SIN_COMISION := 0;
diff --git a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm
index 4d1fa9e..245fc59 100644
--- a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm
+++ b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm
@@ -103,6 +103,11 @@ object RptFacturasCliente: TRptFacturasCliente
DataType = datInteger
DictionaryEntry = 'FacturasCliente_ID_CLIENTE'
end
+ item
+ Name = 'REFERENCIA_CLIENTE'
+ DataType = datString
+ Size = 255
+ end
item
Name = 'NIF_CIF'
DataType = datString
@@ -478,9 +483,9 @@ object RptFacturasCliente: TRptFacturasCliente
#39' || extract (year from fecha_factura)'#10'when extract (month from ' +
'fecha_factura) = 12 then '#39'DICIEMBRE - '#39' || extract (year from fe' +
'cha_factura)'#10'end as TITULO,'#10'REFERENCIA, ID_CLIENTE, NOMBRE, SIT' +
- 'UACION, NIF_CIF, FECHA_FACTURA, BASE_IMPONIBLE, IMPORTE_IVA, IMP' +
- 'ORTE_TOTAL'#10#10'from V_facturas_cliente'#10'where {where}'#10'order by ANO, ' +
- 'MES, FECHA_FACTURA, NOMBRE'#10#10
+ 'UACION, NIF_CIF, REFERENCIA_CLIENTE, FECHA_FACTURA, BASE_IMPONIB' +
+ 'LE, IMPORTE_IVA, IMPORTE_TOTAL'#10#10'from V_facturas_cliente'#10'where {w' +
+ 'here}'#10'order by ANO, MES, FECHA_FACTURA, NOMBRE'#10#10
StatementType = stSQL
ColumnMappings = <
item
@@ -534,6 +539,10 @@ object RptFacturasCliente: TRptFacturasCliente
item
DatasetField = 'ANO'
TableField = 'ANO'
+ end
+ item
+ DatasetField = 'REFERENCIA_CLIENTE'
+ TableField = 'REFERENCIA_CLIENTE'
end>
end>
Name = 'ListadoFacturas'
@@ -579,6 +588,11 @@ object RptFacturasCliente: TRptFacturasCliente
DataType = datString
Size = 15
end
+ item
+ Name = 'REFERENCIA_CLIENTE'
+ DataType = datString
+ Size = 255
+ end
item
Name = 'FECHA_FACTURA'
DataType = datDateTime
@@ -618,23 +632,23 @@ object RptFacturasCliente: TRptFacturasCliente
'TE.RE, V_FACTURAS_CLIENTE.IMPORTE_RE,'#10' V_FACTURAS_CLIENTE.IMP' +
'ORTE_TOTAL,'#10' V_FACTURAS_CLIENTE.OBSERVACIONES, FORMAS_PAGO.DE' +
'SCRIPCION AS FORMA_PAGO, V_FACTURAS_CLIENTE.ID_CLIENTE,'#10' V_FA' +
- 'CTURAS_CLIENTE.NIF_CIF, V_FACTURAS_CLIENTE.NOMBRE, V_FACTURAS_CL' +
- 'IENTE.CALLE,'#10' V_FACTURAS_CLIENTE.PROVINCIA, V_FACTURAS_CLIENT' +
- 'E.CODIGO_POSTAL, V_FACTURAS_CLIENTE.POBLACION,'#10' CONTACTOS_DAT' +
- 'OS_BANCO.TITULAR,'#10' CONTACTOS_DATOS_BANCO.ENTIDAD,'#10' CONTACT' +
- 'OS_DATOS_BANCO.SUCURSAL,'#10' CONTACTOS_DATOS_BANCO.DC,'#10' CONTA' +
- 'CTOS_DATOS_BANCO.CUENTA,'#10' ID_EMPRESA, EMPRESAS.NIF_CIF as NIF' +
- '_CIF_EMPRESA, EMPRESAS.RAZON_SOCIAL,'#10' EMPRESAS.CALLE as CALLE' +
- '_EMPRESA, EMPRESAS.POBLACION as POBLACION_EMPRESA,'#10' EMPRESAS.' +
- 'PROVINCIA as PROVINCIA_EMPRESA, EMPRESAS.CODIGO_POSTAL as CODIGO' +
- '_POSTAL_EMPRESA,'#10' EMPRESAS.TELEFONO_1, EMPRESAS.FAX, EMPRESAS' +
- '.MOVIL_1, EMPRESAS.EMAIL_1,'#10' EMPRESAS.PAGINA_WEB, EMPRESAS.RE' +
- 'GISTRO_MERCANTIL, EMPRESAS.LOGOTIPO'#10'FROM V_FACTURAS_CLIENTE'#10'LEFT' +
- ' JOIN EMPRESAS ON EMPRESAS.ID = ID_EMPRESA'#10'LEFT JOIN FORMAS_PAGO' +
- ' ON (FORMAS_PAGO.ID = V_FACTURAS_CLIENTE.ID_FORMA_PAGO)'#10'LEFT JOI' +
- 'N CONTACTOS_DATOS_BANCO ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = ' +
- 'V_FACTURAS_CLIENTE.ID_CLIENTE)'#10'WHERE V_FACTURAS_CLIENTE.ID = :ID' +
- #10
+ 'CTURAS_CLIENTE.REFERENCIA_CLIENTE, V_FACTURAS_CLIENTE.NIF_CIF, V' +
+ '_FACTURAS_CLIENTE.NOMBRE, V_FACTURAS_CLIENTE.CALLE,'#10' V_FACTUR' +
+ 'AS_CLIENTE.PROVINCIA, V_FACTURAS_CLIENTE.CODIGO_POSTAL, V_FACTUR' +
+ 'AS_CLIENTE.POBLACION,'#10' CONTACTOS_DATOS_BANCO.TITULAR,'#10' CON' +
+ 'TACTOS_DATOS_BANCO.ENTIDAD,'#10' CONTACTOS_DATOS_BANCO.SUCURSAL,'#10 +
+ ' CONTACTOS_DATOS_BANCO.DC,'#10' CONTACTOS_DATOS_BANCO.CUENTA,'#10 +
+ ' ID_EMPRESA, EMPRESAS.NIF_CIF as NIF_CIF_EMPRESA, EMPRESAS.RA' +
+ 'ZON_SOCIAL,'#10' EMPRESAS.CALLE as CALLE_EMPRESA, EMPRESAS.POBLAC' +
+ 'ION as POBLACION_EMPRESA,'#10' EMPRESAS.PROVINCIA as PROVINCIA_EM' +
+ 'PRESA, EMPRESAS.CODIGO_POSTAL as CODIGO_POSTAL_EMPRESA,'#10' EMPR' +
+ 'ESAS.TELEFONO_1, EMPRESAS.FAX, EMPRESAS.MOVIL_1, EMPRESAS.EMAIL_' +
+ '1,'#10' EMPRESAS.PAGINA_WEB, EMPRESAS.REGISTRO_MERCANTIL, EMPRESA' +
+ 'S.LOGOTIPO'#10'FROM V_FACTURAS_CLIENTE'#10'LEFT JOIN EMPRESAS ON EMPRESA' +
+ 'S.ID = ID_EMPRESA'#10'LEFT JOIN FORMAS_PAGO ON (FORMAS_PAGO.ID = V_F' +
+ 'ACTURAS_CLIENTE.ID_FORMA_PAGO)'#10'LEFT JOIN CONTACTOS_DATOS_BANCO O' +
+ 'N (CONTACTOS_DATOS_BANCO.ID_CONTACTO = V_FACTURAS_CLIENTE.ID_CLI' +
+ 'ENTE)'#10'WHERE V_FACTURAS_CLIENTE.ID = :ID'#10
StatementType = stSQL
ColumnMappings = <
item
@@ -824,6 +838,11 @@ object RptFacturasCliente: TRptFacturasCliente
item
DatasetField = 'ID_TIENDA'
TableField = 'ID_TIENDA'
+ end
+ item
+ DatasetField = 'REFERENCIA_CLIENTE'
+ TableField = ''
+ SQLOrigin = 'REFERENCIA_CLIENTE'
end>
end>
Name = 'InformeFacturasCliente'
@@ -912,6 +931,11 @@ object RptFacturasCliente: TRptFacturasCliente
DataType = datInteger
DictionaryEntry = 'FacturasCliente_ID_CLIENTE'
end
+ item
+ Name = 'REFERENCIA_CLIENTE'
+ DataType = datString
+ Size = 255
+ end
item
Name = 'NIF_CIF'
DataType = datString
@@ -1203,6 +1227,100 @@ object RptFacturasCliente: TRptFacturasCliente
Name = 'IMPORTE_TOTAL'
DataType = datFloat
end>
+ end
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ SQL =
+ 'select ID_EMPRESA,'#10'REFERENCIA, ID_CLIENTE, NOMBRE_CLIENTE, SITU' +
+ 'ACION, NIF_CIF, FECHA_EMISION, FECHA_VENCIMIENTO, IMPORTE_TOTAL'#10 +
+ #10'from V_RECIBOS_cliente'#10'where {where}'#10'order by FECHA_EMISION, NO' +
+ 'MBRE_CLIENTE'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID_EMPRESA'
+ TableField = 'ID_EMPRESA'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'ID_CLIENTE'
+ TableField = 'ID_CLIENTE'
+ end
+ item
+ DatasetField = 'SITUACION'
+ TableField = 'SITUACION'
+ end
+ item
+ DatasetField = 'NIF_CIF'
+ TableField = 'NIF_CIF'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'NOMBRE_CLIENTE'
+ TableField = 'NOMBRE_CLIENTE'
+ end
+ item
+ DatasetField = 'FECHA_EMISION'
+ TableField = 'FECHA_EMISION'
+ end
+ item
+ DatasetField = 'FECHA_VENCIMIENTO'
+ TableField = 'FECHA_VENCIMIENTO'
+ end>
+ end>
+ Name = 'ListadoRecibos'
+ Fields = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ID_CLIENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'NOMBRE_CLIENTE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 9
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'FECHA_EMISION'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end>
end>
JoinDataTables = <>
UnionDataTables = <>
@@ -1413,11 +1531,16 @@ object RptFacturasCliente: TRptFacturasCliente
EngineOptions.DoublePass = True
IniFile = '\Software\Fast Reports'
PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator, pbExportQuick]
+ PreviewOptions.OutlineWidth = 180
PreviewOptions.Zoom = 1.000000000000000000
- PrintOptions.Printer = 'Por defecto'
+ PrintOptions.Printer = 'Default'
PrintOptions.PrintOnSheet = 0
- ReportOptions.CreateDate = 37800.807714351900000000
- ReportOptions.LastChange = 40871.744534236110000000
+ ReportOptions.CreateDate = 37871.995398692100000000
+ ReportOptions.LastChange = 40946.583372962960000000
+ ReportOptions.VersionBuild = '1'
+ ReportOptions.VersionMajor = '12'
+ ReportOptions.VersionMinor = '13'
+ ReportOptions.VersionRelease = '1'
ScriptLanguage = 'PascalScript'
ShowProgress = False
StoreInDFM = False
@@ -1494,6 +1617,10 @@ object RptFacturasCliente: TRptFacturasCliente
Name = 'ID_EMPRESA'
DataType = datInteger
end
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
item
Name = 'MES'
DataType = datSmallInt
@@ -1527,6 +1654,11 @@ object RptFacturasCliente: TRptFacturasCliente
DataType = datString
Size = 15
end
+ item
+ Name = 'REFERENCIA_CLIENTE'
+ DataType = datString
+ Size = 255
+ end
item
Name = 'FECHA_FACTURA'
DataType = datDateTime
@@ -1594,4 +1726,72 @@ object RptFacturasCliente: TRptFacturasCliente
Left = 584
Top = 192
end
+ object frxDBInformeListadoRecibos: TfrxDBDataset
+ UserName = 'frxDBInformeListadoRecibos'
+ CloseDataSource = True
+ DataSource = DADSInformeListadoRecibos
+ BCDToCurrency = False
+ Left = 736
+ Top = 16
+ end
+ object DADSInformeListadoRecibos: TDADataSource
+ DataSet = tbl_InformeListadoRecibos.Dataset
+ DataTable = tbl_InformeListadoRecibos
+ Left = 736
+ Top = 72
+ end
+ object tbl_InformeListadoRecibos: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'ID_CLIENTE'
+ DataType = datInteger
+ end
+ item
+ Name = 'NOMBRE_CLIENTE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 9
+ end
+ item
+ Name = 'NIF_CIF'
+ DataType = datString
+ Size = 15
+ end
+ item
+ Name = 'FECHA_EMISION'
+ DataType = datDateTime
+ end
+ item
+ Name = 'FECHA_VENCIMIENTO'
+ DataType = datDateTime
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end>
+ Params = <>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'ListadoRecibos'
+ IndexDefs = <>
+ Left = 736
+ Top = 128
+ end
end
diff --git a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas
index f420e19..2a1f43b 100644
--- a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas
+++ b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas
@@ -36,6 +36,9 @@ type
tbl_InformeListadoFacturasResumen: TDAMemDataTable;
DADSInformeListadoFacturasResumen: TDADataSource;
frxDBInformeListadoFacturasResumen: TfrxDBDataset;
+ frxDBInformeListadoRecibos: TfrxDBDataset;
+ DADSInformeListadoRecibos: TDADataSource;
+ tbl_InformeListadoRecibos: TDAMemDataTable;
schReport: TDASchema;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
@@ -66,6 +69,7 @@ type
function GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturas(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturasPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+ function GenerarInformeListadoFacturasRecibos(const IdEmpresa: Integer; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean): Binary;
end;
implementation
@@ -85,6 +89,8 @@ const
rptInformeListadoFacturasClienteDesglosado = 'InformeListadoFacturasClienteDesglosado.fr3';
rptInformeListadoFactuasClientePendiente = 'InformeListadoFacturasClientePendientes.fr3';
rptInformeListadoFactuasClientePendienteDesglosado = 'InformeListadoFacturasClientePendientesDesglosado.fr3';
+ rptInformeListadoFacturasRecibosCliente = 'InformeListadoFacturasRecibosCliente.fr3';
+ rptInformeListadoFacturasRecibosClienteDesglosado = 'InformeListadoFacturasRecibosClienteDesglosado.fr3';
ds_InformeListadoFacturasResumen = 'ListadoFacturasResumen';
@@ -323,6 +329,58 @@ begin
end;
end;
+function TRptFacturasCliente.GenerarInformeListadoFacturasRecibos(
+ const IdEmpresa: Integer; const ListaIDClientes: TIntegerArray;
+ const Desglosado: Boolean): Binary;
+var
+ ATipoInforme: String;
+ AStream: TMemoryStream;
+ dsMaster: IDADataset;
+
+begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FFechaInicio := Null;
+ FFechaFin := Null;
+
+ if Assigned(FListaIDClientes) then
+ FListaIDClientes.Free;
+ FListaIDClientes := ListaIDClientes;
+
+ //Se prepara la tabla del listado general del informe
+ if tbl_InformeListadoFacturas.Active then
+ tbl_InformeListadoFacturas.Active := False;
+ PrepararTablaInforme(tbl_InformeListadoFacturas);
+
+ //Se prepara la tabla del listado general del informe
+ if tbl_InformeListadoRecibos.Active then
+ tbl_InformeListadoRecibos.Active := False;
+ PrepararTablaInforme(tbl_InformeListadoRecibos);
+
+ //DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
+ FDesglosado := Desglosado;
+ if FDesglosado then
+ ATipoInforme := rptInformeListadoFacturasRecibosClienteDesglosado
+ else
+ ATipoInforme := rptInformeListadoFacturasRecibosCliente;
+
+ //Finalmente se abren las tablas del informe
+ tbl_InformeListadoFacturas.Active := True;
+ tbl_InformeListadoRecibos.Active := True;
+
+ Result := _GenerarInforme(ATipoInforme);
+
+ finally
+ AStream.Free;
+ dsMaster := Nil;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+end;
+
procedure TRptFacturasCliente.IniciarParametrosInforme;
var
ATextos : TStringList;
@@ -343,9 +401,9 @@ begin
if (not VarIsNull(FFechaInicio)) and (not VarIsNull(FFechaFin)) then
- ACadena := Format('Fechas de factura desde el %s hasta el %s', [VarToStr(FFechaInicio), VarToStr(FFechaFin)])
- else
- ACadena := 'Sin rango de fechas';
+ ACadena := Format('Fechas de factura desde el %s hasta el %s', [VarToStr(FFechaInicio), VarToStr(FFechaFin)]);
+// else
+// ACadena := 'Sin rango de fechas';
ATextos.Add(ACadena);
ACadena := '';
@@ -403,7 +461,7 @@ begin
end;
// Filtrar el informe por fechas
- if not VarIsNull(FFechaInicio)
+ if not VarIsNull(FFechaInicio)
and not VarIsNull(FFechaFin) then
begin
with ATabla.DynamicWhere do
diff --git a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm
index dd4a274..72c7254 100644
--- a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm
+++ b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.dfm
@@ -1075,6 +1075,12 @@ object srvFacturasCliente: TsrvFacturasCliente
Name = 'SIN_COMISION'
DataType = datSmallInt
Value = ''
+ end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 255
+ Value = ''
end>
Statements = <
item
@@ -1091,16 +1097,17 @@ object srvFacturasCliente: TsrvFacturasCliente
'A_MODIFICACION,'#10' USUARIO,'#10' ID_FORMA_PAGO,'#10' RECARGO_EQUI' +
'VALENCIA,'#10' ID_TIPO_IVA,'#10' IMPORTE_NETO,'#10' IMPORTE_PORTE,'#10 +
' IGNORAR_CONTABILIDAD,'#10' ID_TIENDA,'#10' ID_CONTRATO,'#10' SI' +
- 'N_COMISION)'#10' VALUES ('#10' :ID,'#10' :ID_EMPRESA,'#10' :REFERENCIA' +
- ','#10' :FECHA_FACTURA,'#10' :FECHA_VENCIMIENTO,'#10' :BASE_IMPONIBL' +
- 'E,'#10' :DESCUENTO,'#10' :IMPORTE_DESCUENTO,'#10' :IVA,'#10' :IMPORT' +
- 'E_IVA,'#10' :RE,'#10' :IMPORTE_RE,'#10' :IMPORTE_TOTAL,'#10' :OBSERV' +
- 'ACIONES,'#10' :ID_CLIENTE,'#10' :NIF_CIF,'#10' :NOMBRE,'#10' :CALLE,' +
- #10' :POBLACION,'#10' :PROVINCIA,'#10' :CODIGO_POSTAL,'#10' :FECHA_' +
- 'ALTA,'#10' :FECHA_MODIFICACION,'#10' :USUARIO,'#10' :ID_FORMA_PAGO,' +
- #10' :RECARGO_EQUIVALENCIA,'#10' :ID_TIPO_IVA,'#10' :IMPORTE_NETO,' +
- #10' :IMPORTE_PORTE,'#10' :IGNORAR_CONTABILIDAD,'#10' :ID_TIENDA,'#10 +
- ' :ID_CONTRATO,'#10' :SIN_COMISION);'#10
+ 'N_COMISION,'#10' SITUACION)'#10' VALUES ('#10' :ID,'#10' :ID_EMPRESA,'#10 +
+ ' :REFERENCIA,'#10' :FECHA_FACTURA,'#10' :FECHA_VENCIMIENTO,'#10' ' +
+ ' :BASE_IMPONIBLE,'#10' :DESCUENTO,'#10' :IMPORTE_DESCUENTO,'#10' :I' +
+ 'VA,'#10' :IMPORTE_IVA,'#10' :RE,'#10' :IMPORTE_RE,'#10' :IMPORTE_TOT' +
+ 'AL,'#10' :OBSERVACIONES,'#10' :ID_CLIENTE,'#10' :NIF_CIF,'#10' :NOMB' +
+ 'RE,'#10' :CALLE,'#10' :POBLACION,'#10' :PROVINCIA,'#10' :CODIGO_POST' +
+ 'AL,'#10' :FECHA_ALTA,'#10' :FECHA_MODIFICACION,'#10' :USUARIO,'#10' ' +
+ ':ID_FORMA_PAGO,'#10' :RECARGO_EQUIVALENCIA,'#10' :ID_TIPO_IVA,'#10' ' +
+ ' :IMPORTE_NETO,'#10' :IMPORTE_PORTE,'#10' :IGNORAR_CONTABILIDAD,'#10' ' +
+ ' :ID_TIENDA,'#10' :ID_CONTRATO,'#10' :SIN_COMISION,'#10' :SITUACI' +
+ 'ON);'#10
StatementType = stSQL
ColumnMappings = <>
end>
@@ -1276,6 +1283,12 @@ object srvFacturasCliente: TsrvFacturasCliente
DataType = datSmallInt
Value = ''
end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
item
Name = 'OLD_ID'
Value = ''
@@ -1301,8 +1314,8 @@ object srvFacturasCliente: TsrvFacturasCliente
'A = :ID_TIPO_IVA,'#10' IMPORTE_NETO = :IMPORTE_NETO,'#10' IMPORTE_' +
'PORTE = :IMPORTE_PORTE,'#10' IGNORAR_CONTABILIDAD = :IGNORAR_CONT' +
'ABILIDAD,'#10' ID_TIENDA = :ID_TIENDA,'#10' ID_CONTRATO = :ID_CONT' +
- 'RATO,'#10' SIN_COMISION = :SIN_COMISION'#10' WHERE'#10' (ID = :OLD_ID);' +
- #10
+ 'RATO,'#10' SIN_COMISION = :SIN_COMISION,'#10' SITUACION = :SITUACI' +
+ 'ON'#10' WHERE'#10' (ID = :OLD_ID);'#10
StatementType = stSQL
ColumnMappings = <>
end>
diff --git a/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dpk b/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dpk
index dbe1ac2..3d087ce 100644
Binary files a/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dpk and b/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dpk differ
diff --git a/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj b/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj
index 79c932f..d02f015 100644
--- a/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj
+++ b/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj
@@ -49,35 +49,48 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
TForm
diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm
index c038758..31ae7b6 100644
--- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm
+++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm
@@ -3792,6 +3792,11 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082}
Instruction.Icon = tdiCustom
CustomButtons = <
+ item
+ Caption = 'Listado de facturas'
+ Value = 300
+ Default = True
+ end
item
Caption = 'Listado de facturas pendientes.'
Value = 100
@@ -3802,8 +3807,8 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
Value = 200
end
item
- Caption = 'Listado de facturas'
- Value = 300
+ Caption = 'Listado facturas/cobros del cliente seleccionado'
+ Value = 400
end>
ButtonBar.Buttons = [cbCancel]
MainIcon = tdiCustom
diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas
index f7e9b23..9afbf7c 100644
--- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas
+++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas
@@ -34,7 +34,7 @@ type
JsListaFacturasNoEliminadas: TJSDialog;
actInformes: TAction;
JSInformesDialog: TJSDialog;
- TBXItem40: TTBXItem;
+ TBXItem40: TTBXItem;
procedure FormShow(Sender: TObject);
procedure actEliminarUpdate(Sender: TObject);
procedure actNuevaFacturaExecute(Sender: TObject);
@@ -112,13 +112,15 @@ begin
300 : begin // Listado de facturas de cliente
AGestorInformesController.VerInformeListadoFacturasCli;
end;
+ 400 : begin // Listado de facturas de cliente
+ AGestorInformesController.VerInformeListadoFacturasRecibosCli(Facturas.ID_CLIENTE);
+ end;
end;
end;
finally
AGestorInformesController := NIL;
end;
-
end;
procedure TfEditorFacturasCliente.actNuevaFacturaExecute(Sender: TObject);
diff --git a/Source/Modulos/Facturas de cliente/Views/uFacturasClienteViewRegister.pas b/Source/Modulos/Facturas de cliente/Views/uFacturasClienteViewRegister.pas
index b936871..855bd17 100644
--- a/Source/Modulos/Facturas de cliente/Views/uFacturasClienteViewRegister.pas
+++ b/Source/Modulos/Facturas de cliente/Views/uFacturasClienteViewRegister.pas
@@ -26,7 +26,7 @@ begin
EditorRegistry.UnRegisterClass(TfEditorFacturasCliente);
EditorRegistry.UnRegisterClass(TfEditorFacturaCliente);
EditorRegistry.UnRegisterClass(TfEditorElegirArticulosFacturaCliente);
- EditorRegistry.UnRegisterClass(TfEditorElegirFacturasCliente);
+ EditorRegistry.UnRegisterClass(TfEditorElegirFacturasCliente);
EditorRegistry.UnRegisterClass(TfEditorFacturasClientePreview);
end;
diff --git a/Source/Modulos/Facturas de cliente/Views/uViewFacturaCliente.dfm b/Source/Modulos/Facturas de cliente/Views/uViewFacturaCliente.dfm
index 0578e87..38d9442 100644
--- a/Source/Modulos/Facturas de cliente/Views/uViewFacturaCliente.dfm
+++ b/Source/Modulos/Facturas de cliente/Views/uViewFacturaCliente.dfm
@@ -64,7 +64,7 @@ inherited frViewFacturaCliente: TfrViewFacturaCliente
end
object cbFormaPago: TcxDBLookupComboBox
Left = 135
- Top = 108
+ Top = 135
DataBinding.DataField = 'ID_FORMA_PAGO'
DataBinding.DataSource = DADataSource
Properties.DropDownListStyle = lsFixedList
@@ -92,21 +92,21 @@ inherited frViewFacturaCliente: TfrViewFacturaCliente
StyleFocused.LookAndFeel.NativeStyle = True
StyleHot.LookAndFeel.Kind = lfStandard
StyleHot.LookAndFeel.NativeStyle = True
- TabOrder = 2
+ TabOrder = 3
Width = 78
end
object bFormasPago: TButton
Left = 241
- Top = 108
+ Top = 135
Width = 132
Height = 23
Caption = 'Ver las formas de pago...'
- TabOrder = 3
+ TabOrder = 4
OnClick = bFormasPagoClick
end
inline frViewTienda1: TfrViewTienda
Left = 22
- Top = 188
+ Top = 215
Width = 351
Height = 48
Enabled = False
@@ -116,10 +116,10 @@ inherited frViewFacturaCliente: TfrViewFacturaCliente
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
- TabOrder = 5
+ TabOrder = 6
ReadOnly = False
ExplicitLeft = 22
- ExplicitTop = 188
+ ExplicitTop = 215
ExplicitWidth = 351
ExplicitHeight = 48
inherited dxLayoutControl1: TdxLayoutControl
@@ -144,7 +144,7 @@ inherited frViewFacturaCliente: TfrViewFacturaCliente
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
- TabOrder = 7
+ TabOrder = 8
ReadOnly = False
ExplicitLeft = 401
ExplicitTop = 30
@@ -153,7 +153,7 @@ inherited frViewFacturaCliente: TfrViewFacturaCliente
inherited dxLayoutControl1: TdxLayoutControl
Width = 398
Height = 265
- ExplicitWidth = 101
+ ExplicitWidth = 398
ExplicitHeight = 265
inherited edtlNombre: TcxDBTextEdit
ExplicitWidth = 276
@@ -191,7 +191,7 @@ inherited frViewFacturaCliente: TfrViewFacturaCliente
end
object edtFechaVencimiento: TcxDBDateEdit
Left = 135
- Top = 137
+ Top = 164
Anchors = [akLeft, akTop, akRight]
DataBinding.DataField = 'FECHA_VENCIMIENTO'
DataBinding.DataSource = DADataSource
@@ -208,12 +208,12 @@ inherited frViewFacturaCliente: TfrViewFacturaCliente
StyleDisabled.LookAndFeel.NativeStyle = True
StyleFocused.LookAndFeel.NativeStyle = True
StyleHot.LookAndFeel.NativeStyle = True
- TabOrder = 4
+ TabOrder = 5
Width = 310
end
inline frViewObservaciones1: TfrViewObservaciones
Left = 22
- Top = 325
+ Top = 344
Width = 521
Height = 228
Font.Charset = DEFAULT_CHARSET
@@ -222,22 +222,21 @@ inherited frViewFacturaCliente: TfrViewFacturaCliente
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
- TabOrder = 8
+ TabOrder = 9
ReadOnly = False
ExplicitLeft = 22
- ExplicitTop = 325
+ ExplicitTop = 344
ExplicitHeight = 228
inherited memObservaciones: TcxDBMemo
DataBinding.DataField = 'OBSERVACIONES'
DataBinding.DataSource = DADataSource
- ExplicitWidth = 480
- ExplicitHeight = 20
+ ExplicitHeight = 228
Height = 228
end
end
object cbRecargoEquivalencia: TcxDBCheckBox
Left = 22
- Top = 266
+ Top = 293
Caption = ' No acogida a comisiones'
DataBinding.DataField = 'SIN_COMISION'
DataBinding.DataSource = DADataSource
@@ -263,9 +262,22 @@ inherited frViewFacturaCliente: TfrViewFacturaCliente
StyleHot.LookAndFeel.Kind = lfStandard
StyleHot.LookAndFeel.NativeStyle = True
StyleHot.LookAndFeel.SkinName = ''
- TabOrder = 6
+ TabOrder = 7
Width = 158
end
+ object edtSituacion: TcxDBComboBox
+ Left = 135
+ Top = 84
+ DataBinding.DataField = 'SITUACION'
+ DataBinding.DataSource = DADataSource
+ Properties.DropDownListStyle = lsFixedList
+ Properties.ImmediatePost = True
+ Properties.Items.Strings = (
+ 'PENDIENTE'
+ 'PAGADA')
+ TabOrder = 2
+ Width = 121
+ end
object dxLayoutControl1Group_Root: TdxLayoutGroup
ShowCaption = False
Hidden = True
@@ -295,6 +307,11 @@ inherited frViewFacturaCliente: TfrViewFacturaCliente
Control = edtFecha
ControlOptions.ShowBorder = False
end
+ object dxLayoutControl1Item8: TdxLayoutItem
+ Caption = 'Situaci'#243'n:'
+ Control = edtSituacion
+ ControlOptions.ShowBorder = False
+ end
end
object dxLayoutControl1Group8: TdxLayoutGroup
Caption = 'Forma de pago'
diff --git a/Source/Modulos/Facturas de cliente/Views/uViewFacturaCliente.pas b/Source/Modulos/Facturas de cliente/Views/uViewFacturaCliente.pas
index 27170ce..a3ac68e 100644
--- a/Source/Modulos/Facturas de cliente/Views/uViewFacturaCliente.pas
+++ b/Source/Modulos/Facturas de cliente/Views/uViewFacturaCliente.pas
@@ -58,6 +58,8 @@ type
dxLayoutControl1Item7: TdxLayoutItem;
cbRecargoEquivalencia: TcxDBCheckBox;
dxLayoutControl1Group9: TdxLayoutGroup;
+ edtSituacion: TcxDBComboBox;
+ dxLayoutControl1Item8: TdxLayoutItem;
procedure bFormasPagoClick(Sender: TObject);
procedure CustomViewDestroy(Sender: TObject);
procedure CustomViewCreate(Sender: TObject);
diff --git a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm
index dc0188b..28502b3 100644
--- a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm
+++ b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.dfm
@@ -164,9 +164,6 @@ inherited frViewFacturasCliente: TfrViewFacturasCliente
object cxGridPendientes: TcxGridLevel
Caption = 'Pendientes'
end
- object cxGridParcial: TcxGridLevel
- Caption = 'Parcialmente pagadas'
- end
object cxGridPagadas: TcxGridLevel
Caption = 'Pagadas'
end
diff --git a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas
index 3b18229..a082617 100644
--- a/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas
+++ b/Source/Modulos/Facturas de cliente/Views/uViewFacturasCliente.pas
@@ -43,7 +43,6 @@ type
cxGridViewPOBLACION: TcxGridDBColumn;
cxStylePagada: TcxStyle;
cxGridPendientes: TcxGridLevel;
- cxGridParcial: TcxGridLevel;
cxStyleAbono: TcxStyle;
cxGridPagadas: TcxGridLevel;
cxGridViewREFERENCIA_COMISION: TcxGridDBColumn;
@@ -207,9 +206,7 @@ begin
if (ASituacion = CTE_PAGADA) then
AStyle := cxStylePagada
else if (ASituacion = CTE_PENDIENTE) then
- AStyle := cxStylePendientes
- else if (ASituacion = CTE_PARCIAMENTE_PAGADA) then
- AStyle := cxStyleParciales;
+ AStyle := cxStylePendientes;
IndiceCol := cxGridViewIMPORTE_TOTAL.Index;
if (Pos('-', ARecord.DisplayTexts[IndiceCol]) > 0) then
diff --git a/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas b/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas
index dce3c01..5037e8a 100644
--- a/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas
+++ b/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas
@@ -700,7 +700,7 @@ begin
//De esta forma obligaremos siempre a tener un recibo asociado a la factura,
//porque si la forma de pago no tiene plazos es obligatorio la fecha de vencimiento
- with TFormasPagoController.Create do
+{ with TFormasPagoController.Create do
begin
try
AFormaPago := Buscar(AFactura.ID_FORMA_PAGO);
@@ -713,7 +713,7 @@ begin
Free;
end;
end;
-
+}
//En caso de ser un Abono no podra tener un importe total positivo
if (AFactura.TIPO = CTE_TIPO_ABONO) then
if (AFactura.IMPORTE_TOTAL >= 0) then
@@ -901,10 +901,10 @@ function TFacturasProveedorController.EsEliminable(AFactura: IBizFacturaProveedo
begin
Result := True;
AComentario := Null;
-
+
if not Assigned(AFactura) then
raise Exception.Create ('Factura no asignado: EsEliminable');
-
+{
if (AFactura.SITUACION <> CTE_PENDIENTE) then
begin
Result := False;
@@ -920,6 +920,7 @@ begin
Result := False;
AComentario := 'La factura tiene un asiento asociado en la parte contable y está punteado, por lo que no puede ser eliminada';
end;
+ }
end;
function TFacturasProveedorController.EsModificable(AFactura: IBizFacturaProveedor; var AComentario: Variant): Boolean;
@@ -929,7 +930,7 @@ begin
if not Assigned(AFactura) then
raise Exception.Create ('Factura no asignado: EsModificable');
-
+{
if (AFactura.SITUACION <> CTE_PENDIENTE) then
begin
Result := False;
@@ -945,6 +946,7 @@ begin
Result := False;
AComentario := 'La factura tiene un asiento asociado en la parte contable y está punteado, por lo que no puede ser modificada';
end;
+ }
end;
procedure TFacturasProveedorController.RecalcularImportes(FFactura: IBizFacturaProveedor);
@@ -1258,6 +1260,8 @@ begin
AFormasPagoController := TFormasPagoController.Create;
AFormaPago := AFormasPagoController.Buscar(AFactura.ID_FORMA_PAGO);
AFormaPago.DataTable.Active := True;
+ if AFormaPago.Plazos.RecordCount = 0 then
+ Exit; //No hay plazos en la forma de pago en la factura y por lo tanto no se generan recibos
ARecibosProveedorController := TRecibosProveedorController.Create;
//Eliminamos todos los recibos que tuviera la factura porque sabemos que todos
diff --git a/Source/Modulos/Facturas de proveedor/Model/schFacturasProveedorClient_Intf.pas b/Source/Modulos/Facturas de proveedor/Model/schFacturasProveedorClient_Intf.pas
index e52fc83..d71d1a2 100644
--- a/Source/Modulos/Facturas de proveedor/Model/schFacturasProveedorClient_Intf.pas
+++ b/Source/Modulos/Facturas de proveedor/Model/schFacturasProveedorClient_Intf.pas
@@ -9,11 +9,11 @@ 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_ListaAnosFacturas = '{7B9F91D4-906B-4935-A6E5-7E5E73CFB8F2}';
- RID_FacturasProveedor_Contratos = '{7E19810B-9DA8-42DE-826F-B33D7DBDCD51}';
- RID_TiposFacturaProveedor = '{E83ABFBC-6F47-4597-979C-3224CC00DBDC}';
- RID_FacturasProveedor = '{26602041-C101-4CAC-824C-C6B0A3705AE8}';
- RID_FacturasProveedor_Detalles = '{C7E32006-F921-4ADB-BB08-ED1080FBE6DB}';
+ RID_ListaAnosFacturas = '{C7DA1898-B917-4186-82B9-EF7F3688C121}';
+ RID_FacturasProveedor_Contratos = '{3BA8F2FD-0730-4766-B593-D8B413B5905B}';
+ RID_TiposFacturaProveedor = '{99A70923-CC81-401B-A06C-3AEFA31F1956}';
+ RID_FacturasProveedor = '{703B7E51-6194-4F69-B9BC-849C4821B81B}';
+ RID_FacturasProveedor_Detalles = '{355A9F5B-B76A-4ED7-AD99-723ECC24197E}';
{ Data table names }
nme_ListaAnosFacturas = 'ListaAnosFacturas';
@@ -183,7 +183,7 @@ const
type
{ IListaAnosFacturas }
IListaAnosFacturas = interface(IDAStronglyTypedDataTable)
- ['{E98FAB1D-C712-4BC4-AAE2-5E272B360182}']
+ ['{39519A2A-11BC-4AFA-B812-3055340CAE84}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
@@ -218,7 +218,7 @@ type
{ IFacturasProveedor_Contratos }
IFacturasProveedor_Contratos = interface(IDAStronglyTypedDataTable)
- ['{0948BC64-862D-4801-9685-1E3C97546BDF}']
+ ['{42B0326B-8965-4E74-AC91-64D82C5ABCAA}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -325,7 +325,7 @@ type
{ ITiposFacturaProveedor }
ITiposFacturaProveedor = interface(IDAStronglyTypedDataTable)
- ['{41EB9AC4-EFD3-4658-8A2C-0CE7201B01F6}']
+ ['{940D609C-16AA-442E-84A1-6C0181D4F10D}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -372,7 +372,7 @@ type
{ IFacturasProveedor }
IFacturasProveedor = interface(IDAStronglyTypedDataTable)
- ['{53426A0C-9DB7-48CF-9BBF-67D257B9ED00}']
+ ['{07C8CFF1-8C44-4C84-9171-83E0C9AF81FE}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
@@ -935,7 +935,7 @@ type
{ IFacturasProveedor_Detalles }
IFacturasProveedor_Detalles = interface(IDAStronglyTypedDataTable)
- ['{ECA81852-45B3-412C-A605-B45F1B613919}']
+ ['{97EF127B-7478-45C9-B15F-832618C17F19}']
{ Property getters and setters }
function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer);
diff --git a/Source/Modulos/Facturas de proveedor/Model/schFacturasProveedorServer_Intf.pas b/Source/Modulos/Facturas de proveedor/Model/schFacturasProveedorServer_Intf.pas
index 38ae1ec..51412b3 100644
--- a/Source/Modulos/Facturas de proveedor/Model/schFacturasProveedorServer_Intf.pas
+++ b/Source/Modulos/Facturas de proveedor/Model/schFacturasProveedorServer_Intf.pas
@@ -9,16 +9,16 @@ 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_ListaAnosFacturasDelta = '{79CD54D1-C44E-46EE-A1AF-51519F94D7DF}';
- RID_FacturasProveedor_ContratosDelta = '{32634786-2D30-4A75-8340-98AD18294F4B}';
- RID_TiposFacturaProveedorDelta = '{D717E826-757A-4ECC-B805-D23971441080}';
- RID_FacturasProveedorDelta = '{2B0FBE68-9C7D-495D-AF70-0C9328D36439}';
- RID_FacturasProveedor_DetallesDelta = '{40BDCDE5-A538-4805-BB46-239472F69265}';
+ RID_ListaAnosFacturasDelta = '{B5BAE581-991C-4B73-9455-984D9A5AB62B}';
+ RID_FacturasProveedor_ContratosDelta = '{F3AA3D9B-47DB-4B66-914C-ADF42111EAFB}';
+ RID_TiposFacturaProveedorDelta = '{72320F2D-F96B-42D2-8046-226C5F0CFF90}';
+ RID_FacturasProveedorDelta = '{56EEC02F-6B35-4538-A885-E3FD6408F13B}';
+ RID_FacturasProveedor_DetallesDelta = '{918408EE-23B5-4145-B189-D7B8CC62E7F6}';
type
{ IListaAnosFacturasDelta }
IListaAnosFacturasDelta = interface(IListaAnosFacturas)
- ['{79CD54D1-C44E-46EE-A1AF-51519F94D7DF}']
+ ['{B5BAE581-991C-4B73-9455-984D9A5AB62B}']
{ Property getters and setters }
function GetOldANOValue : String;
@@ -52,7 +52,7 @@ type
{ IFacturasProveedor_ContratosDelta }
IFacturasProveedor_ContratosDelta = interface(IFacturasProveedor_Contratos)
- ['{32634786-2D30-4A75-8340-98AD18294F4B}']
+ ['{F3AA3D9B-47DB-4B66-914C-ADF42111EAFB}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_FACTURAValue : Integer;
@@ -158,7 +158,7 @@ type
{ ITiposFacturaProveedorDelta }
ITiposFacturaProveedorDelta = interface(ITiposFacturaProveedor)
- ['{D717E826-757A-4ECC-B805-D23971441080}']
+ ['{72320F2D-F96B-42D2-8046-226C5F0CFF90}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldDESCRIPCIONValue : String;
@@ -204,7 +204,7 @@ type
{ IFacturasProveedorDelta }
IFacturasProveedorDelta = interface(IFacturasProveedor)
- ['{2B0FBE68-9C7D-495D-AF70-0C9328D36439}']
+ ['{56EEC02F-6B35-4538-A885-E3FD6408F13B}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer;
@@ -767,7 +767,7 @@ type
{ IFacturasProveedor_DetallesDelta }
IFacturasProveedor_DetallesDelta = interface(IFacturasProveedor_Detalles)
- ['{40BDCDE5-A538-4805-BB46-239472F69265}']
+ ['{918408EE-23B5-4145-B189-D7B8CC62E7F6}']
{ Property getters and setters }
function GetOldIDValue : Integer;
function GetOldID_FACTURAValue : Integer;
diff --git a/Source/Modulos/Facturas de proveedor/Model/uBizFacturasProveedor.pas b/Source/Modulos/Facturas de proveedor/Model/uBizFacturasProveedor.pas
index c757d69..a7defa5 100644
--- a/Source/Modulos/Facturas de proveedor/Model/uBizFacturasProveedor.pas
+++ b/Source/Modulos/Facturas de proveedor/Model/uBizFacturasProveedor.pas
@@ -14,7 +14,6 @@ const
CTE_TIPO_FACTURA = 'F';
CTE_PENDIENTE = 'PENDIENTE';
- CTE_PARCIAMENTE_PAGADA = 'PARCIALMENTE PAGADA';
CTE_PAGADA = 'PAGADA';
type
diff --git a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm
index b2683e6..d052396 100644
--- a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm
+++ b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm
@@ -155,10 +155,10 @@ object RptFacturasProveedor: TRptFacturasProveedor
#39' || extract (year from fecha_factura)'#10'when extract (month from ' +
'fecha_factura) = 12 then '#39'DICIEMBRE - '#39' || extract (year from fe' +
'cha_factura)'#10'end as TITULO,'#10'REFERENCIA, REFERENCIA_PROVEEDOR, ID' +
- '_PROVEEDOR, NOMBRE, SITUACION, NIF_CIF,'#10'FECHA_FACTURA, FECHA_VEN' +
- 'CIMIENTO, BASE_IMPONIBLE, IMPORTE_IVA, IMPORTE_TOTAL'#10#10'from V_fac' +
- 'turas_proveedor'#10'where {where}'#10'order by ANO, MES, FECHA_FACTURA, ' +
- 'NOMBRE'#10#10
+ '_PROVEEDOR, REF_PROVEEDOR, NOMBRE, SITUACION, NIF_CIF,'#10'FECHA_FAC' +
+ 'TURA, FECHA_VENCIMIENTO, BASE_IMPONIBLE, IMPORTE_IVA, IMPORTE_TO' +
+ 'TAL'#10#10'from V_facturas_proveedor'#10'where {where}'#10'order by ANO, MES, ' +
+ 'FECHA_FACTURA, NOMBRE'#10#10
StatementType = stSQL
ColumnMappings = <
item
@@ -223,6 +223,10 @@ object RptFacturasProveedor: TRptFacturasProveedor
item
DatasetField = 'REFERENCIA_PROVEEDOR'
TableField = 'REFERENCIA_PROVEEDOR'
+ end
+ item
+ DatasetField = 'REF_PROVEEDOR'
+ TableField = 'REF_PROVEEDOR'
end>
end>
Name = 'ListadoFacturasProveedor'
@@ -258,6 +262,11 @@ object RptFacturasProveedor: TRptFacturasProveedor
Name = 'ID_PROVEEDOR'
DataType = datInteger
end
+ item
+ Name = 'REF_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ end
item
Name = 'NOMBRE'
DataType = datString
@@ -507,7 +516,7 @@ object RptFacturasProveedor: TRptFacturasProveedor
PrintOptions.Printer = 'Por defecto'
PrintOptions.PrintOnSheet = 0
ReportOptions.CreateDate = 37800.807714351900000000
- ReportOptions.LastChange = 39884.811485821760000000
+ ReportOptions.LastChange = 40945.691024224540000000
ScriptLanguage = 'PascalScript'
ShowProgress = False
StoreInDFM = False
@@ -540,10 +549,20 @@ object RptFacturasProveedor: TRptFacturasProveedor
DataType = datString
Size = 255
end
+ item
+ Name = 'REFERENCIA_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ end
item
Name = 'ID_PROVEEDOR'
DataType = datInteger
end
+ item
+ Name = 'REF_PROVEEDOR'
+ DataType = datString
+ Size = 255
+ end
item
Name = 'NOMBRE'
DataType = datString
@@ -560,11 +579,11 @@ object RptFacturasProveedor: TRptFacturasProveedor
Size = 15
end
item
- Name = 'FECHA'
+ Name = 'FECHA_FACTURA'
DataType = datDateTime
end
item
- Name = 'FECHA_FACTURA'
+ Name = 'FECHA_VENCIMIENTO'
DataType = datDateTime
end
item
diff --git a/Source/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.dfm b/Source/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.dfm
index 96d427a..4e9c0d9 100644
--- a/Source/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.dfm
+++ b/Source/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.dfm
@@ -1008,6 +1008,12 @@ object srvFacturasProveedor: TsrvFacturasProveedor
Name = 'ID_TIPO_FACTURA'
DataType = datInteger
Value = ''
+ end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 255
+ Value = ''
end>
Statements = <
item
@@ -1023,16 +1029,16 @@ object srvFacturasProveedor: TsrvFacturasProveedor
', PROVINCIA, CODIGO_POSTAL, '#10' FECHA_ALTA, FECHA_MODIFICACION' +
', USUARIO, ID_FORMA_PAGO, '#10' RECARGO_EQUIVALENCIA, ID_TIPO_IV' +
'A, IMPORTE_NETO, IMPORTE_PORTE, IGNORAR_CONTABILIDAD,'#10' ID_TI' +
- 'ENDA, ID_TIPO_FACTURA)'#10' VALUES'#10' (:ID, :ID_EMPRESA, :REFERENC' +
- 'IA, :REFERENCIA_PROVEEDOR,'#10' :FECHA_FACTURA, :FECHA_VENCIMIEN' +
- 'TO, :BASE_IMPONIBLE, :DESCUENTO,'#10' :IMPORTE_DESCUENTO, :IVA, ' +
- ':IMPORTE_IVA, :IRPF, :IMPORTE_IRPF,'#10' :RE, :IMPORTE_RE, :IMPO' +
- 'RTE_TOTAL, :OBSERVACIONES, :ID_PROVEEDOR, :NIF_CIF,'#10' :NOMBRE' +
- ', :CALLE, :POBLACION, :PROVINCIA, :CODIGO_POSTAL, '#10' :FECHA_A' +
- 'LTA, :FECHA_MODIFICACION, :USUARIO, :ID_FORMA_PAGO, '#10' :RECAR' +
- 'GO_EQUIVALENCIA, :ID_TIPO_IVA, :IMPORTE_NETO, '#10' :IMPORTE_POR' +
- 'TE, :IGNORAR_CONTABILIDAD, :ID_TIENDA, :ID_TIPO_FACTURA)'#10' '#10' ' +
- ' '#10#10
+ 'ENDA, ID_TIPO_FACTURA, SITUACION)'#10' VALUES'#10' (:ID, :ID_EMPRESA' +
+ ', :REFERENCIA, :REFERENCIA_PROVEEDOR,'#10' :FECHA_FACTURA, :FECH' +
+ 'A_VENCIMIENTO, :BASE_IMPONIBLE, :DESCUENTO,'#10' :IMPORTE_DESCUE' +
+ 'NTO, :IVA, :IMPORTE_IVA, :IRPF, :IMPORTE_IRPF,'#10' :RE, :IMPORT' +
+ 'E_RE, :IMPORTE_TOTAL, :OBSERVACIONES, :ID_PROVEEDOR, :NIF_CIF,'#10' ' +
+ ' :NOMBRE, :CALLE, :POBLACION, :PROVINCIA, :CODIGO_POSTAL, '#10' ' +
+ ' :FECHA_ALTA, :FECHA_MODIFICACION, :USUARIO, :ID_FORMA_PAGO, '#10 +
+ ' :RECARGO_EQUIVALENCIA, :ID_TIPO_IVA, :IMPORTE_NETO, '#10' :' +
+ 'IMPORTE_PORTE, :IGNORAR_CONTABILIDAD, :ID_TIENDA, :ID_TIPO_FACTU' +
+ 'RA, :SITUACION)'#10' '#10' '#10#10
StatementType = stSQL
ColumnMappings = <>
end>
@@ -1243,6 +1249,12 @@ object srvFacturasProveedor: TsrvFacturasProveedor
DataType = datInteger
Value = ''
end
+ item
+ Name = 'SITUACION'
+ DataType = datString
+ Size = 255
+ Value = ''
+ end
item
Name = 'OLD_ID'
Value = ''
@@ -1271,7 +1283,8 @@ object srvFacturasProveedor: TsrvFacturasProveedor
', '#10' ID_TIPO_IVA = :ID_TIPO_IVA, '#10' IMPORTE_NETO = :IMPORTE_' +
'NETO, '#10' IMPORTE_PORTE = :IMPORTE_PORTE,'#10' IGNORAR_CONTABILI' +
'DAD = :IGNORAR_CONTABILIDAD,'#10' ID_TIENDA = :ID_TIENDA,'#10' ID_' +
- 'TIPO_FACTURA = :ID_TIPO_FACTURA'#10' WHERE'#10' (ID = :OLD_ID)'#10
+ 'TIPO_FACTURA = :ID_TIPO_FACTURA,'#10' SITUACION = :SITUACION'#10' WH' +
+ 'ERE'#10' (ID = :OLD_ID)'#10
StatementType = stSQL
ColumnMappings = <>
end>
diff --git a/Source/Modulos/Facturas de proveedor/Views/FacturasProveedor_view.dproj b/Source/Modulos/Facturas de proveedor/Views/FacturasProveedor_view.dproj
index 79bf539..32c17e3 100644
--- a/Source/Modulos/Facturas de proveedor/Views/FacturasProveedor_view.dproj
+++ b/Source/Modulos/Facturas de proveedor/Views/FacturasProveedor_view.dproj
@@ -41,6 +41,9 @@
Package
FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0
+
+
+
RemObjects Pascal Script - RemObjects SDK 3.0 Integration
FacturasProveedor_view.dpk
@@ -49,37 +52,42 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
TfEditorElegirArticulosFacturaProveedor
@@ -121,11 +129,6 @@
TFrame
-
-
-
-
-