git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES2/trunk@101 b2cfbe5a-eba1-4a0c-8b32-7feea0a119f2
266 lines
8.0 KiB
ObjectPascal
266 lines
8.0 KiB
ObjectPascal
unit uInfMargenArticuloController;
|
|
|
|
interface
|
|
|
|
|
|
uses
|
|
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
|
|
uBizInfMargenArticulo, uIDataModuleInfMargenArticulo, uInformeBaseController,
|
|
uBizInformes;
|
|
|
|
const
|
|
CTE_AGRUPACION_PORARTICULO = 0;
|
|
CTE_AGRUPACION_PORCLIENTE = 1;
|
|
CTE_AGRUPACION_PORFACTURA = 2;
|
|
|
|
type
|
|
IInfMargenArticuloController = interface(IInformeBaseController)
|
|
['{9CC16002-03D2-4349-AC95-A3A057E3D4BB}']
|
|
function BuscarAgrupadoPorCliente(const AColumns: String; const AWhere: String): IBizInfMargenArticulo;
|
|
function BuscarAgrupadoPorArticulo(const AColumns: String; const AWhere: String): IBizInfMargenArticulo;
|
|
function BuscarAgrupadoPorFactura(const AColumns: String; const AWhere: String): IBizInfMargenArticulo;
|
|
end;
|
|
|
|
TInfMargenArticuloController = class(TInterfacedObject, IInfMargenArticuloController, IInformeBaseController)
|
|
private
|
|
function darAgrupacionParaInforme: Integer;
|
|
|
|
protected
|
|
FDataModule : IDataModuleInfMargenArticulo;
|
|
|
|
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
|
|
|
|
// procedure FiltrarEmpresa(AInfMargenArticulo: IBizInfMargenArticulo);
|
|
|
|
//Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de
|
|
//este controller
|
|
procedure AsignarDataModule; virtual;
|
|
|
|
public
|
|
|
|
constructor Create; virtual;
|
|
destructor Destroy; override;
|
|
|
|
// function Buscar(const ID_ALMACEN: Integer): IBizInfMargenArticulo;
|
|
// function ExtraerSeleccionados(AArticulos: IBizInfMargenArticulo) : IBizInfMargenArticulo;
|
|
// function Ver(AArticulos: IBizInfMargenArticulo; AInfMargenArticulo : IBizInfMargenArticulo): Boolean;
|
|
function BuscarAgrupadoPorCliente(const AColumns: String; const AWhere: String): IBizInfMargenArticulo;
|
|
function BuscarAgrupadoPorArticulo(const AColumns: String; const AWhere: String): IBizInfMargenArticulo;
|
|
function BuscarAgrupadoPorFactura(const AColumns: String; const AWhere: String): IBizInfMargenArticulo;
|
|
|
|
procedure Nuevo(AInforme : IBizInforme);
|
|
procedure Ver(AInforme : IBizInforme);
|
|
// procedure VerTodos(AInfMargenArticulo: IBizInfMargenArticulo);
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
Forms, cxControls, DB, uEditorRegistryUtils, uFactuGES_App,
|
|
uIEditorInfMargenArticulo, uDataModuleUsuarios,
|
|
uDataModuleInfMargenArticulo, uDAInterfaces, uDataTableUtils,
|
|
uDateUtils, uROTypes, DateUtils, Controls, Windows,
|
|
dialogs, Variants, uControllerDetallesBase, uDialogUtils,
|
|
JSDialog, JSDialogs, schInfMargenArticuloClient_Intf;
|
|
|
|
{ TInfMargenArticuloController }
|
|
|
|
procedure TInfMargenArticuloController.AsignarDataModule;
|
|
begin
|
|
FDataModule := TdmInfMargenArticulo.Create(Nil);
|
|
end;
|
|
|
|
{
|
|
function TInfMargenArticuloController.Buscar(const ID_ALMACEN: Integer): IBizInfMargenArticulo;
|
|
begin
|
|
Result := (FDataModule as IDataModuleInfMargenArticulo).GetItems(ID_ALMACEN);
|
|
FiltrarEmpresa(Result);
|
|
end;
|
|
}
|
|
|
|
function TInfMargenArticuloController.BuscarAgrupadoPorArticulo(const AColumns: String; const AWhere: String): IBizInfMargenArticulo;
|
|
begin
|
|
Result := FDataModule.GetItems(AColumns, Awhere, tArticulo);
|
|
// FiltrarEmpresa(Result);
|
|
end;
|
|
|
|
function TInfMargenArticuloController.BuscarAgrupadoPorCliente(const AColumns: String; const AWhere: String): IBizInfMargenArticulo;
|
|
begin
|
|
Result := FDataModule.GetItems(AColumns, Awhere, tCliente);
|
|
// FiltrarEmpresa(Result);
|
|
end;
|
|
|
|
function TInfMargenArticuloController.BuscarAgrupadoPorFactura(const AColumns: String; const AWhere: String): IBizInfMargenArticulo;
|
|
begin
|
|
Result := FDataModule.GetItems(AColumns, Awhere, tFactura);
|
|
// FiltrarEmpresa(Result);
|
|
end;
|
|
|
|
constructor TInfMargenArticuloController.Create;
|
|
begin
|
|
AsignarDataModule;
|
|
end;
|
|
|
|
function TInfMargenArticuloController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
|
|
begin
|
|
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
|
|
end;
|
|
|
|
function TInfMargenArticuloController.darAgrupacionParaInforme: Integer;
|
|
var
|
|
JsDialog: TJSDialog;
|
|
Respuesta: Integer;
|
|
|
|
begin
|
|
JsDialog := TJSDialog.Create(nil);
|
|
try
|
|
JsDialog.Content.Add('Elija una opci'#243'n:');
|
|
JsDialog.Instruction.Text := 'Agrupar por...';
|
|
JsDialog.DialogOptions := [doCommandLinks, doModal];
|
|
JsDialog.ButtonBar.Buttons := [cbOk];
|
|
|
|
with JsDialog.CustomButtons.Add do
|
|
begin
|
|
Caption := 'Agrupar el informe por art'#237'culo';
|
|
Value := 0;
|
|
Default := True;
|
|
end;
|
|
|
|
with JsDialog.CustomButtons.Add do
|
|
begin
|
|
Caption := 'Agrupar el informe por cliente';
|
|
Value := 1;
|
|
end;
|
|
|
|
with JsDialog.CustomButtons.Add do
|
|
begin
|
|
Caption := 'Agrupar el informe por factura';
|
|
Value := 2;
|
|
end;
|
|
|
|
repeat
|
|
Respuesta := JsDialog.Execute;
|
|
until Respuesta <> IDCANCEL;
|
|
|
|
Result := JsDialog.CustomButtonResult;
|
|
|
|
finally
|
|
FreeAndNil(JsDialog);
|
|
end;
|
|
|
|
end;
|
|
|
|
destructor TInfMargenArticuloController.Destroy;
|
|
begin
|
|
FDataModule := Nil;
|
|
inherited;
|
|
end;
|
|
|
|
|
|
{function TInfMargenArticuloController.ExtraerSeleccionados(AArticulos: IBizInfMargenArticulo): IBizInfMargenArticulo;
|
|
var
|
|
ASeleccionados : IBizInfMargenArticulo;
|
|
begin
|
|
ASeleccionados := (Self.Buscar(ID_NULO) as IBizInfMargenArticulo);
|
|
CopyDataTable(AArticulos.DataTable, ASeleccionados.DataTable, True);
|
|
Result := ASeleccionados;
|
|
end;}
|
|
|
|
|
|
{function TInfMargenArticuloController.Ver(AArticulos: IBizInfMargenArticulo; AInfMargenArticulo: IBizInfMargenArticulo): Boolean;
|
|
var
|
|
AEditor : IEditorEntradaSalidaArticulos;
|
|
begin
|
|
Result := False;
|
|
AEditor := NIL;
|
|
ShowHourglassCursor;
|
|
try
|
|
CreateEditor('EditorEntradaSalidaArticulos', IEditorEntradaSalidaArticulos, AEditor);
|
|
with AEditor do
|
|
begin
|
|
Controller := Self; //OJO ORDEN MUY IMPORTANTE
|
|
Articulos := AArticulos;
|
|
InfMargenArticulo := AInfMargenArticulo;
|
|
end;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
|
|
if Assigned(AEditor) then
|
|
try
|
|
AEditor.ShowModal;
|
|
Result := AEditor.ResultadoModalOK;
|
|
AEditor.Release;
|
|
finally
|
|
AEditor := NIL;
|
|
end;
|
|
end;}
|
|
|
|
procedure TInfMargenArticuloController.Ver(AInforme: IBizInforme);
|
|
var
|
|
AEditor : IEditorInfMargenArticulo;
|
|
begin
|
|
AEditor := NIL;
|
|
ShowHourglassCursor;
|
|
try
|
|
CreateEditor('EditorInfMargenArticulo', IEditorInfMargenArticulo, AEditor);
|
|
with (AEditor as IEditorInfMargenArticulo) do
|
|
begin
|
|
if not Assigned(FDataModule) then
|
|
AsignarDataModule;
|
|
Controller := Self; //OJO ORDEN MUY IMPORTANTE
|
|
{
|
|
//Establecemos la vista agrupada basica
|
|
case AInforme.TIPO_AGRUPACION of
|
|
CTE_AGRUPACION_PORARTICULO : Datos := BuscarAgrupadoPorArticulo;
|
|
CTE_AGRUPACION_PORCLIENTE : Datos := BuscarAgrupadoPorCliente;
|
|
CTE_AGRUPACION_PORFACTURA : Datos := BuscarAgrupadoPorFactura;
|
|
end;
|
|
}
|
|
Informe := AInforme;
|
|
end;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
|
|
if Assigned(AEditor) then
|
|
try
|
|
AEditor.ShowModal;
|
|
AEditor.Release;
|
|
finally
|
|
AEditor := NIL;
|
|
end;
|
|
end;
|
|
|
|
{
|
|
procedure TInfMargenArticuloController.FiltrarEmpresa(AInfMargenArticulo: IBizInfMargenArticulo);
|
|
begin
|
|
if AInfMargenArticulo.DataTable.Active then
|
|
AInfMargenArticulo.DataTable.Active := False;
|
|
|
|
// Filtrar los InfMargenArticulo actuales por empresa
|
|
with AInfMargenArticulo.DataTable.Where do
|
|
begin
|
|
if NotEmpty then
|
|
AddOperator(opAND);
|
|
|
|
OpenBraket;
|
|
AddText(fld_InfMargenPorClienteID_EMPRESA + ' = ' + IntToStr(dmUsuarios.IDEmpresaActual));
|
|
CloseBraket;
|
|
end;
|
|
end;
|
|
}
|
|
|
|
procedure TInfMargenArticuloController.Nuevo(AInforme: IBizInforme);
|
|
begin
|
|
AInforme.Insert;
|
|
AInforme.CATEGORIA := 'MARGEN ARTICULOS';
|
|
AInforme.CONTROLLER := 'InfMargenArticuloController';
|
|
AInforme.ID_EMPRESA := AppFactuGES.EmpresaActiva.ID;
|
|
|
|
//ESTABLECEMOS EL TIPO DE AGRUPACION INICIAL PARA EL INFORME QUE DESEAMOS CREAR
|
|
AInforme.TIPO_AGRUPACION := darAgrupacionParaInforme;
|
|
end;
|
|
|
|
end.
|