diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql index 8131eab7..1ec82639 100644 --- a/Database/scripts/factuges.sql +++ b/Database/scripts/factuges.sql @@ -305,9 +305,7 @@ end^ SET TERM ; ^ GRANT SELECT ON PRESUPUESTOS_CLIENTE_DETALLES TO PROCEDURE PRO_PRES_CAPITULOS; -GRANT EXECUTE ON PROCEDURE PRO_PRES_CAPITULOS TO SYSDBA; - - +GRANT EXECUTE ON PROCEDURE PRO_PRES_CAPITULOS TO TO "PUBLIC"; SET TERM ^ ; @@ -360,7 +358,107 @@ SET TERM ; ^ GRANT SELECT ON PRESUPUESTOS_CLIENTE_DETALLES TO PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS; GRANT SELECT ON ARTICULOS TO PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS; -GRANT EXECUTE ON PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS TO SYSDBA; +GRANT EXECUTE ON PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS TO "PUBLIC"; + + +SET TERM ^ ; + +CREATE PROCEDURE PRO_PRES_RESUMEN ( + aid integer) +returns ( + id integer, + id_presupuesto integer, + posicion integer, + tipo_detalle varchar(10), + concepto varchar(2000), + importe_total numeric(11,2), + visible smallint) +as +declare variable num_capitulos integer; +declare variable num_filas integer; +declare variable contador integer; +declare variable existe numeric(11,2); +declare variable total_acumulado numeric(11,2); +declare variable concepto_capitulo varchar(2000) character set iso8859_1; +begin + existe = 0; + total_acumulado = 0.0; + contador = 0; + num_filas = 0; + num_capitulos = 0; + concepto_capitulo = ''; + + /* ¿Existe el presupuesto? */ + for select count(*) + from presupuestos_cliente_detalles + where id_presupuesto = :AID + into :num_filas + do + begin + if (num_filas = 0) then + suspend; + end + + /* Ver si hay conceptos al principio sin capitulos */ + for select id, id_presupuesto, posicion, tipo_detalle + from presupuestos_cliente_detalles + where id_presupuesto = :AID + order by id_presupuesto, posicion + rows 1 + into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE + do + begin + if (TIPO_DETALLE = 'Concepto') then + EXISTE = 1; + end + + if (existe = 1) then + begin + contador = 0; + /* Existen conceptos sin capitulo */ + for select tipo_detalle, importe_total, coalesce(visible, 1) + from presupuestos_cliente_detalles + where id_presupuesto = :AID + order by id_presupuesto, posicion + into :TIPO_DETALLE, :IMPORTE_TOTAL, :VISIBLE + do + begin + contador = contador + 1; + if ((tipo_detalle <> 'Concepto') or (contador = num_filas)) then + begin + importe_total = total_acumulado; + tipo_detalle = 'Titulo'; + concepto = 'General'; + visible = 1; + ID = -1; + posicion = -1; + suspend; + break; + end + else begin + if (visible <> 0) then + total_acumulado = total_acumulado + importe_total; + end + end + end + + + /* Tratar el resto de las filas */ + for select id, id_presupuesto, posicion, tipo_detalle, F_RTFTOTEXT(concepto) as concepto, + importe_total, coalesce(visible, 1) + from presupuestos_cliente_detalles + where tipo_detalle = 'Subtotal' and id_presupuesto = :AID + order by id_presupuesto, posicion + into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :CONCEPTO, + :IMPORTE_TOTAL, :VISIBLE + do + suspend; +end^ + +SET TERM ; ^ +GRANT SELECT ON PRESUPUESTOS_CLIENTE_DETALLES TO PROCEDURE PRO_PRES_RESUMEN; +GRANT EXECUTE ON PROCEDURE PRO_PRES_RESUMEN TO "PUBLIC"; + /******************************************************************************/ /**** Tables ****/ @@ -2803,7 +2901,7 @@ begin end - for select id, id_presupuesto, posicion, tipo_detalle, concepto, + for select id, id_presupuesto, posicion, tipo_detalle, F_RTFTOTEXT(concepto) as concepto, importe_total, coalesce(visible, 1) from presupuestos_cliente_detalles where tipo_detalle <> 'Concepto' and id_presupuesto = :AID diff --git a/Database/scripts/factuges_sysdata.sql b/Database/scripts/factuges_sysdata.sql index bcc8eae5..04313688 100644 --- a/Database/scripts/factuges_sysdata.sql +++ b/Database/scripts/factuges_sysdata.sql @@ -50,6 +50,55 @@ SET GENERATOR GEN_TIPOS_IVA_ID TO 5; COMMIT WORK; +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (2, 'A LA VISTA', 'A LA VISTA', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (3, 'CONTADO', 'CONTADO', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (4, 'EFECTO 60 DIAS', 'EFECTO 60 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (5, 'EFECTO 90 DIAS', 'EFECTO 90 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (6, 'GIRO BANCARIO 30 DIAS', 'GIRO BANCARIO 30 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (7, 'GIRO BANCARIO 60 DIAS', 'GIRO BANCARIO 60 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (8, 'PAGARÉ 30 DIAS', 'PAGARÉ 30 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (9, 'PAGARÉ 60 DIAS', 'PAGARÉ 60 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (10, 'PAGARÉ 90 DIAS', 'PAGARÉ 90 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (11, 'PAGARÉ A 120 DIAS.', 'PAGARÉ A 120 DIAS.', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (12, 'RECIBO 30 DIAS', 'RECIBO 30 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (13, 'RECIBO 60 DIAS', 'RECIBO 60 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (14, 'RECIBO 90 DIAS', 'RECIBO 90 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (15, 'TALÓN 30 DIAS.', 'TALÓN 30 DIAS.', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (16, 'TALÓN 45 DIAS.', 'TALÓN 45 DIAS.', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (17, 'TALÓN 60 DIAS.', 'TALÓN 60 DIAS.', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (18, 'TALÓN 90 DIAS.', 'TALÓN 90 DIAS.', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (19, 'TRANSFERENCIA A 30 DIAS.', 'TRANSFERENCIA A 30 DIAS.', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (20, 'TRANSFERENCIA A 60 DIAS', 'TRANSFERENCIA A 60 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (21, 'TRANSFERENCIA A 90 DIAS', 'TRANSFERENCIA A 90 DIAS', NULL, NULL, NULL, NULL, NULL); +INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (22, 'TRANSFERENCIA CONTADO', 'TRANSFERENCIA CONTADO', NULL, NULL, NULL, NULL, NULL); +SET GENERATOR GEN_FORMAS_PAGO_ID TO 23; +COMMIT WORK; + +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (2, 2, NULL, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (3, 3, 0, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (4, 4, 60, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (5, 5, 90, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (6, 6, 30, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (7, 7, 60, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (8, 8, 30, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (9, 9, 60, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (10, 10, 90, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (11, 11, 120, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (12, 12, 30, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (13, 13, 60, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (14, 14, 90, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (16, 15, 30, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (17, 16, 45, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (18, 17, 60, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (19, 18, 90, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (20, 19, 30, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (21, 20, 60, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (22, 21, 90, 100); +INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (23, 22, 0, 100); +SET GENERATOR GEN_FORMAS_PAGO_PLAZOS_ID TO 24; +COMMIT WORK; + + INSERT INTO UNIDADES_MEDIDA (ID, DESCRIPCION) VALUES (1, 'M²'); INSERT INTO UNIDADES_MEDIDA (ID, DESCRIPCION) VALUES (2, 'ROLLOS'); INSERT INTO UNIDADES_MEDIDA (ID, DESCRIPCION) VALUES (3, 'MTS.'); diff --git a/Source/Informes/InfPresupuestoCliente.fr3 b/Source/Informes/InfPresupuestoCliente.fr3 index af21ec0b..b2f3e54e 100644 --- a/Source/Informes/InfPresupuestoCliente.fr3 +++ b/Source/Informes/InfPresupuestoCliente.fr3 @@ -1,5 +1,5 @@ - + @@ -68,7 +68,7 @@ - + @@ -91,17 +91,17 @@ - + - - - - - - - - + + + + + + + + diff --git a/Source/Modulos/Articulos/Views/uEditorArticulo.pas b/Source/Modulos/Articulos/Views/uEditorArticulo.pas index d9ac13c0..1eb4af0c 100644 --- a/Source/Modulos/Articulos/Views/uEditorArticulo.pas +++ b/Source/Modulos/Articulos/Views/uEditorArticulo.pas @@ -96,6 +96,9 @@ begin FTitulo := 'Nuevo artículo' else FTitulo := 'Artículo'; + + if Length(Articulo.DESCRIPCION) > 0 then + FTitulo := FTitulo + ' - ' + Articulo.DESCRIPCION; end; inherited PonerTitulos(FTitulo); diff --git a/Source/Modulos/Articulos/Views/uEditorArticulos.dfm b/Source/Modulos/Articulos/Views/uEditorArticulos.dfm index 4d3a0ba5..637190c8 100644 --- a/Source/Modulos/Articulos/Views/uEditorArticulos.dfm +++ b/Source/Modulos/Articulos/Views/uEditorArticulos.dfm @@ -2,7 +2,6 @@ inherited fEditorArticulos: TfEditorArticulos Left = 489 Top = 325 Caption = 'Lista de art'#237'culos' - ExplicitHeight = 471 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader diff --git a/Source/Modulos/Articulos/Views/uEditorArticulos.pas b/Source/Modulos/Articulos/Views/uEditorArticulos.pas index 17f14d2d..81a41f3f 100644 Binary files a/Source/Modulos/Articulos/Views/uEditorArticulos.pas and b/Source/Modulos/Articulos/Views/uEditorArticulos.pas differ diff --git a/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.dfm b/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.dfm index 477f746d..3019b099 100644 --- a/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.dfm +++ b/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.dfm @@ -295,6 +295,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente end> Statements = < item + Connection = 'IBX' ConnectionType = 'Interbase' Default = True SQL = @@ -432,6 +433,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente end> Statements = < item + Connection = 'IBX' ConnectionType = 'Interbase' Default = True SQL = @@ -507,16 +509,17 @@ object RptPresupuestosCliente: TRptPresupuestosCliente Params = < item Name = 'ID_PRESUPUESTO' - Value = '' + Value = '2' ParamType = daptInput end> Statements = < item Connection = 'IBX' ConnectionType = 'Interbase' + Default = True SQL = - 'SELECT * FROM PRO_PRES_CAPITULOS(:ID_PRESUPUESTO)'#10'WHERE (VISIBLE' + - ' <> 0) AND {where}'#10'ORDER BY ID_PRESUPUESTO, POSICION'#10 + 'SELECT * FROM PRO_PRES_RESUMEN(:ID_PRESUPUESTO)'#10'WHERE (VISIBLE <' + + '> 0) AND {where}'#10'ORDER BY ID_PRESUPUESTO, POSICION'#10 StatementType = stSQL ColumnMappings = < item @@ -606,7 +609,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente PrintOptions.Printer = 'Por defecto' PrintOptions.PrintOnSheet = 0 ReportOptions.CreateDate = 39065.872423495400000000 - ReportOptions.LastChange = 39460.834465046300000000 + ReportOptions.LastChange = 39461.553128067100000000 ScriptLanguage = 'PascalScript' ScriptText.Strings = ( '' diff --git a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.pas b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.pas index 7b15ecb1..fe83899d 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestoCliente.pas @@ -228,7 +228,7 @@ begin case FPresupuesto.Cliente.Direcciones.RecordCount of 0 : begin FController.QuitarDireccionEnvio(FPresupuesto); - MessageBox(0, '¡Atención! Este cliente no tiene ' + #10#13 + 'ninguna dirección en su ficha', 'Atención', MB_ICONWARNING or MB_OK); + //MessageBox(0, '¡Atención! Este cliente no tiene ninguna dirección en su ficha', 'Atención', MB_ICONWARNING or MB_OK); FPresupuesto.Edit; FPresupuesto.IMPORTE_PORTE := 0; end;