AbetoDesign_FactuGES2/Source/Modulos/Albaranes de cliente/Views/uViewAlbaranesCliente.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

341 lines
12 KiB
ObjectPascal
Raw Permalink Blame History

unit uViewAlbaranesCliente;
interface
uses
uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter,
cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn,
dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
dxPSEdgePatterns, cxImageComboBox, ImgList, Controls, PngImageList,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
cxGridCustomPopupMenu, cxGridPopupMenu, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk,
uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, Classes,
cxGrid,
uBizAlbaranesCliente, cxCurrencyEdit, Forms, uViewFiltroBase, ComCtrls, Tabs,
cxPC, ActnList, TB2Item, TBX, TB2Dock, TB2Toolbar, TBXDkPanels, dxPgsDlg,
uDAInterfaces, uCustomView, uViewBase;
type
IViewAlbaranesCliente = interface(IViewGrid)
['{C0B0D9D9-2E0E-4CA5-88C8-B8C71CFAD59B}']
function GetAlbaranes: IBizAlbaranCliente;
procedure SetAlbaranes(const Value: IBizAlbaranCliente);
property Albaranes: IBizAlbaranCliente read GetAlbaranes write SetAlbaranes;
end;
TfrViewAlbaranesCliente = class(TfrViewGrid, IViewAlbaranesCliente)
PngImageList: TPngImageList;
cxGridViewREF_FACTURA: TcxGridDBColumn;
cxGridViewREFERENCIA: TcxGridDBColumn;
cxGridViewFECHA_ALBARAN: TcxGridDBColumn;
cxGridViewINCIDENCIAS_ACTIVAS: TcxGridDBColumn;
cxGridViewNOMBRE: TcxGridDBColumn;
cxGridViewSITUACION: TcxGridDBColumn;
cxGridViewCALLE: TcxGridDBColumn;
cxGridViewCODIGO_POSTAL: TcxGridDBColumn;
cxGridViewPOBLACION: TcxGridDBColumn;
cxGridViewPROVINCIA: TcxGridDBColumn;
cxGridViewPERSONA_CONTACTO: TcxGridDBColumn;
cxGridViewTELEFONO: TcxGridDBColumn;
cxGridViewFECHA_ENVIO: TcxGridDBColumn;
cxGridViewFECHA_RECEPCION: TcxGridDBColumn;
cxGridViewREF_PEDIDO: TcxGridDBColumn;
cxGridViewNOMBRE_ALMACEN: TcxGridDBColumn;
cxGridLevelPendientes: TcxGridLevel;
cxGridLevelEnviados: TcxGridLevel;
cxGridLevelServidos: TcxGridLevel;
cxGridLevelProximosAEnviar: TcxGridLevel;
cxStyleProximosAEnviar: TcxStyle;
cxStylePENDIENTES: TcxStyle;
cxStyleENVIADOS: TcxStyle;
cxStyleSERVIDOS: TcxStyle;
cxGridViewBASE_IMPONIBLE: TcxGridDBColumn;
actClientes: TAction;
actAlmacenes: TAction;
TBXItem2: TTBXItem;
TBXItem3: TTBXItem;
TBXSeparatorItem1: TTBXSeparatorItem;
TBXSeparatorItem2: TTBXSeparatorItem;
cxGridViewFECHA_PREVISTA_ENVIO: TcxGridDBColumn;
cxStyleRETRASADOS: TcxStyle;
cxGridViewTIENDA: TcxGridDBColumn;
cxGridViewREFERENCIA_CLIENTE: TcxGridDBColumn;
cxGridViewIMPORTE_NETO: TcxGridDBColumn;
cxGridViewDESCUENTO: TcxGridDBColumn;
cxGridViewIMPORTE_DESCUENTO: TcxGridDBColumn;
cxGridViewPAIS: TcxGridDBColumn;
cxGridViewIDIOMA: TcxGridDBColumn;
actPais: TAction;
TBXSeparatorItem3: TTBXSeparatorItem;
TBXItem4: TTBXItem;
procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel:
TcxGridLevel);
procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var
ADone: Boolean);
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out
AStyle: TcxStyle);
procedure actClientesExecute(Sender: TObject);
procedure actClientesUpdate(Sender: TObject);
procedure actAlmacenesExecute(Sender: TObject);
procedure actAlmacenesUpdate(Sender: TObject);
procedure cxGridViewMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure actPaisExecute(Sender: TObject);
procedure actPaisUpdate(Sender: TObject);
private
//Filtros relativos a la vista
procedure AnadirFiltroSituaciones;
procedure AnadirFiltroFechas;
protected
FAlbaranes: IBizAlbaranCliente;
function GetAlbaranes: IBizAlbaranCliente;
procedure SetAlbaranes(const Value: IBizAlbaranCliente);
public
procedure AnadirOtrosFiltros; override;
procedure ConfigView; override;
property Albaranes: IBizAlbaranCliente read GetAlbaranes write SetAlbaranes;
end;
implementation
uses SysUtils, DateUtils, variants, windows, uDataModuleAlbaranesCliente, schAlbaranesClienteClient_Intf,
uViewGridBase, uFactuGES_App;
{$R *.dfm}
procedure TfrViewAlbaranesCliente.actAlmacenesExecute(Sender: TObject);
begin
if (cxGridViewNOMBRE_ALMACEN.GroupIndex < 0) then
begin
cxGridViewNOMBRE_ALMACEN.GroupIndex := cxGridView.GroupedColumnCount;
cxGridViewNOMBRE_ALMACEN.Visible := False;
end
else
begin
cxGridViewNOMBRE_ALMACEN.GroupIndex := -1;
cxGridViewNOMBRE_ALMACEN.Visible := True;
end;
end;
procedure TfrViewAlbaranesCliente.actAlmacenesUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewNOMBRE_ALMACEN.GroupIndex < 0);
end;
procedure TfrViewAlbaranesCliente.actClientesExecute(Sender: TObject);
begin
inherited;
if (cxGridViewNOMBRE.GroupIndex < 0) then
begin
cxGridViewNOMBRE.GroupIndex := cxGridView.GroupedColumnCount;
cxGridViewNOMBRE.Visible := False;
end
else
begin
cxGridViewNOMBRE.GroupIndex := -1;
cxGridViewNOMBRE.Visible := True;
end;
end;
procedure TfrViewAlbaranesCliente.actClientesUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewNOMBRE.GroupIndex < 0);
end;
procedure TfrViewAlbaranesCliente.actPaisExecute(Sender: TObject);
begin
if (cxGridViewPais.GroupIndex < 0) then
begin
cxGridViewPais.GroupIndex := cxGridView.GroupedColumnCount;
cxGridViewPais.Visible := False;
end
else
begin
cxGridViewPais.GroupIndex := -1;
cxGridViewPais.Visible := True;
end;
end;
procedure TfrViewAlbaranesCliente.actPaisUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Checked := not (cxGridViewPAIS.GroupIndex < 0);
end;
procedure TfrViewAlbaranesCliente.AnadirFiltroFechas;
var
Columna: TcxGridDBColumn;
Fecha1, Fecha2: Variant;
FFiltro : TcxFilterCriteriaItemList;
begin
Fecha1 := frViewFiltroBase1.edtFechaIniFiltro.EditValue;
Fecha2 := frViewFiltroBase1.edtFechaFinFiltro.EditValue;
if not VarIsNull(Fecha1)
and not VarIsNull(Fecha2) then
begin
cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare];
FFiltro := AddFilterGrid(fboAnd);
Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHA_PREVISTA_ENVIO');
FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
// FFiltro.BoolOperatorKind := fboOr;
// Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHA_ALBARAN');
// FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2));
end;
end;
procedure TfrViewAlbaranesCliente.AnadirFiltroSituaciones;
var
FFiltro : TcxFilterCriteriaItemList;
begin
FFiltro := AddFilterGrid(fboAnd);
case cxGrid.ActiveLevel.Index of
1 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ALBARAN_PENDIENTE, SITUACION_ALBARAN_PENDIENTE);
2 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ALBARAN_ENVIADO, SITUACION_ALBARAN_ENVIADO);
3 : FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ALBARAN_SERVIDO, SITUACION_ALBARAN_SERVIDO);
4 : begin
FFiltro.AddItem(cxGridViewSITUACION, foEqual, SITUACION_ALBARAN_PENDIENTE, SITUACION_ALBARAN_PENDIENTE);
FFiltro := AddFilterGrid(fboAnd);
FFiltro.AddItem(cxGridViewFECHA_PREVISTA_ENVIO, foNotEqual, null, 'NO_NULO');
FFiltro := AddFilterGrid(fboAnd);
FFiltro.AddItem(cxGridViewFECHA_PREVISTA_ENVIO, foLess, DateOf(Now), 'RETRASADOS');
end;
end;
end;
procedure TfrViewAlbaranesCliente.AnadirOtrosFiltros;
begin
inherited;
AnadirFiltroSituaciones;
AnadirFiltroFechas;
//Finalmente activamos el filtro si tenemos algo
if cxGridView.DataController.Filter.IsEmpty
then cxGridView.DataController.Filter.Active := False
else cxGridView.DataController.Filter.Active := True;
cxGrid.ActiveLevel.GridView := cxGridView;
end;
procedure TfrViewAlbaranesCliente.ConfigView;
begin
inherited;
//Solo para Graden
if (AppFactuGES.EmpresaActiva.ID = CTE_EMPRESA_ABETO) then
begin
cxGridViewTIENDA.Visible := False;
cxGridViewTIENDA.VisibleForCustomization := False;
end
else
begin
cxGridViewTIENDA.Visible := True;
cxGridViewTIENDA.VisibleForCustomization := True;
end;
end;
procedure TfrViewAlbaranesCliente.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
begin
inherited;
RefrescarFiltro;
end;
procedure TfrViewAlbaranesCliente.cxGridViewCODIGOCustomDrawCell(Sender:
TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo:
TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
R: TRect;
begin
inherited;
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2);
ADone := True;
end;
procedure TfrViewAlbaranesCliente.cxGridViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
Site : TcxGridSite;
HitTest : TcxCustomGridHitTest;
Item : TcxCustomGridTableItem;
Rec : TcxCustomGridRecord;
sNewHint : string;
begin
{Este m<>todo desaparecer<65> cuando se migre la aplicaci<63>n, es para sacar la causa de la incidencia sin necesidad de entrar en el documento}
Site := Sender as TcxGridSite;
HitTest := Site.GridView.ViewInfo.GetHitTest(X, Y);
if HitTest is TcxGridRecordCellHitTest then begin
Item := TcxGridRecordCellHitTest(HitTest).Item;
Rec := TcxGridRecordCellHitTest(HitTest).GridRecord;
if (Item.Index = cxGridView.GetColumnByFieldName(fld_AlbaranesClienteINCIDENCIAS_ACTIVAS).Index)
and (Rec.Selected)
and (Albaranes.DataTable.FieldByName(fld_AlbaranesClienteINCIDENCIAS_ACTIVAS).AsInteger = 1) then begin
sNewHint := Albaranes.DataTable.FieldByName(fld_AlbaranesClienteINCIDENCIAS).AsString;
if (cxGrid.Hint <> sNewHint) then begin
cxGrid.ShowHint := false;
cxGrid.Hint := sNewHint;
end
else cxGrid.ShowHint := true;
end
else begin
cxGrid.ShowHint := false;
end;
end;
end;
procedure TfrViewAlbaranesCliente.cxGridViewStylesGetContentStyle(Sender:
TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem:
TcxCustomGridTableItem; out AStyle: TcxStyle);
var
IndiceCol: Integer;
ASituacion: string;
begin
inherited;
if Assigned(ARecord) then
begin
if Assigned((Sender as TcxGridDBTableView).GetColumnByFieldName(fld_AlbaranesClienteSITUACION)) then
begin
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_AlbaranesClienteSITUACION).Index;
ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]);
if ASituacion = SITUACION_ALBARAN_PENDIENTE then
begin
if not VarIsNull(ARecord.Values[cxGridViewFECHA_PREVISTA_ENVIO.Index]) then
if (StrToDate(ARecord.DisplayTexts[cxGridViewFECHA_PREVISTA_ENVIO.Index]) < DateOf(Now)) then
AStyle := cxStyleRETRASADOS
else
AStyle := cxStylePENDIENTES
else
AStyle := cxStylePENDIENTES;
end
else if ASituacion = SITUACION_ALBARAN_ENVIADO then
AStyle := cxStyleENVIADOS
else if ASituacion = SITUACION_ALBARAN_SERVIDO then
AStyle := cxStyleSERVIDOS;
end;
end;
end;
function TfrViewAlbaranesCliente.GetAlbaranes: IBizAlbaranCliente;
begin
Result := FAlbaranes;
end;
procedure TfrViewAlbaranesCliente.SetAlbaranes(const Value: IBizAlbaranCliente);
begin
FAlbaranes := Value;
if Assigned(FAlbaranes) then
dsDataSource.DataTable := FAlbaranes.DataTable;
end;
end.