AbetoDesign_FactuGES2/Source/Modulos/Articulos/Views/uViewArticulo.pas
2021-02-07 17:20:37 +00:00

460 lines
15 KiB
ObjectPascal

unit uViewArticulo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable,
DBCtrls, Grids, DBGrids, uBizArticulos, Mask, ComCtrls, uCustomView,
JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit,
cxDBEdit, dxLayoutControl, cxCheckBox, PngSpeedButton, cxImage, ActnList,
ImgList, PngImageList, cxGraphics, cxMaskEdit, cxDropDownEdit,
uTarifasController, uFamiliasController, uSubFamiliasController, uUnidadesMedidaController,
uViewDatosYSeleccionProveedor, cxSpinEdit, cxCurrencyEdit, uArticulosController, uDAInterfaces;
type
IViewArticulo = interface(IViewBase)
['{65206152-786D-47AE-A037-5EF480BC056C}']
function GetArticulo: IBizArticulo;
procedure SetArticulo(const Value: IBizArticulo);
property Articulo: IBizArticulo read GetArticulo write SetArticulo;
function GetController : IArticulosController;
procedure SetController (const Value : IArticulosController);
property Controller : IArticulosController read GetController write SetController;
end;
TfrViewArticulo = class(TfrViewBase, IViewArticulo)
dsViewArticulo: TDADataSource;
dxLayoutControlArticuloGroup_Root: TdxLayoutGroup;
dxLayoutControlArticulo: TdxLayoutControl;
dxLayoutControlArticuloGroup1: TdxLayoutGroup;
dxLayoutControlArticuloItem3: TdxLayoutItem;
eReferencia: TcxDBTextEdit;
dxLayoutControlArticuloItem8: TdxLayoutItem;
eDescripcion: TcxDBTextEdit;
dxLayoutControlArticuloGroup2: TdxLayoutGroup;
dxLayoutControlArticuloItem1: TdxLayoutItem;
eNoComisionable: TcxDBCheckBox;
dxLayoutControlArticuloGroup4: TdxLayoutGroup;
OpenDialog1: TOpenDialog;
SmallImages: TPngImageList;
ActionList1: TActionList;
actAnadir: TAction;
actEliminar: TAction;
dxLayoutControlArticuloItem2: TdxLayoutItem;
PngSpeedButton2: TPngSpeedButton;
dxLayoutControlArticuloItem5: TdxLayoutItem;
PngSpeedButton1: TPngSpeedButton;
dxLayoutControlArticuloGroup3: TdxLayoutGroup;
eImagen: TcxImage;
dxLayoutControlArticuloItem6: TdxLayoutItem;
dxLayoutControlArticuloGroup5: TdxLayoutGroup;
dxLayoutControlArticuloItem4: TdxLayoutItem;
cbFamilia: TcxDBComboBox;
dxLayoutControlArticuloItem14: TdxLayoutItem;
frViewDatosYSeleccionProveedor1: TfrViewDatosYSeleccionProveedor;
dxLayoutControlArticuloItem15: TdxLayoutItem;
eReferenciaProv: TcxDBTextEdit;
dxLayoutControlArticuloItem16: TdxLayoutItem;
ePrecioCoste: TcxDBCurrencyEdit;
dxLayoutControlArticuloItem17: TdxLayoutItem;
eDescuento: TcxDBSpinEdit;
dxLayoutControlArticuloItem18: TdxLayoutItem;
ePrecioNeto: TcxDBCurrencyEdit;
dxLayoutControlArticuloItem19: TdxLayoutItem;
ePrecioPorte: TcxDBCurrencyEdit;
dxLayoutControlArticuloGroup11: TdxLayoutGroup;
dxLayoutControlArticuloGroup12: TdxLayoutGroup;
dxLayoutControlArticuloItem7: TdxLayoutItem;
cbNoInventariable: TcxDBCheckBox;
dxLayoutControlArticuloItem9: TdxLayoutItem;
ePrecioPVP: TcxDBCurrencyEdit;
dxLayoutControlArticuloItem10: TdxLayoutItem;
cbSubfamilia: TcxDBComboBox;
ePrecioPVP2: TcxCurrencyEdit;
dxLayoutControlArticuloItem11: TdxLayoutItem;
dxLayoutControlArticuloItem12: TdxLayoutItem;
cbTarifa: TcxDBComboBox;
dxLayoutControlArticuloItem13: TdxLayoutItem;
eFabricante: TcxDBTextEdit;
dxLayoutControlArticuloItem20: TdxLayoutItem;
eReferenciaFab: TcxDBTextEdit;
dxLayoutControlArticuloItem21: TdxLayoutItem;
eStockmin: TcxDBSpinEdit;
dxLayoutControlArticuloGroup8: TdxLayoutGroup;
dxLayoutControlArticuloGroup7: TdxLayoutGroup;
dxLayoutControlArticuloItem22: TdxLayoutItem;
cbUnidadMedida: TcxDBComboBox;
dxLayoutControlArticuloGroup6: TdxLayoutGroup;
dxLayoutControlArticuloGroup10: TdxLayoutGroup;
procedure actEliminarExecute(Sender: TObject);
procedure actAnadirExecute(Sender: TObject);
procedure cbFamiliaPropertiesInitPopup(Sender: TObject);
procedure CustomViewCreate(Sender: TObject);
procedure CustomViewDestroy(Sender: TObject);
procedure cbFamiliaPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure CustomViewShow(Sender: TObject);
procedure PrecioNetoChanged(Sender: TObject);
procedure PuntosChanged(Sender: TObject);
procedure cbSubfamiliaPropertiesInitPopup(Sender: TObject);
procedure cbSubfamiliaPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure cbTarifaPropertiesInitPopup(Sender: TObject);
procedure cbTarifaPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure cbUnidadMedidaPropertiesInitPopup(Sender: TObject);
procedure cbUnidadMedidaPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
private
procedure CargarImagen;
procedure SalvarImagen;
protected
FTarifasController: ITarifasController;
FFamiliasController: IFamiliasController;
FSubFamiliasController: ISubFamiliasController;
FUnidadesController: IUnidadesMedidaController;
FController: IArticulosController;
FArticulo: IBizArticulo;
function GetArticulo: IBizArticulo;
procedure SetArticulo(const Value: IBizArticulo); virtual;
function GetController : IArticulosController;
procedure SetController (const Value : IArticulosController);
procedure OnProveedorChanged(Sender: TObject);
public
property Articulo: IBizArticulo read GetArticulo write SetArticulo;
property Controller : IArticulosController read GetController write SetController;
end;
implementation
uses
uFactuGES_App, uDataModuleArticulos, uSistemaFunc, uBizTarifas,
uBizFamilias, uBizSubFamilias, uBizUnidadesMedida, uBizContactos, uNumUtils;
{$R *.dfm}
{ TfrViewArticulos }
{
******************************* TfrViewArticulos ********************************
}
procedure TfrViewArticulo.actAnadirExecute(Sender: TObject);
begin
{ eImagen.LoadFromFile;
if Assigned(eImagen.Picture) then
SalvarImagen;}
end;
procedure TfrViewArticulo.actEliminarExecute(Sender: TObject);
begin
{ inherited;
eImagen.Clear;
FArticulo.QuitarImagen;}
end;
procedure TfrViewArticulo.CargarImagen;
{var
aAux : String;}
begin
{ if FArticulo.HayImagen then
begin
ShowHourglassCursor;
try
aAux := DarFicheroJPGTemporal;
FArticulo.SalvarImagen(aAux);
try
eImagen.Picture.LoadFromFile(aAux);
except
on EInvalidGraphic do
ShowMessage('error');
end;
finally
DeleteFile(aAux);
HideHourglassCursor;
end;
end;}
end;
procedure TfrViewArticulo.cbFamiliaPropertiesInitPopup(Sender: TObject);
begin
inherited;
with cbFamilia.Properties.Items do
begin
BeginUpdate;
try
Clear;
AddStrings(FFamiliasController.DarListaFamilias);
finally
EndUpdate;
end;
end;
end;
procedure TfrViewArticulo.cbFamiliaPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
var
AFamilias : IBizFamilia;
begin
inherited;
with (Sender as TcxDBComboBox) do
begin
if (Length(DisplayValue) > 0) and (DisplayValue <> FArticulo.FAMILIA) then
if Properties.LookupItems.IndexOf(DisplayValue) < 0 then
begin
Properties.LookupItems.BeginUpdate;
AFamilias := FFamiliasController.BuscarTodos;
AFamilias.DataTable.Active := True;
try
FFamiliasController.Anadir(AFamilias);
AFamilias.DESCRIPCION := DisplayValue;
FFamiliasController.Guardar(AFamilias);
Properties.LookupItems.Add(DisplayValue);
finally
Properties.LookupItems.EndUpdate;
AFamilias := NIL;
end;
end;
end;
end;
procedure TfrViewArticulo.cbSubfamiliaPropertiesInitPopup(Sender: TObject);
begin
inherited;
with cbSubfamilia.Properties.Items do
begin
BeginUpdate;
try
Clear;
AddStrings(FSubFamiliasController.DarListaSubFamilias);
finally
EndUpdate;
end;
end;
end;
procedure TfrViewArticulo.cbSubfamiliaPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
var
ASubFamilias : IBizSubFamilia;
begin
inherited;
with (Sender as TcxDBComboBox) do
begin
if (Length(DisplayValue) > 0) and (DisplayValue <> FArticulo.REFERENCIA_PROV) then
if Properties.LookupItems.IndexOf(DisplayValue) < 0 then
begin
Properties.LookupItems.BeginUpdate;
ASubFamilias := FSubFamiliasController.BuscarTodos;
ASubFamilias.DataTable.Active := True;
try
FSubFamiliasController.Anadir(ASubFamilias);
ASubFamilias.DESCRIPCION := DisplayValue;
FSubFamiliasController.Guardar(ASubFamilias);
Properties.LookupItems.Add(DisplayValue);
finally
Properties.LookupItems.EndUpdate;
ASubFamilias := NIL;
end;
end;
end;
end;
procedure TfrViewArticulo.cbTarifaPropertiesInitPopup(Sender: TObject);
begin
inherited;
with cbTarifa.Properties.Items do
begin
BeginUpdate;
try
Clear;
AddStrings(FTarifasController.DarListaTarifas);
finally
EndUpdate;
end;
end;
end;
procedure TfrViewArticulo.cbTarifaPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
var
ATarifas : IBizTarifa;
begin
inherited;
with (Sender as TcxDBComboBox) do
begin
if (Length(DisplayValue) > 0) and (DisplayValue <> FArticulo.TARIFA) then
if Properties.LookupItems.IndexOf(DisplayValue) < 0 then
begin
Properties.LookupItems.BeginUpdate;
ATarifas := FTarifasController.BuscarTodos;
ATarifas.DataTable.Active := True;
try
FTarifasController.Anadir(ATarifas);
ATarifas.DESCRIPCION := DisplayValue;
FTarifasController.Guardar(ATarifas);
Properties.LookupItems.Add(DisplayValue);
finally
Properties.LookupItems.EndUpdate;
ATarifas := NIL;
end;
end;
end;
end;
procedure TfrViewArticulo.cbUnidadMedidaPropertiesInitPopup(Sender: TObject);
begin
inherited;
with cbUnidadMedida.Properties.Items do
begin
if (Count = 0) then
begin
ShowHourglassCursor;
BeginUpdate;
try
Clear;
AddStrings(FUnidadesController.DarListaUnidadesMedida);
finally
EndUpdate;
HideHourglassCursor;
end;
end;
end;
end;
procedure TfrViewArticulo.cbUnidadMedidaPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
var
AUnidades : IBizUnidadMedida;
begin
inherited;
with (Sender as TcxDBComboBox) do
begin
if (Length(DisplayValue) > 0) and (DisplayValue <> FArticulo.FAMILIA) then
if Properties.LookupItems.IndexOf(DisplayValue) < 0 then
begin
ShowHourglassCursor;
Properties.LookupItems.BeginUpdate;
AUnidades := FUnidadesController.BuscarTodos;
AUnidades.DataTable.Active := True;
try
FUnidadesController.Anadir(AUnidades);
AUnidades.DESCRIPCION := DisplayValue;
FUnidadesController.Guardar(AUnidades);
Properties.LookupItems.Add(DisplayValue);
finally
Properties.LookupItems.EndUpdate;
HideHourglassCursor;
AUnidades := NIL;
end;
end;
end;
end;
procedure TfrViewArticulo.CustomViewCreate(Sender: TObject);
begin
inherited;
FTarifasController := TTarifasController.Create;
FFamiliasController := TFamiliasController.Create;
FSubFamiliasController := TSubFamiliasController.Create;
FUnidadesController := TUnidadesMedidaController.Create;
ePrecioCoste.Properties.OnEditValueChanged := PuntosChanged;
end;
procedure TfrViewArticulo.CustomViewDestroy(Sender: TObject);
begin
FTarifasController := Nil;
FFamiliasController := Nil;
FSubFamiliasController := Nil;
FUnidadesController := NIL;
ePrecioCoste.Properties.OnEditValueChanged := Nil;
eDescuento.Properties.OnEditValueChanged := Nil;
inherited;
end;
procedure TfrViewArticulo.CustomViewShow(Sender: TObject);
begin
inherited;
// ePrecioCoste.Properties.OnEditValueChanged := PrecioNetoChanged;
// eDescuento.Properties.OnEditValueChanged := PrecioNetoChanged;
end;
function TfrViewArticulo.GetArticulo: IBizArticulo;
begin
Result := FArticulo;
end;
function TfrViewArticulo.GetController: IArticulosController;
begin
Result := FController;
end;
procedure TfrViewArticulo.OnProveedorChanged(Sender: TObject);
begin
if Assigned(FArticulo) then
begin
FArticulo.Edit;
FArticulo.ID_PROVEEDOR := frViewDatosYSeleccionProveedor1.Proveedor.ID;
FArticulo.DESCUENTO := frViewDatosYSeleccionProveedor1.Proveedor.DESCUENTO;
end;
end;
procedure TfrViewArticulo.PrecioNetoChanged(Sender: TObject);
begin
if Assigned(FController) then
FController.CalcularPrecioNeto(FArticulo);
end;
procedure TfrViewArticulo.PuntosChanged(Sender: TObject);
begin
ePrecioPVP2.Value := RoundCurrency(Articulo.PRECIO_COSTE * AppFactuGES.EmpresaActiva.PRECIO_PUNTO);
end;
procedure TfrViewArticulo.SalvarImagen;
{var
aAux : String;}
begin
{ ShowHourglassCursor;
try
aAux := DarFicheroJPGTemporal;
eImagen.Picture.SaveToFile(aAux);
FArticulo.CargarImagen(aAux);
Self.Modified := True;
finally
DeleteFile(aAux);
HideHourglassCursor;
end;}
end;
procedure TfrViewArticulo.SetArticulo(const Value: IBizArticulo);
begin
FArticulo := Value;
frViewDatosYSeleccionProveedor1.OnProveedorChanged := NIL;
if Assigned(FArticulo) then
begin
dsViewArticulo.DataTable := FArticulo.DataTable;
frViewDatosYSeleccionProveedor1.Controller := FController.ProveedoresController;
frViewDatosYSeleccionProveedor1.Proveedor := (FController.ProveedoresController.Buscar(FArticulo.ID_PROVEEDOR) as IBizProveedor);
frViewDatosYSeleccionProveedor1.OnProveedorChanged := OnProveedorChanged;
// CargarImagen;
end
else begin
dsViewArticulo.DataTable := NIL;
FArticulo := NIL;
eImagen.Clear;
end;
end;
procedure TfrViewArticulo.SetController(const Value: IArticulosController);
begin
FController := Value;
end;
end.