Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Transferencia facturas de venta a ContaPlus.

Con la idea de poner alguna cosa más a disposición de los miembros Premium, aquí dejo una parte del módulo de exportación a ContaPlus que hice en su día y que sigue funcional.

La segunda parte es decir como utilizar esta unidad cuanto tenga un rato, mañana lo dudo pero el fin de semana seguro lo publicaré en este mismo hilo.

A ver que os parece.
Código Delphi [-]
unit SpConta;
{Unidad para transferencia a contabildad M.A.Marcos}
interface
uses
{DmXX DataModulo en donde se halla la tabla clientes y Facturas de nuestra aplicación}
DmXX,Global,Dialogs, System;

Procedure Crear_Datasi();
Procedure Exportar_Datos_Cliente(c:String);

Function FillSpacesRight(cVar:String;nLen:Integer):String;
Function FillSpacesLeft(cVar:String;nLen:Integer):String;
Function FillZerosLeft(cVar:String;nLen:Integer):String;

Type
SPDiar = Record
Asien    :String[06];
Fecha    :String[08];
Subcta   :String[12];
Contra   :String[12];

PtaDebe  :String[16];
Concepto :String[25];
PtaHaber :String[16];
Factura  :String[08];
BaseImpo :String[16];
TIva     :String[05];
Trec     :String[05];
Document :String[10];
Departa  :String[03];
Clave    :String[06];
Estado   :String[01];
NCasado  :String[06];
TCasado  :String[01];
Trans    :String[06];
Cambio   :String[16];
Debeme   :String[16];
Haberme  :String[16];
Auxiliar :String[01];
Serie    :String[01];
Sucursal :String[04];
CodDivisa:String[05];
ImpAuxme :String[16];
Monedauso:String[01];

EuroDebe :String[16];
EuroHaber:String[16];
BaseEuro :String[16];

NoConv   :String[01];
NumeroInv:String[10];
end;

SPSubcta = Record
Cod      :String[12];
Titulo   :String[40];
Nif      :String[15];
Domicilio:String[35];
Poblacion:String[25];
Provincia:String[20];
CodPostal:String[05];
Divisa   :String[01];
CodDivisa:String[05];
Documento:String[01];
Ajustame :String[01];
TipoIva  :String[01];
end;

Const
{Directorio TMP de ContaPlus}
cCamino ='\\Puesto1\puesto1\GrupoSP\COE08R01\Tmp\';
cDiario ='Xdiario.Txt';
cSubcta ='Xsubcta.Txt';
cDatasi ='Xdatasi.Txt';
cFile1  =cCamino + cDiario;
cFile2  =cCamino + cSubcta;
cFile3  =cCamino + cDatasi;
CrLf:String = Chr(13)+Chr(10);

var
FDiario :TextFile;
FCliente:TextFile;
implementation



Procedure Crear_Datasi();
var
F1:TextFile;
begin
AssignFile(F1, cFile3);
Rewrite(f1);
CloseFile(F1);
end;


Procedure Exportar_Datos_Cliente(c:String);
var
spDatCli:SPSubcta;
begin

 if DmXX.Cli.FindKey([c]) then
 begin
 spDatCli.Cod       :=FillSpacesRight(DmXX.CliCodigo.Value,12);
 spDatCli.Titulo    :=FillSpacesRight(DmXX.CliRSOCIAL.Value,40);
 spDatCli.Nif       :=FillSpacesRight(DmXX.CliNif.Value,15);
 spDatCli.Domicilio :=FillSpacesRight(DmXX.CliCalle.Value,35);
 spDatCli.Poblacion :=FillSpacesRight(DmXX.CliPoblacion.Value,25);
 spDatCli.Provincia :=FillSpacesRight(DmXX.CliProvincia.Value,20);
 spDatCli.CodPostal :=FillSpacesRight(DmXX.clicPostal.Value,5);
 spDatCli.Divisa    :='F';
 spDatCli.CodDivisa :=FillSpacesRight('',5);
 spDatCli.Documento :='F';
 spDatCli.Ajustame  :='F';
 spDatCli.TipoIva   :=FillSpacesRight('',1);

 Write(FCliente, spDatCli.Cod );
 Write(FCliente, spDatCli.Titulo);
 Write(FCliente, spDatCli.Nif);
 Write(FCliente, spDatCli.Domicilio);
 Write(FCliente, spDatCli.Poblacion);
 Write(FCliente, spDatCli.Provincia);
 Write(FCliente, spDatCli.CodPostal);
 Write(FCliente, spDatcli.Divisa);
 Write(FCliente, spDatCli.CodDivisa);
 Write(FCliente, spDatCli.Documento);
 Write(FCliente, spDatCli.Ajustame);
 Write(FCliente, spDatCli.TipoIva);

 Write(FCliente,CrLf);
 end
 else
 ShowMessage('Cliente no encontrado:'+DmXX.FacturasCodclient.Value);

end;



 Function FillSpacesLeft(cVar:String;nLen:Integer):String;
 begin
 Result:=StringOfChar(' ',nLen - Length(cVar))+cVar;
 end;

 Function FillSpacesRight(cVar:String;nLen:Integer):String;
 begin
 Result:=cVar+StringOfChar(' ',nLen - Length(cVar));
 end;

 Function FillZerosLeft(cVar:String;nLen:Integer):String;
 begin
 Result:=StringOfChar('0',nLen - Length(cVar))+cVar;
 end;
end.

Un Saludo y espero vuestros comentarios.
__________________
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:20:34.
Responder Con Cita
  #2  
Antiguo 07-02-2008
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 20
Luis M. Va por buen camino
OSTRASSSS!!

Me va a venir de cojo......nes

Estoy migrando un programa que le hice a una empresa en Clipper y uno
de los módulos que tiene es ese precisamente, hace la exportación hacia
Contaplus.
Aunque todavía me queda para llegar a esa parte, ya me estaba calentando
la cabeza de como lo haría.

Y mira por donde, llegó el ángel salvador

Pos muchas gracias por compartirlo.

Este me lo guardo como:
"MIOO, MI TESOROOOO"

Un saludo.
Responder Con Cita
  #3  
Antiguo 07-02-2008
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
Hace años recuerdo que me pidieron pasar datos de una facturación al Contaplus y al final no se que paso que al final no se hizo, hay mucho Contaplus, si vuelven a pedirlo ya sé que aquí lo tengo.

Marcos, segúro que como a Luis M. a más de uno le quitas un marroncillo de encima.

Gracias en nombre de todos por la aportación
__________________
Saludos
Emilio
Responder Con Cita
  #4  
Antiguo 07-02-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues como he dicho en este fin de semana añadire el resto a modo de ejemplo.

Un Saludo a todos.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 08-02-2008
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
¡Gracias Marcos! No sabes que bien me viene.

Hace un año quise hacerlo, busqué información por aquí y por allá (para saber la estructura de los archivos a exportar-importar), no encontré nada y a las finales me desanimé y no hice nada.

Ya sé donde está la información para cuando tenga que hacerlo.

Gracias por compartir el código.
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #6  
Antiguo 08-02-2008
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
¡Muchas gracias Marcos!, me va a venir de maravilla para un proyecto que estoy realizando actualmente.

Un saúdo.
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #7  
Antiguo 08-02-2008
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Vaya, no sabía que fuese tan buscado un código como ese.

En la empresa que trabajé antes de la que estoy ahora hice una exportación a contaplus... y en la empresa que estoy ahora... ¡¡¡otra!!!
Responder Con Cita
  #8  
Antiguo 08-02-2008
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Vaya, no sabía que fuese tan buscado un código como ese.

En la empresa que trabajé antes de la que estoy ahora hice una exportación a contaplus... y en la empresa que estoy ahora... ¡¡¡otra!!!
¡Claro! Esas son cosas que uno hace normalmente y casi sin pensar...
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #9  
Antiguo 08-02-2008
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Aaaaaahhhhhggg!!!, que bien me hubiese venido esa información hace unos meses. No encontré nada sobre el formato de importación de Contaplus.

Al final me tube que pelear con las tablas del Contaplus (vaya experiencia...) para exportar directamente sobre ellas.

De todas maneras creo que me va a ser muy útil tu código. Muchas gracias.
__________________
Saludos.
Responder Con Cita
  #10  
Antiguo 08-02-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 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
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tabla de Facturas vs Detalles de Facturas magnu9 Conexión con bases de datos 9 27-07-2007 17:27:37
Migracion de Tablas | Contaplus -> Cualquier BD LuCkY_007 Varios 1 11-04-2007 17:18:41
Generar Fichero de Texto Contaplus muli Varios 4 16-05-2006 21:28:06
Campos calculados, facturas y detalles de facturas. Letty Conexión con bases de datos 7 07-11-2003 11:19:44
Delphi y ContaPlus... Tanix Varios 5 17-10-2003 12:59:21


La franja horaria es GMT +2. Ahora son las 00:40:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi