AbetoDesign_FactuGES2/Source/Modulos/Facturas de cliente/Views/uViewFacturaCliente.pas
roberto 1f5e6ebcb9 Version 4.5.4
Cambio en los informes de Contratos de cliente de todas las entidades: Cambio fecha de entrega por fecha expedicion - Solicitado por Próspero
Cambio logo uecko y sellos cabecera en todos los informes de todas las entidades- Solicitado por Noelia
Arreglo para que permita introducir DNI y CIFs raros - Solicitado por Mónica
Las facturas proforma no se tendrán en cuenta en las facturas asociadas a los contratos, listado de contratos - Solicitado por Eva
Se añade comprobación de capitulos para que avise si existe un subtotal sin capitulo correspondiente, ayudará a controlar errores en presupuestos y contratos largos. - Solicitado por Miriam
En los detalles de presupuestos y contratos si eligen un articulo de la tarífa el programa no deja modificar las descripciones (Se ha detectado que lo hen hecho en ocasiones en las tiendas) - Solicitado por Miriam

git-svn-id: https://192.168.0.254/svn/Proyectos.AbetoDesign_FactuGES/trunk@186 93f398dd-4eb6-7a46-baf6-13f46f578da2
2024-02-05 10:15:29 +00:00

295 lines
11 KiB
ObjectPascal
Raw Blame History

unit uViewFacturaCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, DB, uDADataTable, uCustomView,
uViewDatosYSeleccionCliente, uBizFacturasCliente,
cxControls, cxContainer, cxEdit, cxTextEdit, cxDBEdit, dxLayoutControl,
cxMemo, cxMaskEdit, cxDropDownEdit, cxCalendar, cxSpinEdit, StdCtrls, Mask,
DBCtrls, cxGraphics, dxLayoutLookAndFeels, cxLookupEdit, cxDBLookupEdit,
cxDBLookupComboBox, uFormasPagoController, uDAInterfaces, uBizFormasPago,
uViewTienda, uFacturasClienteController, uViewClienteFactura, Menus, StdActns,
ActnList, uViewObservaciones, cxCheckBox, uViewDatosYSeleccionComercial,
uViewDatosYSeleccionContrato;
type
IViewFacturaCliente = interface(IViewBase)
['{3A95930C-20B3-41E9-93CB-21138ADB5B70}']
function GetController : IFacturasClienteController;
procedure SetController (const Value : IFacturasClienteController);
property Controller : IFacturasClienteController read GetController write SetController;
function GetFactura: IBizFacturaCliente;
procedure SetFactura(const Value: IBizFacturaCliente);
property Factura: IBizFacturaCliente read GetFactura write SetFactura;
end;
TfrViewFacturaCliente = class(TfrViewBase, IViewFacturaCliente)
DADataSource: TDADataSource;
dxLayoutControl1Group_Root: TdxLayoutGroup;
dxLayoutControl1: TdxLayoutControl;
dxLayoutControl1Item1: TdxLayoutItem;
eReferencia: TcxDBTextEdit;
dxLayoutControl1Item2: TdxLayoutItem;
edtFecha: TcxDBDateEdit;
dxLayoutControl1Group1: TdxLayoutGroup;
dxLayoutControl1Group2: TdxLayoutGroup;
dxLayoutControl1Group5: TdxLayoutGroup;
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
dsFormaPago: TDADataSource;
dxLayoutControl1Item4: TdxLayoutItem;
cbFormaPago: TcxDBLookupComboBox;
dxLayoutControl1Item10: TdxLayoutItem;
bFormasPago: TButton;
dxLayoutControl1Group6: TdxLayoutGroup;
frViewTienda1: TfrViewTienda;
dxLayoutControl1Group4: TdxLayoutGroup;
dxLayoutControl1Item3: TdxLayoutItem;
dxLayoutControl1Item6: TdxLayoutItem;
frViewClienteFactura1: TfrViewClienteFactura;
dxLayoutControl1Group8: TdxLayoutGroup;
ledtFechaVencimiento: TdxLayoutItem;
edtFechaVencimiento: TcxDBDateEdit;
dxLayoutControl1Group3: TdxLayoutGroup;
frViewObservaciones1: TfrViewObservaciones;
dxLayoutControl1Item5: TdxLayoutItem;
dxLayoutControl1Item7: TdxLayoutItem;
cbRecargoEquivalencia: TcxDBCheckBox;
dxLayoutControl1Group9: TdxLayoutGroup;
edtSituacion: TcxDBComboBox;
ledtSituacion: TdxLayoutItem;
dxLayoutControl1Item11: TdxLayoutItem;
cbTipoFactura: TcxDBLookupComboBox;
dsTiposFactura: TDADataSource;
dxLayoutControl1Item12: TdxLayoutItem;
frViewDatosYSeleccionComercial1: TfrViewDatosYSeleccionComercial;
dxLayoutControl1Group10: TdxLayoutGroup;
dxLayoutControl1Item13: TdxLayoutItem;
frViewDatosYSeleccionContrato1: TfrViewDatosYSeleccionContrato;
procedure bFormasPagoClick(Sender: TObject);
procedure CustomViewDestroy(Sender: TObject);
procedure CustomViewCreate(Sender: TObject);
procedure cbFormaPagoPropertiesEditValueChanged(Sender: TObject);
procedure edtFechaVencimientoPropertiesEditValueChanged(Sender: TObject);
protected
FFactura : IBizFacturaCliente;
FController : IFacturasClienteController;
FTiposFacturaCliente : IBizTiposFacturaCliente;
FFormasPago : IBizFormaPago;
FFormasPagoController : IFormasPagoController;
function GetFactura: IBizFacturaCliente;
procedure SetFactura(const Value: IBizFacturaCliente);
function GetController : IFacturasClienteController;
procedure SetController (const Value : IFacturasClienteController);
procedure OnComercialChanged(Sender : TObject);
procedure OnContratoChanged(Sender: TObject);
public
property Factura: IBizFacturaCliente read GetFactura write SetFactura;
property Controller : IFacturasClienteController read GetController write SetController;
end;
implementation
uses
DateUtils, uDataModuleContactos, schFacturasClienteClient_Intf, uFactuGES_App;
{$R *.dfm}
{ TfrViewFacturaCliente }
procedure TfrViewFacturaCliente.bFormasPagoClick(Sender: TObject);
begin
inherited;
if Assigned(FFormasPago) then
FFormasPagoController.VerTodos(FFormasPago);
end;
procedure TfrViewFacturaCliente.CustomViewCreate(Sender: TObject);
begin
inherited;
FFormasPago := Nil;
FTiposFacturaCliente := Nil;
FFormasPagoController := TFormasPagoController.Create;
cbFormaPago.Properties.OnEditValueChanged := cbFormaPagoPropertiesEditValueChanged;
edtFechaVencimiento.Properties.OnEditValueChanged := edtFechaVencimientoPropertiesEditValueChanged;
//FILTRO DE EMPRESAS
if (AppFactuGES.EmpresaActiva.ID = CTE_EMPRESA_ABETO) then
begin
dxLayoutControl1Group10.Visible := true;
end
else
begin
dxLayoutControl1Group10.Visible := false;
end;
end;
procedure TfrViewFacturaCliente.CustomViewDestroy(Sender: TObject);
begin
frViewDatosYSeleccionComercial1.OnComercialChanged := Nil;
frViewDatosYSeleccionContrato1.OnContratoChanged := Nil;
FFormasPago := Nil;
FTiposFacturaCliente := Nil;
FFormasPagoController := NIL;
edtFechaVencimiento.Properties.OnEditValueChanged := Nil;
cbFormaPago.Properties.OnEditValueChanged := Nil;
inherited;
end;
procedure TfrViewFacturaCliente.edtFechaVencimientoPropertiesEditValueChanged(
Sender: TObject);
begin
inherited;
if Assigned(Factura) and (Factura.DataTable.State in dsEditModes) then
begin
if (edtFechaVencimiento.EditValue <> null) then
begin
if (edtFechaVencimiento.EditValue = 0) then
begin
Factura.DataTable.DisableEventHandlers;
try
Factura.DataTable.FieldByName(fld_FacturasClienteFECHA_VENCIMIENTO).Clear;
finally
Factura.DataTable.EnableEventHandlers;
end;
end
else begin
Application.MessageBox('Ha elegido una fecha de vencimiento, la situaci<63>n de la factura vendr<64> dada por la situaci<63>n del recibo generado con el vencimiento dado', 'Atenci<63>n', MB_OK);
edtSituacion.EditValue := CTE_PENDIENTE;
ledtSituacion.Enabled := False;
end;
end
else begin
// edtSituacion.EditValue := CTE_PENDIENTE;
ledtSituacion.Enabled := True;
end;
end;
end;
procedure TfrViewFacturaCliente.cbFormaPagoPropertiesEditValueChanged(Sender: TObject);
begin
if Assigned(Factura) and (Factura.DataTable.State in dsEditModes) then
begin
if Assigned(FFormasPago) then
if (FFormasPago.Plazos.RecordCount = 0) then
begin
// edtFechaVencimiento.EditValue := DateOf(Now);
ledtFechaVencimiento.Enabled := True;
edtSituacion.EditValue := CTE_PENDIENTE;
ledtSituacion.Enabled := True;
end
else
begin
Application.MessageBox('Ha elegido una forma de pago con plazos asignados, la situaci<63>n de la factura vendr<64> dada por la situaci<63>n de los recibos generados seg<65>n los plazos', 'Atenci<63>n', MB_OK);
edtFechaVencimiento.EditValue := Null;
ledtFechaVencimiento.Enabled := False;
edtSituacion.EditValue := CTE_PENDIENTE;
ledtSituacion.Enabled := False;
end;
end;
end;
function TfrViewFacturaCliente.GetController: IFacturasClienteController;
begin
Result := FController;
end;
function TfrViewFacturaCliente.GetFactura: IBizFacturaCliente;
begin
Result := FFactura;
end;
procedure TfrViewFacturaCliente.OnComercialChanged(Sender: TObject);
begin
if Assigned(FFactura) then
begin
FController.CambiarComercial(FFactura, frViewDatosYSeleccionComercial1.Comercial);
end;
end;
procedure TfrViewFacturaCliente.OnContratoChanged(Sender: TObject);
begin
if Assigned(FFactura) then
begin
FController.CambiarContrato(FFactura, frViewDatosYSeleccionContrato1.Contrato);
end;
end;
procedure TfrViewFacturaCliente.SetController(const Value: IFacturasClienteController);
begin
FController := Value;
if Assigned(FController) then
frViewClienteFactura1.Controller := FController.ClienteController;
end;
procedure TfrViewFacturaCliente.SetFactura(const Value: IBizFacturaCliente);
var
ACadena : String;
begin
FFactura := Value;
if Assigned(FFactura) then
begin
DADataSource.DataTable := FFactura.DataTable;
frViewTienda1.DataItem := FFactura.DataTable;
frViewDatosYSeleccionContrato1.DataItem := FFactura.DataTable;
frViewDatosYSeleccionContrato1.IdContrato := FFactura.ID_CONTRATO;
frViewDatosYSeleccionContrato1.OnContratoChanged := OnContratoChanged;
frViewDatosYSeleccionComercial1.ID_Comercial := FFactura.ID_AGENTE;
frViewDatosYSeleccionComercial1.OnComercialChanged := OnComercialChanged;
FFormasPago := FFormasPagoController.BuscarTodos;
dsFormaPago.DataTable := FFormasPago.DataTable;
dsFormaPago.DataTable.Active := True;
//Posicionamos la tabla en la forma de pago que tiene la factura ya que no lo hace el componente por si solo
FFormasPago.DataTable.Locate(fld_FacturasClienteID, FFactura.ID_FORMA_PAGO, []);
if ((not FFactura.FECHA_VENCIMIENTOIsNull) or (FFormasPago.Plazos.RecordCount > 0)) then
begin
if (edtFechaVencimiento.EditingValue <> null) then
ledtSituacion.Enabled := False;
if (FFormasPago.Plazos.RecordCount > 0) then
ledtFechaVencimiento.Enabled := False
else
ledtFechaVencimiento.Enabled := true;
end
else
begin
ledtFechaVencimiento.Enabled := True;
ledtSituacion.Enabled := True;
end;
FTiposFacturaCliente := FController.darTiposFacturaCliente;
dsTiposFactura.DataTable := FTiposFacturaCliente.DataTable;
dsTiposFactura.DataTable.Active := True;
//Solo se deshabilita al insertar, luego la referencia ser<65> modificable
//eReferencia.Enabled := (FFactura.DataTable.State = dsInsert);
if FFactura.TIPO = CTE_TIPO_ABONO then
begin
dxLayoutControl1Group1.Caption := 'Datos del abono:';
dxLayoutControl1Item2.Caption := 'Fecha del abono:';
ACadena := 'Elija el cliente al que se le realizar<61> el abono.';
end
else
ACadena := 'Elija el cliente al que se le realizar<61> la factura.';
frViewClienteFactura1.MsgElegirCliente := ACadena;
end
else begin
DADataSource.DataTable := NIL;
dsFormaPago.DataTable := NIL;
frViewClienteFactura1.Cliente := NIL
end;
end;
end.