AbetoDesign_FactuGES2/Source/Modulos/Articulos/Views/uViewArticulo.pas
roberto 1f5e6ebcb9 Version 4.5.4
Cambio en los informes de Contratos de cliente de todas las entidades: Cambio fecha de entrega por fecha expedicion - Solicitado por Próspero
Cambio logo uecko y sellos cabecera en todos los informes de todas las entidades- Solicitado por Noelia
Arreglo para que permita introducir DNI y CIFs raros - Solicitado por Mónica
Las facturas proforma no se tendrán en cuenta en las facturas asociadas a los contratos, listado de contratos - Solicitado por Eva
Se añade comprobación de capitulos para que avise si existe un subtotal sin capitulo correspondiente, ayudará a controlar errores en presupuestos y contratos largos. - Solicitado por Miriam
En los detalles de presupuestos y contratos si eligen un articulo de la tarífa el programa no deja modificar las descripciones (Se ha detectado que lo hen hecho en ocasiones en las tiendas) - Solicitado por Miriam

git-svn-id: https://192.168.0.254/svn/Proyectos.AbetoDesign_FactuGES/trunk@186 93f398dd-4eb6-7a46-baf6-13f46f578da2
2024-02-05 10:15:29 +00:00

471 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,
uViewDetallesGenerico, uViewIdiomasArticulo;
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;
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;
dxLayoutControlArticuloItem1: TdxLayoutItem;
eNoComisionable: TcxDBCheckBox;
dxLayoutControlArticuloGroup9: TdxLayoutGroup;
dxLayoutControlArticuloItem23: TdxLayoutItem;
frViewIdiomasArticulo1: TfrViewIdiomasArticulo;
dxLayoutControlArticuloGroup13: 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.Proveedor := (FController.ProveedoresController.Buscar(FArticulo.ID_PROVEEDOR) as IBizProveedor);
frViewDatosYSeleccionProveedor1.OnProveedorChanged := OnProveedorChanged;
frViewIdiomasArticulo1.Articulo := FArticulo;
// CargarImagen;
end
else begin
dsViewArticulo.DataTable := NIL;
FArticulo := NIL;
eImagen.Clear;
end;
end;
procedure TfrViewArticulo.SetController(const Value: IArticulosController);
begin
FController := Value;
if Assigned(FController) then
begin
frViewDatosYSeleccionProveedor1.Controller := FController.ProveedoresController;
end;
end;
end.