unit selectalbaranes;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, ZAbstractRODataset,
  ZAbstractDataset, ZDataset, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls;

type
  Tfseleccionaralbaranes = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    DBGrid3: TDBGrid;
    Panel9: TPanel;
    btALnuevo: TButton;
    Button1: TButton;
    panelpedidos: TPanel;
    Panel6: TPanel;
    DBGrid2: TDBGrid;
    qaux: TZQuery;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure btALnuevoClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fseleccionaralbaranes: Tfseleccionaralbaranes;
const
  rojo=$00AAAAFF;
  amarillo=$00B9FFFF;
  verde=$00C7FBAA;
  azul=$00FFFFBB;
implementation

{$R *.dfm}

uses facturas;


procedure Tfseleccionaralbaranes.btALnuevoClick(Sender: TObject);
var serie,empresa,idfactura,idalbaran,observaciones:string;
begin
    idfactura:=ffacturas.facturasid.asstring;
    serie:=ffacturas.facturasserie.AsString;
    empresa:=ffacturas.facturasidempresa.AsString;
    idalbaran:=ffacturas.qalbaranesid.asstring;
    observaciones:=ffacturas.facturasobservaciones.asstring;
    ffacturas.facturas.Edit;
    ffacturas.facturasobservaciones.value:=observaciones+' '+ffacturas.qalbaranesobservaciones.AsString;
    ffacturas.facturas.Post;
    ffacturas.qalbaranes.edit;
    ffacturas.qalbaranesidfactura.value:=ffacturas.facturasid.asinteger;
    ffacturas.qalbaranesfacturado.Value:=1;
    ffacturas.qalbaranesdocumento.Value:='Factura Nš: '+ffacturas.facturasid.AsString;
    ffacturas.qalbaranes.post;

    ffacturas.facturasdetalle.Append;
    ffacturas.facturasdetalleidempresa.Value:=strtoint(empresa);
    ffacturas.facturasdetalleserie.Value:=serie;
    ffacturas.facturasdetalleidfactura.Value:=strtoint(idfactura);
    ffacturas.facturasdetalledescripcion.Value:='Albaran '+idalbaran+' de fecha:'+ffacturas.qalbaranesfecha.AsString;
    ffacturas.facturasdetalletipoiva.value:=0;
    ffacturas.facturasdetalle.Post;
    qaux.sql.clear;
    qaux.sql.add('insert into facturas_detalles (idempresa,serie,idfactura,idarticulo,descripcion,cal,lote,bultos,cantidad,precio,descuento,totaldescuento,base,tipoiva,iva,total,idalbaran)');
    qaux.sql.add(' (SELECT '+''''+empresa+''''+' as idempresa,'+''''+serie+''''+' as serie,'+''''+idfactura+''''+' as idfactura,idarticulo,descripcion,cal,lote,bultos,cantidad,');
    qaux.sql.add('precio,descuento,totaldescuento,base,tipoiva,iva,total,idalbaran');
    qaux.sql.add(' FROM albaranes_detalles where (idalbaran,idempresa,serie) in (select id,idempresa,serie from albaranes where idfactura='+idfactura+' and idempresa='+empresa+' and serie='+''''+serie+''''+' and id='+idalbaran+'))');
    qaux.execsql;
    ffacturas.qalbaranes.Refresh;
    ffacturas.qalbaranes2.Refresh;
    ffacturas.facturasdetalle.Refresh;

end;

procedure Tfseleccionaralbaranes.Button1Click(Sender: TObject);
var serie,empresa,idalbaran,idfactura:string;
begin
    serie:=ffacturas.qalbaranes2serie.Asstring;
    empresa:=ffacturas.qalbaranes2idempresa.Asstring;
    idalbaran:=ffacturas.qalbaranes2id.Asstring;
    idfactura:=ffacturas.qalbaranes2idfactura.asstring;


    qaux.sql.clear;
    qaux.sql.add('delete from facturas_detalles where (idempresa,serie,idfactura,idarticulo) in ');
    qaux.sql.add(' (SELECT idempresa,serie,'+''''+idfactura+''''+' as idfactura,idarticulo FROM albaranes_detalles where (idempresa,serie,idalbaran) in (select idempresa,serie,id from albaranes where idfactura='+idfactura+' and idempresa='+empresa+' and serie='+''''+serie+''''+' and id='+idalbaran+'))');
    qaux.execsql;

    qaux.SQL.Clear;
    qaux.SQL.Add('update albaranes set idfactura=null,facturado=0,documento=null where idempresa='+empresa+' and serie='+''''+serie+''''+' and id='+idalbaran);
    qaux.ExecSQL;
    ffacturas.qalbaranes2.Close;
    ffacturas.qalbaranes2.SQL.Clear;
    ffacturas.qalbaranes2.SQL.Add('select * from albaranes where idfactura='+idfactura+' and idempresa='+empresa+' and serie='+''''+serie+''''+' order by id desc');
    ffacturas.qalbaranes2.Open;
    ffacturas.qalbaranes.Refresh;
    ffacturas.facturasdetalle.Refresh;

end;

procedure Tfseleccionaralbaranes.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then Key :=9;
    end;

end;

end.
