diff --git a/Build/Build.fbp5 b/Build/Build.fbp5 index 14cbe849..952854ab 100644 --- a/Build/Build.fbp5 +++ b/Build/Build.fbp5 @@ -16180,6 +16180,134 @@ Comments= True + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + + False + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 1 + + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + True + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql index e9b04e5f..071ec540 100644 --- a/Database/scripts/factuges.sql +++ b/Database/scripts/factuges.sql @@ -395,36 +395,20 @@ BEGIN EXIT; END^ - -CREATE PROCEDURE PRO_PRES_CAPITULOS ( - aid integer) +CREATE PROCEDURE PROC_PRE_CON_CAPITULOS ( + aid integer, tipo varchar(15)) as begin exit; end^ -CREATE PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS ( - aid integer) +CREATE PROCEDURE PROC_PRE_CON_CAPITULOS_CONCEP( + aid integer, tipo varchar(15)) as begin exit; end^ -CREATE PROCEDURE PRO_PRES_CAPITULOS_TOTALES ( - aid integer) -as -begin -exit; -end^ - -CREATE PROCEDURE PRO_PRES_RESUMEN ( - aid integer) -as -begin -exit; -end^ - - SET TERM ; ^ @@ -5165,11 +5149,11 @@ begin end ^ -ALTER PROCEDURE PRO_PRES_CAPITULOS ( - aid integer) +ALTER PROCEDURE PROC_PRE_CON_CAPITULOS ( + aid integer, tipo varchar(15)) returns ( id integer, - id_presupuesto integer, + id_pre_con integer, posicion integer, tipo_detalle varchar(25), concepto varchar(2000), @@ -5209,77 +5193,129 @@ begin tipo_detalle_aux = 'Titulo'; tipo_articulo_aux = 'NA'; - /* ¿Existe el presupuesto? */ - for select count(*) - from presupuestos_cliente_detalles - where id_presupuesto = :AID - into :num_filas - do + if (TIPO = 'Presupuesto') then begin + /* ¿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; + suspend; + end + end + else if (TIPO = 'Contrato') then + begin + /* ¿Existe el contrato? */ + for select count(*) + from contratos_cliente_detalles + where id_contrato = :AID + into :num_filas + do + begin + if (num_filas = 0) then + suspend; + end end - for select id, id_presupuesto, posicion, tipo_detalle, tipo_articulo, F_RTFTOTEXT(concepto) as concepto, - coalesce(descuento,0), coalesce(importe_total,0), coalesce(visible, 1) - from presupuestos_cliente_detalles - where id_presupuesto = :AID - order by id_presupuesto, posicion - into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :TIPO_ARTICULO, :CONCEPTO, - :DESCUENTO, :IMPORTE_TOTAL, :VISIBLE - do + if (TIPO = 'Presupuesto') then begin - contador = contador + 1; - - /*CONCEPTO*/ - if ((visible <> 0) and (tipo_detalle = 'Concepto')) then + for select id, id_presupuesto, posicion, tipo_detalle, tipo_articulo, F_RTFTOTEXT(concepto) as concepto, + coalesce(descuento,0), coalesce(importe_total,0), coalesce(visible, 1) + from presupuestos_cliente_detalles + where id_presupuesto = :AID + order by id_presupuesto, posicion + into :ID, :ID_PRE_CON, :POSICION, :TIPO_DETALLE, :TIPO_ARTICULO, :CONCEPTO, + :DESCUENTO, :IMPORTE_TOTAL, :VISIBLE + do begin - /*Escribimos capitulo anterior*/ - if ((Importe_total > 0) and - ((ultimo_tipo_detalle = 'Descuento') - or (ultimo_tipo_detalle = 'Subtotal'))) then - begin - Importe_aux = Importe_total; - id = id_aux; - posicion = posicion_aux; - tipo_detalle = tipo_detalle_aux; - tipo_articulo = tipo_articulo_aux; - concepto = concepto_aux; - importe_total = total_acumulado; - importe_descuento = importe_descuento_aux; - descuento = descuento_aux; - visible = 1; - suspend; - total_acumulado = 0.0; - importe_descuento_aux = 0.0; - descuento_aux = 0.0; - /*Inicializamos*/ - ID_AUX = -1; - posicion_aux = -1; - concepto_aux = 'General'; - tipo_detalle_aux = 'Titulo'; - tipo_articulo_aux = 'NA'; - importe_total = Importe_aux; - end + contador = contador + 1; - total_acumulado = total_acumulado + importe_total; - ultimo_tipo_detalle = tipo_detalle; - end + /*CONCEPTO*/ + if ((visible <> 0) and (tipo_detalle = 'Concepto')) then + begin + /*Escribimos capitulo anterior*/ + if ((Importe_total > 0) + and ((ultimo_tipo_detalle = 'Descuento') or (ultimo_tipo_detalle = 'Subtotal'))) then + begin + Importe_aux = Importe_total; + id = id_aux; + posicion = posicion_aux; + tipo_detalle = tipo_detalle_aux; + tipo_articulo = tipo_articulo_aux; + concepto = concepto_aux; + importe_total = total_acumulado; + importe_descuento = importe_descuento_aux; + descuento = descuento_aux; + visible = 1; + suspend; + total_acumulado = 0.0; + importe_descuento_aux = 0.0; + descuento_aux = 0.0; + /*Inicializamos*/ + ID_AUX = -1; + posicion_aux = -1; + concepto_aux = 'General'; + tipo_detalle_aux = 'Titulo'; + tipo_articulo_aux = 'NA'; + importe_total = Importe_aux; + end - /*TITULO*/ - else if ((tipo_detalle = 'Titulo') or (tipo_detalle = 'Titulo opcional')) then - begin - ultimo_tipo_detalle = tipo_detalle; + total_acumulado = total_acumulado + importe_total; + ultimo_tipo_detalle = tipo_detalle; + end - id_aux_temp = id; - posicion_aux_temp = posicion; - tipo_detalle_aux_temp = tipo_detalle; - tipo_articulo_aux_temp = tipo_articulo; - concepto_aux_temp = concepto; + /*TITULO*/ + else if ((tipo_detalle = 'Titulo') or (tipo_detalle = 'Titulo opcional')) then + begin + ultimo_tipo_detalle = tipo_detalle; + id_aux_temp = id; + posicion_aux_temp = posicion; + tipo_detalle_aux_temp = tipo_detalle; + tipo_articulo_aux_temp = tipo_articulo; + concepto_aux_temp = concepto; - /*Escribimos capitulo anterior*/ - if (id_aux > 0) then + /*Escribimos capitulo anterior*/ + if (id_aux > 0) then + begin + id = id_aux; + posicion = posicion_aux; + tipo_detalle = tipo_detalle_aux; + tipo_articulo = tipo_articulo_aux; + concepto = concepto_aux; + importe_total = total_acumulado; + importe_descuento = importe_descuento_aux; + descuento = descuento_aux; + visible = 1; + suspend; + total_acumulado = 0.0; + importe_descuento_aux = 0.0; + descuento_aux = 0.0; + end + + id_aux = id_aux_temp; + posicion_aux = posicion_aux_temp; + tipo_detalle_aux = tipo_detalle_aux_temp; + tipo_articulo_aux = tipo_articulo_aux_temp; + concepto_aux = concepto_aux_temp; + end + + /*SUBTOTAL*/ + else if (tipo_detalle = 'Subtotal') then + begin + ultimo_tipo_detalle = tipo_detalle; + end + else if (tipo_detalle = 'Descuento') then + begin + ultimo_tipo_detalle = tipo_detalle; + importe_descuento_aux = importe_total; + descuento_aux = descuento; + end + + if (contador = num_filas) then begin id = id_aux; posicion = posicion_aux; @@ -5291,33 +5327,106 @@ begin descuento = descuento_aux; visible = 1; suspend; - total_acumulado = 0.0; - importe_descuento_aux = 0.0; - descuento_aux = 0.0; + break; + end + end + end + else if (TIPO = 'Contrato') then + begin + for select id, id_contrato, posicion, tipo_detalle, tipo_articulo, F_RTFTOTEXT(concepto) as concepto, + coalesce(descuento,0), coalesce(importe_total,0), coalesce(visible, 1) + from contratos_cliente_detalles + where id_contrato = :AID + order by id_contrato, posicion + into :ID, :ID_PRE_CON, :POSICION, :TIPO_DETALLE, :TIPO_ARTICULO, :CONCEPTO, + :DESCUENTO, :IMPORTE_TOTAL, :VISIBLE + do + begin + contador = contador + 1; + + /*CONCEPTO*/ + if ((visible <> 0) and (tipo_detalle = 'Concepto')) then + begin + /*Escribimos capitulo anterior*/ + if ((Importe_total > 0) + and ((ultimo_tipo_detalle = 'Descuento') or (ultimo_tipo_detalle = 'Subtotal'))) then + begin + Importe_aux = Importe_total; + id = id_aux; + posicion = posicion_aux; + tipo_detalle = tipo_detalle_aux; + tipo_articulo = tipo_articulo_aux; + concepto = concepto_aux; + importe_total = total_acumulado; + importe_descuento = importe_descuento_aux; + descuento = descuento_aux; + visible = 1; + suspend; + total_acumulado = 0.0; + importe_descuento_aux = 0.0; + descuento_aux = 0.0; + /*Inicializamos*/ + ID_AUX = -1; + posicion_aux = -1; + concepto_aux = 'General'; + tipo_detalle_aux = 'Titulo'; + tipo_articulo_aux = 'NA'; + importe_total = Importe_aux; + end + + total_acumulado = total_acumulado + importe_total; + ultimo_tipo_detalle = tipo_detalle; end - id_aux = id_aux_temp; - posicion_aux = posicion_aux_temp; - tipo_detalle_aux = tipo_detalle_aux_temp; - tipo_articulo_aux = tipo_articulo_aux_temp; - concepto_aux = concepto_aux_temp; - end + /*TITULO*/ + else if ((tipo_detalle = 'Titulo') or (tipo_detalle = 'Titulo opcional')) then + begin + ultimo_tipo_detalle = tipo_detalle; + id_aux_temp = id; + posicion_aux_temp = posicion; + tipo_detalle_aux_temp = tipo_detalle; + tipo_articulo_aux_temp = tipo_articulo; + concepto_aux_temp = concepto; - /*SUBTOTAL*/ - else if (tipo_detalle = 'Subtotal') then - begin - ultimo_tipo_detalle = tipo_detalle; - end + /*Escribimos capitulo anterior*/ + if (id_aux > 0) then + begin + id = id_aux; + posicion = posicion_aux; + tipo_detalle = tipo_detalle_aux; + tipo_articulo = tipo_articulo_aux; + concepto = concepto_aux; + importe_total = total_acumulado; + importe_descuento = importe_descuento_aux; + descuento = descuento_aux; + visible = 1; + suspend; + total_acumulado = 0.0; + importe_descuento_aux = 0.0; + descuento_aux = 0.0; + end - else if (tipo_detalle = 'Descuento') then - begin - ultimo_tipo_detalle = tipo_detalle; - importe_descuento_aux = importe_total; - descuento_aux = descuento; - end + id_aux = id_aux_temp; + posicion_aux = posicion_aux_temp; + tipo_detalle_aux = tipo_detalle_aux_temp; + tipo_articulo_aux = tipo_articulo_aux_temp; + concepto_aux = concepto_aux_temp; + end - if (contador = num_filas) then - begin + /*SUBTOTAL*/ + else if (tipo_detalle = 'Subtotal') then + begin + ultimo_tipo_detalle = tipo_detalle; + end + else if (tipo_detalle = 'Descuento') then + begin + ultimo_tipo_detalle = tipo_detalle; + importe_descuento_aux = importe_total; + descuento_aux = descuento; + end + + if (contador = num_filas) then + begin id = id_aux; posicion = posicion_aux; tipo_detalle = tipo_detalle_aux; @@ -5329,16 +5438,17 @@ begin visible = 1; suspend; break; + end end end -end; -^ +end^ -ALTER PROCEDURE PRO_PRES_CAPITULOS_CONCEPTOS ( - aid integer) +ALTER PROCEDURE PROC_PRE_CON_CAPITULOS_CONCEP ( + aid integer, + tipo varchar(15)) returns ( id integer, - id_presupuesto integer, + id_pre_con integer, posicion integer, tipo_detalle varchar(25), id_capitulo integer, @@ -5357,248 +5467,86 @@ declare variable capitulo_actual integer; begin capitulo_actual = -1; ID_CAPITULO = -1; -for select pre.id, pre.id_presupuesto, pre.posicion, pre.tipo_detalle, - coalesce(pre.tipo_articulo,'NA'), pre.id_articulo, presupuestos_propiedades.descripcion, + +if (TIPO = 'Presupuesto') then +begin + for select pre.id, pre.id_presupuesto, pre.posicion, pre.tipo_detalle, + coalesce(pre.tipo_articulo,'NA'), pre.id_articulo, presupuestos_propiedades.descripcion, /* F_RTFTOTEXT(F_RTFTOTEXT(pre.CONCEPTO)) as CONCEPTO,*/ - pre.CONCEPTO, - pre.cantidad, - case - when (pre.descuento <> 0) then (pre.importe_total / pre.cantidad) - else pre.importe_unidad - end as importe_unidad, - pre.descuento, pre.importe_porte, - pre.importe_total, coalesce(pre.visible, 1) - from presupuestos_cliente_detalles pre - left join presupuestos_propiedades on (pre.id_articulo = presupuestos_propiedades.id) - where pre.id_presupuesto = :AID - order by pre.id_presupuesto, pre.posicion - into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, - :TIPO_ARTICULO, :ID_ARTICULO, :PROPIEDAD, :CONCEPTO, :CANTIDAD, - :IMPORTE_UNIDAD, :DESCUENTO, :IMPORTE_PORTE, :IMPORTE_TOTAL, :VISIBLE -do + pre.CONCEPTO, + pre.cantidad, + case + when (pre.descuento <> 0) then (pre.importe_total / pre.cantidad) + else pre.importe_unidad + end as importe_unidad, + pre.descuento, pre.importe_porte, + pre.importe_total, coalesce(pre.visible, 1) + from presupuestos_cliente_detalles pre + left join presupuestos_propiedades on (pre.id_articulo = presupuestos_propiedades.id) + where pre.id_presupuesto = :AID + order by pre.id_presupuesto, pre.posicion + into :ID, :ID_PRE_CON, :POSICION, :TIPO_DETALLE, + :TIPO_ARTICULO, :ID_ARTICULO, :PROPIEDAD, :CONCEPTO, :CANTIDAD, + :IMPORTE_UNIDAD, :DESCUENTO, :IMPORTE_PORTE, :IMPORTE_TOTAL, :VISIBLE + do + begin + if (:tipo_detalle = 'Titulo') then begin - if (:tipo_detalle = 'Titulo') then - begin - capitulo_actual = :ID; - ID_CAPITULO = capitulo_actual; - end - else if ((:tipo_detalle = 'Subtotal') - or (:tipo_detalle = 'Descuento')) then - begin - capitulo_actual = -1; - ID_CAPITULO = capitulo_actual; - end - else - if (:tipo_detalle = 'Concepto') then - begin - suspend; - end + capitulo_actual = :ID; + ID_CAPITULO = capitulo_actual; end -end; -^ - -ALTER PROCEDURE PRO_PRES_CAPITULOS_TOTALES ( - aid integer) -returns ( - id integer, - id_presupuesto integer, - posicion integer, - tipo_detalle varchar(25), - concepto varchar(2000), - importe_total numeric(11,2), - visible smallint, - tipo_articulo varchar(2)) -as -declare variable num_filas integer; -declare variable contador integer; -declare variable existe numeric(11,2); -declare variable total_acumulado numeric(11,2); + else if ((:tipo_detalle = 'Subtotal') + or (:tipo_detalle = 'Descuento')) then + begin + capitulo_actual = -1; + ID_CAPITULO = capitulo_actual; + end + else if (:tipo_detalle = 'Concepto') then + begin + suspend; + end + end +end +else if (TIPO = 'Contrato') then begin - existe = 0; - total_acumulado = 0.0; - contador = 0; - num_filas = 0; - - /* ¿Existe el presupuesto? */ - for select count(*) - from presupuestos_cliente_detalles - where id_presupuesto = :AID - into :num_filas - do + for select pre.id, pre.id_contrato, pre.posicion, pre.tipo_detalle, + coalesce(pre.tipo_articulo,'NA'), pre.id_articulo, presupuestos_propiedades.descripcion, +/* F_RTFTOTEXT(F_RTFTOTEXT(pre.CONCEPTO)) as CONCEPTO,*/ + pre.CONCEPTO, + pre.cantidad, + case + when (pre.descuento <> 0) then (pre.importe_total / pre.cantidad) + else pre.importe_unidad + end as importe_unidad, + pre.descuento, pre.importe_porte, + pre.importe_total, coalesce(pre.visible, 1) + from contratos_cliente_detalles pre + left join presupuestos_propiedades on (pre.id_articulo = presupuestos_propiedades.id) + where pre.id_contrato = :AID + order by pre.id_contrato, pre.posicion + into :ID, :ID_PRE_CON, :POSICION, :TIPO_DETALLE, + :TIPO_ARTICULO, :ID_ARTICULO, :PROPIEDAD, :CONCEPTO, :CANTIDAD, + :IMPORTE_UNIDAD, :DESCUENTO, :IMPORTE_PORTE, :IMPORTE_TOTAL, :VISIBLE + do + begin + if (:tipo_detalle = 'Titulo') then begin - if (num_filas = 0) then - suspend; + capitulo_actual = :ID; + ID_CAPITULO = capitulo_actual; end - - /* Ver si hay conceptos al principio sin capitulos */ - for select id, id_presupuesto, posicion, tipo_detalle, tipo_articulo - from presupuestos_cliente_detalles - where id_presupuesto = :AID - order by id_presupuesto, posicion - rows 1 - into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :TIPO_ARTICULO - do + else if ((:tipo_detalle = 'Subtotal') + or (:tipo_detalle = 'Descuento')) then begin - if (TIPO_DETALLE = 'Concepto') then - EXISTE = 1; + capitulo_actual = -1; + ID_CAPITULO = capitulo_actual; end - - if (existe = 1) then + else if (:tipo_detalle = 'Concepto') then begin - contador = 0; - /* Existen conceptos sin capitulo */ - for select tipo_detalle, tipo_articulo, importe_total, coalesce(visible, 1) - from presupuestos_cliente_detalles - where id_presupuesto = :AID - order by id_presupuesto, posicion - into :TIPO_DETALLE, :TIPO_ARTICULO, :IMPORTE_TOTAL, :VISIBLE - do - begin - contador = contador + 1; - - if ((visible <> 0) and (tipo_detalle = 'Concepto')) then - total_acumulado = total_acumulado + importe_total; - - 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 - end + suspend; end - - - for select id, id_presupuesto, posicion, tipo_detalle, tipo_articulo, F_RTFTOTEXT(concepto) as concepto, - importe_total, coalesce(visible, 1) - from presupuestos_cliente_detalles - where ((tipo_detalle = 'Subtotal') or (tipo_detalle = 'Descuento')) and id_presupuesto = :AID - order by id_presupuesto, posicion - into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :TIPO_ARTICULO, :CONCEPTO, - :IMPORTE_TOTAL, :VISIBLE - do - suspend; -end; -^ - -ALTER PROCEDURE PRO_PRES_RESUMEN ( - aid integer) -returns ( - id integer, - id_presupuesto integer, - posicion integer, - tipo_detalle varchar(25), - 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); -declare variable tipo varchar(25); -begin - existe = 0; - total_acumulado = 0.0; - contador = 0; - num_filas = 0; - num_capitulos = 0; - concepto_capitulo = ''; - tipo = ''; - - /* ¿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 - - num_capitulos = 1; - if (existe = 1) then - begin - contador = 0; - /* Existen conceptos sin capitulo */ - for select tipo_detalle, coalesce(importe_total,0), 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 ((visible <> 0) and (tipo_detalle = 'Concepto')) then - total_acumulado = total_acumulado + importe_total; - - if ((tipo_detalle <> 'Concepto') or (contador = num_filas)) then - begin - importe_total = total_acumulado; - tipo_detalle = 'Titulo'; - if (num_capitulos > 1) then - concepto = 'CAPÍTULO ' || num_capitulos ||'. General'; - else - concepto = 'General'; - visible = 1; - ID = -1; - posicion = -1; - suspend; - break; - end - end - end - - /* Tratar el resto de las filas */ - for select id, id_presupuesto, posicion, tipo_detalle, - F_RTFTOTEXT(concepto) as concepto, coalesce(importe_total,0), coalesce(visible, 1) - from presupuestos_cliente_detalles - where id_presupuesto = :AID and - tipo_detalle in ('Titulo', 'Titulo opcional', 'Subtotal') - order by posicion - into :ID, :ID_PRESUPUESTO, :POSICION, :TIPO_DETALLE, :CONCEPTO, - :IMPORTE_TOTAL, :VISIBLE - do - begin - contador = contador + 1; - if ((tipo_detalle = 'Titulo') or (tipo_detalle = 'Titulo opcional')) then - begin - concepto_capitulo = concepto; - tipo = tipo_detalle; - end - if (tipo_detalle = 'Subtotal') then - begin - concepto = 'CAPÍTULO ' || num_capitulos || '. ' || concepto_capitulo; - tipo_detalle = tipo; - num_capitulos = num_capitulos + 1; - suspend; - end - end -end; -^ - + end +end +end^ SET TERM ; ^ diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index 9391e310..b36f21a8 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,52 +58,52 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fConfigurarConexion
TForm diff --git a/Source/Base/Base.res b/Source/Base/Base.res index 8b251f31..1641339f 100644 Binary files a/Source/Base/Base.res and b/Source/Base/Base.res differ diff --git a/Source/Informes/1/InfContratoCliente.fr3 b/Source/Informes/1/InfContratoCliente.fr3 new file mode 100644 index 00000000..a88134f8 --- /dev/null +++ b/Source/Informes/1/InfContratoCliente.fr3 @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Informes/1/InfPresupuestoCliente.fr3 b/Source/Informes/1/InfPresupuestoCliente.fr3 index 38fa8756..73e02e26 100644 --- a/Source/Informes/1/InfPresupuestoCliente.fr3 +++ b/Source/Informes/1/InfPresupuestoCliente.fr3 @@ -1,5 +1,5 @@ - + @@ -41,10 +41,10 @@ - - - - + + + + diff --git a/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj b/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj index 4797022d..d92cc3d3 100644 --- a/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj +++ b/Source/Modulos/Contratos de cliente/ContratosCliente_Group.groupproj @@ -17,9 +17,11 @@ + + @@ -149,6 +151,15 @@ + + + + + + + + + @@ -221,14 +232,23 @@ + + + + + + + + + - + - + - + \ No newline at end of file diff --git a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.drc b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.drc index 976a9ec2..d1858b01 100644 --- a/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.drc +++ b/Source/Modulos/Contratos de cliente/Controller/ContratosCliente_controller.drc @@ -13,4 +13,4 @@ BEGIN END /* C:\Codigo Acana\Source\Modulos\Contratos de cliente\Controller\ContratosCliente_controller.res */ -/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf1CC.tmp */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf3D8.tmp */ diff --git a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteReportController.pas b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteReportController.pas index ecd33ad6..78b4ad02 100644 --- a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteReportController.pas +++ b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteReportController.pas @@ -87,12 +87,11 @@ var AStream: Binary; AEditor : IEditorContratosClientePreview; begin -{ AEditor := NIL; ShowHourglassCursor; try - AStream := FDataModule.GetRptPresupuestos(AListaID); + AStream := FDataModule.GetRptContratos(AListaID); try CreateEditor('EditorContratosClientePreview', IEditorContratosClientePreview, AEditor); if Assigned(AEditor) then @@ -114,7 +113,6 @@ begin finally HideHourglassCursor; end; -} end; procedure TContratosClienteReportController.Print(const AListaID : TIntegerList); diff --git a/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.dproj b/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.dproj index 87b6ddcb..add048fd 100644 --- a/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.dproj +++ b/Source/Modulos/Contratos de cliente/Data/ContratosCliente_data.dproj @@ -49,19 +49,19 @@ MainSource - - - - - - - - - - + + + + + + + + + + + + - - \ No newline at end of file +EurekaLog Last Line --> diff --git a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm index 05c493cf..f84d58cb 100644 --- a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm @@ -266,64 +266,45 @@ inherited DataModulePresupuestosCliente: TDataModulePresupuestosCliente Name = 'ID' DataType = datAutoInc GeneratorName = 'GEN_PRESUPUESTOS_CLI_DETALLE_ID' - Required = True - ServerAutoRefresh = True - DictionaryEntry = 'PresupuestosCliente_Detalles_ID' InPrimaryKey = True end item Name = 'ID_PRESUPUESTO' DataType = datInteger - Required = True - DisplayLabel = 'PresupuestosCliente_Detalles_ID_PRESUPUESTO' - DictionaryEntry = 'PresupuestosCliente_Detalles_ID_PRESUPUESTO' end item Name = 'POSICION' DataType = datInteger - DictionaryEntry = 'PresupuestosCliente_Detalles_POSICION' end item Name = 'TIPO_DETALLE' DataType = datString - Size = 25 - DictionaryEntry = 'PresupuestosCliente_Detalles_TIPO_DETALLE' + Size = 10 end item Name = 'CONCEPTO' DataType = datString Size = 2000 - DictionaryEntry = 'PresupuestosCliente_Detalles_CONCEPTO' end item Name = 'CANTIDAD' - DataType = datFloat - Alignment = taRightJustify - DictionaryEntry = 'PresupuestosCliente_Detalles_CANTIDAD' + DataType = datInteger end item Name = 'IMPORTE_UNIDAD' DataType = datCurrency - DisplayLabel = 'Importe unidad' - Alignment = taRightJustify - DictionaryEntry = 'PresupuestosCliente_Detalles_IMPORTE_UNIDAD' end item Name = 'IMPORTE_TOTAL' DataType = datCurrency - DisplayLabel = 'Importe total' - Alignment = taRightJustify - DictionaryEntry = 'PresupuestosCliente_Detalles_IMPORTE_TOTAL' end item Name = 'VISIBLE' - DataType = datInteger - DictionaryEntry = 'PresupuestosCliente_Detalles_VISIBLE' + DataType = datSmallInt end item Name = 'ID_ARTICULO' DataType = datInteger - DictionaryEntry = 'PresupuestosCliente_Detalles_ID_ARTICULO' end item Name = 'TIPO_ARTICULO' @@ -333,31 +314,19 @@ inherited DataModulePresupuestosCliente: TDataModulePresupuestosCliente item Name = 'DESCUENTO' DataType = datFloat - DisplayLabel = 'Descuento' - DisplayFormat = ',0.00 %;-,0.00 %' - Alignment = taRightJustify - DictionaryEntry = 'PresupuestosCliente_Detalles_DESCUENTO' end item Name = 'IMPORTE_PORTE' DataType = datCurrency - DisplayLabel = 'Importe porte' - Alignment = taRightJustify - DictionaryEntry = 'PresupuestosCliente_Detalles_IMPORTE_PORTE' end item Name = 'REFERENCIA' DataType = datString Size = 255 - DisplayLabel = 'PresupuestosCliente_Detalles_REFERENCIA' - DictionaryEntry = 'PresupuestosCliente_Detalles_REFERENCIA' end item Name = 'REFERENCIA_PROVEEDOR' DataType = datString - Size = 255 - DisplayLabel = 'PresupuestosCliente_Detalles_REFERENCIA_PROVEEDOR' - DictionaryEntry = 'PresupuestosCliente_Detalles_REFERENCIA_PROVEEDOR' end> Params = <> MasterMappingMode = mmWhere diff --git a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas index 232677f4..bc0228c4 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas @@ -9,12 +9,12 @@ const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_Valores = '{6B7512A8-EB4C-4244-943F-285DE30A5DBE}'; - RID_Propiedades = '{C567C7CF-99D4-41BF-B2F2-D87F2FD59F42}'; - RID_ListaAnosPresupuestos = '{79474858-E6AF-4D32-B3B1-78304B4BDB06}'; - RID_PresupuestosCliente = '{43648F68-D4C5-471D-A900-221D25AABEF1}'; - RID_CapitulosPresupuesto = '{0CB24F2A-9812-437C-98D1-C7E659E3FD4E}'; - RID_PresupuestosCliente_Detalles = '{53C6C0B3-DA6B-4627-8F0E-EBDEA0FEC1D9}'; + RID_Valores = '{360865F6-D61C-4F56-81B3-80940311084F}'; + RID_Propiedades = '{578A1925-5462-48CD-88F8-00151C73B996}'; + RID_ListaAnosPresupuestos = '{44749161-C1BE-4754-8CE5-6A09AF383611}'; + RID_PresupuestosCliente = '{8145DD24-FBBA-4F26-A6F1-8EE2C84AD837}'; + RID_CapitulosPresupuesto = '{249810AA-086E-4490-940F-A0AF43A71A5A}'; + RID_PresupuestosCliente_Detalles = '{854200B0-5648-479E-9BC9-6DE111FF31E6}'; { Data table names } nme_Valores = 'Valores'; @@ -185,7 +185,7 @@ const type { IValores } IValores = interface(IDAStronglyTypedDataTable) - ['{DF8B5E15-0AA9-4CBD-B49C-CC89DC2058F1}'] + ['{DD6974D3-A0C4-4E21-A334-E50E81583DA9}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -244,7 +244,7 @@ type { IPropiedades } IPropiedades = interface(IDAStronglyTypedDataTable) - ['{04EF207A-CCEC-47CA-8295-275761FCA347}'] + ['{6512B700-7A3B-45A4-80AC-B6D48193D4CB}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -303,7 +303,7 @@ type { IListaAnosPresupuestos } IListaAnosPresupuestos = interface(IDAStronglyTypedDataTable) - ['{108DEB55-A6EF-48D8-9F41-A78EA77811E5}'] + ['{EED87562-4E5D-4164-8D9E-AE13BEB8A806}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -338,7 +338,7 @@ type { IPresupuestosCliente } IPresupuestosCliente = interface(IDAStronglyTypedDataTable) - ['{CB9876C3-FD15-4C82-AC1A-DDAFEBFF048F}'] + ['{CB9CB465-7592-4B43-9E99-7A6E743BBFD2}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -829,7 +829,7 @@ type { ICapitulosPresupuesto } ICapitulosPresupuesto = interface(IDAStronglyTypedDataTable) - ['{A3650725-FE09-4108-9EFF-6E1E4D911632}'] + ['{96561128-301B-4707-91F2-6428F82033FE}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -924,7 +924,7 @@ type { IPresupuestosCliente_Detalles } IPresupuestosCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{005DEE46-9C8D-4169-8AFC-D0A849982376}'] + ['{006D2E37-2AEC-43DD-B5A4-3BB45956BABC}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -946,8 +946,8 @@ type procedure SetCONCEPTOValue(const aValue: String); function GetCONCEPTOIsNull: Boolean; procedure SetCONCEPTOIsNull(const aValue: Boolean); - function GetCANTIDADValue: Float; - procedure SetCANTIDADValue(const aValue: Float); + function GetCANTIDADValue: Integer; + procedure SetCANTIDADValue(const aValue: Integer); function GetCANTIDADIsNull: Boolean; procedure SetCANTIDADIsNull(const aValue: Boolean); function GetIMPORTE_UNIDADValue: Currency; @@ -958,8 +958,8 @@ type procedure SetIMPORTE_TOTALValue(const aValue: Currency); function GetIMPORTE_TOTALIsNull: Boolean; procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); - function GetVISIBLEValue: Integer; - procedure SetVISIBLEValue(const aValue: Integer); + function GetVISIBLEValue: SmallInt; + procedure SetVISIBLEValue(const aValue: SmallInt); function GetVISIBLEIsNull: Boolean; procedure SetVISIBLEIsNull(const aValue: Boolean); function GetID_ARTICULOValue: Integer; @@ -999,13 +999,13 @@ type property TIPO_DETALLEIsNull: Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull; property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue; property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; - property CANTIDAD: Float read GetCANTIDADValue write SetCANTIDADValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; property CANTIDADIsNull: Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull; property IMPORTE_UNIDAD: Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue; property IMPORTE_UNIDADIsNull: Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull; property IMPORTE_TOTAL: Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; - property VISIBLE: Integer read GetVISIBLEValue write SetVISIBLEValue; + property VISIBLE: SmallInt read GetVISIBLEValue write SetVISIBLEValue; property VISIBLEIsNull: Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull; property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; @@ -1046,8 +1046,8 @@ type procedure SetCONCEPTOValue(const aValue: String); virtual; function GetCONCEPTOIsNull: Boolean; virtual; procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual; - function GetCANTIDADValue: Float; virtual; - procedure SetCANTIDADValue(const aValue: Float); virtual; + function GetCANTIDADValue: Integer; virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; function GetCANTIDADIsNull: Boolean; virtual; procedure SetCANTIDADIsNull(const aValue: Boolean); virtual; function GetIMPORTE_UNIDADValue: Currency; virtual; @@ -1058,8 +1058,8 @@ type procedure SetIMPORTE_TOTALValue(const aValue: Currency); virtual; function GetIMPORTE_TOTALIsNull: Boolean; virtual; procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); virtual; - function GetVISIBLEValue: Integer; virtual; - procedure SetVISIBLEValue(const aValue: Integer); virtual; + function GetVISIBLEValue: SmallInt; virtual; + procedure SetVISIBLEValue(const aValue: SmallInt); virtual; function GetVISIBLEIsNull: Boolean; virtual; procedure SetVISIBLEIsNull(const aValue: Boolean); virtual; function GetID_ARTICULOValue: Integer; virtual; @@ -1098,13 +1098,13 @@ type property TIPO_DETALLEIsNull: Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull; property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue; property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; - property CANTIDAD: Float read GetCANTIDADValue write SetCANTIDADValue; + property CANTIDAD: Integer read GetCANTIDADValue write SetCANTIDADValue; property CANTIDADIsNull: Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull; property IMPORTE_UNIDAD: Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue; property IMPORTE_UNIDADIsNull: Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull; property IMPORTE_TOTAL: Currency read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; property IMPORTE_TOTALIsNull: Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; - property VISIBLE: Integer read GetVISIBLEValue write SetVISIBLEValue; + property VISIBLE: SmallInt read GetVISIBLEValue write SetVISIBLEValue; property VISIBLEIsNull: Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull; property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; @@ -2419,14 +2419,14 @@ begin DataTable.Fields[idx_PresupuestosCliente_DetallesCONCEPTO].AsVariant := Null; end; -function TPresupuestosCliente_DetallesDataTableRules.GetCANTIDADValue: Float; +function TPresupuestosCliente_DetallesDataTableRules.GetCANTIDADValue: Integer; begin - result := DataTable.Fields[idx_PresupuestosCliente_DetallesCANTIDAD].AsFloat; + result := DataTable.Fields[idx_PresupuestosCliente_DetallesCANTIDAD].AsInteger; end; -procedure TPresupuestosCliente_DetallesDataTableRules.SetCANTIDADValue(const aValue: Float); +procedure TPresupuestosCliente_DetallesDataTableRules.SetCANTIDADValue(const aValue: Integer); begin - DataTable.Fields[idx_PresupuestosCliente_DetallesCANTIDAD].AsFloat := aValue; + DataTable.Fields[idx_PresupuestosCliente_DetallesCANTIDAD].AsInteger := aValue; end; function TPresupuestosCliente_DetallesDataTableRules.GetCANTIDADIsNull: boolean; @@ -2482,14 +2482,14 @@ begin DataTable.Fields[idx_PresupuestosCliente_DetallesIMPORTE_TOTAL].AsVariant := Null; end; -function TPresupuestosCliente_DetallesDataTableRules.GetVISIBLEValue: Integer; +function TPresupuestosCliente_DetallesDataTableRules.GetVISIBLEValue: SmallInt; begin - result := DataTable.Fields[idx_PresupuestosCliente_DetallesVISIBLE].AsInteger; + result := DataTable.Fields[idx_PresupuestosCliente_DetallesVISIBLE].AsSmallInt; end; -procedure TPresupuestosCliente_DetallesDataTableRules.SetVISIBLEValue(const aValue: Integer); +procedure TPresupuestosCliente_DetallesDataTableRules.SetVISIBLEValue(const aValue: SmallInt); begin - DataTable.Fields[idx_PresupuestosCliente_DetallesVISIBLE].AsInteger := aValue; + DataTable.Fields[idx_PresupuestosCliente_DetallesVISIBLE].AsSmallInt := aValue; end; function TPresupuestosCliente_DetallesDataTableRules.GetVISIBLEIsNull: boolean; diff --git a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas index f8d7fe0c..696cc49b 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas @@ -9,17 +9,17 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ValoresDelta = '{D7395CE4-863C-4302-8580-560E4F7EDBA4}'; - RID_PropiedadesDelta = '{904BB545-3A5D-4014-AEB1-E9DAE9EC7485}'; - RID_ListaAnosPresupuestosDelta = '{5BA0E871-EC39-4EA6-9BA4-C1AA22E49B8B}'; - RID_PresupuestosClienteDelta = '{037B9DD0-0CBA-4BB2-951B-F8E3E6A8D35E}'; - RID_CapitulosPresupuestoDelta = '{440D5A1A-69CF-49E5-9822-CA252C881177}'; - RID_PresupuestosCliente_DetallesDelta = '{C09202CF-837F-4819-9CD4-BB6A390E7745}'; + RID_ValoresDelta = '{A31ECE4B-F45F-4FFA-B8D2-E4C30437FC6C}'; + RID_PropiedadesDelta = '{17913405-B1A3-414E-B9CC-8668063D831C}'; + RID_ListaAnosPresupuestosDelta = '{28DC5CF0-35FD-4430-997C-CE68FAFA4B91}'; + RID_PresupuestosClienteDelta = '{AD87C5AB-4E58-404D-997A-A099D3BE6A93}'; + RID_CapitulosPresupuestoDelta = '{F88C93D2-E737-4E68-8C96-6F328113A033}'; + RID_PresupuestosCliente_DetallesDelta = '{98D1A78A-661D-41D6-9920-E0105FFE38FD}'; type { IValoresDelta } IValoresDelta = interface(IValores) - ['{D7395CE4-863C-4302-8580-560E4F7EDBA4}'] + ['{A31ECE4B-F45F-4FFA-B8D2-E4C30437FC6C}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_PROPIEDADValue : Integer; @@ -77,7 +77,7 @@ type { IPropiedadesDelta } IPropiedadesDelta = interface(IPropiedades) - ['{904BB545-3A5D-4014-AEB1-E9DAE9EC7485}'] + ['{17913405-B1A3-414E-B9CC-8668063D831C}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldDESCRIPCIONValue : String; @@ -135,7 +135,7 @@ type { IListaAnosPresupuestosDelta } IListaAnosPresupuestosDelta = interface(IListaAnosPresupuestos) - ['{5BA0E871-EC39-4EA6-9BA4-C1AA22E49B8B}'] + ['{28DC5CF0-35FD-4430-997C-CE68FAFA4B91}'] { Property getters and setters } function GetOldANOValue : String; @@ -169,7 +169,7 @@ type { IPresupuestosClienteDelta } IPresupuestosClienteDelta = interface(IPresupuestosCliente) - ['{037B9DD0-0CBA-4BB2-951B-F8E3E6A8D35E}'] + ['{AD87C5AB-4E58-404D-997A-A099D3BE6A93}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -663,7 +663,7 @@ type { ICapitulosPresupuestoDelta } ICapitulosPresupuestoDelta = interface(ICapitulosPresupuesto) - ['{440D5A1A-69CF-49E5-9822-CA252C881177}'] + ['{F88C93D2-E737-4E68-8C96-6F328113A033}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldPOSICIONValue : Integer; @@ -757,17 +757,17 @@ type { IPresupuestosCliente_DetallesDelta } IPresupuestosCliente_DetallesDelta = interface(IPresupuestosCliente_Detalles) - ['{C09202CF-837F-4819-9CD4-BB6A390E7745}'] + ['{98D1A78A-661D-41D6-9920-E0105FFE38FD}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_PRESUPUESTOValue : Integer; function GetOldPOSICIONValue : Integer; function GetOldTIPO_DETALLEValue : String; function GetOldCONCEPTOValue : String; - function GetOldCANTIDADValue : Float; + function GetOldCANTIDADValue : Integer; function GetOldIMPORTE_UNIDADValue : Currency; function GetOldIMPORTE_TOTALValue : Currency; - function GetOldVISIBLEValue : Integer; + function GetOldVISIBLEValue : SmallInt; function GetOldID_ARTICULOValue : Integer; function GetOldTIPO_ARTICULOValue : String; function GetOldDESCUENTOValue : Float; @@ -781,10 +781,10 @@ type property OldPOSICION : Integer read GetOldPOSICIONValue; property OldTIPO_DETALLE : String read GetOldTIPO_DETALLEValue; property OldCONCEPTO : String read GetOldCONCEPTOValue; - property OldCANTIDAD : Float read GetOldCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; property OldIMPORTE_UNIDAD : Currency read GetOldIMPORTE_UNIDADValue; property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue; - property OldVISIBLE : Integer read GetOldVISIBLEValue; + property OldVISIBLE : SmallInt read GetOldVISIBLEValue; property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue; property OldTIPO_ARTICULO : String read GetOldTIPO_ARTICULOValue; property OldDESCUENTO : Float read GetOldDESCUENTOValue; @@ -828,11 +828,11 @@ type function GetOldCONCEPTOIsNull: Boolean; virtual; procedure SetCONCEPTOValue(const aValue: String); virtual; procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual; - function GetCANTIDADValue: Float; virtual; + function GetCANTIDADValue: Integer; virtual; function GetCANTIDADIsNull: Boolean; virtual; - function GetOldCANTIDADValue: Float; virtual; + function GetOldCANTIDADValue: Integer; virtual; function GetOldCANTIDADIsNull: Boolean; virtual; - procedure SetCANTIDADValue(const aValue: Float); virtual; + procedure SetCANTIDADValue(const aValue: Integer); virtual; procedure SetCANTIDADIsNull(const aValue: Boolean); virtual; function GetIMPORTE_UNIDADValue: Currency; virtual; function GetIMPORTE_UNIDADIsNull: Boolean; virtual; @@ -846,11 +846,11 @@ type function GetOldIMPORTE_TOTALIsNull: Boolean; virtual; procedure SetIMPORTE_TOTALValue(const aValue: Currency); virtual; procedure SetIMPORTE_TOTALIsNull(const aValue: Boolean); virtual; - function GetVISIBLEValue: Integer; virtual; + function GetVISIBLEValue: SmallInt; virtual; function GetVISIBLEIsNull: Boolean; virtual; - function GetOldVISIBLEValue: Integer; virtual; + function GetOldVISIBLEValue: SmallInt; virtual; function GetOldVISIBLEIsNull: Boolean; virtual; - procedure SetVISIBLEValue(const aValue: Integer); virtual; + procedure SetVISIBLEValue(const aValue: SmallInt); virtual; procedure SetVISIBLEIsNull(const aValue: Boolean); virtual; function GetID_ARTICULOValue: Integer; virtual; function GetID_ARTICULOIsNull: Boolean; virtual; @@ -910,9 +910,9 @@ type property CONCEPTOIsNull : Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; property OldCONCEPTO : String read GetOldCONCEPTOValue; property OldCONCEPTOIsNull : Boolean read GetOldCONCEPTOIsNull; - property CANTIDAD : Float read GetCANTIDADValue write SetCANTIDADValue; + property CANTIDAD : Integer read GetCANTIDADValue write SetCANTIDADValue; property CANTIDADIsNull : Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull; - property OldCANTIDAD : Float read GetOldCANTIDADValue; + property OldCANTIDAD : Integer read GetOldCANTIDADValue; property OldCANTIDADIsNull : Boolean read GetOldCANTIDADIsNull; property IMPORTE_UNIDAD : Currency read GetIMPORTE_UNIDADValue write SetIMPORTE_UNIDADValue; property IMPORTE_UNIDADIsNull : Boolean read GetIMPORTE_UNIDADIsNull write SetIMPORTE_UNIDADIsNull; @@ -922,9 +922,9 @@ type property IMPORTE_TOTALIsNull : Boolean read GetIMPORTE_TOTALIsNull write SetIMPORTE_TOTALIsNull; property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue; property OldIMPORTE_TOTALIsNull : Boolean read GetOldIMPORTE_TOTALIsNull; - property VISIBLE : Integer read GetVISIBLEValue write SetVISIBLEValue; + property VISIBLE : SmallInt read GetVISIBLEValue write SetVISIBLEValue; property VISIBLEIsNull : Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull; - property OldVISIBLE : Integer read GetOldVISIBLEValue; + property OldVISIBLE : SmallInt read GetOldVISIBLEValue; property OldVISIBLEIsNull : Boolean read GetOldVISIBLEIsNull; property ID_ARTICULO : Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; property ID_ARTICULOIsNull : Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; @@ -2826,7 +2826,7 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesCONCEPTO] := Null; end; -function TPresupuestosCliente_DetallesBusinessProcessorRules.GetCANTIDADValue: Float; +function TPresupuestosCliente_DetallesBusinessProcessorRules.GetCANTIDADValue: Integer; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesCANTIDAD]; end; @@ -2836,7 +2836,7 @@ begin result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesCANTIDAD]); end; -function TPresupuestosCliente_DetallesBusinessProcessorRules.GetOldCANTIDADValue: Float; +function TPresupuestosCliente_DetallesBusinessProcessorRules.GetOldCANTIDADValue: Integer; begin result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCliente_DetallesCANTIDAD]; end; @@ -2846,7 +2846,7 @@ begin result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCliente_DetallesCANTIDAD]); end; -procedure TPresupuestosCliente_DetallesBusinessProcessorRules.SetCANTIDADValue(const aValue: Float); +procedure TPresupuestosCliente_DetallesBusinessProcessorRules.SetCANTIDADValue(const aValue: Integer); begin BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesCANTIDAD] := aValue; end; @@ -2919,7 +2919,7 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesIMPORTE_TOTAL] := Null; end; -function TPresupuestosCliente_DetallesBusinessProcessorRules.GetVISIBLEValue: Integer; +function TPresupuestosCliente_DetallesBusinessProcessorRules.GetVISIBLEValue: SmallInt; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesVISIBLE]; end; @@ -2929,7 +2929,7 @@ begin result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesVISIBLE]); end; -function TPresupuestosCliente_DetallesBusinessProcessorRules.GetOldVISIBLEValue: Integer; +function TPresupuestosCliente_DetallesBusinessProcessorRules.GetOldVISIBLEValue: SmallInt; begin result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCliente_DetallesVISIBLE]; end; @@ -2939,7 +2939,7 @@ begin result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCliente_DetallesVISIBLE]); end; -procedure TPresupuestosCliente_DetallesBusinessProcessorRules.SetVISIBLEValue(const aValue: Integer); +procedure TPresupuestosCliente_DetallesBusinessProcessorRules.SetVISIBLEValue(const aValue: SmallInt); begin BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesVISIBLE] := aValue; end; diff --git a/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.dfm b/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.dfm index f7c8f9a5..2f79a742 100644 --- a/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.dfm +++ b/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.dfm @@ -483,9 +483,9 @@ object RptPresupuestosCliente: TRptPresupuestosCliente item Params = < item - Name = 'ID_PRESUPUESTO' - Value = '32' - ParamType = daptInput + Name = 'ID_PRE_CON' + DataType = datInteger + Value = '' end> Statements = < item @@ -493,8 +493,9 @@ object RptPresupuestosCliente: TRptPresupuestosCliente ConnectionType = 'Interbase' Default = True SQL = - 'SELECT * FROM PRO_PRES_CAPITULOS_CONCEPTOS(:ID_PRESUPUESTO)'#10'WHER' + - 'E (VISIBLE <> 0) AND {where}'#10'ORDER BY ID_PRESUPUESTO, POSICION'#10 + 'SELECT * FROM PROC_PRE_CON_CAPITULOS_CONCEP(:ID_PRE_CON, '#39'Presup' + + 'uesto'#39')'#10'WHERE (VISIBLE <> 0) AND {where}'#10'ORDER BY ID_PRE_CON, PO' + + 'SICION'#10 StatementType = stSQL ColumnMappings = < item @@ -502,8 +503,8 @@ object RptPresupuestosCliente: TRptPresupuestosCliente TableField = 'ID' end item - DatasetField = 'ID_PRESUPUESTO' - TableField = 'ID_PRESUPUESTO' + DatasetField = 'ID_PRE_CON' + TableField = 'ID_PRE_CON' end item DatasetField = 'POSICION' @@ -566,7 +567,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente InPrimaryKey = True end item - Name = 'ID_PRESUPUESTO' + Name = 'ID_PRE_CON' DataType = datInteger end item @@ -630,7 +631,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente item Params = < item - Name = 'ID_PRESUPUESTO' + Name = 'ID_PRE_CON' Value = '' ParamType = daptInput end> @@ -640,8 +641,8 @@ object RptPresupuestosCliente: TRptPresupuestosCliente 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 PROC_PRE_CON_CAPITULOS(:ID_PRE_CON, '#39'Presupuesto'#39')' + + #10'WHERE (VISIBLE <> 0) AND {where}'#10'ORDER BY ID_PRE_CON, POSICION'#10 StatementType = stSQL ColumnMappings = < item @@ -649,8 +650,8 @@ object RptPresupuestosCliente: TRptPresupuestosCliente TableField = 'ID' end item - DatasetField = 'ID_PRESUPUESTO' - TableField = 'ID_PRESUPUESTO' + DatasetField = 'ID_PRE_CON' + TableField = 'ID_PRE_CON' end item DatasetField = 'POSICION' @@ -693,7 +694,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente InPrimaryKey = True end item - Name = 'ID_PRESUPUESTO' + Name = 'ID_PRE_CON' DataType = datInteger end item @@ -733,87 +734,6 @@ object RptPresupuestosCliente: TRptPresupuestosCliente end> ReadOnly = True end - item - Params = < - item - Name = 'ID_PRESUPUESTO' - Value = '2' - ParamType = daptInput - end> - Statements = < - item - Connection = 'IBX' - ConnectionType = 'Interbase' - Default = True - SQL = - 'SELECT * FROM PRO_PRES_RESUMEN(:ID_PRESUPUESTO)'#10'WHERE (VISIBLE <' + - '> 0) AND (TIPO_DETALLE = '#39'Titulo'#39')'#10'AND {where}'#10'ORDER BY ID_PRESU' + - 'PUESTO, POSICION'#10 - StatementType = stSQL - ColumnMappings = < - item - DatasetField = 'ID' - TableField = 'ID' - end - item - DatasetField = 'ID_PRESUPUESTO' - TableField = 'ID_PRESUPUESTO' - end - item - DatasetField = 'POSICION' - TableField = 'POSICION' - end - item - DatasetField = 'TIPO_DETALLE' - TableField = 'TIPO_DETALLE' - end - item - DatasetField = 'CONCEPTO' - TableField = 'CONCEPTO' - end - item - DatasetField = 'IMPORTE_TOTAL' - TableField = 'IMPORTE_TOTAL' - end - item - DatasetField = 'VISIBLE' - TableField = 'VISIBLE' - end> - end> - Name = 'Informe_Resumen' - Fields = < - item - Name = 'ID' - DataType = datInteger - InPrimaryKey = True - end - item - Name = 'ID_PRESUPUESTO' - DataType = datInteger - end - item - Name = 'POSICION' - DataType = datInteger - end - item - Name = 'TIPO_DETALLE' - DataType = datString - Size = 25 - end - item - Name = 'CONCEPTO' - DataType = datString - Size = 2000 - end - item - Name = 'IMPORTE_TOTAL' - DataType = datCurrency - end - item - Name = 'VISIBLE' - DataType = datSmallInt - end> - end item Params = <> Statements = < @@ -902,7 +822,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente UpdateRules = <> Version = 0 Left = 48 - Top = 16 + Top = 24 end object DataDictionary: TDADataDictionary Fields = <> @@ -919,7 +839,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente PrintOptions.Printer = 'Por defecto' PrintOptions.PrintOnSheet = 0 ReportOptions.CreateDate = 39065.872423495400000000 - ReportOptions.LastChange = 40010.751494131950000000 + ReportOptions.LastChange = 40066.748108344910000000 ScriptLanguage = 'PascalScript' ScriptText.Strings = ( '' @@ -1077,23 +997,91 @@ object RptPresupuestosCliente: TRptPresupuestosCliente 'begin' 'end;' '' - 'procedure Footer1OnBeforePrint(Sender: TfrxComponent);' + 'procedure Memo29OnBeforePrint(Sender: TfrxComponent);' 'begin' - 'if (( = 0) ' - 'and ( = 0)) then' - 'begin ' - ' Memo13.Visible := False; ' - ' Memo20.Visible := False; ' - ' Memo21.Visible := False; ' - ' Memo11.Visible := False; ' - 'end ' - 'else' - 'begin ' - ' Memo13.Visible := True; ' - ' Memo20.Visible := True;' - ' Memo21.Visible := True;' - ' Memo11.Visible := True; ' - 'end' + ' if ( > 0) then' + ' begin' + + ' Memo29.visible := True; ' + + ' ' + ' end' + ' else' + ' begin' + ' Memo29.visible := False; ' + ' end; ' + 'end;' + '' + 'procedure Memo30OnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' if ( > 0) then' + ' begin' + + ' Memo30.visible := True; ' + + ' ' + ' end' + ' else' + ' begin' + ' Memo30.visible := False; ' + ' end; ' + 'end;' + '' + 'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' if (Length() = 0) then' + ' begin' + ' Memo40.Visible := False;' + + ' Memo37.Visible := False; ' + + ' ' + ' end;' + '' + ' if (Length() = 0) then' + ' begin' + ' Memo38.Visible := False;' + + ' Memo27.Visible := False; ' + + ' ' + ' end; ' + '' + ' if (Length() = 0) then' + ' begin' + ' Memo39.Visible := False;' + + ' Memo28.Visible := False; ' + + ' ' + ' end; ' + 'end;' + '' + 'procedure Memo20OnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' if (sum(, DetailData1) = 0)' + + ' and (sum(, DetailData2) = 0) th' + + 'en' + ' begin' + ' Footer1.Height := 10;' + ' Memo13.Visible := False;' + ' Memo20.Visible := False; ' + ' Memo21.Visible := False; ' + ' Memo11.Visible := False;' + ' Memo24.Visible := False;' + ' end' + ' else' + ' begin' + ' Footer1.Height := 55;' + ' Memo13.Visible := True; ' + ' Memo20.Visible := True;' + ' Memo21.Visible := True;' + ' Memo11.Visible := True;' + ' Memo24.Visible := True; ' + ' end;' + '' + ' if ( = 0) then' + ' begin' + ' Footer1.Height := 35; ' + ' Memo11.Visible := False;' + ' Memo24.Visible := False; ' + ' end; ' 'end;' '' 'begin' @@ -1373,13 +1361,6 @@ object RptPresupuestosCliente: TRptPresupuestosCliente Left = 352 Top = 16 end - object frxDBResumen: TfrxDBDataset - UserName = 'frxDBResumen' - CloseDataSource = False - DataSource = DADSResumen - Left = 520 - Top = 16 - end object DABin2DataStreamer1: TDABin2DataStreamer Left = 48 Top = 80 @@ -1571,7 +1552,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente InPrimaryKey = True end item - Name = 'ID_PRESUPUESTO' + Name = 'ID_PRE_CON' DataType = datInteger end item @@ -1611,7 +1592,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente end> Params = < item - Name = 'ID_PRESUPUESTO' + Name = 'ID_PRE_CON' Value = '' ParamType = daptInput end> @@ -1628,64 +1609,6 @@ object RptPresupuestosCliente: TRptPresupuestosCliente Left = 352 Top = 128 end - object DADSResumen: TDADataSource - DataSet = tbl_Resumen.Dataset - DataTable = tbl_Resumen - Left = 520 - Top = 72 - end - object tbl_Resumen: TDAMemDataTable - RemoteUpdatesOptions = [] - Fields = < - item - Name = 'ID' - DataType = datInteger - InPrimaryKey = True - end - item - Name = 'ID_PRESUPUESTO' - DataType = datInteger - end - item - Name = 'POSICION' - DataType = datInteger - end - item - Name = 'TIPO_DETALLE' - DataType = datString - Size = 25 - end - item - Name = 'CONCEPTO' - DataType = datString - Size = 2000 - end - item - Name = 'IMPORTE_TOTAL' - DataType = datCurrency - end - item - Name = 'VISIBLE' - DataType = datSmallInt - end> - Params = < - item - Name = 'ID_PRESUPUESTO' - Value = '2' - ParamType = daptInput - end> - MasterParamsMappings.Strings = ( - 'ID_PRESUPUESTO=ID') - LogChanges = False - StreamingOptions = [soDisableEventsWhileStreaming] - RemoteFetchEnabled = False - LocalSchema = schReport - LocalDataStreamer = DABin2DataStreamer1 - LogicalName = 'Informe_Resumen' - IndexDefs = <> - Left = 520 - Top = 128 - end object frxPDFExport1: TfrxPDFExport ShowDialog = False UseFileCache = True @@ -1819,7 +1742,7 @@ object RptPresupuestosCliente: TRptPresupuestosCliente InPrimaryKey = True end item - Name = 'ID_PRESUPUESTO' + Name = 'ID_PRE_CON' DataType = datInteger end item @@ -1880,9 +1803,9 @@ object RptPresupuestosCliente: TRptPresupuestosCliente end> Params = < item - Name = 'ID_PRESUPUESTO' - Value = '32' - ParamType = daptInput + Name = 'ID_PRE_CON' + DataType = datInteger + Value = '' end> MasterMappingMode = mmWhere MasterParamsMappings.Strings = ( diff --git a/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.pas b/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.pas index 05611db9..f7fd5c8d 100644 --- a/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.pas +++ b/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.pas @@ -40,7 +40,6 @@ type resumenIMPORTE_TOTAL: TIBBCDField; resumenVISIBLE: TSmallintField; frxDBCapitulos: TfrxDBDataset; - frxDBResumen: TfrxDBDataset; DABin2DataStreamer1: TDABin2DataStreamer; cabecera: TIBQuery; cabeceraID: TIntegerField; @@ -70,8 +69,6 @@ type cabeceraCODIGO_POSTAL: TIBStringField; DADSCapitulos: TDADataSource; tbl_Capitulos: TDAMemDataTable; - DADSResumen: TDADataSource; - tbl_Resumen: TDAMemDataTable; frxPDFExport1: TfrxPDFExport; DADSInformeListadoPresupuestos: TDADataSource; tbl_InformeListadoPresupuestos: TDAMemDataTable; @@ -143,9 +140,6 @@ begin frxDBDetalles.DataSource := DADSDetalles; frxDBDetalles.CloseDataSource := False; - frxDBResumen.DataSource := DADSResumen; - frxDBResumen.CloseDataSource := False; - FListaNombresClientes := TStringList.Create; with tbl_Detalles do @@ -416,7 +410,6 @@ begin tbl_Cabecera.Active := False; tbl_Capitulos.Active := False; tbl_Detalles.Active := False; - tbl_Resumen.Active := False; FreeANDNIL(FListaNombresClientes); end; @@ -535,12 +528,10 @@ begin tbl_Cabecera.Active := False; tbl_Capitulos.Active := False; tbl_Detalles.Active := False; - tbl_Resumen.Active := False; tbl_Cabecera.ParamByName('ID').AsInteger := AID; - tbl_Capitulos.ParamByName('ID_PRESUPUESTO').AsInteger := AID; - tbl_Detalles.ParamByName('ID_PRESUPUESTO').AsInteger := AID; - tbl_Resumen.ParamByName('ID_PRESUPUESTO').AsInteger := AID; + tbl_Capitulos.ParamByName('ID_PRE_CON').AsInteger := AID; + tbl_Detalles.ParamByName('ID_PRE_CON').AsInteger := AID; // Se asignan los parametros en este orden para que funcionen // dentro de las relaciones maestro-detalle (capítulos y conceptos). @@ -548,7 +539,6 @@ begin tbl_Cabecera.Active := True; tbl_Capitulos.Active := True; tbl_Detalles.Active := True; - tbl_Resumen.Active := True; AInforme := DarRutaFichero(DarRutaInformes, rptInforme, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString); if VarIsNull(AInforme) then diff --git a/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm b/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm index 0530df19..a8b674ba 100644 --- a/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm +++ b/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm @@ -652,56 +652,45 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente Name = 'ID' DataType = datAutoInc GeneratorName = 'GEN_PRESUPUESTOS_CLI_DETALLE_ID' - ServerAutoRefresh = True - DictionaryEntry = 'PresupuestosCliente_Detalles_ID' InPrimaryKey = True end item Name = 'ID_PRESUPUESTO' DataType = datInteger - DictionaryEntry = 'PresupuestosCliente_Detalles_ID_PRESUPUESTO' end item Name = 'POSICION' DataType = datInteger - DictionaryEntry = 'PresupuestosCliente_Detalles_POSICION' end item Name = 'TIPO_DETALLE' DataType = datString - Size = 25 - DictionaryEntry = 'PresupuestosCliente_Detalles_TIPO_DETALLE' + Size = 10 end item Name = 'CONCEPTO' DataType = datString Size = 2000 - DictionaryEntry = 'PresupuestosCliente_Detalles_CONCEPTO' end item Name = 'CANTIDAD' - DataType = datFloat - DictionaryEntry = 'PresupuestosCliente_Detalles_CANTIDAD' + DataType = datInteger end item Name = 'IMPORTE_UNIDAD' DataType = datCurrency - DictionaryEntry = 'PresupuestosCliente_Detalles_IMPORTE_UNIDAD' end item Name = 'IMPORTE_TOTAL' DataType = datCurrency - DictionaryEntry = 'PresupuestosCliente_Detalles_IMPORTE_TOTAL' end item Name = 'VISIBLE' - DataType = datInteger - DictionaryEntry = 'PresupuestosCliente_Detalles_VISIBLE' + DataType = datSmallInt end item Name = 'ID_ARTICULO' DataType = datInteger - DictionaryEntry = 'PresupuestosCliente_Detalles_ID_ARTICULO' end item Name = 'TIPO_ARTICULO' @@ -711,24 +700,19 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente item Name = 'DESCUENTO' DataType = datFloat - DictionaryEntry = 'PresupuestosCliente_Detalles_DESCUENTO' end item Name = 'IMPORTE_PORTE' DataType = datCurrency - DictionaryEntry = 'PresupuestosCliente_Detalles_IMPORTE_PORTE' end item Name = 'REFERENCIA' DataType = datString Size = 255 - DictionaryEntry = 'PresupuestosCliente_Detalles_REFERENCIA' end item Name = 'REFERENCIA_PROVEEDOR' DataType = datString - Size = 255 - DictionaryEntry = 'PresupuestosCliente_Detalles_REFERENCIA_PROVEEDOR' end> end> JoinDataTables = <> diff --git a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.pas b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.pas index b8b9552e..6945043a 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Views/uEditorPresupuestosCliente.pas @@ -211,7 +211,8 @@ begin inherited; (Sender as TAction).Enabled := HayDatos and ViewGrid.esSeleccionCeldaDatos - and (FPresupuestos.SITUACION <> SITUACION_PRESUPUESTO_ANULADO); + and (FPresupuestos.SITUACION <> SITUACION_PRESUPUESTO_ANULADO) + and (FPresupuestos.REF_CONTRATO = ''); end; procedure TfEditorPresupuestosCliente.actEliminarUpdate(Sender: TObject); diff --git a/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dcu b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dcu new file mode 100644 index 00000000..f528f9af Binary files /dev/null and b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dcu differ diff --git a/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dpk b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dpk new file mode 100644 index 00000000..610651e2 --- /dev/null +++ b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dpk @@ -0,0 +1,39 @@ +package ConCli_FacCli_relation; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + Base, + Contactos_model, + Contactos_controller, + ContratosCliente_controller, + ContratosCliente_model, + FacturasCliente_controller, + FacturasCliente_model; + +contains + uGenerarFacturasCliUtils in 'uGenerarFacturasCliUtils.pas' {dmGenerarFacturasCli}; + +end. diff --git a/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dproj b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dproj new file mode 100644 index 00000000..2b7c80a8 --- /dev/null +++ b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.dproj @@ -0,0 +1,652 @@ + + + {69494a8c-0a35-41ea-b8ec-ea790bfc0662} + ConCli_FacCli_relation.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\ConCli_FacCli_relation.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + RELEASE + + + 7.0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Borland Sample Components + Delphi 1.0 Compatibility Components + Borland MyBase DataAccess Components + TeeChart Components + Borland SimpleDataset Component (DBX) + ExpressBars extended items by Developer Express Inc. + ExpressBars by Developer Express Inc. + ExpressScheduler 2 by Developer Express Inc. + ExpressVerticalGrid by Developer Express Inc. + ExpressBars DBNavigator by Developer Express Inc. + ExpressBars extended DB items by Developer Express Inc. + ExpressSideBar by Developer Express Inc. + JVCL Band Objects + JVCL Non-Visual Components + JVCL Encryption and Compression Components + JVCL Dialog Components + JVCL Docking Components + JVCL DotNet Controls + JVCL EDI Components Designtime Package + JVCL HMI Controls design time unit + JVCL Interpreter Components + JVCL Jans Components + JVCL Managed Threads + JVCL Multimedia and Image Components + JVCL Network Components + JVCL Page Style Components + JVCL Plugin Components + JVCL Print Preview Components + JVCL Runtime Design Components + JVCL Time Framework + JVCL Unified Interbase Components + JVCL Validators and Error Provider Components + SMImport suite: data importing into dataset. Scalabium/Mike Shkolnik, 2000-2005 + SMExport suite: data export from dataset. Written by Mike Shkolnik/Scalabium, 1998-2004. + Intraweb 8.0 Design Package for Borland Development Studio 2006 + Internet Explorer Components + ConCli_FacCli_relation.dpk + + + + + MainSource + + + + + + + + + +
dmGenerarFacturasCli
+
+
+
+ diff --git a/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.rc b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.rc new file mode 100644 index 00000000..153736af --- /dev/null +++ b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.0.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.res b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.res new file mode 100644 index 00000000..8b251f31 Binary files /dev/null and b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/ConCli_FacCli_relation.res differ diff --git a/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/uGenerarFacturasCliUtils.dfm b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/uGenerarFacturasCliUtils.dfm new file mode 100644 index 00000000..ca3c25fb --- /dev/null +++ b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/uGenerarFacturasCliUtils.dfm @@ -0,0 +1,313 @@ +object dmGenerarFacturasCli: TdmGenerarFacturasCli + OldCreateOrder = False + Height = 176 + Width = 254 + object JsListaFacturasGenerados: TJSDialog + 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 = 'Se ha generado la factura de cliente' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Ver la factura' + Value = 100 + Info.Strings = ( + 'Mostrar la factura que se ha creado') + end> + ButtonBar.Buttons = [cbOK] + ButtonBar.Cancel = cbOK + ButtonBar.UseCancel = False + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 72 + Top = 16 + end +end diff --git a/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/uGenerarFacturasCliUtils.pas b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/uGenerarFacturasCliUtils.pas new file mode 100644 index 00000000..2acc33c5 --- /dev/null +++ b/Source/Modulos/Relaciones/Contratos de cliente - Facturas de cliente/uGenerarFacturasCliUtils.pas @@ -0,0 +1,253 @@ +unit uGenerarFacturasCliUtils; + +interface + +uses + Windows, SysUtils, Classes, pngimage, JSDialog, + uBizContratosCliente, uBizFacturasCliente; + +type + TdmGenerarFacturasCli = class(TDataModule) + JsListaFacturasGenerados: TJSDialog; + end; + + function GenerarFacturaCli(const IDContrato : Integer) : Boolean; overload; + function GenerarFacturaCli(AContrato : IBizContratoCliente; var AFactura: IBizFacturaCliente) : Boolean; overload; +// function ElegirPedidoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean; + +implementation + +{$R *.dfm} + +uses + uDialogUtils, uBizDetallesContratoCliente, uBizDetallesFacturaCliente, + uContratosClienteController, uFacturasClienteController, uClientesController, + uDetallesFacturaClienteController, uControllerDetallesBase, + uBizContactos, schFacturasClienteClient_Intf, + schContratosClienteClient_Intf; + +var + dmGenerarFacturasCli: TdmGenerarFacturasCli; + AContratosClienteController : IContratosClienteController; + AFacturasClienteController : IFacturasClienteController; + AClientesController : IClientesController; + +{ Métodos auxiliares } +procedure CopiarContratoAFactura(AContrato: IBizContratoCliente; AFactura : IBizFacturaCliente); +begin + if not Assigned(AFactura) then + raise Exception.Create ('Factura no asignado (CopiarContratoAFactura)'); + + if not Assigned(AContrato) then + raise Exception.Create ('Contrato no asignado (CopiarContratoAFactura)'); + + if not AContrato.DataTable.Active then + AContrato.DataTable.Active := True; + + // La factura tiene que venir ya abierto y posicionado donde hay que copiar + AFactura.ID_CLIENTE := AContrato.ID_CLIENTE; + // Lo dejamos listo para que se localize la subcuenta contable asociada al cliente + AFacturasClienteController.RecuperarCliente(AFactura); + AFactura.Cliente.Open; + + AFactura.NIF_CIF := AContrato.NIF_CIF; + AFactura.NOMBRE := AContrato.NOMBRE; + AFactura.CALLE := AContrato.CALLE; + AFactura.POBLACION := AContrato.POBLACION; + AFactura.PROVINCIA := AContrato.PROVINCIA; + AFactura.CODIGO_POSTAL := AContrato.CODIGO_POSTAL; + + +// AFactura.PERSONA_CONTACTO := AContrato.PERSONA_CONTACTO; +// AFactura.DataTable.FieldByName(fld_FacturasClientePLAZO_ENTREGA).AsVariant := AContrato.DataTable.FieldByName(fld_ContratosClientePLAZO_ENTREGA).AsVariant; + AFactura.DataTable.FieldByName(fld_FacturasClienteOBSERVACIONES).AsVariant := AContrato.DataTable.FieldByName(fld_ContratosClienteOBSERVACIONES).AsVariant; + AFactura.IMPORTE_NETO := AContrato.IMPORTE_NETO; + AFactura.IMPORTE_PORTE := AContrato.IMPORTE_PORTE; + AFactura.DESCUENTO := AContrato.DESCUENTO; + AFactura.IMPORTE_DESCUENTO := AContrato.IMPORTE_DESCUENTO; + AFactura.BASE_IMPONIBLE := AContrato.BASE_IMPONIBLE; + AFactura.ID_TIPO_IVA := AContrato.ID_TIPO_IVA; + AFactura.IVA := AContrato.IVA; + AFactura.IMPORTE_IVA := AContrato.IMPORTE_IVA; + AFactura.IMPORTE_TOTAL := AContrato.IMPORTE_TOTAL; + AFactura.ID_TIENDA := AContrato.ID_TIENDA; +// AFactura.ID_VENDEDOR := AContrato.ID_VENDEDOR; + AFactura.RECARGO_EQUIVALENCIA := AContrato.RECARGO_EQUIVALENCIA; + AFactura.RE := AContrato.RE; + AFactura.IMPORTE_RE := AContrato.IMPORTE_RE; +end; + +procedure CopiarDetallesAFactura( + AContrato: IBizContratoCliente; + AFactura: IBizFacturaCliente; + AArticulos: IBizDetallesContratoCliente); +var + i : integer; + ADetalles : IBizDetallesFacturaCliente; + ADetallesController : IDetallesFacturaClienteController; +begin + if not Assigned(AFactura) then + raise Exception.Create ('Factura no asignada (CopiarDetallesAFactura)'); + + if not Assigned(AContrato) then + raise Exception.Create ('Contrato no asignado (CopiarDetallesAFactura)'); + + if not Assigned(AArticulos) then + raise Exception.Create ('Artículos no asignado (CopiarDetallesAFatura)'); + + if not AArticulos.DataTable.Active then + AArticulos.DataTable.Active := True; + + // El contrato tiene que venir ya abierto y posicionado donde hay que copiar + + ADetalles := AFactura.Detalles; + ADetallesController := TDetallesFacturaClienteController.Create; + try + //OJO IMPORTANTE + //Siempre que vayamos a trabajar con los detalles debemos hacer un beginupdate de los mismos y un endupdate para + //obligarle siempre a recalcular los detalles una sola vez + ADetallesController.BeginUpdate(ADetalles); + + AArticulos.DataTable.First; + for i := 0 to AArticulos.DataTable.RecordCount - 1 do + begin + ADetallesController.Add(ADetalles, AArticulos.TIPO_DETALLE); + ADetalles.Edit; + ADetalles.REFERENCIA := AArticulos.REFERENCIA; + ADetalles.ID_ARTICULO := AArticulos.ID_ARTICULO; +// ADetalles.TIPO_ARTICULO := AArticulos.TIPO_ARTICULO; + ADetalles.CONCEPTO := AArticulos.CONCEPTO; + ADetalles.CANTIDAD := AArticulos.CANTIDAD; + ADetalles.IMPORTE_UNIDAD := AArticulos.IMPORTE_UNIDAD; + ADetalles.IMPORTE_TOTAL := AArticulos.IMPORTE_TOTAL; + ADetalles.DESCUENTO := AArticulos.DESCUENTO; + ADetalles.IMPORTE_PORTE := AArticulos.IMPORTE_PORTE; + ADetalles.VISIBLE := AArticulos.VISIBLE; + ADetalles.REFERENCIA_PROVEEDOR := AArticulos.REFERENCIA_PROVEEDOR; + ADetalles.Post; + AArticulos.Next; + end; + finally + ADetallesController.EndUpdate(ADetalles); + ADetallesController := NIL; + end; +end; + +procedure Inicializar; +begin + dmGenerarFacturasCli := TdmGenerarFacturasCli.Create(nil); + AContratosClienteController := TContratosClienteController.Create; + AFacturasClienteController := TFacturasClienteController.Create; + AClientesController := TClientesController.Create; +end; + +procedure Finalizar; +begin + FreeAndNIL(dmGenerarFacturasCli); + AContratosClienteController := nil; + AFacturasClienteController := nil; + AClientesController := nil; +end; + + +function GenerarFacturaCli(const IDContrato : Integer) : Boolean; overload; +var + AContrato : IBizContratoCliente; + AFactura : IBizFacturaCliente; +begin + Result := False; + + try + if not Assigned(AContratosClienteController) then + Inicializar; + + AContrato := AContratosClienteController.Buscar(IDContrato); + if Assigned(AContrato) then + Result := GenerarFacturaCli(AContrato, AFactura); + finally + if Assigned(AContratosClienteController) then + Finalizar; + end; +end; + +function GenerarFacturaCli(AContrato : IBizContratoCliente; var AFactura: IBizFacturaCliente) : Boolean; overload; +var + ARespuesta : Integer; + +begin + Result := False; + AFactura := NIL; + + if not Assigned(AContrato) then + raise Exception.Create('Contrato de cliente no asignado (GenerarContratoCli)'); + + if not AContrato.DataTable.Active then + AContrato.DataTable.Active := True; + + if not Assigned(AContratosClienteController) then + Inicializar; + + try + AFactura := AFacturasClienteController.Nuevo; + CopiarContratoAFactura(AContrato, AFactura); + CopiarDetallesAFactura(AContrato, AFactura, AContrato.Detalles); + + //Sustituir por if de guardar + if AFacturasClienteController.Guardar(AFactura) then + begin + with dmGenerarFacturasCli.JsListaFacturasGenerados do + begin + Instruction.Text := 'Se ha generado la factura'; + + Content.Clear; + Content.Add(Format('Se ha generado correctamente la factura %s a partir del contrato de cliente' + #10#13, [AFactura.REFERENCIA])); + Execute; + + ARespuesta := CustomButtonResult; + case ARespuesta of + 100 : begin + // Ver el albarán + AFacturasClienteController.Ver(AFactura); + end; + 200 : // Continuar; + end; + end; + end; + + Result := True; + finally + if Assigned(AContratosClienteController) then + Finalizar; + end; +end; +{ +function ElegirPedidoYGenerarAlbaranCli(var IDAlbaran: Integer) : Boolean; overload; +var + APedido : IBizPedidoCliente; + AAlbaran : IBizAlbaranCliente; +begin + Result := False; + IDAlbaran := -1; + + AAlbaran := NIL; + try + if not Assigned(APedidosClienteController) then + Inicializar; + + APedido := APedidosClienteController.ElegirPedidos(APedidosClienteController.BuscarPendientes, + 'Elija el pedido de cliente que desea utilizar para dar de alta el albarán de cliente.' + , False); + + if Assigned(APedido) then + begin + Result := GenerarAlbaranCli(APedido, AAlbaran); + if Result then + IDAlbaran := AAlbaran.ID; + end; + finally + if Assigned(APedidosClienteController) then + Finalizar; + end; +end; +} +end. diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES index 2f97a9e0..d95bbcea 100644 Binary files a/Source/Servidor/FactuGES_Server.RES and b/Source/Servidor/FactuGES_Server.RES differ diff --git a/Source/Servidor/FactuGES_Server.dpr b/Source/Servidor/FactuGES_Server.dpr index b8bce3c4..0a94373b 100644 --- a/Source/Servidor/FactuGES_Server.dpr +++ b/Source/Servidor/FactuGES_Server.dpr @@ -132,7 +132,7 @@ uses schEmpresasServer_Intf in '..\ApplicationBase\Empresas\Model\schEmpresasServer_Intf.pas', srvContratosCliente_Impl in '..\Modulos\Contratos de cliente\Servidor\srvContratosCliente_Impl.pas' {srvContratosCliente: TDataAbstractService}, uBizContratosClienteServer in '..\Modulos\Contratos de cliente\Model\uBizContratosClienteServer.pas', - uRptContratosCliente_Server in '..\Modulos\Contratos de cliente\Reports\uRptContratosCliente_Server.pas', + uRptContratosCliente_Server in '..\Modulos\Contratos de cliente\Reports\uRptContratosCliente_Server.pas' {RptContratosCliente}, schContratosClienteClient_Intf in '..\Modulos\Contratos de cliente\Model\schContratosClienteClient_Intf.pas', schContratosClienteServer_Intf in '..\Modulos\Contratos de cliente\Model\schContratosClienteServer_Intf.pas', schPresupuestosClienteClient_Intf in '..\Modulos\Presupuestos de cliente\Model\schPresupuestosClienteClient_Intf.pas', diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj index 04a8bc9c..1b1c9f5c 100644 --- a/Source/Servidor/FactuGES_Server.dproj +++ b/Source/Servidor/FactuGES_Server.dproj @@ -1,293 +1,297 @@ - + - - {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} - FactuGES_Server.dpr - Debug - AnyCPU - DCC32 - ..\..\Output\Debug\Servidor\FactuGES_Server.exe - - - 7.0 - False - False - 0 - 3 - ..\..\Output\Release\Servidor - RELEASE - - - 7.0 - 3 - ..\..\Output\Debug\Servidor - DEBUG; - True - - - Delphi.Personality - - - FalseTrueFalseTrueFalse2350FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.5.0FactuGES (Servidor)2.3.5.0miércoles, 26 de agosto de 2009 12:14 - FastQueryBuilder 1.03 - JVCL Unified Interbase Components - FactuGES_Server.dpr - - - - - MainSource - - - - - -
srvEjercicios
- TDataAbstractService -
- - - -
srvEmpresas
- TDARemoteService -
- -
srvProvinciasPoblaciones
- TRORemoteDataModule -
- - - - - - - - - - - -
srvAlbaranesCliente
- TDataAbstractService -
- - - - -
srvAlbaranesProveedor
- TDataAbstractService -
- - - -
srvAlmacenes
- TDARemoteService -
- - - - - - - -
RptComisiones
- TDataModule -
- -
srvComisiones
- TDataAbstractService -
- - - - -
srvContabilidad
- TDataAbstractService -
- - - - - - - -
RptEtiquetasContacto
- TDataModule -
- -
srvContactos
- TDARemoteService -
- - - - - -
srvContratosCliente
- TDataAbstractService -
- - - - -
RptFacturasCliente
- TDataModule -
- -
srvFacturasCliente
- TDataAbstractService -
- - - - -
RptFacturasProveedor
- TDataModule -
- -
srvFacturasProveedor
- TDataAbstractService -
- - - - - - - -
srvGestorDocumentos
- TDataAbstractService -
- -
srvGestorInformes
- TDataAbstractService -
- - - -
srvHistoricoMovimientos
- TDataAbstractService -
- - - -
srvInventario
- TDataAbstractService -
- - - - -
srvPedidosProveedor
- TDataAbstractService -
- - - - -
RptPresupuestosCliente
-
- -
srvPresupuestosCliente
- TDataAbstractService -
- - - - - -
RptRecibosCliente
- TDataModule -
- -
srvRecibosCliente
- TDataAbstractService -
- - - - - -
RptRecibosProveedor
- TDataModule -
- -
srvRecibosProveedor
- TDataAbstractService -
- - - -
srvReferencias
- TDataAbstractService -
- - - - -
srvRemesasCliente
- TDataAbstractService -
- - - - -
srvRemesasProveedor
- TDataAbstractService -
- - - - - - -
srvUnidadesMedida
- TDataAbstractService -
- - - -
srvConfiguracion
- TDataAbstractService -
- -
frConexionBD
- TFrame -
- -
frConfGeneral
- TFrame -
- -
fConfiguracion
- TForm -
- -
FrameConfiguracion
- TFrame -
- -
srvLogin
- TDARemoteService -
- -
fAcercaDe
-
- -
dmServer
- TDataModule -
- -
fServerForm
-
- - - - - - - - -
+ + {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} + FactuGES_Server.dpr + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Servidor\FactuGES_Server.exe + + + 7.0 + False + False + 0 + 3 + ..\..\Output\Release\Servidor + RELEASE + + + 7.0 + 3 + ..\..\Output\Debug\Servidor + DEBUG; + True + + + Delphi.Personality + + +FalseTrueFalseTrueFalse2350FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.5.0FactuGES (Servidor)2.3.5.0miércoles, 26 de agosto de 2009 12:14 + + + FastQueryBuilder 1.03 + JVCL Unified Interbase Components + FactuGES_Server.dpr + + + + + MainSource + + + + + +
srvEjercicios
+ TDataAbstractService +
+ + + +
srvEmpresas
+ TDARemoteService +
+ +
srvProvinciasPoblaciones
+ TRORemoteDataModule +
+ + + + + + + + + + + +
srvAlbaranesCliente
+ TDataAbstractService +
+ + + + +
srvAlbaranesProveedor
+ TDataAbstractService +
+ + + +
srvAlmacenes
+ TDARemoteService +
+ + + + + + + +
RptComisiones
+ TDataModule +
+ +
srvComisiones
+ TDataAbstractService +
+ + + + +
srvContabilidad
+ TDataAbstractService +
+ + + + + + + +
RptEtiquetasContacto
+ TDataModule +
+ +
srvContactos
+ TDARemoteService +
+ + + + +
RptContratosCliente
+
+ +
srvContratosCliente
+ TDataAbstractService +
+ + + + +
RptFacturasCliente
+ TDataModule +
+ +
srvFacturasCliente
+ TDataAbstractService +
+ + + + +
RptFacturasProveedor
+ TDataModule +
+ +
srvFacturasProveedor
+ TDataAbstractService +
+ + + + + + + +
srvGestorDocumentos
+ TDataAbstractService +
+ +
srvGestorInformes
+ TDataAbstractService +
+ + + +
srvHistoricoMovimientos
+ TDataAbstractService +
+ + + +
srvInventario
+ TDataAbstractService +
+ + + + +
srvPedidosProveedor
+ TDataAbstractService +
+ + + + +
RptPresupuestosCliente
+
+ +
srvPresupuestosCliente
+ TDataAbstractService +
+ + + + + +
RptRecibosCliente
+ TDataModule +
+ +
srvRecibosCliente
+ TDataAbstractService +
+ + + + + +
RptRecibosProveedor
+ TDataModule +
+ +
srvRecibosProveedor
+ TDataAbstractService +
+ + + +
srvReferencias
+ TDataAbstractService +
+ + + + +
srvRemesasCliente
+ TDataAbstractService +
+ + + + +
srvRemesasProveedor
+ TDataAbstractService +
+ + + + + + +
srvUnidadesMedida
+ TDataAbstractService +
+ + + +
srvConfiguracion
+ TDataAbstractService +
+ +
frConexionBD
+ TFrame +
+ +
frConfGeneral
+ TFrame +
+ +
fConfiguracion
+ TForm +
+ +
FrameConfiguracion
+ TFrame +
+ +
srvLogin
+ TDARemoteService +
+ +
fAcercaDe
+
+ +
dmServer
+ TDataModule +
+ +
fServerForm
+
+ + + + + + + + +