Se pregunta al generar una factura si se desea copiar los detalles o no
git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@434 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
parent
aa2c5dbd72
commit
7156106993
@ -2,7 +2,6 @@ inherited fEditorPresupuestosCliente: TfEditorPresupuestosCliente
|
|||||||
Caption = 'Lista de presupuestos de cliente'
|
Caption = 'Lista de presupuestos de cliente'
|
||||||
ClientWidth = 674
|
ClientWidth = 674
|
||||||
ExplicitWidth = 682
|
ExplicitWidth = 682
|
||||||
ExplicitHeight = 240
|
|
||||||
PixelsPerInch = 96
|
PixelsPerInch = 96
|
||||||
TextHeight = 13
|
TextHeight = 13
|
||||||
inherited JvNavPanelHeader: TJvNavPanelHeader
|
inherited JvNavPanelHeader: TJvNavPanelHeader
|
||||||
|
|||||||
@ -127,7 +127,12 @@ end;
|
|||||||
procedure TfEditorPresupuestosCliente.actGenerarFacturaExecute(Sender: TObject);
|
procedure TfEditorPresupuestosCliente.actGenerarFacturaExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
GenerarFacturaCli(Presupuestos.ID);
|
|
||||||
|
if (ShowConfirmMessage('Generar factura', Format('¿Desea copiar todos los conceptos del presupuesto %s a la factura?', [Presupuestos.REFERENCIA])) = IDYES) then
|
||||||
|
GenerarFacturaCli(Presupuestos.ID)
|
||||||
|
else
|
||||||
|
GenerarFacturaCli(Presupuestos.ID, False);
|
||||||
|
|
||||||
actRefrescar.Execute;
|
actRefrescar.Execute;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|||||||
@ -10,11 +10,11 @@ type
|
|||||||
JsListaFacturasGeneradas: TJSDialog;
|
JsListaFacturasGeneradas: TJSDialog;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GenerarFacturaCli(const IDPresupuesto : Integer) : Boolean; overload;
|
function GenerarFacturaCli(const IDPresupuesto : Integer; const CopiarDetalles: Boolean = True) : Boolean; overload;
|
||||||
function GenerarFacturaCli(APresupuestos : IBizPresupuestoCliente) : Boolean; overload;
|
function GenerarFacturaCli(APresupuestos : IBizPresupuestoCliente; const CopiarDetalles: Boolean = True) : Boolean; overload;
|
||||||
function GenerarFacturaCli : Boolean; overload;
|
function GenerarFacturaCli : Boolean; overload;
|
||||||
|
|
||||||
function GenerarFacturas(AFacturas : IBizFacturaCliente; AListaPresupuestos : IBizPresupuestoCliente): Boolean;
|
function GenerarFacturas(AFacturas : IBizFacturaCliente; AListaPresupuestos : IBizPresupuestoCliente; const CopiarDetalles: Boolean = True): Boolean;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@ -27,14 +27,6 @@ uses
|
|||||||
uPresupuestosClienteController, uDetallesPresupuestoClienteController,
|
uPresupuestosClienteController, uDetallesPresupuestoClienteController,
|
||||||
uFacturasClienteController, uBizDetallesFacturaCliente;
|
uFacturasClienteController, uBizDetallesFacturaCliente;
|
||||||
|
|
||||||
// ,
|
|
||||||
// , uProveedoresController,
|
|
||||||
// ,
|
|
||||||
|
|
||||||
|
|
||||||
// , uBizContactos, schPedidosClienteClient_Intf,
|
|
||||||
// ;
|
|
||||||
|
|
||||||
var
|
var
|
||||||
dmGenerarFacturasCli: TdmGenerarFacturasCli;
|
dmGenerarFacturasCli: TdmGenerarFacturasCli;
|
||||||
APresupuestosClienteController : IPresupuestosClienteController;
|
APresupuestosClienteController : IPresupuestosClienteController;
|
||||||
@ -206,7 +198,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function GenerarFacturaCli(const IDPresupuesto : Integer) : Boolean; overload;
|
function GenerarFacturaCli(const IDPresupuesto : Integer; const CopiarDetalles: Boolean = True) : Boolean; overload;
|
||||||
var
|
var
|
||||||
APresupuesto : IBizPresupuestoCliente;
|
APresupuesto : IBizPresupuestoCliente;
|
||||||
begin
|
begin
|
||||||
@ -215,13 +207,13 @@ begin
|
|||||||
Inicializar;
|
Inicializar;
|
||||||
|
|
||||||
APresupuesto := APresupuestosClienteController.Buscar(IDPresupuesto);
|
APresupuesto := APresupuestosClienteController.Buscar(IDPresupuesto);
|
||||||
Result := GenerarFacturaCli(APresupuesto);
|
Result := GenerarFacturaCli(APresupuesto, CopiarDetalles);
|
||||||
|
|
||||||
if Assigned(APresupuestosClienteController) then
|
if Assigned(APresupuestosClienteController) then
|
||||||
Finalizar;
|
Finalizar;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GenerarFacturaCli(APresupuestos : IBizPresupuestoCliente) : Boolean; overload;
|
function GenerarFacturaCli(APresupuestos : IBizPresupuestoCliente; const CopiarDetalles: Boolean = True) : Boolean; overload;
|
||||||
var
|
var
|
||||||
ARespuesta : Integer;
|
ARespuesta : Integer;
|
||||||
AFacturasNuevas : IBizFacturaCliente;
|
AFacturasNuevas : IBizFacturaCliente;
|
||||||
@ -238,8 +230,8 @@ begin
|
|||||||
APresupuestos.DataTable.Active := True;
|
APresupuestos.DataTable.Active := True;
|
||||||
|
|
||||||
try
|
try
|
||||||
AFacturasNuevas := AFacturasClienteController.Nuevo(False);
|
AFacturasNuevas := AFacturasClienteController.Nuevo(False);
|
||||||
if GenerarFacturas(AFacturasNuevas, APresupuestos) then
|
if GenerarFacturas(AFacturasNuevas, APresupuestos, CopiarDetalles) then
|
||||||
begin
|
begin
|
||||||
if AFacturasNuevas.DataTable.RecordCount = 1 then
|
if AFacturasNuevas.DataTable.RecordCount = 1 then
|
||||||
ShowInfoMessage('La factura se ha dado de alta con el código ' + AFacturasNuevas.REFERENCIA)
|
ShowInfoMessage('La factura se ha dado de alta con el código ' + AFacturasNuevas.REFERENCIA)
|
||||||
@ -288,7 +280,7 @@ begin
|
|||||||
}
|
}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function GenerarFacturas(AFacturas : IBizFacturaCliente; AListaPresupuestos : IBizPresupuestoCliente): Boolean;
|
function GenerarFacturas(AFacturas : IBizFacturaCliente; AListaPresupuestos : IBizPresupuestoCliente; const CopiarDetalles: Boolean = True): Boolean;
|
||||||
var
|
var
|
||||||
AFacturaActual : IBizFacturaCliente;
|
AFacturaActual : IBizFacturaCliente;
|
||||||
APresupuestosController : IPresupuestosClienteController;
|
APresupuestosController : IPresupuestosClienteController;
|
||||||
@ -310,9 +302,6 @@ begin
|
|||||||
if not AListaPresupuestos.DataTable.Active then
|
if not AListaPresupuestos.DataTable.Active then
|
||||||
AListaPresupuestos.DataTable.Active := True;
|
AListaPresupuestos.DataTable.Active := True;
|
||||||
|
|
||||||
// ShowHourglassCursor;
|
|
||||||
// Application.ProcessMessages;
|
|
||||||
|
|
||||||
APresupuestosController := TPresupuestosClienteController.Create;
|
APresupuestosController := TPresupuestosClienteController.Create;
|
||||||
try
|
try
|
||||||
// Ordenar por fecha de albaran
|
// Ordenar por fecha de albaran
|
||||||
@ -337,69 +326,66 @@ begin
|
|||||||
APresupuestosController.RecuperarCliente(AListaPresupuestos);
|
APresupuestosController.RecuperarCliente(AListaPresupuestos);
|
||||||
AFacturas.Cliente := AListaPresupuestos.Cliente;
|
AFacturas.Cliente := AListaPresupuestos.Cliente;
|
||||||
|
|
||||||
//Siempre asignaremos por defecto la referencia de factura de Cliente que tenga el primer albaran del Cliente
|
|
||||||
{ bEnEdicion := (AFacturas.DataTable.State in dsEditModes);
|
|
||||||
if not bEnEdicion then
|
|
||||||
AFacturas.Edit;
|
|
||||||
AFacturas.REFERENCIA_CLIENTE := AListaPresupuestos.REF_FACTURA_PROV;
|
|
||||||
AFacturas.Post;
|
|
||||||
if bEnEdicion then
|
|
||||||
AFacturas.Edit;
|
|
||||||
|
|
||||||
//Si el albaran es de tipo devolución hacemos la factura de tipo abono
|
|
||||||
if (AListaPresupuestos.TIPO = CTE_TIPO_ALBARAN_DEV) then
|
|
||||||
begin
|
|
||||||
bEnEdicion := (AFacturas.DataTable.State in dsEditModes);
|
|
||||||
if not bEnEdicion then
|
|
||||||
AFacturas.Edit;
|
|
||||||
AFacturas.TIPO := CTE_TIPO_ABONO;
|
|
||||||
AFacturas.Post;
|
|
||||||
if bEnEdicion then
|
|
||||||
AFacturas.Edit;
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
AFacturaActual := AFacturas;
|
AFacturaActual := AFacturas;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Ya tengo la factura. Le añado los conceptos del presupuesto
|
// Ya tengo la factura. Le añado los conceptos del presupuesto
|
||||||
AFacturaActual.Detalles.DataTable.Last;
|
AFacturaActual.Detalles.DataTable.Last;
|
||||||
// Añado el título
|
|
||||||
AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_TITULO);
|
|
||||||
// Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_TITULO);
|
|
||||||
with AFacturaActual.Detalles do
|
|
||||||
begin
|
|
||||||
Edit;
|
|
||||||
CONCEPTO := 'Presupuesto ' + AListaPresupuestos.REFERENCIA + ' del ' + DateToStr(AListaPresupuestos.FECHA_PRESUPUESTO);
|
|
||||||
Post;
|
|
||||||
end;
|
|
||||||
// Añado el contenido del presupuesto
|
|
||||||
CopiarArticulosPresupuesto(AListaPresupuestos.Detalles, AFacturaActual.Detalles);
|
|
||||||
|
|
||||||
{En los albaranes a Cliente el porte es a nivel del artículo
|
//Se pone la referencia del presupuesto y el total y nos olvidamos de los detalles
|
||||||
Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
|
if not CopiarDetalles then
|
||||||
with AFacturaActual.Detalles do
|
|
||||||
begin
|
begin
|
||||||
Edit;
|
AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
|
||||||
CONCEPTO := 'Porte del presupuesto';
|
with AFacturaActual.Detalles do
|
||||||
CANTIDAD := 1;
|
begin
|
||||||
IMPORTE_UNIDAD := AListaPresupuestos.IMPORTE_PORTE;
|
Edit;
|
||||||
Post;
|
CONCEPTO := 'Presupuesto ' + AListaPresupuestos.REFERENCIA + ' del ' + DateToStr(AListaPresupuestos.FECHA_PRESUPUESTO);
|
||||||
end;
|
CANTIDAD := 1;
|
||||||
}
|
IMPORTE_UNIDAD := AListaPresupuestos.IMPORTE_TOTAL; //Tecsitel no utiliza el IVA en los presupuestos por lo tanto el
|
||||||
|
//importe total es lo que queremos (IMPORTE_NETO+IMPORTE_PORTE)
|
||||||
|
Post;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
//Se copian los detalles del presupuesto a la factura
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
// Añado el título
|
||||||
|
AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_TITULO);
|
||||||
|
with AFacturaActual.Detalles do
|
||||||
|
begin
|
||||||
|
Edit;
|
||||||
|
CONCEPTO := 'Presupuesto ' + AListaPresupuestos.REFERENCIA + ' del ' + DateToStr(AListaPresupuestos.FECHA_PRESUPUESTO);
|
||||||
|
Post;
|
||||||
|
end;
|
||||||
|
// Añado el contenido del presupuesto
|
||||||
|
CopiarArticulosPresupuesto(AListaPresupuestos.Detalles, AFacturaActual.Detalles);
|
||||||
|
|
||||||
// Añado el resumen
|
//En el caso de tener porte el presupuesto se añade una fila con el importe
|
||||||
AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_SUBTOTAL);
|
if (AListaPresupuestos.IMPORTE_PORTE > 0) then
|
||||||
//Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_SUBTOTAL);
|
begin
|
||||||
with AFacturaActual.Detalles do
|
AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
|
||||||
begin
|
with AFacturaActual.Detalles do
|
||||||
Edit;
|
begin
|
||||||
CONCEPTO := 'Total del presupuesto ' + AListaPresupuestos.REFERENCIA;
|
Edit;
|
||||||
Post;
|
CONCEPTO := 'Porte del presupuesto';
|
||||||
|
CANTIDAD := 1;
|
||||||
|
IMPORTE_UNIDAD := AListaPresupuestos.IMPORTE_PORTE;
|
||||||
|
Post;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// Añado el resumen
|
||||||
|
AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_SUBTOTAL);
|
||||||
|
with AFacturaActual.Detalles do
|
||||||
|
begin
|
||||||
|
Edit;
|
||||||
|
CONCEPTO := 'Total del presupuesto ' + AListaPresupuestos.REFERENCIA;
|
||||||
|
Post;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Añado una línea en blanco
|
// Añado una línea en blanco
|
||||||
AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
|
AFacturasClienteController.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
|
||||||
// Self.DetallesController.Add(AFacturaActual.Detalles, TIPO_DETALLE_CONCEPTO);
|
|
||||||
with AFacturaActual.Detalles do
|
with AFacturaActual.Detalles do
|
||||||
begin
|
begin
|
||||||
Edit;
|
Edit;
|
||||||
@ -410,7 +396,6 @@ begin
|
|||||||
// Guardo la factura que acabo de generar o editar
|
// Guardo la factura que acabo de generar o editar
|
||||||
AFacturaActual.CalcularImporteTotal;
|
AFacturaActual.CalcularImporteTotal;
|
||||||
AFacturasClienteController.Guardar(AFacturaActual);
|
AFacturasClienteController.Guardar(AFacturaActual);
|
||||||
// Self.Guardar(AFacturaActual);
|
|
||||||
// Asocio la factura con el presupuesto
|
// Asocio la factura con el presupuesto
|
||||||
AListaPresupuestos.Edit;
|
AListaPresupuestos.Edit;
|
||||||
AListaPresupuestos.ID_FACTURA := AFacturaActual.ID;
|
AListaPresupuestos.ID_FACTURA := AFacturaActual.ID;
|
||||||
@ -422,8 +407,7 @@ begin
|
|||||||
Result := True;
|
Result := True;
|
||||||
finally
|
finally
|
||||||
APresupuestosController := NIL;
|
APresupuestosController := NIL;
|
||||||
// HideHourglassCursor
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user