Tecsitel_FactuGES2/Source/Modulos/Presupuestos de cliente/Views/uViewDetallesPresupuestoCliente.pas

124 lines
4.7 KiB
ObjectPascal
Raw Normal View History

unit uViewDetallesPresupuestoCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewDetallesArticulos, cxStyles, cxCustomData, cxGraphics, cxFilter,
cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, PngImageList,
uDADataTable, ActnList, ComCtrls, ToolWin, cxGridLevel, cxClasses, cxControls,
cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
cxGrid, cxImageComboBox, cxTextEdit, cxMaskEdit, cxCheckBox, cxCurrencyEdit,
Grids, DBGrids, StdCtrls, ExtCtrls, cxRichEdit, ExtActns, StdActns,
JvExStdCtrls, JvCombobox, JvColorCombo, TB2Item, TBX, TB2Dock, TB2Toolbar,
uArticulosController, uBizPresupuestosCliente, uDAInterfaces, Buttons,
Mask, DBCtrls, cxButtonEdit, cxDropDownEdit, Menus, cxGridCustomPopupMenu,
cxGridPopupMenu, cxDBLookupComboBox, cxCalc, cxEditRepositoryItems,
uViewDetallesArticulosParaVenta;
type
IViewDetallesPresupuestoCliente = interface(IViewDetallesArticulos)
['{3AF39FF4-291E-4E87-AF9A-93C240A744CD}']
function GetPresupuesto: IBizPresupuestoCliente;
procedure SetPresupuesto(const Value: IBizPresupuestoCliente);
property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto;
end;
TfrViewDetallesPresupuestoCliente = class(TfrViewDetallesArticulosParaVenta, IViewDetallesPresupuestoCliente)
actVariarPrecios: TAction;
TBXItem18: TTBXItem;
TBXSeparatorItem9: TTBXSeparatorItem;
procedure actVariarPreciosExecute(Sender: TObject);
procedure actVariarPreciosUpdate(Sender: TObject);
protected
FPresupuesto: IBizPresupuestoCliente;
function GetPresupuesto: IBizPresupuestoCliente;
procedure SetPresupuesto(const Value: IBizPresupuestoCliente);
procedure AnadirArticulosInterno; override;
procedure RellenarArticulosInterno; override;
function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override;
public
property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto;
end;
implementation
{$R *.dfm}
uses uControllerDetallesBase, uDetallesPresupuestoClienteController;
{ TfrViewDetallesPresupuestoProveedor }
procedure TfrViewDetallesPresupuestoCliente.actVariarPreciosExecute(Sender: TObject);
var
AuxTop, AuxRow:Integer;
APorcentaje: Variant;
ATipoOperacion: Integer;
begin
if (Controller as IDetallesPresupuestoClienteController).VariarPrecios(APorcentaje, ATipoOperacion) then
begin
ShowHourglassCursor;
_FocusedView.BeginUpdate;
try
if Assigned(Controller) and Assigned(FPresupuesto.Detalles) then
begin
AuxTop := cxGridView.Controller.TopRowIndex;
AuxRow := cxGridView.DataController.FocusedRowIndex;
if ATipoOperacion = -1 then
(Controller as IDetallesPresupuestoClienteController).AsignarDescuento(FPresupuesto.Detalles, darListaSeleccionados, APorcentaje)
else if ATipoOperacion = 1 then
(Controller as IDetallesPresupuestoClienteController).AplicarAumento(FPresupuesto.Detalles, darListaSeleccionados, APorcentaje);
_FocusedView.DataController.SelectRows(AuxRow,AuxRow);
_FocusedView.Controller.TopRowIndex := AuxTop;
end
finally
_FocusedView.EndUpdate;
HideHourglassCursor;
end;
end;
end;
procedure TfrViewDetallesPresupuestoCliente.actVariarPreciosUpdate(Sender: TObject);
begin
inherited;
if not DADataSource.DataTable.IsEmpty then
(Sender as TAction).Enabled := not (DADataSource.DataTable.State in dsEditModes)
and (_FocusedView.DataController.GetSelectedCount > 0)
and (FPresupuesto.Detalles.TIPO_DETALLE = TIPO_DETALLE_CONCEPTO)
else
(Sender as TAction).Enabled := False;
end;
function TfrViewDetallesPresupuestoCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean;
begin
Result := (Controller as IDetallesPresupuestoClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Presupuesto.Cliente.ID);
end;
procedure TfrViewDetallesPresupuestoCliente.AnadirArticulosInterno;
begin
(Controller as IDetallesPresupuestoClienteController).AnadirArticulos(Detalles, Presupuesto.Cliente);
end;
function TfrViewDetallesPresupuestoCliente.GetPresupuesto: IBizPresupuestoCliente;
begin
Result := FPresupuesto;
end;
procedure TfrViewDetallesPresupuestoCliente.RellenarArticulosInterno;
begin
(Controller as IDetallesPresupuestoClienteController).AnadirArticulos(Detalles, Presupuesto.Cliente, False);
end;
procedure TfrViewDetallesPresupuestoCliente.SetPresupuesto(const Value: IBizPresupuestoCliente);
begin
FPresupuesto := Value;
end;
end.