git-svn-id: https://192.168.0.254/svn/Proyectos.Noviseda_FactuGES2/trunk@107 f33bb606-9f5c-448d-9c99-757f00063c96
This commit is contained in:
roberto 2010-03-19 13:05:45 +00:00
parent 42fc97b1a9
commit fb07b2bf83
6 changed files with 0 additions and 2036 deletions

View File

@ -1,387 +0,0 @@
unit uEditorAlbaranCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
uEditorDBItem, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock,
TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane,
uCustomView, uViewBase, JvComponentBase,
StdCtrls, pngimage, AppEvnts, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, cxDBEdit,
uViewIncidencias, uAlbaranesClienteController, uViewDetallesBase, uViewDetallesAlbaranCliente,
dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar, uViewTotales,
uIEditorAlbaranCliente, uBizAlbaranesCliente, uViewAlbaranCliente,
uViewDetallesDTO, uViewDetallesArticulos, uDAInterfaces,
uViewDetallesArticulosParaVenta, cxLabel;
type
TfEditorAlbaranCliente = class(TfEditorDBItem, IEditorAlbaranCliente)
pagContenido: TTabSheet;
pagInicidencias: TTabSheet;
frViewIncidenciasCli: TfrViewIncidencias;
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
frViewDetallesAlbaranCliente1: TfrViewDetallesAlbaranCliente;
frViewTotales1: TfrViewTotales;
actEnviarEMail: TAction;
TBXSubmenuItem2: TTBXSubmenuItem;
TBXItem7: TTBXItem;
TBXItem33: TTBXItem;
TBXSeparatorItem6: TTBXSeparatorItem;
procedure FormShow(Sender: TObject);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
procedure frViewTotales1ePortePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure frViewTotales1edtDescuentoPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure frViewTotales1edtIVAPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure actEnviarEMailExecute(Sender: TObject);
procedure actEnviarEMailUpdate(Sender: TObject);
private
procedure RecalcularPortePorUnidad;
protected
FAlbaran: IBizAlbaranCliente;
FViewAlbaran: IViewAlbaranCliente;
FController : IAlbaranesClienteController;
function GetController : IAlbaranesClienteController;
procedure SetController (const Value : IAlbaranesClienteController); virtual;
function GetAlbaran: IBizAlbaranCliente;
procedure SetAlbaran(const Value: IBizAlbaranCliente); virtual;
function GetViewAlbaran: IViewAlbaranCliente;
procedure SetViewAlbaran(const Value: IViewAlbaranCliente);
procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override;
procedure GuardarInterno; override;
procedure EliminarInterno; override;
property ViewAlbaran: IViewAlbaranCliente read GetViewAlbaran write SetViewAlbaran;
procedure OnClienteChanged(Sender : TObject);
//Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo
procedure AsignarVista; virtual;
public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Controller : IAlbaranesClienteController read GetController write SetController;
property Albaran: IBizAlbaranCliente read GetAlbaran write SetAlbaran;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uViewDatosYSeleccionCliente, uDataModuleUsuarios, uClientesController,
uBizDireccionesContacto, schAlbaranesClienteClient_Intf, uDialogUtils,
uEditorDBBase, uDataTableUtils, uFactuGES_App;
{$R *.dfm}
{ TfEditorAlbaranCliente }
{
**************************** TfEditorAlbaranCliente ****************************
}
procedure TfEditorAlbaranCliente.actEnviarEMailExecute(Sender: TObject);
begin
inherited;
FController.EnviarAlbaranPorEMail(FAlbaran);
end;
procedure TfEditorAlbaranCliente.actEnviarEMailUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := HayDatos;
end;
procedure TfEditorAlbaranCliente.AsignarVista;
var
AViewAlbaranCliente: TfrViewAlbaranCliente;
begin
AViewAlbaranCliente := TfrViewAlbaranCliente.create(Self);
with AViewAlbaranCliente do
begin
Parent := pagGeneral;
Align := alClient;
dxLayoutControl1.LookAndFeel := dxLayoutOfficeLookAndFeel1;
end;
ViewAlbaran := AViewAlbaranCliente;
end;
constructor TfEditorAlbaranCliente.Create(AOwner: TComponent);
begin
inherited;
pgPaginas.ActivePageIndex := 0;
AsignarVista;
end;
procedure TfEditorAlbaranCliente.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
FViewAlbaran := NIL;
FAlbaran := NIL;
end;
destructor TfEditorAlbaranCliente.Destroy;
begin
// Utilizar mejor OnClose;
inherited;
end;
procedure TfEditorAlbaranCliente.EliminarInterno;
begin
if (ShowConfirmMessage('¿Desea borrar este albarán de cliente?', '') = IDYES) then
begin
FController.Eliminar(FAlbaran);
inherited
end
end;
procedure TfEditorAlbaranCliente.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewAlbaran) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Albaran) then
raise Exception.Create('No hay ningún Albaran asignado');
Albaran.DataTable.Active := True;
pgPaginas.ActivePage := pagGeneral;
end;
procedure TfEditorAlbaranCliente.frViewTotales1edtDescuentoPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
FAlbaran.DESCUENTO := DisplayValue;
end;
procedure TfEditorAlbaranCliente.frViewTotales1edtIVAPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
FAlbaran.IVA := DisplayValue;
end;
procedure TfEditorAlbaranCliente.frViewTotales1ePortePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
if (not VarIsNull(DisplayValue)) and (Length(DisplayValue) > 0) then
FAlbaran.IMPORTE_PORTE := DisplayValue
else
FAlbaran.IMPORTE_PORTE := 0;
// RecalcularPortePorUnidad; En los documentos de cliente no se desglosa el porte por articulo
end;
function TfEditorAlbaranCliente.GetController: IAlbaranesClienteController;
begin
Result := FController;
end;
function TfEditorAlbaranCliente.GetAlbaran: IBizAlbaranCliente;
begin
Result := FAlbaran;
end;
function TfEditorAlbaranCliente.GetViewAlbaran: IViewAlbaranCliente;
begin
Result := FViewAlbaran;
end;
procedure TfEditorAlbaranCliente.GuardarInterno;
var
bEsNuevo : Boolean;
begin
inherited;
ShowHourglassCursor;
// frViewDetallesPedidoCliente1.SaveGridStatus;
frViewDetallesAlbaranCliente1.BeginUpdate;
try
bEsNuevo := FAlbaran.EsNuevo;
FController.Guardar(FAlbaran);
finally
frViewDetallesAlbaranCliente1.EndUpdate;
// frViewDetallesPedidoCliente1.RestoreGridStatus;
HideHourglassCursor;
end;
if bEsNuevo then
if FAlbaran.TIPO = CTE_TIPO_ALBARAN then
ShowInfoMessage('El albarán se ha dado de alta con el código ' + FAlbaran.REFERENCIA)
else
ShowInfoMessage('La orden de devolución se ha dado de alta con el código ' + FAlbaran.REFERENCIA);
Modified := False;
end;
procedure TfEditorAlbaranCliente.ImprimirInterno;
begin
inherited;
FController.Print(FAlbaran);
end;
procedure TfEditorAlbaranCliente.OnClienteChanged(Sender: TObject);
var
ADireccion : IBizDireccionesContacto;
begin
if Assigned(FAlbaran) then
begin
FAlbaran.Cliente := ViewAlbaran.ViewClienteAlbaran.Cliente;
// Avisar si no hay datos bancarios
{if not AClientesController.TieneDatosBancarios(FAlbaran.Cliente) then
ShowWarningMessage('Este cliente no tiene datos bancarios en su ficha');}
// Elegir la dirección de envio
{ case FAlbaran.Cliente.Direcciones.RecordCount of
0 : begin
ADireccion := NIL;
//ShowWarningMessage('Este cliente no tiene ninguna dirección de envío en su ficha');
end;
1 : begin
ADireccion := FAlbaran.Cliente.Direcciones;
end
end;
// Si hay dirección de envio, copiarla al albarán y poner el coste del porte
if Assigned(ADireccion) then
begin
try
FAlbaran.Edit;
FAlbaran.IMPORTE_PORTE := ADireccion.PORTE;
FController.CopiarDireccionEnvio(ADireccion, FAlbaran);
finally
ADireccion := NIL;
end;
end
else begin
FController.QuitarDireccionEnvio(FAlbaran);
FAlbaran.Edit;
FAlbaran.IMPORTE_PORTE := 0;
end;
}
// Si el pedido tiene detalles hay que mirar si los descuentos
// para los artículos hay que cambiarlos.
if (FAlbaran.Detalles.RecordCount > 0) then
FController.DetallesController.ActualizarDetalles(FAlbaran.Detalles, FAlbaran.Cliente);
end;
end;
procedure TfEditorAlbaranCliente.pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
begin
inherited;
if (not Assigned(FAlbaran)) or (FAlbaran.ID_CLIENTE = 0) then
begin
ShowWarningMessage('Antes de introducir conceptos debe elegir un cliente para este albarán');
AllowChange := False;
end;
end;
procedure TfEditorAlbaranCliente.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := ATitulo;
if (FTitulo = '') and Assigned(FAlbaran) then
begin
if FAlbaran.EsNuevo then
FTitulo := 'Nuevo albarán de cliente'
else
FTitulo := 'Albarán de cliente' + ' - ' + FAlbaran.Cliente.Nombre + ' - ' + FAlbaran.SITUACION;
end;
inherited PonerTitulos(FTitulo);
FTitulo := FTitulo + ' (' + AppFactuGES.EmpresaActiva.NOMBRE + ')';
Self.Caption := FTitulo;
end;
procedure TfEditorAlbaranCliente.PrevisualizarInterno;
begin
inherited;
FController.Preview(FAlbaran);
end;
procedure TfEditorAlbaranCliente.RecalcularPortePorUnidad;
begin
//Esta lógica se llamará en el editor porque es para facilitar el rellenado de información del documento
//no puede ir en la clase de negocio porque no es una lógica que tenga sentido fuera del editor.
if Assigned(Controller)
and Assigned(Controller.DetallesController) then
Controller.DetallesController.DesglosarPorteDetalles(FAlbaran.IMPORTE_PORTE, FAlbaran.Detalles)
end;
procedure TfEditorAlbaranCliente.SetController(const Value: IAlbaranesClienteController);
begin
FController := Value;
if Assigned(FController) then
frViewDetallesAlbaranCliente1.Controller := Controller.DetallesController;
end;
procedure TfEditorAlbaranCliente.SetAlbaran(const Value: IBizAlbaranCliente);
begin
FAlbaran := Value;
if Assigned(FAlbaran) then
begin
dsDataTable.DataTable := FAlbaran.DataTable;
frViewIncidenciasCli.DADataSource.DataTable := dsDataTable.DataTable;
frViewTotales1.DADataSource.DataTable := dsDataTable.DataTable;
if Assigned(FViewAlbaran) then
begin
ViewAlbaran.ViewClienteAlbaran.OnClienteChanged := NIL;
try
FViewAlbaran.Albaran := FAlbaran;
frViewDetallesAlbaranCliente1.Detalles := FAlbaran.Detalles;
frViewDetallesAlbaranCliente1.Albaran := FAlbaran; //Para poder sacar los descuento del articulos segun el cliente seleccionado
finally
ViewAlbaran.ViewClienteAlbaran.OnClienteChanged := OnClienteChanged;
end;
end;
end
else begin
dsDataTable.DataTable := NIL;
frViewIncidenciasCli.DADataSource.DataTable := NIL;
frViewTotales1.DADataSource.DataTable := NIL;
if Assigned(FViewAlbaran) then
begin
FViewAlbaran.Albaran := NIL;
ViewAlbaran.ViewClienteAlbaran.OnClienteChanged := NIL;
frViewDetallesAlbaranCliente1.Detalles := NIL;
frViewDetallesAlbaranCliente1.Albaran := NIL;
end;
end;
end;
procedure TfEditorAlbaranCliente.SetViewAlbaran(const Value: IViewAlbaranCliente);
begin
FViewAlbaran := Value;
if Assigned(FViewAlbaran) and Assigned(Albaran) then
FViewAlbaran.Albaran := Albaran;
end;
end.

View File

@ -1,330 +0,0 @@
unit uEditorAlbaranProveedor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBItem, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock,
TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane,
uCustomView, uViewBase, JvComponentBase,
StdCtrls, pngimage, AppEvnts, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, cxDBEdit,
uViewIncidencias,
uAlbaranesProveedorController,
uViewDetallesBase, uViewDetallesAlbaranProveedor,
dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar, uViewTotales,
uIEditorAlbaranProveedor, uBizAlbaranesProveedor, uViewAlbaranProveedor,
uViewDetallesDTO, uViewDetallesArticulos, uDAInterfaces, cxLabel;
type
TfEditorAlbaranProveedor = class(TfEditorDBItem, IEditorAlbaranProveedor)
pagContenido: TTabSheet;
pagInicidencias: TTabSheet;
frViewIncidenciasCli: TfrViewIncidencias;
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
frViewDetallesAlbaranProveedor1: TfrViewDetallesAlbaranProveedor;
frViewTotales1: TfrViewTotales;
procedure FormShow(Sender: TObject);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
procedure frViewTotales1edtDescuentoPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure frViewTotales1edtIVAPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure frViewTotales1ePortePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
// procedure frViewDatosYSeleccionContactoedtlNombrePropertiesChange(Sender: TObject);
private
procedure RecalcularPortePorUnidad;
protected
FAlbaran: IBizAlbaranProveedor;
FViewAlbaran: IViewAlbaranProveedor;
FController : IAlbaranesProveedorController;
function GetController : IAlbaranesProveedorController;
procedure SetController (const Value : IAlbaranesProveedorController); virtual;
function GetAlbaran: IBizAlbaranProveedor;
procedure SetAlbaran(const Value: IBizAlbaranProveedor); virtual;
function GetViewAlbaran: IViewAlbaranProveedor;
procedure SetViewAlbaran(const Value: IViewAlbaranProveedor);
procedure GuardarInterno; override;
procedure EliminarInterno; override;
procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override;
property ViewAlbaran: IViewAlbaranProveedor read GetViewAlbaran write SetViewAlbaran;
procedure OnProveedorChanged(Sender : TObject);
//Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo
procedure AsignarVista; virtual;
public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Controller : IAlbaranesProveedorController read GetController write SetController;
property Albaran: IBizAlbaranProveedor read GetAlbaran write SetAlbaran;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uViewDatosYSeleccionProveedor, uDataModuleUsuarios, uProveedoresController,
uBizDireccionesContacto, uDialogUtils, uDataTableUtils, uFactuGES_App;
{$R *.dfm}
{ TfEditorAlbaranProveedor }
{
**************************** TfEditorAlbaranProveedor ****************************
}
procedure TfEditorAlbaranProveedor.AsignarVista;
var
AViewAlbaranProveedor: TfrViewAlbaranProveedor;
begin
AViewAlbaranProveedor := TfrViewAlbaranProveedor.create(Self);
with AViewAlbaranProveedor do
begin
Parent := pagGeneral;
Align := alClient;
dxLayoutControl1.LookAndFeel := dxLayoutOfficeLookAndFeel1;
end;
ViewAlbaran := AViewAlbaranProveedor;
end;
constructor TfEditorAlbaranProveedor.Create(AOwner: TComponent);
begin
inherited;
AsignarVista;
pgPaginas.ActivePageIndex := 0;
end;
procedure TfEditorAlbaranProveedor.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
FViewAlbaran := NIL;
FAlbaran := NIL;
end;
destructor TfEditorAlbaranProveedor.Destroy;
begin
// Utilizar mejor OnClose;
inherited;
end;
procedure TfEditorAlbaranProveedor.EliminarInterno;
begin
if (Application.MessageBox('¿Desea borrar este albarán de proveedor?', 'Atención', MB_YESNO) = IDYES) then
begin
FController.Eliminar(FAlbaran);
inherited
end
end;
procedure TfEditorAlbaranProveedor.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewAlbaran) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Albaran) then
raise Exception.Create('No hay ningún Albaran asignado');
Albaran.DataTable.Active := True;
pgPaginas.ActivePage := pagGeneral;
end;
procedure TfEditorAlbaranProveedor.frViewTotales1edtDescuentoPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
FAlbaran.DESCUENTO := DisplayValue;
end;
procedure TfEditorAlbaranProveedor.frViewTotales1edtIVAPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
FAlbaran.IVA := DisplayValue;
end;
procedure TfEditorAlbaranProveedor.frViewTotales1ePortePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
if (not VarIsNull(DisplayValue)) and (length(DisplayValue) > 0) then
FAlbaran.IMPORTE_PORTE := DisplayValue
else
FAlbaran.IMPORTE_PORTE := 0;
RecalcularPortePorUnidad;
end;
function TfEditorAlbaranProveedor.GetController: IAlbaranesProveedorController;
begin
Result := FController;
end;
function TfEditorAlbaranProveedor.GetAlbaran: IBizAlbaranProveedor;
begin
Result := FAlbaran;
end;
function TfEditorAlbaranProveedor.GetViewAlbaran: IViewAlbaranProveedor;
begin
Result := FViewAlbaran;
end;
procedure TfEditorAlbaranProveedor.GuardarInterno;
var
bEsNuevo : Boolean;
begin
inherited;
ShowHourglassCursor;
// frViewDetallesAlbaranProveedor1.SaveGridStatus;
frViewDetallesAlbaranProveedor1.BeginUpdate;
try
bEsNuevo := FAlbaran.EsNuevo;
FController.Guardar(FAlbaran);
finally
frViewDetallesAlbaranProveedor1.EndUpdate;
// frViewDetallesAlbaranProveedor1.RestoreGridStatus;
HideHourglassCursor;
end;
if bEsNuevo then
ShowInfoMessage('El albarán se ha dado de alta con el código ' + FAlbaran.REFERENCIA);
Modified := False;
end;
procedure TfEditorAlbaranProveedor.ImprimirInterno;
var
AllItems: Boolean;
begin
inherited;
AllItems := False;
FController.Print(FAlbaran, AllItems);
end;
procedure TfEditorAlbaranProveedor.OnProveedorChanged(Sender: TObject);
begin
if Assigned(FAlbaran) then
begin
FAlbaran.Proveedor := ViewAlbaran.ViewProveedorAlbaran.Proveedor;
// Si el pedido tiene detalles hay que mirar si los descuentos
// para los artículos hay que cambiarlos.
if (FAlbaran.Detalles.RecordCount > 0) then
begin
FController.DetallesController.ActualizarDetalles(FAlbaran.Detalles, FAlbaran.Proveedor);
end;
end;
end;
procedure TfEditorAlbaranProveedor.pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
begin
inherited;
if (not Assigned(FAlbaran))
or (FAlbaran.ID_PROVEEDOR = 0) then
begin
ShowWarningMessage('Antes de introducir conceptos debe elegir un proveedor para este albarán');
AllowChange := False;
end;
end;
procedure TfEditorAlbaranProveedor.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := ATitulo;
if (FTitulo = '') and Assigned(FAlbaran) then
begin
if FAlbaran.EsNuevo then
FTitulo := 'Nuevo albarán de proveedor'
else
FTitulo := 'Albarán de proveedor' + ' - ' + FAlbaran.Proveedor.Nombre
end;
inherited PonerTitulos(FTitulo);
Self.Caption := FTitulo + ' (' + AppFactuGES.EmpresaActiva.NOMBRE + ')';
end;
procedure TfEditorAlbaranProveedor.PrevisualizarInterno;
var
AllItems: Boolean;
begin
inherited;
AllItems := False;
FController.Preview(FAlbaran, AllItems);
end;
procedure TfEditorAlbaranProveedor.RecalcularPortePorUnidad;
begin
//Esta lógica se llamará en el editor porque es para facilitar el rellenado de información del documento
//no puede ir en la clase de negocio porque no es una lógica que tenga sentido fuera del editor.
if Assigned(Controller)
and Assigned(Controller.DetallesController) then
Controller.DetallesController.DesglosarPorteDetalles(FAlbaran.IMPORTE_PORTE, FAlbaran.Detalles)
end;
procedure TfEditorAlbaranProveedor.SetController(const Value: IAlbaranesProveedorController);
begin
FController := Value;
if Assigned(FController) then
begin
frViewDetallesAlbaranProveedor1.Controller := Controller.DetallesController;
end;
end;
procedure TfEditorAlbaranProveedor.SetAlbaran(const Value: IBizAlbaranProveedor);
begin
FAlbaran := Value;
if Assigned(FAlbaran) then
begin
dsDataTable.DataTable := FAlbaran.DataTable;
frViewTotales1.DADataSource.DataTable := dsDataTable.DataTable;
frViewIncidenciasCli.DADataSource.DataTable := dsDataTable.DataTable;
if Assigned(FViewAlbaran) then
begin
ViewAlbaran.ViewProveedorAlbaran.OnProveedorChanged := NIL;
try
FViewAlbaran.Albaran := FAlbaran;
frViewDetallesAlbaranProveedor1.Detalles := FAlbaran.Detalles;
frViewDetallesAlbaranProveedor1.Albaran := FAlbaran; //Para poder sacar los descuento del articulos segun el proveedor seleccionado
finally
ViewAlbaran.ViewProveedorAlbaran.OnProveedorChanged := OnProveedorChanged;
end;
end;
end;
end;
procedure TfEditorAlbaranProveedor.SetViewAlbaran(const Value: IViewAlbaranProveedor);
begin
FViewAlbaran := Value;
if Assigned(FViewAlbaran) and Assigned(Albaran) then
FViewAlbaran.Albaran := Albaran;
end;
end.

View File

@ -1,350 +0,0 @@
unit uEditorPedidoProveedor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBItem, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock,
TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane,
uViewPedidoProveedor, uCustomView, uViewBase, JvComponentBase,
StdCtrls, pngimage, AppEvnts, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, cxDBEdit,
uViewIncidencias,
uBizPedidosProveedor, uIEditorPedidoProveedor, uPedidosProveedorController,
uViewDetallesBase, uViewDetallesPedidoProveedor,
dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar, uViewTotales,
uViewDetallesDTO, uViewDetallesArticulos, uDAInterfaces, cxLabel;
type
TfEditorPedidoProveedor = class(TfEditorDBItem, IEditorPedidoProveedor)
pagContenido: TTabSheet;
pagInicidencias: TTabSheet;
frViewIncidenciasProv: TfrViewIncidencias;
frViewDetallesPedidoProveedor1: TfrViewDetallesPedidoProveedor;
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
frViewTotales1: TfrViewTotales;
TBXSubmenuItem2: TTBXSubmenuItem;
TBXItem7: TTBXItem;
actEnviarEMail: TAction;
TBXSeparatorItem6: TTBXSeparatorItem;
TBXItem33: TTBXItem;
procedure FormShow(Sender: TObject);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
procedure frViewTotales1ePortePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure actEnviarEMailUpdate(Sender: TObject);
procedure actEnviarEMailExecute(Sender: TObject);
private
procedure RecalcularPortePorUnidad;
protected
FPedido: IBizPedidoProveedor;
FViewPedido: IViewPedidoProveedor;
FController : IPedidosProveedorController;
function GetController : IPedidosProveedorController;
procedure SetController (const Value : IPedidosProveedorController); virtual;
function GetPedido: IBizPedidoProveedor;
procedure SetPedido(const Value: IBizPedidoProveedor); virtual;
function GetViewPedido: IViewPedidoProveedor;
procedure SetViewPedido(const Value: IViewPedidoProveedor);
procedure GuardarInterno; override;
procedure EliminarInterno; override;
procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override;
procedure OnProveedorChanged(Sender : TObject);
function PuedoImprimir: Boolean; override;
//Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo
procedure AsignarVista; virtual;
property ViewPedido: IViewPedidoProveedor read GetViewPedido write SetViewPedido;
public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Controller : IPedidosProveedorController read GetController write SetController;
property Pedido: IBizPedidoProveedor read GetPedido write SetPedido;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uViewDatosYSeleccionProveedor, uDataModuleUsuarios, uGridStatusUtils, uDialogUtils,
uFactuGES_App, uDialogOpcionesImpresionPedidosProveedor;
{$R *.dfm}
{ TfEditorPedidoProveedor }
{
**************************** TfEditorPedidoProveedor ****************************
}
procedure TfEditorPedidoProveedor.actEnviarEMailExecute(Sender: TObject);
begin
inherited;
FController.EnviarPedidoPorEMail(Pedido);
end;
procedure TfEditorPedidoProveedor.actEnviarEMailUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := HayDatos;
end;
procedure TfEditorPedidoProveedor.AsignarVista;
var
AViewPedidoProveedor: TfrViewPedidoProveedor;
begin
AViewPedidoProveedor := TfrViewPedidoProveedor.Create(Self);
with AViewPedidoProveedor do
begin
Parent := pagGeneral;
Align := alClient;
dxLayoutControl1.LookAndFeel := dxLayoutOfficeLookAndFeel1;
end;
ViewPedido := AViewPedidoProveedor;
end;
constructor TfEditorPedidoProveedor.Create(AOwner: TComponent);
begin
inherited;
pgPaginas.ActivePageIndex := 0;
AsignarVista;
end;
procedure TfEditorPedidoProveedor.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
FViewPedido := NIL;
FPedido := NIL;
end;
destructor TfEditorPedidoProveedor.Destroy;
begin
// Utilizar mejor OnClose;
inherited;
end;
procedure TfEditorPedidoProveedor.EliminarInterno;
begin
if (Application.MessageBox('¿Desea borrar este pedido a proveedor?', 'Atención', MB_YESNO) = IDYES) then
begin
FController.Eliminar(FPedido);
inherited
end
end;
procedure TfEditorPedidoProveedor.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewPedido) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Pedido) then
raise Exception.Create('No hay ningún pedido asignado');
Pedido.DataTable.Active := True;
pgPaginas.ActivePage := pagGeneral;
end;
procedure TfEditorPedidoProveedor.frViewTotales1ePortePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
if (not VarIsNull(DisplayValue)) and (length(DisplayValue) > 0) then
FPedido.IMPORTE_PORTE := DisplayValue
else
FPedido.IMPORTE_PORTE := 0;
RecalcularPortePorUnidad;
end;
function TfEditorPedidoProveedor.GetController: IPedidosProveedorController;
begin
Result := FController;
end;
function TfEditorPedidoProveedor.GetPedido: IBizPedidoProveedor;
begin
Result := FPedido;
end;
function TfEditorPedidoProveedor.GetViewPedido: IViewPedidoProveedor;
begin
Result := FViewPedido;
end;
procedure TfEditorPedidoProveedor.GuardarInterno;
var
bEsNuevo : Boolean;
begin
inherited;
ShowHourglassCursor;
// frViewDetallesPedidoProveedor1.SaveGridStatus; // Para guardar estado del grid
frViewDetallesPedidoProveedor1.BeginUpdate; // Para que no se mueva el foco
try
bEsNuevo := FPedido.EsNuevo;
FController.Guardar(FPedido);
finally
frViewDetallesPedidoProveedor1.EndUpdate;
// frViewDetallesPedidoProveedor1.RestoreGridStatus;
HideHourglassCursor;
end;
if bEsNuevo then
ShowInfoMessage('El pedido se ha dado de alta con el código ' + FPedido.REFERENCIA);
Modified := False;
end;
procedure TfEditorPedidoProveedor.ImprimirInterno;
var
AllItems: Boolean;
FImprimirPrecios : Boolean;
FImprimirRefProveedor : Boolean;
begin
inherited;
AllItems := False;
FImprimirPrecios := True;
FImprimirRefProveedor := True;
if ElegirOpcionesImpresionPedidoProveedor(FImprimirPrecios, FImprimirRefProveedor) then
FController.Print(FPedido, AllItems, FImprimirPrecios, FImprimirRefProveedor);
end;
function TfEditorPedidoProveedor.PuedoImprimir: Boolean;
begin
Result := inherited PuedoImprimir and (not Pedido.Cliente.IDIsNull);
end;
procedure TfEditorPedidoProveedor.OnProveedorChanged(Sender: TObject);
begin
if Assigned(FPedido) then
begin
FPedido.Proveedor := ViewPedido.ViewProveedorPedido.Proveedor;
// Si el pedido tiene detalles hay que mirar si los descuentos y otros campos
// para los artículos hay que cambiarlos.
if (FPedido.Detalles.RecordCount > 0) then
FController.DetallesController.ActualizarDetalles(FPedido.Detalles, FPedido.Proveedor);
end;
end;
procedure TfEditorPedidoProveedor.pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
begin
inherited;
if (not Assigned(FPedido))
or (FPedido.ID_PROVEEDOR = 0) then
begin
ShowWarningMessage('Antes de introducir conceptos debe elegir un proveedor para este pedido');
AllowChange := False;
end;
end;
procedure TfEditorPedidoProveedor.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := ATitulo;
if (FTitulo = '') and Assigned(FPedido) then
begin
if FPedido.EsNuevo then
FTitulo := 'Nuevo pedido a proveedor'
else
FTitulo := 'Pedido a proveedor' + ' - ' + FPedido.Proveedor.Nombre + ' - (' + FPedido.SITUACION + ')';
end;
inherited PonerTitulos(FTitulo);
Self.Caption := FTitulo + ' (' + AppFactuGES.EmpresaActiva.NOMBRE + ')';
end;
procedure TfEditorPedidoProveedor.PrevisualizarInterno;
var
AllItems: Boolean;
FImprimirPrecios : Boolean;
FImprimirRefProveedor : Boolean;
begin
inherited;
AllItems := False;
FImprimirPrecios := True;
FImprimirRefProveedor := True;
if ElegirOpcionesImpresionPedidoProveedor(FImprimirPrecios, FImprimirRefProveedor) then
FController.Preview(FPedido, AllItems, FImprimirPrecios, FImprimirRefProveedor);
end;
procedure TfEditorPedidoProveedor.RecalcularPortePorUnidad;
begin
//Esta lógica se llamará en el editor porque es para facilitar el rellenado de información del documento
//no puede ir en la clase de negocio porque no es una lógica que tenga sentido fuera del editor.
if Assigned(Controller)
and Assigned(Controller.DetallesController) then
Controller.DetallesController.DesglosarPorteDetalles(FPedido.IMPORTE_PORTE, FPedido.Detalles)
end;
procedure TfEditorPedidoProveedor.SetController(const Value: IPedidosProveedorController);
begin
FController := Value;
if Assigned(FController) then
begin
if Assigned(FViewPedido) then
FViewPedido.Controller := Controller;
frViewDetallesPedidoProveedor1.Controller := Controller.DetallesController;
end;
end;
procedure TfEditorPedidoProveedor.SetPedido(const Value: IBizPedidoProveedor);
begin
FPedido := Value;
if Assigned(FPedido) then
begin
dsDataTable.DataTable := FPedido.DataTable;
frViewTotales1.DADataSource.DataTable := dsDataTable.DataTable;
frViewIncidenciasProv.DADataSource.DataTable := dsDataTable.DataTable;
if Assigned(FViewPedido) then
begin
ViewPedido.ViewProveedorPedido.OnProveedorChanged := NIL;
try
FViewPedido.Pedido := FPedido;
frViewDetallesPedidoProveedor1.Detalles := FPedido.Detalles;
frViewDetallesPedidoProveedor1.Pedido := FPedido; //Para poder sacar los articulos del proveedor seleccionado
finally
ViewPedido.ViewProveedorPedido.OnProveedorChanged := OnProveedorChanged;
end;
end;
end;
end;
procedure TfEditorPedidoProveedor.SetViewPedido(const Value: IViewPedidoProveedor);
begin
FViewPedido := Value;
if Assigned(FViewPedido) and Assigned(Pedido) then
FViewPedido.Pedido := Pedido;
end;
end.

View File

@ -1,612 +0,0 @@
object DataModulePedidosCliente: TDataModulePedidosCliente
Left = 0
Top = 0
ClientHeight = 362
ClientWidth = 805
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = True
OnCreate = DAClientDataModuleCreate
PixelsPerInch = 96
TextHeight = 13
object RORemoteService: TRORemoteService
Message = dmConexion.ROMessage
Channel = dmConexion.ROChannel
ServiceName = 'srvPedidosCliente'
Left = 40
Top = 24
end
object tbl_PedidosCliente: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ID'
DataType = datAutoInc
GeneratorName = 'GEN_PEDIDOS_CLI_ID'
DictionaryEntry = 'PedidosCliente_ID'
InPrimaryKey = True
end
item
Name = 'ID_EMPRESA'
DataType = datInteger
DictionaryEntry = 'PedidosCliente_ID_EMPRESA'
end
item
Name = 'ID_CLIENTE'
DataType = datInteger
DictionaryEntry = 'PedidosCliente_ID_CLIENTE'
end
item
Name = 'NOMBRE'
DataType = datString
Size = 255
DisplayLabel = 'Nombre del cliente'
DictionaryEntry = 'PedidosCliente_NOMBRE'
end
item
Name = 'REFERENCIA'
DataType = datString
Size = 255
DisplayLabel = 'Referencia'
DictionaryEntry = 'PedidosCliente_REFERENCIA'
end
item
Name = 'REFERENCIA_CLIENTE'
DataType = datString
Size = 255
DisplayLabel = 'PedidosCliente_REFERENCIA_CLIENTE'
DictionaryEntry = 'PedidosCliente_REFERENCIA_CLIENTE'
end
item
Name = 'SITUACION'
DataType = datString
Size = 255
DisplayLabel = 'Situaci'#243'n'
DictionaryEntry = 'PedidosCliente_SITUACION'
end
item
Name = 'FECHA_PEDIDO'
DataType = datDateTime
DisplayLabel = 'Fecha pedido'
DictionaryEntry = 'PedidosCliente_FECHA_PEDIDO'
end
item
Name = 'ID_DIRECCION'
DataType = datInteger
DisplayLabel = 'PedidosCliente_ID_DIRECCION'
DictionaryEntry = 'PedidosCliente_ID_DIRECCION'
end
item
Name = 'CALLE'
DataType = datString
Size = 255
DisplayLabel = 'Calle'
DictionaryEntry = 'PedidosCliente_CALLE'
end
item
Name = 'CODIGO_POSTAL'
DataType = datString
Size = 10
DisplayLabel = 'C'#243'd. postal'
DictionaryEntry = 'PedidosCliente_CODIGO_POSTAL'
end
item
Name = 'POBLACION'
DataType = datString
Size = 255
DisplayLabel = 'Poblaci'#243'n'
DictionaryEntry = 'PedidosCliente_POBLACION'
end
item
Name = 'PROVINCIA'
DataType = datString
Size = 255
DisplayLabel = 'Provincia'
DictionaryEntry = 'PedidosCliente_PROVINCIA'
end
item
Name = 'PERSONA_CONTACTO'
DataType = datString
Size = 255
DisplayLabel = 'Persona de contacto'
DictionaryEntry = 'PedidosCliente_PERSONA_CONTACTO'
end
item
Name = 'TELEFONO'
DataType = datString
Size = 25
DisplayLabel = 'Tel'#233'fono'
DictionaryEntry = 'PedidosCliente_TELEFONO'
end
item
Name = 'OBSERVACIONES'
DataType = datMemo
DisplayLabel = 'Observaciones'
DictionaryEntry = 'PedidosCliente_OBSERVACIONES'
end
item
Name = 'INCIDENCIAS'
DataType = datMemo
DictionaryEntry = 'PedidosCliente_INCIDENCIAS'
end
item
Name = 'INCIDENCIAS_ACTIVAS'
DataType = datInteger
DictionaryEntry = 'PedidosCliente_INCIDENCIAS_ACTIVAS'
end
item
Name = 'FECHA_ALTA'
DataType = datDateTime
DictionaryEntry = 'PedidosCliente_FECHA_ALTA'
end
item
Name = 'FECHA_MODIFICACION'
DataType = datDateTime
DictionaryEntry = 'PedidosCliente_FECHA_MODIFICACION'
end
item
Name = 'USUARIO'
DataType = datString
Size = 20
DictionaryEntry = 'PedidosCliente_USUARIO'
end
item
Name = 'IMPORTE_NETO'
DataType = datCurrency
DisplayLabel = 'Importe neto'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_IMPORTE_NETO'
end
item
Name = 'IMPORTE_PORTE'
DataType = datCurrency
DisplayLabel = 'Importe del porte'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_IMPORTE_PORTE'
end
item
Name = 'DESCUENTO'
DataType = datFloat
DisplayLabel = 'Descuento'
DisplayFormat = ',0.00 %;-,0.00 %'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_DESCUENTO'
end
item
Name = 'IMPORTE_DESCUENTO'
DataType = datCurrency
DisplayLabel = 'Importe dto.'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_IMPORTE_DESCUENTO'
end
item
Name = 'DESCUENTO2'
DataType = datFloat
DictionaryEntry = 'PedidosCliente_DESCUENTO2'
end
item
Name = 'IMPORTE_DESCUENTO2'
DataType = datCurrency
DecimalPrecision = 11
DecimalScale = 2
DictionaryEntry = 'PedidosCliente_IMPORTE_DESCUENTO2'
end
item
Name = 'BASE_IMPONIBLE'
DataType = datCurrency
DisplayLabel = 'Base imponible'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_BASE_IMPONIBLE'
end
item
Name = 'IVA'
DataType = datFloat
DisplayFormat = ',0.00 %;-,0.00 %'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_IVA'
end
item
Name = 'IMPORTE_IVA'
DataType = datCurrency
DisplayLabel = 'Importe IVA'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_IMPORTE_IVA'
end
item
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
DisplayLabel = 'Importe total'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_IMPORTE_TOTAL'
end
item
Name = 'ID_FORMA_PAGO'
DataType = datInteger
DictionaryEntry = 'PedidosCliente_ID_FORMA_PAGO'
end
item
Name = 'FORMA_PAGO'
DataType = datString
Size = 255
DisplayLabel = 'PedidosCliente_FORMA_PAGO'
DictionaryEntry = 'PedidosCliente_FORMA_PAGO'
end
item
Name = 'REF_TIENDA_WEB'
DataType = datInteger
DictionaryEntry = 'PedidosCliente_REF_TIENDA_WEB'
end
item
Name = 'FECHA_PREVISTA_ENVIO'
DataType = datDateTime
DisplayLabel = 'Fecha de entrega prevista'
DictionaryEntry = 'PedidosCliente_FECHA_PREVISTA_ENVIO'
end
item
Name = 'DATOS_BANCARIOS'
DataType = datString
Size = 255
DisplayLabel = 'PedidosCliente_DATOS_BANCARIOS'
DictionaryEntry = 'PedidosCliente_DATOS_BANCARIOS'
end>
Params = <>
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteDataAdapter = rda_PedidosCliente
LogicalName = 'PedidosCliente'
IndexDefs = <>
Left = 208
Top = 104
end
object ds_PedidosCliente: TDADataSource
DataSet = tbl_PedidosCliente.Dataset
DataTable = tbl_PedidosCliente
Left = 208
Top = 48
end
object tbl_PedidosCliente_Detalles: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ID'
DataType = datAutoInc
GeneratorName = 'GEN_PEDIDOS_CLI_DETALLES_ID'
Required = True
DictionaryEntry = 'PedidosCliente_Detalles_ID'
InPrimaryKey = True
end
item
Name = 'ID_PEDIDO'
DataType = datInteger
DictionaryEntry = 'PedidosCliente_Detalles_ID_PEDIDO'
end
item
Name = 'POSICION'
DataType = datInteger
DictionaryEntry = 'POSICIONCONCEPTO'
end
item
Name = 'TIPO_DETALLE'
DataType = datString
Size = 10
DictionaryEntry = 'PedidosCliente_Detalles_TIPO_DETALLE'
end
item
Name = 'ID_ARTICULO'
DataType = datInteger
DictionaryEntry = 'PedidosCliente_Detalles_ID_ARTICULO'
end
item
Name = 'REFERENCIA'
DataType = datString
Size = 255
DisplayLabel = 'Referencia'
DictionaryEntry = 'PedidosCliente_Detalles_REFERENCIA'
end
item
Name = 'REFERENCIA_PROVEEDOR'
DataType = datString
Size = 255
DisplayLabel = 'Ref. proveedor'
DictionaryEntry = 'PedidosCliente_Detalles_REFERENCIA_PROVEEDOR'
end
item
Name = 'CONCEPTO'
DataType = datString
Size = 2000
DictionaryEntry = 'PedidosCliente_Detalles_CONCEPTO'
end
item
Name = 'CANTIDAD'
DataType = datFloat
DisplayLabel = 'PedidosCliente_Detalles_CANTIDAD'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_Detalles_CANTIDAD'
end
item
Name = 'IMPORTE_UNIDAD'
DataType = datCurrency
DisplayLabel = 'Importe unidad'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_Detalles_IMPORTE_UNIDAD'
end
item
Name = 'UNIDAD_MEDIDA'
DataType = datString
DisplayLabel = 'PedidosCliente_Detalles_UNIDAD_MEDIDA'
DictionaryEntry = 'PedidosCliente_Detalles_UNIDAD_MEDIDA'
end
item
Name = 'DESCUENTO'
DataType = datFloat
DisplayLabel = 'Descuento'
DisplayFormat = ',0.00 %;-,0.00 %'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_Detalles_DESCUENTO'
end
item
Name = 'IMPORTE_PORTE'
DataType = datCurrency
DisplayLabel = 'Importe porte'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_Detalles_IMPORTE_PORTE'
end
item
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
DisplayLabel = 'Importe total'
Alignment = taRightJustify
DictionaryEntry = 'PedidosCliente_Detalles_IMPORTE_TOTAL'
end
item
Name = 'VISIBLE'
DataType = datInteger
DictionaryEntry = 'PedidosCliente_Detalles_VISIBLE'
end>
Params = <>
MasterMappingMode = mmWhere
MasterParamsMappings.Strings = (
'ID_PEDIDO=ID')
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteDataAdapter = rda_PedidosCliente
MasterSource = ds_PedidosCliente
MasterFields = 'ID'
DetailFields = 'ID_PEDIDO'
LogicalName = 'PedidosCliente_Detalles'
IndexDefs = <>
Left = 329
Top = 104
end
object ds_PedidosCliente_Detalles: TDADataSource
DataSet = tbl_PedidosCliente_Detalles.Dataset
DataTable = tbl_PedidosCliente_Detalles
Left = 329
Top = 48
end
object tbl_PedidoCliente_Articulos_Pendientes: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ID_ARTICULO'
DataType = datInteger
DictionaryEntry = 'PedidoCliente_Articulos_Pendientes_ID_ARTICULO'
InPrimaryKey = True
end
item
Name = 'CANTIDAD_PED'
DataType = datInteger
DisplayLabel = 'Cantidad en pedido'
Alignment = taRightJustify
DictionaryEntry = 'PedidoCliente_Articulos_Pendientes_CANTIDAD_PED'
end
item
Name = 'CANTIDAD_ALB'
DataType = datInteger
DisplayLabel = 'Cantidad en albaranes'
Alignment = taRightJustify
DictionaryEntry = 'PedidoCliente_Articulos_Pendientes_CANTIDAD_ALB'
end
item
Name = 'CANTIDAD_PENDIENTE'
DataType = datInteger
DisplayLabel = 'Cantidad pendiente'
Alignment = taRightJustify
DictionaryEntry = 'PedidoCliente_Articulos_Pendientes_CANTIDAD_PENDIENTE'
end>
Params = <
item
Name = 'ID_PEDIDO'
DataType = datInteger
Value = ''
ParamType = daptInput
end>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
LogicalName = 'PedidoCliente_Articulos_Pendientes'
IndexDefs = <>
Left = 208
Top = 192
end
object ds_PedidoCliente_Articulos_Pendientes: TDADataSource
DataSet = tbl_PedidoCliente_Articulos_Pendientes.Dataset
DataTable = tbl_PedidoCliente_Articulos_Pendientes
Left = 208
Top = 256
end
object tbl_PedidoCliente_ArticulosPendientesPedirAProv: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ID_PEDIDO'
DataType = datAutoInc
DictionaryEntry = 'DarArticulosPendientesPedirAProv_ID_PEDIDO'
end
item
Name = 'ID_ARTICULO'
DataType = datInteger
DictionaryEntry = 'DarArticulosPendientesPedirAProv_ID_ARTICULO'
end
item
Name = 'CANT_PEDIDA_CLIENTE'
DataType = datInteger
DisplayLabel = 'Cant. pedida por cliente'
DictionaryEntry = 'DarArticulosPendientesPedirAProv_CANT_PEDIDA_CLIENTE'
end
item
Name = 'ID_PROVEEDOR'
DataType = datInteger
DictionaryEntry = 'DarArticulosPendientesPedirAProv_ID_PROVEEDOR'
end
item
Name = 'CANT_PEDIDA_PROVEEDOR'
DataType = datInteger
DisplayLabel = 'Cant. pedida a proveedor'
DictionaryEntry = 'DarArticulosPendientesPedirAProv_CANT_PEDIDA_PROVEEDOR'
end
item
Name = 'CANT_PENDIENTE_PEDIR'
DataType = datInteger
DisplayLabel = 'Cant. pendiente pedir'
DictionaryEntry = 'DarArticulosPendientesPedirAProv_CANT_PENDIENTE_PEDIR'
end>
Params = <
item
Name = 'ID_PEDIDO'
Value = ''
ParamType = daptInput
end>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
LogicalName = 'PedidoCliente_ArticulosPendientesPedirAProv'
IndexDefs = <>
Left = 440
Top = 192
end
object ds_PedidoCliente_ArticulosPendientesPedirAProv: TDADataSource
DataSet = tbl_PedidoCliente_ArticulosPendientesPedirAProv.Dataset
DataTable = tbl_PedidoCliente_ArticulosPendientesPedirAProv
Left = 440
Top = 256
end
object tbl_ListaAnosPedidos: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteDataAdapter = rda_PedidosCliente
LogicalName = 'ListaAnosPedidos'
IndexDefs = <>
Left = 632
Top = 264
end
object ds_ListaAnosPedidos: TDADataSource
DataSet = tbl_ListaAnosPedidos.Dataset
DataTable = tbl_ListaAnosPedidos
Left = 624
Top = 200
end
object Bin2DataStreamer: TDABin2DataStreamer
Left = 40
Top = 76
end
object rda_PedidosCliente: TDARemoteDataAdapter
GetSchemaCall.RemoteService = RORemoteService
GetDataCall.RemoteService = RORemoteService
UpdateDataCall.RemoteService = RORemoteService
GetScriptsCall.RemoteService = RORemoteService
RemoteService = RORemoteService
DataStreamer = Bin2DataStreamer
Left = 43
Top = 143
end
object tbl_PedidosCliente_Detalle_Color: TDAMemDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ID'
DataType = datAutoInc
GeneratorName = 'GEN_PEDIDOS_CLI_DETALLES_ID'
Required = True
DictionaryEntry = 'PedidosCliente_Detalles_ID'
InPrimaryKey = True
end
item
Name = 'ID_DETALLE'
DataType = datInteger
end
item
Name = 'COLOR1'
DataType = datInteger
end
item
Name = 'COLOR2'
DataType = datInteger
end
item
Name = 'COLOR3'
DataType = datInteger
end
item
Name = 'COLOR4'
DataType = datInteger
end
item
Name = 'COLOR5'
DataType = datInteger
end
item
Name = 'COLOR6'
DataType = datInteger
end
item
Name = 'COLOR7'
DataType = datInteger
end
item
Name = 'COLOR8'
DataType = datInteger
end
item
Name = 'COLOR9'
DataType = datInteger
end
item
Name = 'COLOR10'
DataType = datInteger
end
item
Name = 'COLOR11'
DataType = datInteger
end
item
Name = 'COLOR12'
DataType = datInteger
end>
Params = <>
MasterMappingMode = mmWhere
StreamingOptions = [soDisableEventsWhileStreaming, soDisableFiltering]
RemoteDataAdapter = rda_PedidosCliente
MasterSource = ds_PedidosCliente_Detalles
MasterFields = 'ID'
DetailFields = 'ID_DETALLE'
LogicalName = 'PedidosCliente_Detalle_Color'
IndexDefs = <>
Left = 472
Top = 104
end
object ds_PedidosCliente_Detalle_Color: TDADataSource
DataSet = tbl_PedidosCliente_Detalle_Color.Dataset
DataTable = tbl_PedidosCliente_Detalle_Color
Left = 472
Top = 48
end
end

View File

@ -1,14 +0,0 @@
/* VER180
Generated by the Borland Delphi Pascal Compiler
because -GD or --drc was supplied to the compiler.
This file contains compiler-generated resources that
were bound to the executable.
If this file is empty, then no compiler-generated
resources were bound to the produced executable.
*/
STRINGTABLE
BEGIN
END

View File

@ -1,343 +0,0 @@
unit uEditorRemesaProveedor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent,
uBizRemesasProveedor, JvNavigationPane, ActnList,
uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList,
TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize,
uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls,
TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase,
JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase,
cxCustomData,
uViewRemesasProveedor, uIEditorRemesaProveedor, uRemesasProveedorController, JvExComCtrls,
JvStatusBar, dxLayoutLookAndFeels, uViewGridBase, uViewGrid,
uViewRecibosRemesaProveedor, uViewTotales, uViewDetallesGenerico,
uViewRemesaProveedor, uDAInterfaces, cxControls, cxContainer, cxEdit, cxLabel;
type
TfEditorRemesaProveedor = class(TfEditorDBItem, IEditorRemesaProveedor)
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
frViewTotales1: TfrViewTotales;
actVolcarDisco: TAction;
TBXSubmenuItem2: TTBXSubmenuItem;
TBXItem7: TTBXItem;
TBXItem33: TTBXItem;
TBXSeparatorItem6: TTBXSeparatorItem;
frViewRecibosRemesaProveedor1: TfrViewRecibosRemesaProveedor;
frViewRemesaProveedor1: TfrViewRemesaProveedor;
procedure FormShow(Sender: TObject);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure actAnadirRecibosExecute(Sender: TObject);
procedure actEliminarReciboExecute(Sender: TObject);
procedure JvFormStorageRestorePlacement(Sender: TObject);
procedure JvFormStorageSavePlacement(Sender: TObject);
procedure frViewRecibosRemesaProveedor1cxGridViewDataControllerSummaryAfterSummary(
ASender: TcxDataSummary);
procedure actVolcarDiscoUpdate(Sender: TObject);
procedure actVolcarDiscoExecute(Sender: TObject);
private
procedure OnRecibosChanged(Sender: TObject);
protected
FController : IRemesasProveedorController;
FRemesaProveedor: IBizRemesaProveedor;
FViewRemesaProveedor : IViewRemesaProveedor;
function GetController : IRemesasProveedorController;
procedure SetController (const Value : IRemesasProveedorController); virtual;
function GetRemesaProveedor: IBizRemesaProveedor; virtual;
procedure SetRemesaProveedor(const Value: IBizRemesaProveedor); virtual;
function GetViewRemesaProveedor: IViewRemesaProveedor;
procedure SetViewRemesaProveedor(const Value: IViewRemesaProveedor);
property ViewRemesaProveedor: IViewRemesaProveedor read GetViewRemesaProveedor write SetViewRemesaProveedor;
procedure GuardarInterno; override;
procedure EliminarInterno; override;
procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override;
procedure CerrarInterno; override;
procedure PonerTitulos(const ATitulo: string = ''); override;
function GetModified: Boolean; override;
public
property RemesaProveedor: IBizRemesaProveedor read GetRemesaProveedor write SetRemesaProveedor;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
{$R *.dfm}
uses
uDataTableUtils, uDataModuleUsuarios, uDialogUtils, uCustomEditor,
uDataModuleRemesasProveedor, uDataModuleBase, uBizFamilias, uFamiliasController,
uFactuGES_App;
// uBancaElectronicaController;
{
******************************* TfEditorRemesaProveedor *******************************
}
function TfEditorRemesaProveedor.GetRemesaProveedor: IBizRemesaProveedor;
begin
Result := FRemesaProveedor;
end;
function TfEditorRemesaProveedor.GetController: IRemesasProveedorController;
begin
Result := FController;
end;
function TfEditorRemesaProveedor.GetModified: Boolean;
var
bCambiado : Boolean;
begin
bCambiado := inherited GetModified;
//Si no hay cambios miramos que no los halla en la lista de recibos
if not bCambiado then
bCambiado := frViewRecibosRemesaProveedor1.Modified;
Result := bCambiado;
end;
function TfEditorRemesaProveedor.GetViewRemesaProveedor: IViewRemesaProveedor;
begin
Result := FViewRemesaProveedor;
end;
procedure TfEditorRemesaProveedor.GuardarInterno;
var
bEsNuevo : Boolean;
begin
inherited;
ShowHourglassCursor;
frViewRecibosRemesaProveedor1.OnViewModified := Nil;
//frViewDetallesFacturaProveedor1.SaveGridStatus; // Para guardar estado del grid
// frViewDetallesFacturaProveedor1.BeginUpdate; // Para que no se mueva el foco
try
bEsNuevo := FRemesaProveedor.EsNuevo;
FController.Guardar(FRemesaProveedor);
finally
// frViewDetallesFacturaProveedor1.EndUpdate;
// frViewDetallesFacturaProveedor1.RestoreGridStatus;
HideHourglassCursor;
end;
if bEsNuevo then
ShowInfoMessage('La remesa de pago se ha dado de alta con el código ' + FRemesaProveedor.REFERENCIA);
Modified := False;
frViewRecibosRemesaProveedor1.Modified := False;
frViewRecibosRemesaProveedor1.OnViewModified := OnRecibosChanged;
end;
procedure TfEditorRemesaProveedor.ImprimirInterno;
begin
inherited;
FController.Print(FRemesaProveedor);
end;
procedure TfEditorRemesaProveedor.JvFormStorageRestorePlacement(Sender: TObject);
begin
inherited;
//frViewRecibosRemesaProveedor1.RestoreFromRegistry(JvAppRegistryStorage.Root);
end;
procedure TfEditorRemesaProveedor.JvFormStorageSavePlacement(Sender: TObject);
begin
inherited;
//frViewRecibosRemesaProveedor1.StoreToRegistry(JvAppRegistryStorage.Root);
end;
procedure TfEditorRemesaProveedor.OnRecibosChanged(Sender: TObject);
begin
ActualizarEstadoEditor;
end;
procedure TfEditorRemesaProveedor.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := ATitulo;
if (FTitulo = '') and Assigned(RemesaProveedor) then
begin
if RemesaProveedor.EsNuevo then
FTitulo := 'Nueva remesa de pago'
else
FTitulo := 'Remesa de pago';
end;
inherited PonerTitulos(FTitulo);
Self.Caption := FTitulo + ' (' + AppFactuGES.EmpresaActiva.NOMBRE + ')';
end;
procedure TfEditorRemesaProveedor.PrevisualizarInterno;
begin
inherited;
FController.Preview(FRemesaProveedor);
end;
procedure TfEditorRemesaProveedor.SetRemesaProveedor(const Value: IBizRemesaProveedor);
begin
FRemesaProveedor := Value;
if Assigned(FRemesaProveedor) then
begin
dsDataTable.DataTable := FRemesaProveedor.DataTable;
frViewRecibosRemesaProveedor1.RemesaProveedor := FRemesaProveedor;
frViewRecibosRemesaProveedor1.OnViewModified := OnRecibosChanged;
end
else
begin
dsDataTable.DataTable := Nil;
frViewRecibosRemesaProveedor1.RemesaProveedor := Nil;
frViewRecibosRemesaProveedor1.OnViewModified := Nil;
end;
if Assigned(FViewRemesaProveedor) then
FViewRemesaProveedor.RemesaProveedor := FRemesaProveedor;
frViewTotales1.DADataSource.DataTable := dsDataTable.DataTable;
end;
procedure TfEditorRemesaProveedor.SetController(const Value: IRemesasProveedorController);
begin
FController := Value;
if Assigned(FController) then
begin
(ViewRemesaProveedor as IViewRemesaProveedor).Controller := (FController as IRemesasProveedorController);
frViewRecibosRemesaProveedor1.Controller := (FController as IRemesasProveedorController);
end;
end;
procedure TfEditorRemesaProveedor.SetViewRemesaProveedor(const Value: IViewRemesaProveedor);
begin
FViewRemesaProveedor := Value;
if Assigned(FViewRemesaProveedor) and Assigned(RemesaProveedor) then
begin
FViewRemesaProveedor.RemesaProveedor := RemesaProveedor;
FViewRemesaProveedor.Controller := (FController as IRemesasProveedorController);
end;
end;
procedure TfEditorRemesaProveedor.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewRemesaProveedor) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(RemesaProveedor) then
raise Exception.Create('No hay ningún almacén asignado');
RemesaProveedor.DataTable.Active := True;
//Falla si lo hacemos por dfm
frViewRecibosRemesaProveedor1.cxGridView.OptionsSelection.MultiSelect := False;
end;
procedure TfEditorRemesaProveedor.frViewRecibosRemesaProveedor1cxGridViewDataControllerSummaryAfterSummary(ASender: TcxDataSummary);
Var
AImporteTotal: Currency;
begin
inherited;
if VarIsNull(ASender.FooterSummaryValues[0]) then
AImporteTotal := 0
else
AImporteTotal := ASender.FooterSummaryValues[0];
if Assigned(RemesaProveedor) then
begin
if (RemesaProveedor.IMPORTE_TOTAL <> AImporteTotal) then
begin
if not RemesaProveedor.DataTable.Editing then
begin
RemesaProveedor.Edit;
RemesaProveedor.IMPORTE_TOTAL := AImporteTotal;
RemesaProveedor.Post;
end;
end;
end;
end;
destructor TfEditorRemesaProveedor.Destroy;
begin
// Utilizar mejor OnClose;
inherited;
end;
procedure TfEditorRemesaProveedor.actAnadirRecibosExecute(Sender: TObject);
begin
inherited;
// HayCambios := FController.ElegirRecibosProveedor(RemesaProveedor) OR HayCambios;
end;
procedure TfEditorRemesaProveedor.actEliminarReciboExecute(Sender: TObject);
begin
inherited;
// FController.EliminarReciboProveedor(RemesaProveedor);
// HayCambios := True;
end;
procedure TfEditorRemesaProveedor.actVolcarDiscoExecute(Sender: TObject);
//var
// ABancaController : IBancaElectronicaController;
begin
{
inherited;
ABancaController := TBancaElectronicaController.Create;
try
ABancaController.GenerarFicheroNorma19(FRemesaProveedor.ID);
finally
ABancaController := NIL;
end;
}
end;
procedure TfEditorRemesaProveedor.actVolcarDiscoUpdate(Sender: TObject);
begin
// (Sender as TAction).Enabled := HayDatos and (not FRemesaProveedor.EsNuevo);
end;
procedure TfEditorRemesaProveedor.CerrarInterno;
begin
frViewRecibosRemesaProveedor1.OnViewModified := Nil;
inherited;
end;
constructor TfEditorRemesaProveedor.Create(AOwner: TComponent);
begin
inherited;
pgPaginas.ActivePageIndex := 0;
FViewRemesaProveedor := frViewRemesaProveedor1;
end;
procedure TfEditorRemesaProveedor.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
dsDataTable.DataTable := NIL;
FViewRemesaProveedor := NIL;
FRemesaProveedor := NIL;
end;
procedure TfEditorRemesaProveedor.EliminarInterno;
begin
if (Application.MessageBox('¿Desea borrar esta remesa de pago?', 'Atención', MB_YESNO) = IDYES) then
begin
inherited;
if not FController.Eliminar(FRemesaProveedor) then
actRefrescar.Execute;
end;
end;
end.