git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES2/trunk@106 b2cfbe5a-eba1-4a0c-8b32-7feea0a119f2
218 lines
8.2 KiB
ObjectPascal
218 lines
8.2 KiB
ObjectPascal
unit uDataModuleInfMargenArticulo;
|
|
|
|
interface
|
|
|
|
uses {vcl:} SysUtils, Classes, DB, DBClient,
|
|
{RemObjects:} uDADataTable, uDABINAdapter,
|
|
uRORemoteService, uROClient, uROBinMessage,
|
|
uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable,
|
|
uBizInfMargenArticulo, uIDataModuleInfMargenArticulo, uDADesigntimeCall,
|
|
uDataModuleBase, uDARemoteDataAdapter, uDADataStreamer, uDABin2DataStreamer,
|
|
uDAInterfaces, uDAMemDataTable, uRODynamicRequest, JvComponentBase, JvLogFile;
|
|
//uBizControlVentasTerminadas,
|
|
|
|
//const
|
|
// CATEGORIA_VENTA_TERMINADA = 'VENTATERMINADA';
|
|
|
|
type
|
|
TdmInfMargenArticulo = class(TDataModuleBase, IDataModuleInfMargenArticulo)
|
|
RORemoteService: TRORemoteService;
|
|
DADesigntimeCall1: TDADesigntimeCall;
|
|
LoginRemoteService: TRORemoteService;
|
|
ROWinInetHTTPChannel1: TROWinInetHTTPChannel;
|
|
ROBinMessage1: TROBinMessage;
|
|
tbl_InfMargen: TDAMemDataTable;
|
|
tbl_InfMargenPorArticulo1: TDAMemDataTable;
|
|
ds_InfMargenPorArticulo1: TDADataSource;
|
|
tbl_InfMargenPorCliente1: TDAMemDataTable;
|
|
ds_InfMargenPorCliente1: TDADataSource;
|
|
tbl_InfMargenPorFactura1: TDAMemDataTable;
|
|
ds_InfMargenPorFactura1: TDADataSource;
|
|
Bin2DataStreamer: TDABin2DataStreamer;
|
|
rda_InfMargenPorArticulo: TDARemoteDataAdapter;
|
|
rda_InfMargenPorCliente: TDARemoteDataAdapter;
|
|
rda_InfMargenPorFactura: TDARemoteDataAdapter;
|
|
rda_TablaVacia: TDARemoteDataAdapter;
|
|
tbl_TablaVacia: TDAMemDataTable;
|
|
ds_TablaVacia: TDADataSource;
|
|
JvLogFile1: TJvLogFile;
|
|
procedure DAClientDataModuleCreate(Sender: TObject);
|
|
private
|
|
procedure InitRDA(var aDataTable: TDAMemDataTable; const SQLFROM: AnsiString; const AWhere: String; Agrupado: TEnumAgrupaciones; aIncludeSchema: Boolean; AMaxRecords: integer);
|
|
public
|
|
function GetItems(const AColumns: String; const AWhere: String; Agrupado: TEnumAgrupaciones) : IBizInfMargenArticulo;
|
|
function GetNameColumns(Agrupado: TEnumAgrupaciones): String;
|
|
end;
|
|
|
|
var
|
|
dmInfMargenArticulo: TdmInfMargenArticulo;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
Controls, Forms, uDataTableUtils,
|
|
uROTypes, Dialogs, uDataModuleConexion, uFactuGES_App,
|
|
cxControls, FactuGES_Intf, StrUtils, udmBase,
|
|
schInfMargenArticuloClient_Intf; //, uEditorPreview, uDataModuleControles, uDBSelectionList,
|
|
|
|
const
|
|
|
|
CAMPOS_AVG1 = '#IMP_NETO_ULT_VENT#IMP_NETO_PRO_VENT#IMP_PORTE_PRO_VENT#IMP_NETO_COMPRA#IMP_NETO_ULT_COMP#IMP_NETO_PRO_COMP#IMP_UNIDAD_PRO_COMP#IMP_PORTE_PRO_COMP#IMP_MARGEN_ULT_VENT_COMPRA#POR_MARGEN_ULT_VENT_COMPRA#IMP_MARGEN_ULT_VENT_ULT_COMP#';
|
|
CAMPOS_AVG2 = '#POR_MARGEN_ULT_VENT_ULT_COMP#IMP_MARGEN_ULT_VENT_PRO_COMP#POR_MARGEN_ULT_VENT_PRO_COMP#IMP_MARGEN_PRO_VENT_COMPRA#POR_MARGEN_PRO_VENT_COMPRA#IMP_MARGEN_PRO_VENT_ULT_COMP#POR_MARGEN_PRO_VENT_ULT_COMP#IMP_MARGEN_PRO_VENT_PRO_COMP#';
|
|
CAMPOS_AVG3 = '#POR_MARGEN_PRO_VENT_PRO_COMP#IMP_UNIDAD_PRO_VENT#';
|
|
|
|
//SOLO PARA INFORME AGRUPADO POR FACTURA PARA SACAR BENEFICIO REAL
|
|
CTE_DATA_NAME = 'InfMargenPorFactura';
|
|
CAMPOS_SUMA = '#CANTIDAD#IMP_UNIDAD#IMP_NETO#IMP_PORTE#IMP_TOTAL#IMP_NETO_ULT_COM_TOTAL#IMP_NETO_PRO_COM_TOTAL#IMP_MARGEN_ULT_COMP_TOTAL#IMP_MARGEN_PRO_COMP_TOTAL#';
|
|
|
|
|
|
procedure TdmInfMargenArticulo.DAClientDataModuleCreate(Sender: TObject);
|
|
begin
|
|
RORemoteService.Channel := dmConexion.Channel;
|
|
RORemoteService.Message := dmConexion.Message;
|
|
end;
|
|
|
|
function TdmInfMargenArticulo.GetItems(const AColumns: String; const AWhere: String; Agrupado: TEnumAgrupaciones): IBizInfMargenArticulo;
|
|
var
|
|
AInfMargenArticulo : TDAMemDataTable;
|
|
ASQL: AnsiString;
|
|
begin
|
|
|
|
ShowHourglassCursor;
|
|
try
|
|
AInfMargenArticulo := CloneDataTable(tbl_TablaVacia);
|
|
AInfMargenArticulo.BusinessRulesID := BIZ_InfMargenArticulo;
|
|
(AInfMargenArticulo as IBizInfMargenArticulo).VisibleColumns := AColumns;
|
|
|
|
Case Agrupado of
|
|
tCliente: begin
|
|
AInfMargenArticulo.LogicalName := 'InfMargenPorCliente';
|
|
ASQL := (RORemoteService as IsrvInfMargenArticulo).GetSQLFROM('InfMargenPorCliente');
|
|
end;
|
|
tArticulo:begin
|
|
AInfMargenArticulo.LogicalName := 'InfMargenPorArticulo';
|
|
ASQL := (RORemoteService as IsrvInfMargenArticulo).GetSQLFROM('InfMargenPorArticulo');
|
|
end;
|
|
tFactura: begin
|
|
AInfMargenArticulo.LogicalName := 'InfMargenPorFactura';
|
|
ASQL := (RORemoteService as IsrvInfMargenArticulo).GetSQLFROM('InfMargenPorFactura');
|
|
end;
|
|
End;
|
|
|
|
InitRDA(AInfMargenArticulo, ASQL, Awhere, Agrupado, True, 0);
|
|
AInfMargenArticulo.Close;
|
|
|
|
Result := (AInfMargenArticulo as IBizInfMargenArticulo);
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
|
|
|
|
{
|
|
ShowHourglassCursor;
|
|
try
|
|
|
|
Case Agrupado of
|
|
tCliente: begin
|
|
|
|
tbl_InfMargen.LogicalName := 'InfMargenPorCliente';
|
|
tbl_InfMargen.SchemaCall.ParamByName('DatasetName').AsString := 'InfMargenPorCliente';
|
|
tbl_InfMargen.DataRequestCall.ParamByName('DatasetName').AsString := 'InfMargenPorCliente';
|
|
end;
|
|
tArticulo:begin
|
|
tbl_InfMargen.LogicalName := 'InfMargenPorArticulo';
|
|
tbl_InfMargen.SchemaCall.ParamByName('DatasetName').AsString := 'InfMargenPorArticulo';
|
|
tbl_InfMargen.DataRequestCall.ParamByName('DatasetName').AsString := 'InfMargenPorArticulo';
|
|
end;
|
|
tFactura: begin
|
|
tbl_InfMargen.LogicalName := 'InfMargenPorFactura';
|
|
tbl_InfMargen.SchemaCall.ParamByName('DatasetName').AsString := 'InfMargenPorFactura';
|
|
tbl_InfMargen.DataRequestCall.ParamByName('DatasetName').AsString := 'InfMargenPorFactura';
|
|
end;
|
|
End;
|
|
}
|
|
// AInfMargenArticulo := _CloneDataTable(tbl_InfMargen);
|
|
// AInfMargenArticulo.Fields.AssignFieldCollection(tbl_InfMargenPorCliente1.Fields); //Siempre por cliente
|
|
// AInfMargenArticulo.BusinessRulesID := BIZ_InfMargenArticulo;
|
|
|
|
|
|
// AInfMargenArticulo.LoadSchema;
|
|
|
|
|
|
// Result := (AInfMargenArticulo as IBizInfMargenArticulo);
|
|
// finally
|
|
// HideHourglassCursor;
|
|
// end;
|
|
end;
|
|
|
|
function TdmInfMargenArticulo.GetNameColumns(Agrupado: TEnumAgrupaciones): String;
|
|
var
|
|
AList : TStringList;
|
|
i : integer;
|
|
begin
|
|
AList := TStringList.Create;
|
|
try
|
|
case Agrupado of
|
|
tCliente: begin
|
|
for i := 0 to tbl_InfMargenPorCliente1.FieldCount - 1 do
|
|
if tbl_InfMargenPorCliente1.Fields[i].Visible then
|
|
AList.Add(tbl_InfMargenPorCliente1.Fields[i].Name);
|
|
end;
|
|
tArticulo:begin
|
|
for i := 0 to tbl_InfMargenPorArticulo1.FieldCount - 1 do
|
|
if tbl_InfMargenPorArticulo1.Fields[i].Visible then
|
|
AList.Add(tbl_InfMargenPorArticulo1.Fields[i].Name);
|
|
end;
|
|
tFactura: begin
|
|
for i := 0 to tbl_InfMargenPorFactura1.FieldCount - 1 do
|
|
if tbl_InfMargenPorFactura1.Fields[i].Visible then
|
|
AList.Add(tbl_InfMargenPorFactura1.Fields[i].Name);
|
|
end;
|
|
end;
|
|
Result := AList.CommaText;
|
|
finally
|
|
FreeAndNil(AList);
|
|
end;
|
|
end;
|
|
|
|
procedure TdmInfMargenArticulo.InitRDA(var aDataTable: TDAMemDataTable;
|
|
const SQLFROM: AnsiString; const AWhere: String; Agrupado: TEnumAgrupaciones;
|
|
aIncludeSchema: Boolean; AMaxRecords: integer);
|
|
var
|
|
ASql: String;
|
|
|
|
begin
|
|
with tbl_TablaVacia do begin
|
|
Close;
|
|
|
|
with TReplicarDataSet.Create do
|
|
begin
|
|
FROM_SQL := 'FROM (' + ReplaceStr(SQLFROM,':FECHAINI AND :FECHAFIN', AWhere) + ') ' + 'where (' + fld_InfMargenPorClienteID_EMPRESA + ' = ' + IntToStr(AppFactuGES.EmpresaActiva.ID) + ')';
|
|
Columnas := (aDataTable as IBizInfMargenArticulo).VisibleColumns;
|
|
|
|
if aDataTable.LogicalName = CTE_DATA_NAME then
|
|
ColumnasQueSuman := CAMPOS_SUMA
|
|
else
|
|
ColumnasQueSuman := '';
|
|
|
|
ColumnasQueAVG := CAMPOS_AVG1 + CAMPOS_AVG2 + CAMPOS_AVG3;
|
|
|
|
try
|
|
ASql := GenerateNewSQL;
|
|
dmBase.EscribirLog(ASql);
|
|
finally
|
|
Free;
|
|
end;
|
|
end;
|
|
|
|
rda_TablaVacia.GetDataCall.ParamByName('aSQLText').AsString := ASql;
|
|
MaxRecords := AMaxRecords;
|
|
rda_TablaVacia.Fill([tbl_TablaVacia], true, aIncludeSchema);
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|