This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES2/Source/Modulos/Articulos/Views/uViewProveedorArticulo.pas

196 lines
5.7 KiB
ObjectPascal

unit uViewProveedorArticulo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, cxGraphics, DB, uDAInterfaces, uDADataTable, cxMaskEdit,
cxDropDownEdit, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox,
dxLayoutControl, cxContainer, cxEdit, cxTextEdit, cxDBEdit, cxControls,
cxSpinEdit, cxCurrencyEdit, uProveedoresController, uBizContactos, cxCheckBox;
type
TfrViewProveedorArticulo = class(TfrViewBase)
dxLayoutControlArticulo: TdxLayoutControl;
eReferenciaProv: TcxDBTextEdit;
dxLayoutGroup1: TdxLayoutGroup;
dxLayoutControlArticuloGroup3: TdxLayoutGroup;
dxLayoutGroup2: TdxLayoutGroup;
dxLayoutControlArticuloItem3: TdxLayoutItem;
dxLayoutControlArticuloItem1: TdxLayoutItem;
eProveedor: TcxDBLookupComboBox;
dsProveedores: TDADataSource;
dxLayoutControlArticuloItem2: TdxLayoutItem;
ePrecioCoste: TcxDBCurrencyEdit;
dxLayoutControlArticuloItem4: TdxLayoutItem;
eDescuento: TcxDBSpinEdit;
dxLayoutControlArticuloItem5: TdxLayoutItem;
ePrecioNeto: TcxDBCurrencyEdit;
dxLayoutControlArticuloItem6: TdxLayoutItem;
ePrecioPorte: TcxDBCurrencyEdit;
dxLayoutControlArticuloItem7: TdxLayoutItem;
cbTiendaWeb: TcxDBCheckBox;
procedure CustomViewCreate(Sender: TObject);
procedure CustomViewDestroy(Sender: TObject);
procedure OnProveedorChange(Sender: TObject);
procedure PrecioCosteChanged(Sender: TObject);
procedure DescuentoChanged(Sender: TObject);
procedure PrecioNetoChanged(Sender: TObject);
procedure CustomViewShow(Sender: TObject);
protected
FProveedoresController : IProveedoresController;
FProveedores : IBizProveedor;
procedure DesactivarEventos;
procedure ActivarEventos;
public
{ Public declarations }
end;
var
frViewProveedorArticulo: TfrViewProveedorArticulo;
implementation
{$R *.dfm}
uses
Math;
procedure TfrViewProveedorArticulo.ActivarEventos;
begin
eProveedor.Properties.OnEditValueChanged := OnProveedorChange;
ePrecioCoste.Properties.OnEditValueChanged := PrecioCosteChanged;
eDescuento.Properties.OnEditValueChanged := DescuentoChanged;
ePrecioNeto.Properties.OnEditValueChanged := PrecioNetoChanged;
end;
procedure TfrViewProveedorArticulo.CustomViewCreate(Sender: TObject);
begin
inherited;
FProveedoresController := TProveedoresController.Create;
FProveedores := (FProveedoresController.BuscarTodos as IBizProveedor);
if Assigned(FProveedores) then
begin
dsProveedores.DataTable := FProveedores.DataTable;
FProveedores.DataTable.Active := True;
end;
end;
procedure TfrViewProveedorArticulo.CustomViewDestroy(Sender: TObject);
begin
DesactivarEventos;
FProveedoresController := NIL;
FProveedores := NIL;
inherited;
end;
procedure TfrViewProveedorArticulo.CustomViewShow(Sender: TObject);
begin
inherited;
ActivarEventos;
end;
procedure TfrViewProveedorArticulo.DesactivarEventos;
begin
ePrecioNeto.Properties.OnEditValueChanged := NIL;
ePrecioCoste.Properties.OnEditValueChanged := NIL;
eDescuento.Properties.OnEditValueChanged := NIL;
eProveedor.Properties.OnEditValueChanged := NIL;
end;
procedure TfrViewProveedorArticulo.DescuentoChanged(Sender: TObject);
var
APrecioCoste: Double;
ADescuento: Double;
begin
APrecioCoste := 0;
ADescuento := 0;
if eDescuento.EditModified then
begin
if not varIsNull(ePrecioCoste.DataBinding.Field.AsFloat) then
APrecioCoste := ePrecioCoste.DataBinding.Field.AsFloat;
if not varIsNull(eDescuento.DataBinding.Field.AsFloat) then
ADescuento := eDescuento.DataBinding.Field.AsFloat;
DesactivarEventos;
try
ePrecioNeto.DataBinding.DataSource.Edit;
ePrecioNeto.DataBinding.Field.AsFloat := APrecioCoste - ((APrecioCoste * ADescuento)/100)
finally
ActivarEventos;
end;
end;
end;
procedure TfrViewProveedorArticulo.OnProveedorChange(Sender: TObject);
begin
inherited;
FProveedores.first;
if FProveedores.Locate('ID', eProveedor.EditValue) then
begin
eDescuento.DataBinding.Field.AsFloat := FProveedores.DESCUENTO;
cbTiendaWeb.DataBinding.Field.AsInteger := FProveedores.TIENDA_WEB;
end;
end;
procedure TfrViewProveedorArticulo.PrecioCosteChanged(Sender: TObject);
var
APrecioCoste: Double;
ADescuento: Double;
begin
APrecioCoste := 0;
ADescuento := 0;
if ePrecioCoste.EditModified then
begin
if not varIsNull(ePrecioCoste.DataBinding.Field.AsFloat) then
APrecioCoste := ePrecioCoste.DataBinding.Field.AsFloat;
if not varIsNull(eDescuento.DataBinding.Field.AsFloat) then
ADescuento := eDescuento.DataBinding.Field.AsFloat;
DesactivarEventos;
try
ePrecioNeto.DataBinding.DataSource.Edit;
ePrecioNeto.DataBinding.Field.AsFloat := APrecioCoste - ((APrecioCoste * ADescuento)/100);
finally
ActivarEventos;
end;
end;
end;
procedure TfrViewProveedorArticulo.PrecioNetoChanged(Sender: TObject);
var
APrecioCoste: Double;
APrecioNeto: Double;
ADescuento : Double;
begin
APrecioCoste := 0;
APrecioNeto := 0;
ADescuento := 0;
if ePrecioNeto.EditModified then
begin
if not varIsNull(ePrecioCoste.EditValue) then
APrecioCoste := ePrecioCoste.EditValue;
if not varIsNull(ePrecioNeto.EditValue) then
APrecioNeto := ePrecioNeto.EditValue;
if (APrecioCoste <> 0) then
ADescuento := ((APrecioCoste - APrecioNeto) * 100) / APrecioCoste;
DesactivarEventos;
try
eDescuento.DataBinding.DataSource.Edit;
eDescuento.DataBinding.Field.AsFloat := RoundTo(ADescuento, -2);
finally
ActivarEventos;
end;
end;
end;
end.