unit empresas;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids,
  Vcl.DBCtrls, Vcl.Mask, Vcl.ComCtrls, Vcl.ExtCtrls, Data.DB, ZAbstractDataset,
  ZDataset, ZAbstractRODataset, Vcl.ImgList;

type
  Tfempresas = class(TForm)
    Panel58: TPanel;
    PageControl5: TPageControl;
    TabSheet15: TTabSheet;
    Panel113: TPanel;
    Panel137: TPanel;
    Pagedatos: TPageControl;
    TabSheet18: TTabSheet;
    Panel150: TPanel;
    Label100: TLabel;
    Label101: TLabel;
    Label102: TLabel;
    Label103: TLabel;
    Label104: TLabel;
    Label81: TLabel;
    Label82: TLabel;
    Label83: TLabel;
    Label84: TLabel;
    Label85: TLabel;
    Label86: TLabel;
    Label87: TLabel;
    Label89: TLabel;
    Label90: TLabel;
    Label91: TLabel;
    Label92: TLabel;
    Label178: TLabel;
    EmpActiva: TDBCheckBox;
    DBEdit40: TDBEdit;
    DBEdit41: TDBEdit;
    DBEdit42: TDBEdit;
    DBEdit43: TDBEdit;
    DBEdit44: TDBEdit;
    DBEdit45: TDBEdit;
    DBEdit46: TDBEdit;
    DBEdit47: TDBEdit;
    DBEdit48: TDBEdit;
    DBEdit49: TDBEdit;
    DBEdit50: TDBEdit;
    DBEdit58: TDBEdit;
    DBEdit59: TDBEdit;
    DBEdit60: TDBEdit;
    DBEdit61: TDBEdit;
    DBEdit62: TDBEdit;
    TabSheet35: TTabSheet;
    Panel170: TPanel;
    Label93: TLabel;
    Label94: TLabel;
    DBText18: TDBText;
    DBText19: TDBText;
    combocomision: TDBLookupComboBox;
    combotransporte: TDBLookupComboBox;
    TabSheet37: TTabSheet;
    Panel116: TPanel;
    DBGrid56: TDBGrid;
    gcrcheck: TDBCheckBox;
    Panel171: TPanel;
    Label195: TLabel;
    BTSNCANCELAR: TButton;
    BTSNMODIFICAR: TButton;
    BTSNBORRAR: TButton;
    btSNnuevo: TButton;
    btSNguardar: TButton;
    Panel114: TPanel;
    benuevo: TButton;
    bemodificar: TButton;
    beborrar: TButton;
    becancelar: TButton;
    beguardar: TButton;
    Panel1: TPanel;
    Panel5: TPanel;
    Label1: TLabel;
    todosclientes: TCheckBox;
    tbuscar: TEdit;
    DBGrid1: TDBGrid;
    tempresas: TZQuery;
    tempresasid: TIntegerField;
    tempresascif: TWideStringField;
    tempresasnombre: TWideStringField;
    tempresasdireccion: TWideStringField;
    tempresascodpost: TWideStringField;
    tempresaspoblacion: TWideStringField;
    tempresasprovincia: TWideStringField;
    tempresasemail: TWideStringField;
    tempresastelefono1: TWideStringField;
    tempresastelefono2: TWideStringField;
    tempresascontacto: TWideStringField;
    tempresascontingenciacomfij: TFloatField;
    tempresassalariobasedia: TFloatField;
    tempresascontingenciasdia: TFloatField;
    tempresasirpf: TFloatField;
    tempresasdesempleo: TFloatField;
    tempresasformacion: TFloatField;
    tempresascontingencias: TFloatField;
    tempresasirpf2: TFloatField;
    tempresasdesempleo2: TFloatField;
    tempresasformacion2: TFloatField;
    tempresascontingencias2: TFloatField;
    tempresascc_iban: TWideStringField;
    tempresascc_entidad: TWideStringField;
    tempresascc_oficina: TWideStringField;
    tempresascc_dc: TWideStringField;
    tempresascc_cc: TWideStringField;
    tempresasajusteentrada: TIntegerField;
    tempresasajustesalida: TIntegerField;
    tempresasporcbloqueo: TIntegerField;
    tempresasult_envio: TIntegerField;
    tempresasregistro_sanitario: TWideStringField;
    tempresascoste_kg_gen: TFloatField;
    tempresasporc_segsocial: TFloatField;
    tempresasprecio_venta_desperdicios: TFloatField;
    tempresasvercodtrazabilidad: TIntegerField;
    tempresascodcomision: TWideStringField;
    tempresascodtransporte: TWideStringField;
    dsempresa: TDataSource;
    dstseries: TDataSource;
    tseries: TZQuery;
    qaux: TZQuery;
    listaiconos: TImageList;
    dsqarticulocomision: TDataSource;
    qarticulocomision: TZReadOnlyQuery;
    qarticulocomisionidempresa: TIntegerField;
    qarticulocomisionid: TIntegerField;
    qarticulocomisioncodigo: TWideStringField;
    qarticulocomisiondescripcion: TWideStringField;
    qarticulocomisionfamilia: TIntegerField;
    qarticulocomisionprovhab: TIntegerField;
    qarticulocomisiontipoiva: TIntegerField;
    qarticulocomisionpreciocoste: TFloatField;
    qarticulocomisionmargen: TFloatField;
    qarticulocomisionbeneficio: TFloatField;
    qarticulocomisionpvp: TFloatField;
    qarticulocomisionstock: TFloatField;
    qarticulocomisionult_preciocompra: TFloatField;
    qarticulocomisionfacturable: TIntegerField;
    qarticulocomisionobservaciones: TWideStringField;
    qarticulocomisionimagen: TBlobField;
    qarticulocomisionactivo: TIntegerField;
    qarticulocomisionvalor_almacen: TFloatField;
    qarticulocomisionstock_minimo: TFloatField;
    qarticulocomisionavisar_stock: TIntegerField;
    qarticulocomisioncontrolar_traza: TIntegerField;
    qarticulocomisionpeso: TFloatField;
    qarticulocomisiondescripcion_doc: TWideStringField;
    qarticulocomisioninventariable: TIntegerField;
    qarticulocomisionactualizar_stock: TIntegerField;
    qarticulotransporte: TZReadOnlyQuery;
    qarticulotransporteidempresa: TIntegerField;
    qarticulotransporteid: TIntegerField;
    qarticulotransportecodigo: TWideStringField;
    qarticulotransportedescripcion: TWideStringField;
    qarticulotransportefamilia: TIntegerField;
    qarticulotransporteprovhab: TIntegerField;
    qarticulotransportetipoiva: TIntegerField;
    qarticulotransportepreciocoste: TFloatField;
    qarticulotransportemargen: TFloatField;
    qarticulotransportebeneficio: TFloatField;
    qarticulotransportepvp: TFloatField;
    qarticulotransportestock: TFloatField;
    qarticulotransporteult_preciocompra: TFloatField;
    qarticulotransportefacturable: TIntegerField;
    qarticulotransporteobservaciones: TWideStringField;
    qarticulotransporteimagen: TBlobField;
    qarticulotransporteactivo: TIntegerField;
    qarticulotransportevalor_almacen: TFloatField;
    qarticulotransportestock_minimo: TFloatField;
    qarticulotransporteavisar_stock: TIntegerField;
    qarticulotransportecontrolar_traza: TIntegerField;
    qarticulotransportepeso: TFloatField;
    qarticulotransportedescripcion_doc: TWideStringField;
    qarticulotransporteinventariable: TIntegerField;
    qarticulotransporteactualizar_stock: TIntegerField;
    dsqarticulotransporte: TDataSource;
    tserieside: TIntegerField;
    tseriesid: TWideStringField;
    tseriesfechainicio: TDateField;
    tseriesfechafin: TDateField;
    tseriesnum_pedcliente: TIntegerField;
    tseriesnum_albaran: TIntegerField;
    tseriesnum_factura: TIntegerField;
    tseriesnum_expedicion: TIntegerField;
    tseriesnum_pedproveedor: TIntegerField;
    tseriesimp_albaran: TWideStringField;
    tseriesimp_factura: TWideStringField;
    tseriesactivo: TIntegerField;
    tseriesnum_presupuesto: TIntegerField;
    DBCheckBox1: TDBCheckBox;
    tempresasactiva: TIntegerField;
    tempresasgestor: TSmallintField;
    listagestores: TDBLookupComboBox;
    lgestor: TLabel;
    qgestores: TZReadOnlyQuery;
    dsqgestores: TDataSource;
    qgestoresid: TIntegerField;
    qgestoresnombre: TWideStringField;
    qgestoresempresa: TIntegerField;
    qgestoresusuario: TWideStringField;
    qgestorespassword: TWideStringField;
    qgestoresfechaalta: TDateField;
    qgestoresfechacaducidad: TDateField;
    qgestoresgestor: TIntegerField;
    qgestoresadministrador: TIntegerField;
    qgestoresusuarionormal: TIntegerField;
    qgestoresactivo: TIntegerField;
    qgestorescambiarpassword: TIntegerField;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure benuevoClick(Sender: TObject);
    procedure beborrarClick(Sender: TObject);
    procedure bemodificarClick(Sender: TObject);
    procedure beguardarClick(Sender: TObject);
    procedure becancelarClick(Sender: TObject);
    procedure dsempresaStateChange(Sender: TObject);
    procedure dstseriesStateChange(Sender: TObject);
    procedure btSNnuevoClick(Sender: TObject);
    procedure BTSNBORRARClick(Sender: TObject);
    procedure BTSNMODIFICARClick(Sender: TObject);
    procedure btSNguardarClick(Sender: TObject);
    procedure BTSNCANCELARClick(Sender: TObject);
    procedure DBGrid56DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure DBGrid56CellClick(Column: TColumn);
  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  fempresas: Tfempresas;

implementation

{$R *.dfm}

uses datos, principal;

procedure Tfempresas.beguardarClick(Sender: TObject);
var ide:string;
begin
    tempresasgestor.Value:=gestor;
    tempresasnum_empresas.Value:=1;
    tempresas.Post;
    ide:=tempresasid.asstring;
    tempresas.Refresh;
    tempresas.MasterSource:=dm.dsqempresas;
    dm.qempresas.Refresh;
    dm.qempresas.Locate('id',ide,[locaseinsensitive]);
end;

procedure Tfempresas.benuevoClick(Sender: TObject);
begin
   panel150.Enabled:=true;
   qaux.close;
   qaux.sql.clear;
   qaux.sql.add('select max(id+1) from empresas ');
   qaux.Open;
   tempresas.MasterSource:=nil;
   tempresas.append;
   tempresasid.Value:=qaux.Fields[0].AsInteger;
   dbedit40.SetFocus;

end;

procedure Tfempresas.BTSNBORRARClick(Sender: TObject);
begin
    tseries.Delete;
end;

procedure Tfempresas.BTSNCANCELARClick(Sender: TObject);
begin
    tseries.Cancel;
    tseries.MasterSource:=dsempresa;

end;

procedure Tfempresas.btSNguardarClick(Sender: TObject);
begin
    tseries.Post;
    tseries.MasterSource:=dsempresa;
end;

procedure Tfempresas.BTSNMODIFICARClick(Sender: TObject);
begin
    tseries.edit;
    dbgrid56.SetFocus;
end;

procedure Tfempresas.btSNnuevoClick(Sender: TObject);
begin
   tseries.MasterSource:=nil;
   tseries.append;
   tserieside.Value:=tempresasid.AsInteger;
   dbgrid56.SetFocus;

end;

procedure Tfempresas.DBGrid56CellClick(Column: TColumn);
begin
    if column.Field.FieldName ='activo' then
    begin
       if tseriesactivo.asinteger=1 then
       begin
         tseries.Edit;
         tseriesactivo.Value:=0;
         tseries.post;
         dbgrid56.SelectedIndex:=1;
       end else
             begin
               tseries.Edit;
               tseriesactivo.Value:=1;
               tseries.post;
               dbgrid56.SelectedIndex:=1;
             end;
    end;

end;

procedure Tfempresas.DBGrid56DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const IsChecked : array[boolean] of Integer =
 (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var
  DrawState: Integer;
  DrawRect: TRect;
// dibujar check

begin
if (gdFocused in State) then
begin
    if (Column.Field.FieldName = 'activo') then
     begin
       gcrcheck.Left := Rect.Left + DBGrid56.Left + 2;
       gcrcheck.Top := Rect.Top + DBGrid56.top + 2;
       gcrcheck.Width := Rect.Right - Rect.Left;
       gcrcheck.Height := Rect.Bottom - Rect.Top;
       gcrcheck.Visible := True;
     end;

end else
     begin
       if (Column.Field.FieldName = 'activo') then
       begin
         DrawRect:=Rect;
         InflateRect(DrawRect,-1,-1);
         if column.Field.Asinteger=0  then DrawState := ischecked[false];
         if column.Field.Asinteger=1  then DrawState := ischecked[true];
//         DrawState := ISChecked[Column.Field.Asinteger];
         DBGrid56.Canvas.FillRect(Rect);
         DrawFrameControl(DBGrid56.Canvas.Handle, DrawRect,
         DFC_BUTTON, DrawState);

       end;
end;


end;

procedure Tfempresas.beborrarClick(Sender: TObject);
begin
    tempresas.Delete;
end;

procedure Tfempresas.becancelarClick(Sender: TObject);
begin
    tempresas.Cancel;
    tempresas.MasterSource:=dm.dsqempresas;
end;

procedure Tfempresas.bemodificarClick(Sender: TObject);
begin
   tempresas.MasterSource:=nil;
   tempresas.edit;
   dbedit40.SetFocus;

end;

procedure Tfempresas.dsempresaStateChange(Sender: TObject);
begin
    if tempresas.State in [dsedit,dsinsert] then
    begin
       Panel150.Enabled:=true;
       benuevo.enabled:=false;
       beborrar.enabled:=false;
       bemodificar.enabled:=false;
       beguardar.enabled:=true;
       becancelar.enabled:=true;
    end;
    if tempresas.State in [dsbrowse] then
    begin
       Panel150.Enabled:=false;
       benuevo.enabled:=true;
       beborrar.enabled:=true;
       bemodificar.enabled:=true;
       beguardar.enabled:=false;
       becancelar.enabled:=false;
    end;

end;

procedure Tfempresas.dstseriesStateChange(Sender: TObject);
begin
    if tseries.State in [dsedit,dsinsert] then
    begin
       btsnnuevo.enabled:=false;
       btsnborrar.enabled:=false;
       btsnmodificar.enabled:=false;
       btsnguardar.enabled:=true;
       btsncancelar.enabled:=true;
    end;
    if tseries.State in [dsbrowse] then
    begin
       btsnnuevo.enabled:=true;
       btsnborrar.enabled:=true;
       btsnmodificar.enabled:=true;
       btsnguardar.enabled:=false;
       btsncancelar.enabled:=false;
    end;

end;

procedure Tfempresas.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then Key :=9;
    end;

end;

procedure Tfempresas.FormKeyPress(Sender: TObject; var Key: Char);
var formatos:tformatsettings;
punto:string;
begin
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formatos);
    punto:=formatos.DecimalSeparator;
    if punto=',' then
    begin
        key:=upcase(key);
        if (key='.') and (activecontrol is tdbedit) then
        begin
           if  (activecontrol as tdbedit).Field.DataType in [ftfloat,ftCurrency,ftbcd,ftfmtbcd] then key:=','
        end;
        if (key='.') and (activecontrol is tdbgrid) then
        begin
            key:=',';
        end;
    end;

    if (activecontrol is tdbgrid) then
    begin
        if Key = #13 then Key :=#9;
    end;

    if (key=#13) then
    begin
        Perform(WM_NextDLGCtl,0,0);
        key:=#0;
    end;


end;

procedure Tfempresas.FormShow(Sender: TObject);
begin
    pagedatos.ActivePageIndex:=0;
    dm.qempresas.Close;
    tempresas.Close;
    tseries.Close;
    qarticulocomision.Close;
    qarticulotransporte.Close;
    qgestores.close;

    dm.qempresas.open;
    tempresas.open;
    tseries.open;
    qarticulocomision.open;
    qarticulotransporte.open;
    qgestores.Open;
    if principal.usuarionormal=1 then
    begin
        benuevo.visible:=false;
        beborrar.Visible:=false;
        listagestores.Visible:=false;
        lgestor.Visible:=false;
    end;
    if principal.gestor=1 then
    begin
        listagestores.Visible:=false;
        lgestor.Visible:=false;
    end;
end;

end.
