This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
AlonsoYSal_FactuGES/Modulos/Pedidos a proveedor/Cliente/uDataModulePedidosProveedor.pas

263 lines
7.4 KiB
ObjectPascal
Raw Blame History

unit uDataModulePedidosProveedor;
interface
uses {vcl:} SysUtils, Classes, DB, DBClient,
{RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter,
uROServiceComponent, uRORemoteService, uROClient, uROBinMessage,
uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable,
uBizPedidosProveedor, uROTypes;
type
TdmPedidos = class(TDAClientDataModule)
RORemoteService: TRORemoteService;
DABinAdapter: TDABINAdapter;
tbl_DetallesPedidosProveedor: TDACDSDataTable;
ds_DetallesPedidosProveedor: TDADataSource;
tbl_PedidosProveedor: TDACDSDataTable;
ds_PedidosProveedor: TDADataSource;
tbl_ListaAnosPedidos: TDACDSDataTable;
ds_ListaAnosPedidos: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject);
{ private
procedure Fax (AFile : String);}
public
procedure Print(Const Codigo: Integer);
procedure Preview(Const Codigo: Integer);
function GetNextAutoinc : integer;
function GetItems: IBizPedidosProveedor;
function GetDataTableItems(Const IDBusiness: String): TDACDSDataTable;
function GetItemsPendientesRecepcion: IBizPedidosProveedor;
function GetItem(Codigo : Integer): IBizPedidosProveedor;
function DarNuevaReferencia : String;
function PuedoEliminarPedido(Codigo : Integer) : Boolean;
function DarListaAnosPedidos: TStringList;
procedure FiltrarAno(APedidos: IBizPedidosProveedor; AWhereDataTable: String; const Ano: String);
end;
var
dmPedidos: TdmPedidos;
implementation
{$R *.DFM}
uses
Forms, Controls, cxControls, uDataTableUtils, uBizContacto, FactuGES_Intf,
uDataModuleContactos, uDataModuleBase, schPedidosProveedorClient_Intf,
uDAInterfaces, uEditorPreview, Dialogs;
{ TDAClientDataModule1 }
function TdmPedidos.GetItems: IBizPedidosProveedor;
begin
Result := (GetDataTableItems(BIZ_PEDIDOSPROVEEDOR) as IBizPedidosProveedor);
end;
procedure TdmPedidos.DAClientDataModuleCreate(Sender: TObject);
begin
RORemoteService.Channel := dmBase.Channel;
RORemoteService.Message := dmBase.Message;
end;
function TdmPedidos.GetNextAutoinc: integer;
begin
Result := (RORemoteService as IsrvPedidosProveedor).GetNextAutoinc;
end;
function TdmPedidos.DarNuevaReferencia: String;
begin
Result := (RORemoteService as IsrvPedidosProveedor).DarNuevaReferencia;
end;
function TdmPedidos.GetItem(Codigo: Integer): IBizPedidosProveedor;
var
APedido: IBizPedidosProveedor;
begin
APedido := GetItems;
with APedido.DataTable do
begin
if Active then Active := False;
Where.Clear;
Where.OpenBraket;
Where.AddText('PED.' + fld_pedidosproveedorCODIGO + ' = ' + IntToStr(Codigo), False);
Where.CloseBraket;
end;
Result := APedido;
end;
function TdmPedidos.GetItemsPendientesRecepcion: IBizPedidosProveedor;
var
dsPedidos : IBizPedidosProveedor;
begin
dsPedidos := GetItems;
with dsPedidos.DataTable.Where do
begin
if not Empty then
AddOperator(opAND);
Clear;
OpenBraket;
AddText('PEDIDOS.' + fld_PedidosProveedorSITUACION + '=' + '''' + SITUACION_PENDIENTE + '''', False);
CloseBraket;
AddOperator(opOR);
OpenBraket;
AddText('PEDIDOS.' + fld_PedidosProveedorSITUACION + '=' + '''' + SITUACION_PARCIAL + '''', False);
CloseBraket;
end;
Result := dsPedidos;
end;
procedure TdmPedidos.Preview(const Codigo: Integer);
var
AStream: TROBinaryMemoryStream;
AEditorPreview : TfEditorPreview;
begin
AEditorPreview := TfEditorPreview.Create(Application);
try
AStream := (RORemoteService as IsrvPedidosProveedor).GenerateReport(Codigo);
AEditorPreview.Report.PreviewPages.LoadFromStream(AStream);
AEditorPreview.ShowModal;
finally
AEditorPreview.Release;
AStream.Free;
end;
end;
procedure TdmPedidos.Print(const Codigo: Integer);
var
AStream: TROBinaryMemoryStream;
AEditorPreview : TfEditorPreview;
AFile : String;
begin
AEditorPreview := TfEditorPreview.Create(Application);
try
AStream := (RORemoteService as IsrvPedidosProveedor).GenerateReport(Codigo);
AEditorPreview.LoadFromStream(AStream);
AFile := AEditorPreview.ExportToFile;
AEditorPreview.Print;
finally
AEditorPreview.Release;
AStream.Free;
end;
end;
function TdmPedidos.PuedoEliminarPedido(Codigo: Integer): Boolean;
begin
Result := (RORemoteService as IsrvPedidosProveedor).PuedoEliminarPedido(Codigo);
end;
function TdmPedidos.GetDataTableItems(Const IDBusiness: String): TDACDSDataTable;
var
dtPedidos: TDACDSDataTable;
dtDetalles: TDACDSDataTable;
ACursor: TCursor;
begin
ACursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
dtPedidos := TDACDSDataTable.Create(NIL);
CloneDataTable(tbl_PedidosProveedor, dtPedidos);
with dtPedidos do
begin
BusinessRulesID := IDBusiness;
end;
dtDetalles := TDACDSDataTable.Create(NIL);
CloneDataTable(tbl_DetallesPedidosProveedor, dtDetalles);
with dtDetalles do
begin
BusinessRulesID := BIZ_DETALLESPEDIDOSPROVEEDOR;
DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates];
FieldByName(fld_DetallesPedidosProveedorCANTIDAD).BusinessRulesID := 'Client.Field.Cantidad';
FieldByName(fld_DetallesPedidosProveedorIMPORTEUNIDAD).BusinessRulesID := 'Client.Field.ImporteUnidad';
FieldByName(fld_DetallesPedidosProveedorTIPO).BusinessRulesID := 'Client.Field.TipoDetalle';
end;
(dtPedidos as IBizPedidosProveedor).Detalles := (dtDetalles as IBizDetallesPedidoProveedor);
Result := dtPedidos;
finally
Screen.Cursor := ACursor;
end;
end;
{procedure TdmPedidos.Fax (AFile : String);
var
FxDoc: TFaxDocument;
FaxServer: TFaxService;
begin
FaxServer := TFaxService.Create(Self);
FaxServer.ActiveDeviceID := 0;
FaxServer.Connect('');
try
FxDoc := FaxServer.CreateFaxDocument;
//fxDoc.DocumentName := 'aa';
fxDoc.FileName := AFile;
FxDoc.RecipientNumber := '12345678';
FxDoc.RecipientName := 'Bo Berglund';
FxDoc.Send(nil);
finally
FaxServer.Disconnect;
end;
end;}
function TdmPedidos.DarListaAnosPedidos: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosPedidos do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
procedure TdmPedidos.FiltrarAno(APedidos: IBizPedidosProveedor; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
APedidos.DataTable.Where.Clear;
APedidos.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar los pedidos actuales por a<>os
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with APedidos.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_PedidosProveedorFECHAPEDIDO, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_PedidosProveedorFECHAPEDIDO, cLessOrEqual, FechaFin);
end;
end;
end;
initialization
dmPedidos := TdmPedidos.Create(nil);
finalization
FreeAndNil(dmPedidos);
end.