git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES/trunk@5 9a1d36f3-7752-2d40-8ccb-50eb49674c68
250 lines
7.5 KiB
ObjectPascal
250 lines
7.5 KiB
ObjectPascal
unit uBizFacturasProveedor;
|
||
|
||
interface
|
||
|
||
uses
|
||
uDAInterfaces, uDADataTable, Classes, uBizContacto, DB,
|
||
uBizImportesDetalleBase,
|
||
uBizImportesCabeceraBase, uDBSelectionList,
|
||
uExceptions, uBizInformesBase, schFacturasProveedorClient_Intf;
|
||
|
||
const
|
||
BIZ_FACTURASPROVEEDOR = 'Client.FacturasProveedor';
|
||
|
||
SITUACION_PENDIENTE = 'Pendiente';
|
||
SITUACION_PAGADO = 'Pagado';
|
||
|
||
type
|
||
IBizFacturasProveedor = interface(IFacturasProveedor)
|
||
['{1D9E1949-8CC3-4776-BA2C-7E1F4A73A432}']
|
||
function GetProveedor: IBizProveedor;
|
||
procedure SetProveedor(Value: IBizProveedor);
|
||
property Proveedor: IBizProveedor read GetProveedor write SetProveedor;
|
||
|
||
procedure Show;
|
||
|
||
procedure CopyFrom(AFacturaProveedor : IBizFacturasProveedor);
|
||
end;
|
||
|
||
TBizFacturasProveedor = class(TFacturasProveedorDataTableRules, IBizFacturasProveedor,
|
||
IBizImportesCabecera, ISelectedRowList,
|
||
IApplyUpdateFailedException)
|
||
private
|
||
FProveedor : IBizProveedor;
|
||
FSelectedRows : TSelectedRowList;
|
||
protected
|
||
procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed);
|
||
|
||
function GetProveedor: IBizProveedor;
|
||
procedure SetProveedor(Value: IBizProveedor);
|
||
|
||
procedure OnNewRecord(Sender: TDADataTable); override;
|
||
|
||
function GetSelectedRows : TSelectedRowList;
|
||
procedure BeforeDelete(Sender: TDADataTable); override;
|
||
procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError;
|
||
var Action: TDataAction); override;
|
||
procedure BeforeApplyUpdates(Sender : TDADataTable; const Delta : IDADelta);
|
||
public
|
||
procedure RecalcularImporte;
|
||
property Proveedor: IBizProveedor read GetProveedor write SetProveedor;
|
||
procedure Show;
|
||
procedure CopyFrom(AFacturaProveedor : IBizFacturasProveedor); overload;
|
||
|
||
constructor Create(aDataTable: TDADataTable); override;
|
||
destructor Destroy; override;
|
||
|
||
property SelectedRows : TSelectedRowList read GetSelectedRows;
|
||
end;
|
||
|
||
procedure ValidarFacturaProveedor (const AFacturaProveedor : IBizFacturasProveedor);
|
||
|
||
|
||
implementation
|
||
|
||
uses
|
||
Windows, Dialogs, uDACDSDataTable, SysUtils, uEditorUtils, Variants, Math,
|
||
uDataModuleContactos, Controls, Forms,
|
||
uDataModuleBase, uDataModuleUsuarios,
|
||
uDataTableUtils, uDataModuleFacturasProveedor;
|
||
|
||
var
|
||
FCancelInsert : Boolean;
|
||
|
||
procedure ValidarFacturaProveedor (const AFacturaProveedor : IBizFacturasProveedor);
|
||
begin
|
||
if (FloatToStr(AFacturaProveedor.FECHAFACTURA) = '0') then
|
||
raise Exception.Create('Debe indicar la fecha de esta factura');
|
||
|
||
if not Assigned(AFacturaProveedor.Proveedor) or
|
||
(AFacturaProveedor.Proveedor.DataTable.IsEmpty) then
|
||
raise Exception.Create('Debe indicar el proveedor de esta factura');
|
||
end;
|
||
|
||
constructor TBizFacturasProveedor.Create(aDataTable: TDADataTable);
|
||
begin
|
||
inherited;
|
||
FProveedor := NIL;
|
||
FSelectedRows := TSelectedRowList.Create(aDataTable);
|
||
aDataTable.OnBeforeApplyUpdates := BeforeApplyUpdates;
|
||
end;
|
||
|
||
destructor TBizFacturasProveedor.Destroy;
|
||
begin
|
||
FProveedor := NIL;
|
||
FSelectedRows.Free;
|
||
inherited;
|
||
end;
|
||
|
||
function TBizFacturasProveedor.GetProveedor: IBizProveedor;
|
||
begin
|
||
if not Assigned(FProveedor) or
|
||
(CODIGOPROVEEDOR <> FProveedor.Codigo) and
|
||
not (FProveedor.DataTable.State in dsEditModes) then
|
||
begin
|
||
FProveedor := dmContactos.GetProveedor(CODIGOPROVEEDOR);
|
||
if not FProveedor.DataTable.Active then
|
||
FProveedor.DataTable.Active := True;
|
||
if not FProveedor.DataTable.IsEmpty then // Est<73> vac<61>o si la factura es nueva y no tiene proveedor
|
||
begin
|
||
FProveedor.Edit;
|
||
FProveedor.NOMBRE := NOMBRE;
|
||
FProveedor.NIFCIF := NIFCIF;
|
||
FProveedor.CALLE := CALLE;
|
||
FProveedor.CODIGOPOSTAL := CODIGOPOSTAL;
|
||
FProveedor.PROVINCIA := PROVINCIA;
|
||
FProveedor.POBLACION := POBLACION;
|
||
FProveedor.Post;
|
||
end;
|
||
end;
|
||
Result := FProveedor;
|
||
end;
|
||
|
||
procedure TBizFacturasProveedor.CopyFrom(AFacturaProveedor : IBizFacturasProveedor);
|
||
var
|
||
ACursor: TCursor;
|
||
begin
|
||
{ if not (State in dsEditModes) then
|
||
Edit;
|
||
ACursor := Screen.Cursor;
|
||
Screen.Cursor := crHourGlass;
|
||
Application.ProcessMessages;
|
||
try
|
||
CODIGOEMPRESA := APresupuesto.CODIGOEMPRESA;
|
||
CODIGOCONTACTO := APresupuesto.CODIGOCONTACTO;
|
||
BASEIMPONIBLE := APresupuesto.BASEIMPONIBLE;
|
||
DESCUENTO := APresupuesto.DESCUENTO;
|
||
IVA := APresupuesto.IVA;
|
||
OBSERVACIONES := APresupuesto.OBSERVACIONES;
|
||
FORMAPAGO := APresupuesto.FORMAPAGO;
|
||
CODIGOPRESUPUESTO := APresupuesto.CODIGO;
|
||
Proveedor := APresupuesto.Proveedor;
|
||
Detalles.CopyFrom(APresupuesto.Detalles);
|
||
RecalcularImporte;
|
||
|
||
MessageBox(0, 'Se ha copiado correctamente el presupuesto elegido en este albar<61>n.', 'Presupuesto copiado', MB_ICONWARNING or MB_OK);
|
||
|
||
finally
|
||
Screen.Cursor := ACursor;
|
||
end;}
|
||
end;
|
||
|
||
procedure TBizFacturasProveedor.OnNewRecord(Sender: TDADataTable);
|
||
begin
|
||
inherited;
|
||
CODIGOEMPRESA := dmBase.CodigoEmpresa;
|
||
USUARIO := dmUsuarios.LoginInfo.UserID;
|
||
FECHAALTA := Date;
|
||
FECHAFACTURA := Date;
|
||
CODIGO := dmFacturasProveedor.GetNextAutoinc;
|
||
end;
|
||
|
||
procedure TBizFacturasProveedor.SetProveedor(Value: IBizProveedor);
|
||
var
|
||
bEnEdicion : Boolean;
|
||
begin
|
||
bEnEdicion := (DataTable.State in dsEditModes);
|
||
if not bEnEdicion then
|
||
Edit;
|
||
FProveedor := Value;
|
||
if Assigned(FProveedor) then
|
||
begin
|
||
CODIGOPROVEEDOR := FProveedor.CODIGO;
|
||
NOMBRE := FProveedor.NOMBRE;
|
||
NIFCIF := FProveedor.NIFCIF;
|
||
CALLE := FProveedor.CALLE;
|
||
CODIGOPOSTAL := FProveedor.CODIGOPOSTAL;
|
||
PROVINCIA := FProveedor.PROVINCIA;
|
||
POBLACION := FProveedor.POBLACION;
|
||
if not bEnEdicion then
|
||
Post;
|
||
end
|
||
end;
|
||
|
||
procedure TBizFacturasProveedor.Show;
|
||
begin
|
||
ShowEditor(IBizFacturasProveedor, Self, etItem);
|
||
end;
|
||
|
||
function TBizFacturasProveedor.GetSelectedRows: TSelectedRowList;
|
||
begin
|
||
Result := FSelectedRows;
|
||
end;
|
||
|
||
procedure TBizFacturasProveedor.ShowApplyUpdateFailed(
|
||
const Error: EDAApplyUpdateFailed);
|
||
begin
|
||
if (Pos(AUF_FKVIOLATION, Error.Message) > 0) then
|
||
MessageBox(0, 'No se puede borrar este albar<61>n porque tiene una factura asociada', 'Atenci<63>n', MB_ICONWARNING or MB_OK);
|
||
end;
|
||
|
||
procedure TBizFacturasProveedor.BeforeDelete(Sender: TDADataTable);
|
||
begin
|
||
inherited;
|
||
if not dmFacturasProveedor.PuedoEliminarFactura(CODIGO) then
|
||
raise Exception.Create('No se puede borrar esta factura porque...');
|
||
end;
|
||
|
||
procedure TBizFacturasProveedor.OnPostError(DataTable: TDADataTable;
|
||
Error: EDatabaseError; var Action: TDataAction);
|
||
begin
|
||
inherited;
|
||
Action := daAbort;
|
||
if (Pos(AUF_HAVEVALUE, Error.Message) > 0) then
|
||
begin
|
||
if (Pos('contacto', Error.Message) > 0) then
|
||
MessageBox(0, 'Debe indicar el proveedor de esta factura', 'Atenci<63>n', MB_ICONWARNING or MB_OK)
|
||
else
|
||
if (Pos('Fecha albar<61>n', Error.Message) > 0) then
|
||
MessageBox(0, 'Debe indicar la fecha de esta factura', 'Atenci<63>n', MB_ICONWARNING or MB_OK)
|
||
else
|
||
raise Error;
|
||
end
|
||
else
|
||
raise Error;
|
||
end;
|
||
|
||
procedure TBizFacturasProveedor.BeforeApplyUpdates(Sender: TDADataTable;
|
||
const Delta: IDADelta);
|
||
var
|
||
i : integer;
|
||
begin
|
||
for i := 0 to Delta.Count - 1 do
|
||
case Delta.Changes[i].ChangeType of
|
||
ctInsert, ctUpdate : ValidarFacturaProveedor(Self);
|
||
//ctDelete :
|
||
end;
|
||
end;
|
||
|
||
procedure TBizFacturasProveedor.RecalcularImporte;
|
||
begin
|
||
RecalcularImportesCabecera(Self.DataTable);
|
||
end;
|
||
|
||
initialization
|
||
RegisterDataTableRules(BIZ_FACTURASPROVEEDOR, TBizFacturasProveedor);
|
||
|
||
finalization
|
||
|
||
end.
|