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");
}