Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   C++Builder 6 CFDI Mexico ¿Como agregar Concepto ? (https://www.clubdelphi.com/foros/showthread.php?t=89924)

JXJ 04-03-2016 08:21:07

C++Builder 6 CFDI Mexico ¿Como agregar Concepto ?
 
Hola

¿Alguien sabe como se puede generar el xml y agregar nodos del tipo concepto ?

importe el XSD http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd

no se como hacer el codigo

Cualquier ayuda es bienvenida.

Gracias.

juanelo 05-03-2016 01:19:49

Pregunta: ¿estas de cero en CFDI o quieres agregar complementos concepto ?

JXJ 05-03-2016 03:59:44

Hola juanelo

Estoy en ceros por que no se si lo estoy haciendo bien. de xml no tengo ni idea

este es el codigo de el boton genera xml

Código:




//---------------------------------------------------------------------------
void __fastcall TForm1::BtnFacturaGenerarClick(TObject *Sender)
{
    log("Iniciamos Generacion de XML");
            TXMLDocument* fDocXML = new TXMLDocument("");


                fDocXML->Active = true;
                fDocXML->Version = "1.0";
                fDocXML->Encoding = "UTF-8";
                fDocXML->StandAlone = "yes";

      Comprobante = GetComprobante(XMLDocument1);

      _di_IXMLComprobante CFDI32 =  GetComprobante(fDocXML);

      CFDI32->version = "3.2";
      CFDI32->certificado = EditCertNum->Text;
      CFDI32->sello = "";
      CFDI32->formaDePago = EditFormaDePago->Text;
      CFDI32->condicionesDePago = EditCondicionesDePago->Text;
//      CFDI32->fecha = FormatDateTime("yyyy-mm-dd""T""hh:nn:ss", Now() );  // no jala asi
        CFDI32->fecha = FormatDateTime("yyyy-mm-dd", Now()) + "T" +  FormatDateTime("hh:nn:ss", Now() );
        CFDI32->folio = EditFolio->Text;
        CFDI32->serie = EditSerie->Text;
        CFDI32->LugarExpedicion = EditLugarDeExpedicion->Text;
        CFDI32->subTotal = EditFacturaSubtotal->Text;
        CFDI32->TipoCambio = "0.0";
        CFDI32->Moneda = "Pesos";
//        CFDI32->descuento = ;
//        CFDI32->motivoDescuento = ;
        CFDI32->total = EditFacturaTotalFinal->Text;
        CFDI32->tipoDeComprobante = EditTipoDeCFDI->Text;
        CFDI32->metodoDePago = EditMetodoDePago->Text;
        CFDI32->LugarExpedicion = EditLugarDeExpedicion->Text;
        CFDI32->DeclareNamespace("cfdi","http://www.sat.gob.mx/cfd/3") ;
        CFDI32->SetAttribute("xsi:schemaLocation"    , "http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd");
      CFDI32->SetAttribute("xmlns:tfd"    , "http://www.sat.gob.mx/TimbreFiscalDigital");  // no se respeta el texto solo pone TRUE
      CFDI32->SetAttribute("xmlns:xs"    , "http://www.w3.org/2001/XMLSchema");  // no se respeta el texto solo pone TRUE
      CFDI32->SetAttribute("xmlns:xsi"      , "http://www.w3.org/2001/XMLSchema-instance");// no se respeta el texto solo pone TRUE

        CFDI32->Emisor->rfc = EditEmisorRFC->Text;
        CFDI32->Emisor->nombre = EditEmisorNombre->Text;

        CFDI32->Emisor->DomicilioFiscal->calle = EditEmisorCalle->Text ;
        CFDI32->Emisor->DomicilioFiscal->noExterior = EditEmisorNumExt->Text;
        CFDI32->Emisor->DomicilioFiscal->noInterior = EditEmisorNumInt->Text;
        CFDI32->Emisor->DomicilioFiscal->colonia = EditEmisorColonia->Text;
        CFDI32->Emisor->DomicilioFiscal->localidad = EditEmisorLocalidad->Text;
        CFDI32->Emisor->DomicilioFiscal->municipio = EditEmisorMun->Text;
        CFDI32->Emisor->DomicilioFiscal->estado = EditEmisorEstado->Text;
        CFDI32->Emisor->DomicilioFiscal->pais = EditEmisorPais->Text;
        CFDI32->Emisor->DomicilioFiscal->codigoPostal = EditEmisorCP->Text;
                    CFDI32->Emisor->ExpedidoEn->calle = EditEmisorExpedidoEnCalle->Text;
                    CFDI32->Emisor->ExpedidoEn->noExterior = EditEmisorExpedidoEnNumExt->Text;
                    CFDI32->Emisor->ExpedidoEn->noInterior = EditEmisorExpedidoEnNumInt->Text;
                    CFDI32->Emisor->ExpedidoEn->colonia = EditEmisorExpedidoEnColonia->Text;
                    CFDI32->Emisor->ExpedidoEn->localidad = EditEmisorExpedidoEnLocalidad->Text;
                    CFDI32->Emisor->ExpedidoEn->referencia = EditEmisorExpedidoEnRef->Text;
                    CFDI32->Emisor->ExpedidoEn->municipio = EditEmisorExpedidoEnMun->Text;
                    CFDI32->Emisor->ExpedidoEn->estado = EditEmisorExpedidoEnEstado->Text;
                    CFDI32->Emisor->ExpedidoEn->pais = EditEmisorExpedidoEnPais->Text;
                    CFDI32->Emisor->ExpedidoEn->codigoPostal = EditEmisorExpedidoEnCP->Text;

            CFDI32->Emisor->RegimenFiscal->Add()->Regimen = EditEmisorRegimen->Text;

            CFDI32->Receptor->rfc = EditReceptorRFC->Text;
            CFDI32->Receptor->nombre = EditReceptorNombre->Text;
            CFDI32->Receptor->Domicilio->calle = EditReceptorCalle->Text;
            CFDI32->Receptor->Domicilio->noExterior = EditReceptorNumExt->Text;
            CFDI32->Receptor->Domicilio->noInterior = EditReceptorNumInt->Text;
            CFDI32->Receptor->Domicilio->colonia = EditReceptorColonia->Text ;
            CFDI32->Receptor->Domicilio->localidad = EditReceptorLocalidad->Text;
            CFDI32->Receptor->Domicilio->referencia = EditReceptorReferencia->Text;
            CFDI32->Receptor->Domicilio->municipio = EditReceptorMun->Text;
            CFDI32->Receptor->Domicilio->estado = EditReceptorEstado->Text;
            CFDI32->Receptor->Domicilio->pais = EditReceptorPais->Text;
            CFDI32->Receptor->Domicilio->codigoPostal = EditReceptorCP->Text;


              CFDI32->Conceptos->Add();// me genera un nodo conceptos vacio







                      /*  Me genera un nodo por cada Add() con solo un miembro.
            CFDI32->Conceptos->Add()-> cantidad = EditConceptoCantidad->Text;
            CFDI32->Conceptos->Add()->unidad = EditConceptoUnidad->Text;
            CFDI32->Conceptos->Add()->descripcion = EditConceptoDescripcion->Text;
            CFDI32->Conceptos->Add()->valorUnitario = EditConceptoValorUnitario->Text;
            CFDI32->Conceptos->Add()->importe = EditConceptoTotal->Text;
                      */
                      /*  Me genera un nodo por cada Add() con solo un miembro.
            CFDI32->Impuestos->Traslados->Add()->impuesto = EditFacturaImpuestoNombre->Text ;
            CFDI32->Impuestos->Traslados->Add()->tasa = EditFacturaTasa->Text;
            CFDI32->Impuestos->Traslados->Add()->importe = EditFacturaImporte->Text;
                    */

                      /* no se como agregar el timbre*/
//            CFDI32->Complemento-> ->Traslados->Add()->importe = ;




                                                    log("guardamos el XML CFDI en ");
          fDocXML->SaveToFile( "Pruebna1.xml");

          SynEdit1->Lines->LoadFromFile("Pruebna1.xml");

}


tmsanchez 07-03-2016 22:39:18

Hola.

Hay un proyecto en Delphi para factura electrónica de México(CFDI) que probablemente te sirva como referencia acerca de los nodos:

https://github.com/bambucode/tfacturaelectronica

el código para crear un CFDI se encuentra aquí:

https://github.com/bambucode/tfactur...lectronica.dpr


En cuanto al tema de XML hay una serie de artículos (también en delphi) que muestran el uso de los componentes para generar XML, no creo que sea muy complicado pasarlo a C++:

http://delphiallimite.blogspot.mx/20...entos-xml.html
http://delphiallimite.blogspot.mx/20...os-xml-ii.html
http://delphiallimite.blogspot.mx/20...xml-y-iii.html

Saludos.


La franja horaria es GMT +2. Ahora son las 09:33:33.

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