![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#11
|
||||
|
||||
buenos dias !
el servidor de mensajes en B10 funciona el componente en D7 funciona la demo que envía una excel D7 funciona Hay un componente en D7 que crea una sesion en el servidor B10 El componente D7 recoge los datos de la facturas y las envia al servidor B10 El componente D7 da orden de envio al servidor B10 El servidor B10 devuelve el resultado del envio al componente D7 Este es un trozo de código del ejemplo de la anterior demo programada en B10, AHORA reprogramada con el nuevo componente para D7 Código en D7 que hace uso del componente: Código:
// carga los datos de la rejilla en TVerifactu enviandolos a nuestro servidor function TForm1.stringGrid_to_VerFactuD7( fila:integer ):TRegistroFactura; var actual, anterior:TRegistroFactura; n:integer; begin // asignar datos de 1 factura a un record actual.alta_baja :=copy(StringGridFacturas.Cells[ 0, fila ],1,1); // A o B actual.numSerieFactura :=StringGridFacturas.Cells[ 1, fila ]; actual.fechafactura :=StringGridFacturas.Cells[ 2, fila ]; actual.descripcionOperacion:=StringGridFacturas.Cells[ 3, fila ]; actual.cliente :=StringGridFacturas.Cells[ 4, fila ]; actual.clienteNIF :=StringGridFacturas.Cells[ 5, fila ]; actual.clientetipoNIF :=StringGridFacturas.Cells[ 6, fila ]; actual.clienteCodPais :=StringGridFacturas.Cells[ 7, fila ]; // cargar 2 ivas actual.nivas:=0; if StringGridFacturas.Cells[10, fila]<>'' then // añadir iva 1 begin actual.iva[0].iva :=value( StringGridFacturas.Cells[10, fila] ); actual.iva[0].req :=value( StringGridFacturas.Cells[11, fila] ); actual.iva[0].baseImp :=value( StringGridFacturas.Cells[12, fila] ); actual.iva[0].impIVA :=actual.iva[0].baseImp*actual.iva[0].iva / 100; actual.iva[0].impREQ :=actual.iva[0].baseImp*actual.iva[0].req / 100; inc(actual.nivas); end; if StringGridFacturas.Cells[13, fila]<>'' then // añadir iva 1 begin actual.iva[1].iva :=value( StringGridFacturas.Cells[13, fila] ); actual.iva[1].req :=value( StringGridFacturas.Cells[14, fila] ); actual.iva[1].baseImp :=value( StringGridFacturas.Cells[15, fila] ); actual.iva[1].impIVA :=actual.iva[0].baseImp*actual.iva[0].iva / 100; actual.iva[1].impREQ :=actual.iva[0].baseImp*actual.iva[0].req / 100; inc(actual.nivas); end; // totales actual.cuotatotal :=value( StringGridFacturas.Cells[ 8, fila ] ); actual.total :=value( StringGridFacturas.Cells[ 9, fila ] ); // // localizar la factura anterior: (en nuestra base de datos XML) // anterior.numSerieFactura :=''; anterior.fechaFactura :=''; anterior.huella :=''; if FacturasEnviadas.locate('emisor;numSerieFactura',VarArrayOf([ VeriFactuD7.Emisor.nifEmisor, actual.numSerieFactura ]),[] ) then begin FacturasEnviadas.prior; if not FacturasEnviadas.bof then begin anterior.numSerieFactura :=FacturasEnviadas.FieldByName('numSerieFactura').text; anterior.fechaFactura :=FacturasEnviadas.FieldByName('fechaExpedicioFactura').text; anterior.huella :=FacturasEnviadas.FieldByName('huella').text; end; end; // // enviarlo al servidor // n:=VeriFactuD7.addFactura( actual, anterior ); // // if n<=0 then begin showmessage('Error Añadiendo Factura '+factura+' Al Servidor'); abort; end; result:=actual; end; // // enviar los datos cargados en la rejilla // procedure TForm1.enviarClick(Sender: TObject); var resultado : TResultadoEnvio; // Respuesta tras el envio factura : TFacturas; // records con los datos de 1 factura la actual y anterior actual : TRegistroFactura; // para almacenar en la BD fila : integer; // fila de la rejilla alta_baja : string; // estado de la fila, 'A' ó 'B' begin screen.Cursor:=crHourglass; if sender=enviar then VerifactuD7.Simular:=false; if sender=soloXML then VerifactuD7.Simular:=true; // url EndPoint VerifactuD7.urlEndPoint:=editURL.text; // Datos de sistema Informatico: VerifactuD7.SistemaInformatico.razonSocial :=editRazonSocial.Text; VerifactuD7.SistemaInformatico.nif :=editNIF.Text; VerifactuD7.SistemaInformatico.nombre :=editNombre.Text; VerifactuD7.SistemaInformatico.ID :=editID.text; VerifactuD7.SistemaInformatico.Version :=editVersion.text; VerifactuD7.SistemaInformatico.NumeroInstalacion:=editInstalacion.text; // Certificado: VerifactuD7.Certificado :=comboCertificados.text; // Emisor VerifactuD7.Emisor.NombreRazonEmisor :=editEmisor.Text; VerifactuD7.Emisor.nifEmisor :=editNIFEmisor.Text; // Otros datos VeriFactuD7.pathXML_Envio :=xmlEnvio; // siempre guardaremos una copia de la ultima transmision VeriFactuD7.pathXML_Respuesta :=xmlRespuesta; // siempre guardaremos una copia del ultimo resultado // Iniciamos Sesion !! if not VeriFactuD7.inicio then begin showmessage('Error Iniciando Sesion'); exit; end; // recorrer las facturas de la rejilla for fila:=1 to StringGridFacturas.RowCount do begin alta_baja:=StringGridFacturas.Cells[ 0, fila ]; // estado de la factura (ALTA, BAJA) if alta_baja<>'' then begin // SI ALTA ó BAJA: actual:=stringGrid_to_VerFactuD7( fila ); // <---- envia al servidor la factura de la fila correspondiente archivoFactura(actual); end; end; // resultados: PageControlVerifactu.TabIndex:=1; // nos preparamos para ver el resultado del envio en su tabulador memoXML.lines.clear; if VeriFactuD7.envio(resultado) then // enviarlo !! procesarEnvio(resultado) // procesar el resultado (mostrar en pantalla, y guardarlo en xmlFacturas) else memoRes.lines.add('El Envio No Ha Podido Ser Realizado'); // Finalmente: FacturasEnviadas.SaveToFile(xmlFacturas); // Guardamos el archivo propio de facturas ( para encadenamiento ) // cerrar sesion: VeriFactuD7.final; // Liberamos la sesion screen.Cursor:=crDefault; end; [/quote] Hay varios temas preliminares Faltan mejorar y afinar algunos temas ¿hay alguien interesado en usarlo? Para publicarlo, necesito alguien que entienda BIEN la composicion de los mensajes de la AEAT segun cada tipo de factura para componerlo con la informacion basica de una factura y se encargue de ello. El resto de la logica de envio y recepcion como digo ya funciona. Seria tomar la funcion que hace la carga del objeto de la AEAT e indicarle los datos segun la factura suministrada. Ahi dejo este mensaje, a ver si alguien se anima. Última edición por seccion_31 fecha: 14-12-2024 a las 09:14:48. |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Verifactu o por requerimiento (no-verifactu) ¿decisión del usuario? | Maska10 | Temas legales | 2 | 07-12-2024 12:34:47 |
Demo de una applicación para una estación de enfermera con RAD Studio | AgustinOrtu | La Taberna | 1 | 21-07-2015 17:41:35 |
Demo Delphi, EMail | Caral | Internet | 1 | 19-12-2006 00:37:56 |
Demo de delphi 2005 | mazinger | Varios | 2 | 18-12-2004 09:23:09 |
El Rave que viene con Delphi es una Demo? | apicito | Impresión | 0 | 04-06-2003 11:33:36 |
![]() |
|