git-svn-id: https://192.168.0.254/svn/Proyectos.AbetoDesign_FactuGES/trunk@153 93f398dd-4eb6-7a46-baf6-13f46f578da2
460 lines
15 KiB
ObjectPascal
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.
|
|
|