Ver Mensaje Individual
  #10  
Antiguo 08-02-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Reputación: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
unit ConFacturas;

interface
{Este es el módulo en el que tenemos las facturas seleccionadas para pasarlas a Contabilidad
Utiliza la unidad Spconta que se presentó anteriormente.
Al pulsar un botón el usuario transferirá todas las facturas en formato TXT a la carpeta TEMP de Contaplus.

Conviene que nuestra tabla de Facturas tenga un campo Booleano para ir marcando las que sean transferidas.
Las facturas por ejemplo se presentarán en una rejilla, bien todas las pendientes de contabilizar, las pendientes y 
hasta cierta fecha u otras combinaciones que se nos ocurran o que nos pida el cliente.}
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, DBCtrls, Grids, DBGrids, ExtCtrls, SpConta;
  Var
  spDatDiario:SPDiar;
  spContador:Integer;
    //Exportar Contaplus
  Procedure Exportar_Factura_Sp();



{Este es el botón que presenta la rejilla en donde se muestran las facturas susceptibles de ser contabilizadas, en su barra de navegación}
procedure TfrConFacturas.spTrasSPClick(Sender: TObject);
var
cIndice:String;
begin
SPContador:=0;

Crear_Datasi();

{Guardo el índice actual y activo el índice por Código de cliente, en el momento de la transferencia las tabla de clientes
debe estar indexada por el campo código para que cada vez que vayamos a transferir una factura podamos encontrar
los datos correspondientes al cliente en la tabla del mismo nombre}

cIndice:=DmYYY.Cli.IndexName;
DmYYY.Cli.IndexName:='';

  Try
  AssignFile(FDiario, cFile1);
  Rewrite(FDiario);

  AssignFile(FCliente, cFile2);
  Rewrite(FCliente);

  DmYYY2.Facturas.First;

    While not DmYYY2.Facturas.Eof do
    begin
    Exportar_Factura_Sp();
    DmYYY2.Facturas.Next;
    end;

  //Cerrar los ficheros al finalizar.
  CloseFile(FDiario);
  CloseFile(FCliente);

  Application.MessageBox('Se trasapason los datos a contabilidad correctamente.','Atención',mb_Ok+
  mb_IconQuestion);
  Except
  ShowMessage('Error al pasar los datos de las facturas.');
  end;
 
DmYYY.Cli.IndexName:=cIndice;
end;

Procedure Exportar_Factura_Sp();
var
nInicio:Integer;
nTope:Integer;
cCodClient:String;
begin

  if DmYYY2.FacturasRecargo.Value <> 0 then
  nTope:=4
  else
  nTope:=3;
  cCodClient:=DmYYY.CliCodigo.Value;
  Exportar_Datos_Cliente(cCodClient);
  SPContador:=SPContador + 1;

  For nInicio:=1 to nTope do
  begin
  SPDatDiario.Asien    :=FillSpacesLeft(IntToStr(spContador),6);
  SPDatDiario.Fecha    :=FormatDateTime('yyyymmdd',DmYYY2.FacturasFecha.Value);

    Case nInicio of
    1:SPDatDiario.Subcta   :=FillSpacesRight('7000000',12);
    2:SPDatDiario.Subcta   :=FillSpacesRight(DmYYY.CliCodigo.Value,12);
    3:SPDatDiario.Subcta   :=FillSpacesRight('4770016',12);
    4:SPDatDiario.Subcta   :=FillSpacesRight('4750004',12);
    end;


    //Solo partidas de IVA
    if nInicio > 2 then
    SPDatDiario.Contra   :=FillSpacesRight(DmYYY.CliCodigo.Value,12)
    else
    SPDatDiario.Contra   :=FillSpacesRight('',12);

  SPDatDiario.PtaDebe  :=FillSpacesLeft('0.00',16);
{Paso como concepto el número de la Factura más un nombre abreviado que uso para el cliente, conviene recordar que 
este campo tiene poca capacidad por lo que ha que abreviar el texto}

  SPDatDiario.Concepto :=FillSpacesRight(DmYYY2.FacturasNFactura.Value+' '+
  DmYYY.CliBuscar.Value ,25);

  SPDatDiario.PtaHaber :=FillSpacesLeft('0.00',16);
  SPDatDiario.Factura  :=FillSpacesLeft('0',8);

    //Solo partidas de IVA
    Case  nInicio  of
    3:begin
      SPDatDiario.BaseImpo :=StringReplace(FillSpacesLeft(FormatFloat('0.00',DmYYY2.FacturasBase.Value)    ,16),',','.',[rfReplaceAll]);
      SPDatDiario.TIva     :=StringReplace(FillSpacesLeft(FormatFloat('0.00',DmYYY2.FacturasTIva.Value)    ,05),',','.',[rfReplaceAll]);
      SPDatDiario.Trec     :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0),05),',','.',[rfReplaceAll]);
      end;
    4:begin
      SPDatDiario.BaseImpo :=StringReplace(FillSpacesLeft(FormatFloat('0.00',DmYYY2.FacturasBase.Value)    ,16),',','.',[rfReplaceAll]);
      SPDatDiario.TIva     :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0)    ,05),',','.',[rfReplaceAll]);
      SPDatDiario.Trec     :=StringReplace(FillSpacesLeft(FormatFloat('0.00',DmYYY2.FacturasTRecargo.Value),05),',','.',[rfReplaceAll]);
      end;
      else
      begin
      SPDatDiario.BaseImpo :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0)    ,16),',','.',[rfReplaceAll]);
      SPDatDiario.TIva     :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0)    ,05),',','.',[rfReplaceAll]);
      SPDatDiario.Trec     :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0)    ,05),',','.',[rfReplaceAll]);
      end;
     end;
    
  SPDatDiario.Document :=FillSpacesLeft('',10);
  SPDatDiario.Departa  :=FillSpacesLeft('',03);
  SPDatDiario.Clave    :=FillSpacesLeft('',06);
  SPDatDiario.Estado   :=FillSpacesLeft('',01);
  SPDatDiario.NCasado  :=FillSpacesLeft('0',06);
  SPDatDiario.TCasado  :=FillSpacesLeft('0',01);
  SPDatDiario.Trans    :=FillSpacesLeft('0',06);
  SPDatDiario.Cambio   :=StringReplace(FillSpacesLeft(FormatFloat('0.000000',0.00),16),',','.',[rfReplaceAll]);
  SPDatDiario.Debeme   :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0.00),16),',','.',[rfReplaceAll]);
  SPDatDiario.Haberme  :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0.00),16),',','.',[rfReplaceAll]);
  SPDatDiario.Auxiliar :=FillSpacesLeft('',1);
  SPDatDiario.Serie    :=FillSpacesLeft('',1);
  SPDatDiario.Sucursal :=FillSpacesLeft('',4);
  SPDatDiario.CodDivisa:=FillSpacesLeft('',5);
  SPDatDiario.ImpAuxme :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0.00),16),',','.',[rfReplaceAll]);
  SPDatDiario.MonedaUso:=FillSpacesLeft('2',1);

  Case  nInicio of
  {700 Base al Haber}
  1:begin
    SPDatDiario.EuroDebe :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0),16),',','.',[rfReplaceAll]);
    SPDatDiario.EuroHaber:=StringReplace(FillSpacesLeft(FormatFloat('0.00',DmYYY2.FacturasBase.Value) ,16),',','.',[rfReplaceAll]);
    SPDatDiario.BaseEuro :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0) ,16),',','.',[rfReplaceAll]);
    end;
  {430 Total al Debe}
  2:begin
    SPDatDiario.EuroDebe :=StringReplace(FillSpacesLeft(FormatFloat('0.00',DmYYY2.FacturasTotal.Value),16),',','.',[rfReplaceAll]);
    SPDatDiario.EuroHaber:=StringReplace(FillSpacesLeft(FormatFloat('0.00',0) ,16),',','.',[rfReplaceAll]);
    SPDatDiario.BaseEuro :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0) ,16),',','.',[rfReplaceAll]);
    end;
  {477 Iva al haber}
  3:begin
    SPDatDiario.EuroDebe :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0),16),',','.',[rfReplaceAll]);
    SPDatDiario.EuroHaber:=StringReplace(FillSpacesLeft(FormatFloat('0.00',DmYYY2.FacturasIva.Value) ,16),',','.',[rfReplaceAll]);
    SPDatDiario.BaseEuro :=StringReplace(FillSpacesLeft(FormatFloat('0.00',DmYYY2.FacturasBase.Value) ,16),',','.',[rfReplaceAll]);
    end;
  {4750004 Recargo al haber}
  4:begin
    SPDatDiario.EuroDebe :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0),16),',','.',[rfReplaceAll]);
    SPDatDiario.EuroHaber:=StringReplace(FillSpacesLeft(FormatFloat('0.00',DmYYY2.FacturasRecargo.Value) ,16),',','.',[rfReplaceAll]);
    SPDatDiario.BaseEuro :=StringReplace(FillSpacesLeft(FormatFloat('0.00',DmYYY2.FacturasBase.Value) ,16),',','.',[rfReplaceAll]);
    end;
  end;

  SPDatDiario.NoConv   :='F';
  SPDatDiario.NumeroInv:=FillSpacesLeft('',10);

  Write(FDiario, SPDatDiario.Asien);
  Write(FDiario, SPDatDiario.Fecha);
   
  Write(FDiario, SPDatDiario.Subcta);
  Write(FDiario, SPDatDiario.Contra);

  Write(FDiario, SPDatDiario.PtaDebe);
  Write(FDiario, SPDatDiario.Concepto);
  Write(FDiario, SPDatDiario.PtaHaber);
  Write(FDiario, SPDatDiario.Factura);
  Write(FDiario, SPDatDiario.BaseImpo);
  Write(FDiario, SPDatDiario.Tiva);
  Write(FDiario, SPDatDiario.TRec);
  Write(FDiario, SPDatDiario.Document);
  Write(FDiario, SPDatDiario.Departa);
  Write(FDiario, SPDatDiario.Clave);
  Write(FDiario, SPDatDiario.Estado);
  Write(FDiario, SPDatDiario.NCasado);
  Write(FDiario, SPDatDiario.TCasado);
  Write(FDiario, SPDatDiario.Trans);
  Write(FDiario, SPDatDiario.Cambio);
  Write(FDiario, SPDatDiario.Debeme);
  Write(FDiario, SPDatDiario.Haberme);
  Write(FDiario, SPDatDiario.Auxiliar);
  Write(FDiario, SPDatDiario.Serie);
  Write(FDiario, SPDatDiario.Sucursal);
  Write(FDiario, SPDatDiario.CodDivisa);
  Write(FDiario, SPDatDiario.ImpAuxMe);
  Write(FDiario, SPDatDiario.MonedaUso);
  //Varía
  Write(FDiario, SPDatDiario.EuroDebe);
  Write(FDiario, SPDatDiario.EuroHaber);
  Write(FDiario, SPDatDiario.BaseEuro);

  Write(FDiario, SPDatDiario.NoConv);
  Write(FDiario, SPDatDiario.NumeroInv);
  Write(FDiario,CrLf);
  end;
end;
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 08-02-2008 a las 21:24:50.
Responder Con Cita