2007-09-04 17:25:54 +00:00
unit uProveedoresController;
interface
uses
2008-11-27 16:14:51 +00:00
Classes, uCustomEditor, uContactosController, uBizContactos,
uBizDireccionesContacto, uDireccionesContactoController,
uIEditorProveedores, uIEditorProveedor, uIDataModuleContactos,
uIDataModuleProveedores;
2007-09-04 17:25:54 +00:00
type
IProveedoresController = interface( IContactosController)
[ '{50F10D01-5120-470D-A61D-99FE8A76DF93}' ]
2008-03-24 20:50:41 +00:00
function BuscarSubcontratas: IBizProveedor;
2007-09-04 17:25:54 +00:00
function BuscarTodosTiendaWeb: IBizProveedor;
2011-11-22 12:03:49 +00:00
function BuscarEtiquetadosFelicitacion: IBizProveedor;
2008-09-03 09:21:08 +00:00
function ElegirDireccionEntrega( AProveedor: IBizProveedor; AMensaje: String ) : IBizDireccionesContacto;
2007-09-04 18:45:08 +00:00
function EsEliminable( AProveedor: IBizContacto) : Boolean ;
function Eliminar( AProveedor: IBizContacto; AllItems: Boolean = false ) : Boolean ; overload ;
procedure Preview( AProveedor : IBizProveedor; AllItems: Boolean = false ) ;
procedure Print( AProveedor : IBizProveedor; AllItems: Boolean = false ) ;
2008-03-25 16:54:59 +00:00
function DarListaDescripcionesProveedores: TStringList;
2008-11-10 11:29:57 +00:00
procedure VerPedidosDeProveedor( AProveedor : IBizProveedor) ;
procedure VerAlbaranesDeProveedor( AProveedor : IBizProveedor) ;
procedure VerDevolucionesDeProveedor( AProveedor : IBizProveedor) ;
procedure VerFacturasDeProveedor( AProveedor : IBizProveedor) ;
2008-12-17 19:07:42 +00:00
procedure VerRecibosDeProveedor( AProveedor : IBizProveedor) ;
function DarListaCuentasBancarias( const IdProveedor: Integer ) : TStringList;
2007-09-04 17:25:54 +00:00
end ;
TProveedoresController = class( TContactosController, IProveedoresController)
protected
FDireccionesController : IDireccionesContactoController;
public
constructor Create; override ;
destructor Destroy; override ;
function Buscar( const ID: Integer ) : IBizContacto; override ;
function BuscarTodos: IBizContacto; override ;
function BuscarTodosTiendaWeb: IBizProveedor;
2008-03-24 20:50:41 +00:00
function BuscarSubcontratas: IBizProveedor;
2011-11-22 12:03:49 +00:00
function BuscarEtiquetadosFelicitacion: IBizProveedor;
2007-09-04 17:25:54 +00:00
function Nuevo : IBizContacto; override ;
procedure Ver( AContacto : IBizContacto) ; override ;
procedure VerTodos( AContactos: IBizContacto) ; override ;
function ElegirContacto( AContactos : IBizContacto;
AMensaje: String ; AMultiSelect: Boolean ) : IBizContacto; override ;
2008-09-03 09:21:08 +00:00
function ElegirDireccionEntrega( AProveedor: IBizProveedor;
2007-09-04 17:25:54 +00:00
AMensaje: String ) : IBizDireccionesContacto;
2007-09-04 18:45:08 +00:00
function EsEliminable( AProveedor: IBizContacto) : Boolean ;
function Eliminar( AProveedor: IBizContacto; AllItems: Boolean = false ) : Boolean ; overload ;
procedure Preview( AProveedor : IBizProveedor; AllItems: Boolean = false ) ;
procedure Print( AProveedor : IBizProveedor; AllItems: Boolean = false ) ;
2008-11-10 11:29:57 +00:00
function DarListaDescripcionesProveedores: TStringList;
procedure VerPedidosDeProveedor( AProveedor : IBizProveedor) ;
procedure VerAlbaranesDeProveedor( AProveedor : IBizProveedor) ;
procedure VerDevolucionesDeProveedor( AProveedor : IBizProveedor) ;
procedure VerFacturasDeProveedor( AProveedor : IBizProveedor) ;
2008-12-17 19:07:42 +00:00
procedure VerRecibosDeProveedor( AProveedor : IBizProveedor) ;
function DarListaCuentasBancarias( const IdProveedor: Integer ) : TStringList;
2007-09-04 17:25:54 +00:00
end ;
implementation
uses
2009-03-31 17:32:20 +00:00
SysUtils, Windows, cxControls, Dialogs, uDataModuleProveedores, uEditorRegistryUtils,
2007-09-04 18:45:08 +00:00
uDataTableUtils, uDADataTable, DB, schContactosClient_Intf, uEtiquetasContactosReportController,
uIEditorElegirProveedores, Controls, uIEditorElegirDireccionEntrega,
2008-11-10 11:29:57 +00:00
uEditorGridBase, uDAInterfaces, uIntegerListUtils, uFactuGES_App,
uPlugins_Intf, uModuleController;
2007-09-04 17:25:54 +00:00
{ TProveedoresController }
function TProveedoresController. Buscar( const ID: Integer ) : IBizContacto;
begin
Result : = ( FDataModule as IDataModuleProveedores) . GetItem( ID) ;
FiltrarEmpresa( Result ) ;
end ;
2011-11-22 12:03:49 +00:00
function TProveedoresController. BuscarEtiquetadosFelicitacion: IBizProveedor;
begin
Result : = ( FDataModule as IDataModuleProveedores) . GetItemsFelicitacion;
FiltrarEmpresa( Result ) ;
end ;
2008-03-24 20:50:41 +00:00
function TProveedoresController. BuscarSubcontratas: IBizProveedor;
var
Condicion: TDAWhereExpression;
begin
Result : = BuscarTodos as IBizProveedor;
with Result . DataTable. DynamicWhere do
begin
Condicion : = NewBinaryExpression( NewField( '' , fld_ProveedoresSUBCONTRATA) , NewConstant( 1 , datInteger) , dboEqual) ;
Clear;
Expression : = Condicion
end ;
end ;
2007-09-04 17:25:54 +00:00
function TProveedoresController. BuscarTodos: IBizContacto;
begin
Result : = ( FDataModule as IDataModuleProveedores) . GetItems;
FiltrarEmpresa( Result ) ;
end ;
function TProveedoresController. BuscarTodosTiendaWeb: IBizProveedor;
begin
Result : = ( FDataModule as IDataModuleProveedores) . GetItemsTiendaWeb;
FiltrarEmpresa( Result ) ;
end ;
constructor TProveedoresController. Create;
begin
inherited ;
FDataModule : = TDataModuleProveedores. Create( Nil ) ;
FDireccionesController : = TDireccionesContactoController. Create;
end ;
2008-12-17 19:07:42 +00:00
function TProveedoresController. DarListaCuentasBancarias( const IdProveedor: Integer ) : TStringList;
var
AProveedor: IBizProveedor;
Aux : String ;
begin
AProveedor : = ( Buscar( IdProveedor) as IBizProveedor) ;
AProveedor. DataTable. Active : = True ;
Result : = TStringList. Create;
ShowHourglassCursor;
try
with Result do
begin
AProveedor. DatosBancarios. DataTable. First;
while not AProveedor. DatosBancarios. DataTable. EOF do
begin
Aux : = Format( 'N<> de cuenta: %s %s %s %s - Titular: %s ' , [ AProveedor. DatosBancarios. ENTIDAD,
AProveedor. DatosBancarios. SUCURSAL, AProveedor. DatosBancarios. DC, AProveedor. DatosBancarios. CUENTA, AProveedor. DatosBancarios. TITULAR] ) ;
Add( Format( '%s=%d' , [ Aux, AProveedor. DatosBancarios. ID] ) ) ;
AProveedor. DatosBancarios. DataTable. Next;
end ;
end ;
finally
AProveedor : = NIL ;
HideHourglassCursor;
end ;
end ;
2008-02-05 10:08:44 +00:00
function TProveedoresController. DarListaDescripcionesProveedores: TStringList;
begin
Result : = ( FDataModule as IDataModuleProveedores) . DarListaDescripcionesProveedores;
end ;
2007-09-04 17:25:54 +00:00
destructor TProveedoresController. Destroy;
begin
FDireccionesController : = NIL ;
inherited ;
end ;
function TProveedoresController. ElegirContacto( AContactos: IBizContacto;
AMensaje: String ; AMultiSelect: Boolean ) : IBizContacto;
var
AEditor : IEditorElegirProveedores;
begin
Result : = NIL ;
2008-11-11 16:22:18 +00:00
CreateEditor( 'EditorElegirProveedores' , IEditorElegirProveedores, AEditor) ;
if Assigned( AEditor) then
2008-11-13 13:10:32 +00:00
try
AEditor. Contactos : = AContactos;
AEditor. Controller : = Self;
AEditor. MultiSelect : = AMultiSelect;
AEditor. Mensaje : = AMensaje;
if IsPositiveResult( AEditor. ShowModal) then
Result : = AEditor. ContactosSeleccionados;
finally
AEditor. Release;
AEditor : = NIL ;
2008-11-11 16:22:18 +00:00
end ;
2007-09-04 17:25:54 +00:00
end ;
2008-09-03 09:21:08 +00:00
function TProveedoresController. ElegirDireccionEntrega( AProveedor: IBizProveedor;
2007-09-04 17:25:54 +00:00
AMensaje: String ) : IBizDireccionesContacto;
var
AEditor : IEditorElegirDireccionEntrega;
begin
Result : = NIL ;
2008-11-11 16:22:18 +00:00
CreateEditor( 'EditorElegirDireccionEntrega' , IEditorElegirDireccionEntrega, AEditor) ;
if Assigned( AEditor) then
2008-11-13 13:10:32 +00:00
try
AEditor. Contacto : = AProveedor;
AEditor. Mensaje : = AMensaje;
if IsPositiveResult( AEditor. ShowModal) then
Result : = AEditor. DireccionSeleccionada;
finally
AEditor. Release;
AEditor : = NIL ;
end ;
2007-09-04 17:25:54 +00:00
end ;
2007-09-04 18:45:08 +00:00
function TProveedoresController. Eliminar( AProveedor: IBizContacto; AllItems: Boolean ) : Boolean ;
//En el caso de eliminar almenos un elemento del conjunto se devuelve true
var
bEliminado: Boolean ;
begin
2008-05-20 18:50:02 +00:00
bEliminado : = False ;
2007-09-04 18:45:08 +00:00
if not Assigned( AProveedor) then
raise Exception. Create ( 'Contacto no asignado' ) ;
ShowHourglassCursor;
try
if not AProveedor. DataTable. Active then
AProveedor. DataTable. Active : = True ;
if ( AProveedor. State in dsEditModes) then
AProveedor. Cancel;
//Siempre eliminaremos el seleccionado
if EsEliminable( AProveedor) then
begin
AProveedor. Delete;
bEliminado : = True ;
end ;
//En el caso de querer eliminar todos los items del objeto AProveedor
if AllItems then
begin
with AProveedor. DataTable do
begin
First;
while not EOF do
begin
if EsEliminable( AProveedor) then
begin
AProveedor. Delete;
bEliminado : = True
end
else Next;
end ;
end ;
end ;
if bEliminado then
begin
AProveedor. DataTable. ApplyUpdates;
Result : = True ;
end
else
Result : = False ;
HideHourglassCursor;
2009-03-31 17:32:20 +00:00
except
on E: Exception do
begin
AProveedor. DataTable. CancelUpdates;
HideHourglassCursor;
if ( Pos( 'FOREIGN KEY' , E. Message ) > 0 ) then
MessageBox( 0 , 'No se pueden borrar el/los proveedor/es seleccionado/s porque, alguno/s de ellos tiene documentos dados de alta en la aplicaci<63> n (pedidos, albaranes, facturas, etc)' , 'Atenci<63> n' , MB_ICONWARNING or MB_OK) ;
end ;
2007-09-04 18:45:08 +00:00
end ;
end ;
function TProveedoresController. EsEliminable( AProveedor: IBizContacto) : Boolean ;
begin
if not Assigned( AProveedor) then
raise Exception. Create ( 'Contacto no asignado: EsEliminable' ) ;
Result : = True ;
end ;
2007-09-04 17:25:54 +00:00
function TProveedoresController. Nuevo: IBizContacto;
var
AContacto : IBizProveedor;
begin
AContacto : = ( FDataModule as IDataModuleProveedores) . NewItem;
FiltrarEmpresa( AContacto) ;
AContacto. DataTable. Active : = True ;
AContacto. Insert;
Result : = AContacto;
end ;
2007-09-04 18:45:08 +00:00
procedure TProveedoresController. Preview( AProveedor: IBizProveedor; AllItems: Boolean ) ;
var
AReportController : IEtiquetasContactosReportController;
2008-08-22 14:52:35 +00:00
ListaID: TIntegerList;
2007-09-04 18:45:08 +00:00
begin
AReportController : = TEtiquetasContactosReportController. Create;
2008-08-22 14:52:35 +00:00
ListaID : = TIntegerList. Create;
2007-09-04 18:45:08 +00:00
2011-11-22 12:03:49 +00:00
if not Assigned( AProveedor) then
raise Exception. Create ( 'Proveedor no asignado (TieneDatosBancarios)' ) ;
if not AProveedor. DataTable. Active then
AProveedor. DataTable. Active : = True ;
2008-05-20 18:50:02 +00:00
try
2007-09-04 18:45:08 +00:00
//Si deseamos previsualizar todos los items del objeto albaran
if AllItems then
begin
with AProveedor. DataTable do
begin
First;
while not EOF do
begin
2008-08-22 14:52:35 +00:00
ListaID. Add( AProveedor. ID) ;
2007-09-04 18:45:08 +00:00
Next;
end ;
end ;
end
//Solo previsualizamos el item seleccionado
else
2008-08-22 14:52:35 +00:00
ListaID. Add( AProveedor. ID) ;
2007-09-04 18:45:08 +00:00
2008-08-22 14:52:35 +00:00
AReportController. Preview( ListaID) ;
2007-09-04 18:45:08 +00:00
finally
AReportController : = NIL ;
2008-08-22 14:52:35 +00:00
FreeANDNil( ListaID) ;
2007-09-04 18:45:08 +00:00
end ;
end ;
procedure TProveedoresController. Print( AProveedor: IBizProveedor; AllItems: Boolean ) ;
var
AReportController : IEtiquetasContactosReportController;
2008-08-22 14:52:35 +00:00
ListaID: TIntegerList;
2007-09-04 18:45:08 +00:00
begin
AReportController : = TEtiquetasContactosReportController. Create;
2008-08-22 14:52:35 +00:00
ListaID : = TIntegerList. Create;
2008-05-20 18:50:02 +00:00
2011-11-22 12:03:49 +00:00
if not Assigned( AProveedor) then
raise Exception. Create ( 'Proveedor no asignado (TieneDatosBancarios)' ) ;
if not AProveedor. DataTable. Active then
AProveedor. DataTable. Active : = True ;
2007-09-04 18:45:08 +00:00
try
//Si deseamos previsualizar todos los items del objeto albaran
if AllItems then
begin
with AProveedor. DataTable do
begin
First;
while not EOF do
begin
2008-08-22 14:52:35 +00:00
ListaID. Add( AProveedor. ID) ;
2007-09-04 18:45:08 +00:00
Next;
end ;
end ;
end
//Solo previsualizamos el item seleccionado
else
2008-08-22 14:52:35 +00:00
ListaID. Add( AProveedor. ID) ;
2007-09-04 18:45:08 +00:00
2008-08-22 14:52:35 +00:00
AReportController. Print( ListaID) ;
2007-09-04 18:45:08 +00:00
finally
AReportController : = NIL ;
2008-08-22 14:52:35 +00:00
FreeANDNil( ListaID) ;
2007-09-04 18:45:08 +00:00
end ;
end ;
2007-09-04 17:25:54 +00:00
procedure TProveedoresController. Ver( AContacto: IBizContacto) ;
var
AEditor : IEditorProveedor;
begin
AEditor : = NIL ;
2008-11-11 16:22:18 +00:00
CreateEditor( 'EditorProveedor' , IEditorProveedor, AEditor) ;
if Assigned( AEditor) then
2008-11-13 13:10:32 +00:00
try
AEditor. Contacto : = AContacto;
AEditor. Controller : = Self;
AEditor. ShowModal;
finally
AEditor. Release;
AEditor : = NIL ;
end ;
2007-09-04 17:25:54 +00:00
end ;
2008-11-10 11:29:57 +00:00
procedure TProveedoresController. VerAlbaranesDeProveedor(
AProveedor: IBizProveedor) ;
var
AModule : TModuleController;
APlugin : IMCAlbaranesProveedor;
begin
if not Assigned( AProveedor) then
raise Exception. Create ( 'Proveedor no asignado (VerAlbaranesDeProveedor)' ) ;
if AProveedor. DataTable. Active then
AProveedor. DataTable. Active : = True ;
AModule : = AppFactuGES. GetModule( MODULENAME_ALBARANES_PROVEEDOR) ;
if Assigned( AModule) then
try
if Supports( AModule, IMCAlbaranesProveedor, APlugin) then
APlugin. VerAlbaranes( AProveedor. ID, AProveedor. NOMBRE) ;
finally
APlugin : = NIL ;
end ;
end ;
procedure TProveedoresController. VerDevolucionesDeProveedor(
AProveedor: IBizProveedor) ;
var
AModule : TModuleController;
APlugin : IMCAlbaranesProveedor;
begin
if not Assigned( AProveedor) then
raise Exception. Create ( 'Proveedor no asignado (VerDevolucionesDeProveedor)' ) ;
if AProveedor. DataTable. Active then
AProveedor. DataTable. Active : = True ;
AModule : = AppFactuGES. GetModule( MODULENAME_ALBARANES_PROVEEDOR) ;
if Assigned( AModule) then
try
if Supports( AModule, IMCAlbaranesProveedor, APlugin) then
APlugin. VerDevoluciones( AProveedor. ID, AProveedor. NOMBRE) ;
finally
APlugin : = NIL ;
end ;
end ;
procedure TProveedoresController. VerFacturasDeProveedor(
AProveedor: IBizProveedor) ;
var
AModule : TModuleController;
APlugin : IMCFacturasProveedor;
begin
if not Assigned( AProveedor) then
raise Exception. Create ( 'Proveedor no asignado (VerFacturasDeProveedor)' ) ;
if AProveedor. DataTable. Active then
AProveedor. DataTable. Active : = True ;
AModule : = AppFactuGES. GetModule( MODULENAME_FACTURAS_PROVEEDOR) ;
if Assigned( AModule) then
try
if Supports( AModule, IMCFacturasProveedor, APlugin) then
APlugin. VerFacturas( AProveedor. ID, AProveedor. NOMBRE) ;
finally
APlugin : = NIL ;
end ;
end ;
procedure TProveedoresController. VerPedidosDeProveedor(
AProveedor: IBizProveedor) ;
var
AModule : TModuleController;
APlugin : IMCPedidosProveedor;
begin
if not Assigned( AProveedor) then
raise Exception. Create ( 'Proveedor no asignado (VerPedidosDeProveedor)' ) ;
if AProveedor. DataTable. Active then
AProveedor. DataTable. Active : = True ;
AModule : = AppFactuGES. GetModule( MODULENAME_PEDIDOS_PROVEEDOR) ;
if Assigned( AModule) then
try
if Supports( AModule, IMCPedidosProveedor, APlugin) then
APlugin. VerPedidos( AProveedor. ID, AProveedor. NOMBRE) ;
finally
APlugin : = NIL ;
end ;
end ;
procedure TProveedoresController. VerRecibosDeProveedor(
AProveedor: IBizProveedor) ;
var
AModule : TModuleController;
APlugin : IMCRecibosProveedor;
begin
if not Assigned( AProveedor) then
raise Exception. Create ( 'Proveedor no asignado (VerRecibosDeProveedor)' ) ;
if AProveedor. DataTable. Active then
AProveedor. DataTable. Active : = True ;
AModule : = AppFactuGES. GetModule( MODULENAME_RECIBOS_PROVEEDOR) ;
if Assigned( AModule) then
try
if Supports( AModule, IMCRecibosProveedor, APlugin) then
APlugin. VerRecibos( AProveedor. ID, AProveedor. NOMBRE) ;
finally
APlugin : = NIL ;
end ;
end ;
2007-09-04 17:25:54 +00:00
procedure TProveedoresController. VerTodos( AContactos: IBizContacto) ;
var
AEditor : IEditorProveedores;
begin
2007-11-18 18:42:04 +00:00
AEditor : = NIL ;
2008-11-11 16:22:18 +00:00
CreateEditor( 'EditorProveedores' , IEditorProveedores, AEditor) ;
if Assigned( AEditor) then
with AEditor do
begin
2008-11-11 18:56:14 +00:00
Contactos : = AContactos;
Controller : = Self;
MultiSelect : = True ;
ShowEmbedded;
2008-11-11 16:22:18 +00:00
end ;
2007-09-04 17:25:54 +00:00
end ;
end .