private string Comprobante(RFC, Serie, Folio) { Servifact.Comprobante Comprobante = new Servifact.Comprobante(); //Comprobante Servifact.Emisor Emisor = new Servifact.Emisor(); //Emisor Servifact.Receptor Receptor = new Servifact.Receptor(); //Receptor ListConceptos = new List (); //Listado de Conceptos List UUIDRelacionados = new List (); //Listado de UUIDRelacionados Servifact.CFDIRelacionados CFDIRelacionados = new Servifact.CFDIRelacionados(); Servifact.UUIDRelacionado UUIDRelacionado = new Servifact.UUIDRelacionado(); /******************************** DATOS DEL COMPROBANTE ********************************/ Comprobante.Version = Servifact.Versiones.Ver_4; Comprobante.SerieFolio = Serie; Comprobante.Nume_Folio = Folio; Comprobante.Fech_Comprobante = DateTime.Now; Comprobante.FormaPago = "01"; Comprobante.Moneda = Servifact.Monedas.MXN; Comprobante.TipoComprobante = "I"; Comprobante.MetodoPago = "PUE"; // PUE (Pago en una Sola Expedición), PPD Comprobante.Exportacion = "01"; //Atributo requerido para expresar si el comprobante ampara una operación de exportación. Comprobante.LugarExpedicion = "80060"; Comprobante.CondicionesPago = "Contado"; /******************************** DOCUMENTOS RELACIONADOS ********************************/ List ListaCfdisRelacionados = new List ();//Elemento CFDIRelacionados Servifact.CFDIRelacionados cfdisrelacionados2 = new Servifact.CFDIRelacionados(); cfdisrelacionados2.TipoRelacion = "04";//Atributo que indica la clave de la relación que existe entre éste que se esta generando y el o los CFDI previos. List listaUUIDs2 = new List ();//listado de UUIDS Relacionados Servifact.UUIDRelacionado uuid2 = new Servifact.UUIDRelacionado(); uuid2.UUID = "453b672b-463d-4d95-91a2-001b651a6ace";//folio fiscal (UUID) de un CFDI relacionado con el presente comprobante listaUUIDs2.Add(uuid2); cfdisrelacionados2.UUIDsRelacionados = listaUUIDs2.ToArray(); ListaCfdisRelacionados.Add(cfdisrelacionados2); Comprobante.ListaCFDIRelacionados = ListaCfdisRelacionados.ToArray(); /******************************** DATOS DEL EMISOR Datos de la empresa que espide la factura. ********************************/ Emisor.RFC = RFC; // RFC de la empresa que emite el comprobante Emisor.Nomb_Comercial = "ILUNIMADORA DE ALMACENES SA DE CV"; //Nombre con el que se conoce a la empresa o persona que emite el comprobante Emisor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV"; //Nombre con el que esta registrado ante hacienda quien emite el comprobante Emisor.RegimenFiscal = "601"; //Clave del régimen del contribuyente emisor al que aplicará el efecto fiscal de este comprobante Comprobante.Emisor = Emisor; /******************************** DATOS DEL RECEPTOR Datos de la empresa a quien espide la factura. ********************************/ //Receptor /*DATOS DE LA EMPRESA A QUIEN SE EXPIDE LA FACTURA*/ Receptor.RFC = "ACA010726HQ1"; //RFC de la empresa o persona a quien se le va a emitir el comprobante Receptor.Nomb_RazonSocial = "AIRES DE CAMPO"; //Nombre con el que esta registrado ante hacienda, quien se le va a emitir el comprobante Receptor.Nomb_Comercial = "AIRES DE CAMPO"; //Nombre con el que se le conoce a la empresa o persona que se le va a emitir el comprobante Receptor.UsoCFDI = "G03";//Clave del uso que dará a esta factura el receptor del CFDI Receptor.Domi_CodigoPostal = "11210";//Atributo requerido para registrar el código postal del domicilio fiscal del receptor del comprobante. Receptor.RegimenFiscal = "601";//Atributo requerido para incorporar la clave del régimen fiscal del contribuyente receptor al que aplicará el efecto fiscal de este comprobante. Comprobante.Receptor = Receptor; /******************************** CONCEPTOS ********************************/ Servifact.Concepto Concepto = new Servifact.Concepto(); Concepto.ClaveProductoServicio = "78101802"; Concepto.Cantidad = 1; Concepto.ClaveUnidad = "E48"; Concepto.Unidad = "UNIDAD DE SERVICIO"; Concepto.Descripcion = "FLETE"; Concepto.PrecioUnitario = 6000.00; Concepto.Importe = Convert.ToDouble(Concepto.Cantidad) * Concepto.PrecioUnitario; Concepto.Descuento = 0.00; Concepto.NoIdentificacion = Serie + Folio; // Ejemplo prueba Concepto.ObjetoImpuesto = "02";//Atributo requerido para expresar si la operación comercial es objeto o no de impuesto. /******************************** IMPUESTOS DEL CONCEPTO ********************************/ List ListaInpuestos = new List (); // RETENIDOS Servifact.Impuesto ImpuestosRetenidos = new Servifact.Impuesto(); ImpuestosRetenidos.ClaveSATImpuesto = "002"; ImpuestosRetenidos.Nombre = "IVA"; ImpuestosRetenidos.Base = Math.Round(((Convert.ToDouble(Concepto.Cantidad) * Concepto.PrecioUnitario) - Concepto.Descuento), 2); // 1 FEDERAL, 2 LOCALES ImpuestosRetenidos.Federal = 1; // 1 TRASLADOS, 2 RETENCION ImpuestosRetenidos.Tipo = 2; ImpuestosRetenidos.TipoFactor = Servifact.TiposFactor.Tasa; double tasa = Math.Round(Convert.ToDouble(Concepto.TasaIVA) / 100, 2); string tasaConvertido = tasa.ToString("0000.00"); ImpuestosRetenidos.Tasa = double.Parse("0.04"); string Importe = String.Format("{0:0.##}", (ImpuestosRetenidos.Base * ImpuestosRetenidos.Tasa)); ImpuestosRetenidos.Importe = Math.Round(double.Parse(Importe), 2); ListaInpuestos.Add(ImpuestosRetenidos); // TRASLADOS Servifact.Impuesto ImpuestosTrasladados = new Servifact.Impuesto(); ImpuestosTrasladados.ClaveSATImpuesto = "002"; ImpuestosTrasladados.Nombre = "IVA"; ImpuestosTrasladados.Base = Math.Round(((Convert.ToDouble(Concepto.Cantidad) * Concepto.PrecioUnitario) - Concepto.Descuento), 2); //1 FEDERAL, 2 LOCALES ImpuestosTrasladados.Federal = 1; //1 TRASLADOS, 2 RETENCION ImpuestosTrasladados.Tipo = 1; ImpuestosTrasladados.TipoFactor = Servifact.TiposFactor.Tasa; ImpuestosTrasladados.Tasa = double.Parse("0.16"); ImpuestosTrasladados.Importe = Math.Round(ImpuestosTrasladados.Base * ImpuestosTrasladados.Tasa, 2); ListaInpuestos.Add(ImpuestosTrasladados); Concepto.Impuestos = ListaInpuestos.ToArray(); Conceptos.Add(Concepto); Comprobante.Conceptos = Conceptos.ToArray(); string Usuario = "demoCFDI"; string Password = "CPKRTQ6FTD43)~"; Servifact.Servicios Servicio = new Servifact.Servicios(); return Servicio.TimbrarComprobante(ref Comprobante, Usuario, Password); }
private string ComprobantePago20(RFC, Serie, Folio) { Servicios2.Comprobante comprobante = new Test_wsCFD.Servicios2.Comprobante(); //Elemento Comprobante Servicios2.Emisor emisor = new Test_wsCFD.Servicios2.Emisor(); // Elemento Emisor Servicios2.Receptor receptor = new Test_wsCFD.Servicios2.Receptor(); // Elemento Receptor Listconceptos = new List (); //Listado de Conceptos List ListaCfdisRelacionados = new List ();//Elemento CFDIRelacionados Servicios2.Pagos20 Pagos = new Test_wsCFD.Servicios2.Pagos20();//Elemento Pagos List ListadoPagos = new List (); List ListaPagosDoctoRelacionado = new List (); //DATOS DEL COMPROBANTE comprobante.Version = Test_wsCFD.Servicios2.Versiones.Ver_4; comprobante.SerieFolio = Serie; //Parte inicial o final que acompaña al número de la factura y puede ser opcional comprobante.Nume_Folio = Folio; //Número consecutivo asignado al comprobante para el control interno comprobante.Fech_Comprobante = DateTime.Now; //Fecha de emisión del CFDI comprobante.ComprobanteClase = Servicios2.Comprobante_Clase.ReciboElectronicoPago; //Clase de comprobante fiscal definidos por el SAT comprobante.Moneda = Servicios2.Monedas.XXX;//Medida de cambio que se emplea en la transacion comercial comprobante.LugarExpedicion = "80060"; //Nombre del lugar de expedicion ; comprobante.TipoComprobante = "P";//Clave del efecto del comprobante fiscal para el contribuyente emisor comprobante.Exportacion = "01";//Atributo requerido para expresar si el comprobante ampara una operación de exportación. /*INFORMACION DE QUIEN EXPIDE LA FACTURA*/ emisor.RFC = RFC; //RFC de la empresa o persona que va a emitir el comprobante emisor.Nomb_Comercial = "XOCHILT CASAS CHAVEZ"; //Nombre con el que se conoce a la empresa o persona que emite el comprobante emisor.Nomb_RazonSocial = "XOCHILT CASAS CHAVEZ"; //Nombre con el que esta registrado ante hacienda quien emite el comprobante emisor.RegimenFiscal = "612"; //Clave del régimen del contribuyente emisor al que aplicará el efecto fiscal de este comprobante /*DATOS DE LA EMPRESA A QUIEN SE EXPIDE LA FACTURA*/ receptor.RFC = "AEAA901130TF0"; //RFC de la empresa o persona a quien se le va a emitir el comprobante receptor.Nomb_RazonSocial = "ARIANE DISNEY ARELLANES AVILEZ"; //Nombre con el que esta registrado ante hacienda, quien se le va a emitir el comprobante receptor.Nomb_Comercial = "ARIANE DISNEY ARELLANES AVILEZ"; //Nombre con el que se le conoce a la empresa o persona que se le va a emitir el comprobante receptor.UsoCFDI = "CP01";//Clave del uso que dará a esta factura el receptor del CFDI receptor.Domi_CodigoPostal = "80000";//Atributo requerido para registrar el código postal del domicilio fiscal del receptor del comprobante. receptor.RegimenFiscal = "616";//Atributo requerido para incorporar la clave del régimen fiscal del contribuyente receptor al que aplicará el efecto fiscal de este comprobante. /*CONCEPTOS*/ Servicios2.Concepto concepto = new Servicios2.Concepto(); concepto.ClaveProductoServicio = "84111506";//Clave del producto o del servicio amparado por el presente concepto. concepto.ClaveUnidad = "ACT";//Clave de unidad de medida estandarizada aplicable para la cantidad expresada en el concepto. concepto.Cantidad = 1; //Cantidad de bienes o servicios del tipo particular definido por el presente concepto concepto.Descripcion = "Pago"; //Descripción del bien o servicio cubierto por el presente concepto concepto.PrecioUnitario = 0.00; //Precio unitario del bien o servicio cubierto por el presente concepto concepto.ObjetoImpuesto = "01"; conceptos.Add(concepto); comprobante.Emisor = emisor; comprobante.Receptor = receptor; comprobante.Conceptos = conceptos.ToArray(); /*DATOS DEL COMPLEMENTO DE PAGOS*/ /*TOTALES*/ Servicios2.Pagos20Totales totales = new Test_wsCFD.Servicios2.Pagos20Totales(); totales.TotalRetencionesIVASpecified = true; totales.TotalRetencionesIVA = 1.03M;//Atributo condicional para expresar el total de los impuestos retenidos de IVA que se desprenden de los pagos. totales.TotalRetencionesISRSpecified = false; totales.TotalRetencionesISR = 0;//Atributo condicional para expresar el total de los impuestos retenidos de ISR que se desprenden de los pagos. totales.TotalRetencionesIEPSSpecified = false; totales.TotalRetencionesIEPS = 0;//Atributo condicional para expresar el total de los impuestos retenidos de IEPS que se desprenden de los pagos totales.TotalTrasladosBaseIVA16Specified = true; totales.TotalTrasladosBaseIVA16 = 10.00M;//Atributo condicional para expresar el total de la base de IVA trasladado a la tasa del 16% que se desprende de los pagos totales.TotalTrasladosImpuestoIVA16Specified = true; totales.TotalTrasladosImpuestoIVA16 = 1.60M;//Atributo condicional para expresar el total de los impuestos de IVA trasladado a la tasa del 16% que se desprenden de los pagos totales.TotalTrasladosBaseIVA8Specified = false; totales.TotalTrasladosBaseIVA8 = 0;//Atributo condicional para expresar el total de la base de IVA trasladado a la tasa del 8% que se desprende de los pagos totales.TotalTrasladosImpuestoIVA8Specified = false; totales.TotalTrasladosImpuestoIVA8 = 0;//Atributo condicional para expresar el total de los impuestos de IVA trasladado a la tasa del 8% que se desprenden de los pagos. totales.TotalTrasladosBaseIVA0Specified = false; totales.TotalTrasladosBaseIVA0 = 0;//Atributo condicional para expresar el total de la base de IVA trasladado a la tasa del 0% que se desprende de los pagos. totales.TotalTrasladosImpuestoIVA0Specified = false; totales.TotalTrasladosImpuestoIVA0 = 0;//Atributo condicional para expresar el total de los impuestos de IVA trasladado a la tasa del 0% que se desprenden de los pagos totales.TotalTrasladosBaseIVAExentoSpecified = false; totales.TotalTrasladosBaseIVAExento = 0;//Atributo condicional para expresar el total de la base de IVA trasladado exento que se desprende de los pagos totales.MontoTotalPagos = 10.00M;//Atributo requerido para expresar el total de los pagos que se desprenden de los nodos Pago. Servicios2.Pagos20Pago Pago = new Test_wsCFD.Servicios2.Pagos20Pago(); Pago.FechaPago = Convert.ToDateTime("2022-02-08T10:55:29");//Expresar la fecha y hora en la que el beneficiario recibe el pago Pago.FormaDePagoP = "03";//Expresar la clave de la forma de pago de los bienes o servicios amparados por el comprobante Pago.MonedaP = Test_wsCFD.Servicios2.c_Moneda.MXN;//Identifica la clave de la moneda utilizada para realizar el pago //if (Pago.MonedaP != Test_wsCFD.Servicios2.c_Moneda.MXN) //{ Pago.TipoCambioPSpecified = true; Pago.TipoCambioP = 1M;//Expresa el tipo de cambio de la moneda a la fecha en que se realizó el pago //} Pago.Monto = Convert.ToDecimal("10.00");//Expresa el importe del pago Pago.NumOperacion = "789652314";//Expresa el número de cheque, número de autorización, número de referencia, clave de rastreo en caso de ser SPEI, línea de captura o algún número de referencia análogo que identifique la operación que ampara el pago efectuado //Pago.RfcEmisorCtaOrd = "AAA010101AAA";//Expresa la clave RFC de la entidad emisora de la cuenta origen, es decir, la operadora, el banco, la institución financiera, emisor de monedero electrónico, etc. //Pago.NomBancoOrdExt = "DEMO";//Expresa el nombre del banco ordenante //Pago.CtaOrdenante = "1234567890";//Incorpora el número de la cuenta con la que se realizó el pago //Pago.RfcEmisorCtaBen = "AAA010101AAA";//Expresa la clave RFC de la entidad operadora de la cuenta destino, es decir, la operadora, el banco, la institución financiera, emisor de monedero electrónico, etc //Pago.CtaBeneficiario = "1234567890";//Incorpora el número de cuenta en donde se recibió el pago //Pago.TipoCadPagoSpecified = true; //Pago.TipoCadPago = Test_wsCFD.Servicios2.c_TipoCadenaPago.Item01; //Pago.SelloPago = System.Text.Encoding.UTF8.GetBytes("fOQ15phLjroTIyX7i8FF+kX5lJhL2I6kx0AJZ+198XkYuPqBFI5v5dh9Bt0GIZDrEgNd618tCW1JHw2jsmnqhPgh6uxyr6pu9rpXd+IoSCqG4VIAMA7pUYz3gVosukkg3wwB1IlQusH9aPk3PuPt0q/oi6WYPpzBDz4XIhvoU6I="); //Pago.CertPago = System.Text.Encoding.UTF8.GetBytes("00001000000304759430"); //Pago.CadPago = "||01|01092017|01092017|114955|40014|BANCOPPEL|TELESFORO ESPINOZA SOSA|40|137730190001172022|EIST761006C8A|SANTANDER|INNOVANCE EMPRENDEDORES EN ACCION SA DE|40|014730655044652099|IEE100705KHA|FACTURA TELESFORO|0.16|522.00|00001000000304759430||fOQ15phLjroTIyX7i8FF+kX5lJhL2I6kx0AJZ+198XkYuPqBFI5v5dh9Bt0GIZDrEgNd618tCW1JHw2jsmnqhPgh6uxyr6pu9rpXd+IoSCqG4VIAMA7pUYz3gVosukkg3wwB1IlQusH9aPk3PuPt0q/oi6WYPpzBDz4XIhvoU6I=".Replace("|", "|"); Servicios2.Pagos20PagoDoctoRelacionado DctoRelacionado = new Test_wsCFD.Servicios2.Pagos20PagoDoctoRelacionado(); DctoRelacionado.IdDocumento = "f294423e-66f6-4bc1-a162-5999d71af6d2";//Expresa el identificador del documento relacionado con el pago DctoRelacionado.Serie = "FN";//Precisa la serie del comprobante para control interno del contribuyente DctoRelacionado.Folio = "00062";//Precisa el folio del comprobante para control interno del contribuyente DctoRelacionado.MonedaDR = Test_wsCFD.Servicios2.c_Moneda.MXN;//Identifica la clave de la moneda utilizada en los importes del documento relacionado if (Pago.MonedaP != DctoRelacionado.MonedaDR) { DctoRelacionado.EquivalenciaDRSpecified = true; DctoRelacionado.EquivalenciaDR = Convert.ToDecimal("1");//Atributo condicional para expresar el tipo de cambio conforme con la moneda registrada en el documento relacionado. Es requerido cuando la moneda del documento relacionado es distinta de la moneda de pago. Se debe registrar el número de unidades de la moneda señalada en el documento relacionado que equivalen a una unidad de la moneda del pago } DctoRelacionado.NumParcialidad = "1";//Atributo requerido para expresar el número de parcialidad que corresponde al pago. DctoRelacionado.ImpSaldoAnt = Convert.ToDecimal("10.00");//Atributo requerido para expresar el monto del saldo insoluto de la parcialidad anterior. En el caso de que sea la primer parcialidad este atributo debe contener el importe total del documento relacionado. DctoRelacionado.ImpPagado = Convert.ToDecimal("10.00");//Atributo requerido para expresar el importe pagado para el documento relacionado DctoRelacionado.ImpSaldoInsoluto = Convert.ToDecimal("0");//Atributo requerido para expresar la diferencia entre el importe del saldo anterior y el monto del pago. DctoRelacionado.ObjetoImpDR = "02";//Atributo requerido para expresar si el pago del documento relacionado es objeto o no de impuesto. Servicios2.Pagos20PagoDoctoRelacionadoImpuestosDR impuestosDR = new Test_wsCFD.Servicios2.Pagos20PagoDoctoRelacionadoImpuestosDR();//Nodo condicional para registrar los impuestos aplicables conforme al monto del pago recibido, expresados a la moneda del documento relacionado. List listaRetencionesDR = new List (); Servicios2.ArrayOfPago20DoctoRelacionadoImpuestosDRRetencionDRRetencionDR retencionDR = new Test_wsCFD.Servicios2.ArrayOfPago20DoctoRelacionadoImpuestosDRRetencionDRRetencionDR(); retencionDR.BaseDR = 10.00M;//Atributo requerido para señalar la base para el cálculo de la retención conforme al monto del pago, aplicable al documento relacionado, la determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes retencionDR.ImpuestoDR = "002";//Atributo requerido para señalar la clave del tipo de impuesto retenido conforme al monto del pago, aplicable al documento relacionado. retencionDR.TipoFactorDR = Test_wsCFD.Servicios2.c_TipoFactor.Tasa;//Atributo requerido para señalar la clave del tipo de factor que se aplica a la base del impuesto. retencionDR.TasaOCuotaDR = 0.1033M;//Atributo requerido para señalar el valor de la tasa o cuota del impuesto que se retiene. retencionDR.ImporteDR = 1.03M;//Atributo requerido para señalar el importe del impuesto retenido conforme al monto del pago, aplicable al documento relacionado. listaRetencionesDR.Add(retencionDR); List listaTrasladosDR = new List (); Servicios2.ArrayOfPago20DoctoRelacionadoImpuestosDRTrasladoDRTrasladoDR trasladoDR = new Test_wsCFD.Servicios2.ArrayOfPago20DoctoRelacionadoImpuestosDRTrasladoDRTrasladoDR(); trasladoDR.BaseDR = 10.00M;//Atributo requerido para señalar la base para el cálculo del impuesto trasladado conforme al monto del pago, aplicable al documento relacionado, la determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes trasladoDR.ImpuestoDR = "002";//Atributo requerido para señalar la clave del tipo de impuesto trasladado conforme al monto del pago, aplicable al documento relacionado. trasladoDR.TipoFactorDR = Test_wsCFD.Servicios2.c_TipoFactor.Tasa;//Atributo requerido para señalar la clave del tipo de factor que se aplica a la base del impuesto. if (trasladoDR.TipoFactorDR != Test_wsCFD.Servicios2.c_TipoFactor.Exento) { trasladoDR.TasaOCuotaDRSpecified = true; trasladoDR.TasaOCuotaDR = 0.16M;//Atributo condicional para señalar el valor de la tasa o cuota del impuesto que se traslada. Es requerido cuando el atributo TipoFactorDR contenga una clave que corresponda a Tasa o Cuota. trasladoDR.ImporteDRSpecified = true; trasladoDR.ImporteDR = 1.60M;//Atributo condicional para señalar el importe del impuesto trasladado conforme al monto del pago, aplicable al documento relacionado. No se permiten valores negativos. Es requerido cuando el tipo factor sea Tasa o Cuota. } listaTrasladosDR.Add(trasladoDR); impuestosDR.RetencionesDR = listaRetencionesDR.ToArray(); impuestosDR.TrasladosDR = listaTrasladosDR.ToArray(); DctoRelacionado.ImpuestosDR = impuestosDR; ListaPagosDoctoRelacionado.Add(DctoRelacionado); Pago.DoctoRelacionado = ListaPagosDoctoRelacionado.ToArray(); Servicios2.Pagos20PagoImpuestosP impuestosP = new Test_wsCFD.Servicios2.Pagos20PagoImpuestosP(); List listaRetencionesP = new List (); Servicios2.ArrayOfPago20ImpuestosPRetencionPRetencionP retencionP = new Test_wsCFD.Servicios2.ArrayOfPago20ImpuestosPRetencionPRetencionP(); retencionP.ImpuestoP = "002";//Atributo requerido para señalar la clave del tipo de impuesto retenido conforme al monto del pago retencionP.ImporteP = 1.03M;//Atributo requerido para señalar el importe del impuesto retenido conforme al monto del pago. listaRetencionesP.Add(retencionP); List listaTrasladosP = new List (); Servicios2.ArrayOfPago20ImpuestosPTrasladoPTrasladoP trasladoP = new Test_wsCFD.Servicios2.ArrayOfPago20ImpuestosPTrasladoPTrasladoP(); trasladoP.BaseP = 10.00M;//Atributo requerido para señalar la suma de los atributos BaseDR de los documentos relacionados del impuesto trasladado trasladoP.ImpuestoP = "002";//Atributo requerido para señalar la clave del tipo de impuesto trasladado conforme al monto del pago. trasladoP.TipoFactorP = Test_wsCFD.Servicios2.c_TipoFactor.Tasa;//Atributo requerido para señalar la clave del tipo de factor que se aplica a la base del impuesto if (trasladoP.TipoFactorP != Test_wsCFD.Servicios2.c_TipoFactor.Exento) { trasladoP.TasaOCuotaPSpecified = true; trasladoP.TasaOCuotaP = 0.16M;//Atributo condicional para señalar el valor de la tasa o cuota del impuesto que se traslada en los documentos relacionados trasladoP.ImportePSpecified = true; trasladoP.ImporteP = 1.60M;//Atributo condicional para señalar la suma del impuesto trasladado, agrupado por ImpuestoP, TipoFactorP y TasaOCuotaP } listaTrasladosP.Add(trasladoP); impuestosP.RetencionesP = listaRetencionesP.ToArray(); impuestosP.TrasladosP = listaTrasladosP.ToArray(); Pago.ImpuestosP = impuestosP; ListadoPagos.Add(Pago); Pagos.Pago = ListadoPagos.ToArray(); Pagos.Totales = totales; comprobante.Pagos20 = Pagos; string Usuario = "demoCFDI"; string Password = "CPKRTQ6FTD43)~"; Servifact.Servicios Servicio = new Servifact.Servicios(); return Servicio.TimbrarComprobante(ref comprobante, Usuario, Password); }
private string ComprobanteV4CartaPorteV2Ingreso(string RFC, string Serie, int Folio) { Servifact.Comprobante Comprobante = new Servifact.Comprobante(); //Comprobante Servifact.Emisor Emisor = new Servifact.Emisor(); //Emisor Servifact.Receptor Receptor = new Servifact.Receptor(); //Receptor ListConceptos = new List (); //Listado de Conceptos List UUIDRelacionados = new List (); //Listado de UUIDRelacionados Servifact.CFDIRelacionados CFDIRelacionados = new Servifact.CFDIRelacionados(); Servifact.UUIDRelacionado UUIDRelacionado = new Servifact.UUIDRelacionado(); // Carta Porte Servifact.CartaPorte CartaPorte = new Servifact.CartaPorte();//Elemento Carta Porte List ListaUbicaciones = new List (); Servifact.ArrayOfCartaPorteUbicacionUbicacion UbicacionOrigen = new Servifact.ArrayOfCartaPorteUbicacionUbicacion();//Elemento ubicaciones de la carta porte Servifact.ArrayOfCartaPorteUbicacionUbicacion UbicacionDestino = new Servifact.ArrayOfCartaPorteUbicacionUbicacion();//Elemento ubicaciones de la carta porte Servifact.CartaPorteMercancias Mercancias = new Servifact.CartaPorteMercancias();//Elemento Mercancias de la carta porte /******************************** DATOS DEL COMPROBANTE ********************************/ Comprobante.Version = Servifact.Versiones.Ver_4; Comprobante.SerieFolio = Serie; Comprobante.Nume_Folio = Folio; Comprobante.Fech_Comprobante = DateTime.Now; Comprobante.FormaPago = "01"; Comprobante.Moneda = Servifact.Monedas.MXN; Comprobante.TipoComprobante = "I"; Comprobante.MetodoPago = "PUE"; Comprobante.Exportacion = "01"; //Atributo requerido para expresar si el comprobante ampara una operación de exportación. Comprobante.LugarExpedicion = "80060"; Comprobante.CondicionesPago = "Contado"; /******************************** DOCUMENTOS RELACIONADOS ********************************/ List ListaCfdisRelacionados = new List ();//Elemento CFDIRelacionados Servifact.CFDIRelacionados cfdisrelacionados2 = new Servifact.CFDIRelacionados(); cfdisrelacionados2.TipoRelacion = "04";//Atributo que indica la clave de la relación que existe entre éste que se esta generando y el o los CFDI previos. List listaUUIDs2 = new List ();//listado de UUIDS Relacionados Servifact.UUIDRelacionado uuid2 = new Servifact.UUIDRelacionado(); uuid2.UUID = "453b672b-463d-4d95-91a2-001b651a6ace";//folio fiscal (UUID) de un CFDI relacionado con el presente comprobante listaUUIDs2.Add(uuid2); cfdisrelacionados2.UUIDsRelacionados = listaUUIDs2.ToArray(); ListaCfdisRelacionados.Add(cfdisrelacionados2); Comprobante.ListaCFDIRelacionados = ListaCfdisRelacionados.ToArray(); /******************************** DATOS DEL EMISOR Datos de la empresa que espide la factura. ********************************/ Emisor.RFC = RFC; Emisor.Nomb_Comercial = "ILUNIMADORA DE ALMACENES SA DE CV";//"XOCHILT CASAS CHAVEZ"; //Nombre con el que se conoce a la empresa o persona que emite el comprobante Emisor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV";//"XOCHILT CASAS CHAVEZ"; //Nombre con el que esta registrado ante hacienda quien emite el comprobante Emisor.RegimenFiscal = "601";//Clave del régimen del contribuyente emisor al que aplicará el efecto fiscal de este comprobante Comprobante.Emisor = Emisor; /******************************** DATOS DEL RECEPTOR Datos de la empresa a quien espide la factura. ********************************/ //Receptor /*DATOS DE LA EMPRESA A QUIEN SE EXPIDE LA FACTURA*/ Receptor.RFC = "IAGL830810VA7"; //RFC de la empresa o persona a quien se le va a emitir el comprobante Receptor.Nomb_RazonSocial = "LORENZO IBARRA GARCIA"; //Nombre con el que esta registrado ante hacienda, quien se le va a emitir el comprobante Receptor.Nomb_Comercial = "LORENZO IBARRA GARCIA"; //Nombre con el que se le conoce a la empresa o persona que se le va a emitir el comprobante Receptor.UsoCFDI = "G01"; //Clave del uso que dará a esta factura el receptor del CFDI Receptor.Domi_CodigoPostal = "80000";//Atributo requerido para registrar el código postal del domicilio fiscal del receptor del comprobante. Receptor.RegimenFiscal = "606"; //Atributo requerido para incorporar la clave del régimen fiscal del contribuyente receptor al que aplicará el efecto fiscal de este comprobante. Comprobante.Receptor = Receptor; /******************************** CONCEPTOS ********************************/ Servifact.Concepto Concepto = new Servifact.Concepto(); Concepto.ClaveProductoServicio = "78101802"; Concepto.Cantidad = 1; Concepto.ClaveUnidad = "E48"; Concepto.Unidad = "UNIDAD DE SERVICIO"; Concepto.Descripcion = "FLETE"; Concepto.PrecioUnitario = Convert.ToDouble(317.2800); //6000.00; Concepto.Importe = Convert.ToDouble(Concepto.Cantidad) * Concepto.PrecioUnitario; Concepto.Descuento = 0.00; Concepto.NoIdentificacion = Serie + Folio; // Ejemplo prueba Concepto.ObjetoImpuesto = "02";//Atributo requerido para expresar si la operación comercial es objeto o no de impuesto. /******************************** IMPUESTOS DEL CONCEPTO ********************************/ List ListaInpuestos = new List (); // TRASLADOS Servifact.Impuesto ImpuestosTrasladados = new Servifact.Impuesto(); ImpuestosTrasladados.ClaveSATImpuesto = "002"; ImpuestosTrasladados.Nombre = "IVA"; ImpuestosTrasladados.Base = Math.Round(((Convert.ToDouble(Concepto.Cantidad) * Concepto.PrecioUnitario) - Concepto.Descuento), 2); //1 FEDERAL, 2 LOCALES ImpuestosTrasladados.Federal = 1; //1 TRASLADOS, 2 RETENCION ImpuestosTrasladados.Tipo = 1; ImpuestosTrasladados.TipoFactor = Servifact.TiposFactor.Tasa; ImpuestosTrasladados.Tasa = double.Parse("0.16"); ImpuestosTrasladados.Importe = Math.Round(ImpuestosTrasladados.Base * ImpuestosTrasladados.Tasa, 2); ListaInpuestos.Add(ImpuestosTrasladados); Concepto.Impuestos = ListaInpuestos.ToArray(); /******************************** CONCEPTOS 2 ********************************/ Servifact.Concepto Concepto2 = new Servifact.Concepto(); Concepto2.ClaveProductoServicio = "84131504"; Concepto2.Cantidad = 1; Concepto2.ClaveUnidad = "E48"; Concepto2.Unidad = "UNIDAD DE SERVICIO"; Concepto2.Descripcion = "SEGURO"; Concepto2.PrecioUnitario = Convert.ToDouble(12.0000); //6000.00; Concepto2.Importe = Convert.ToDouble(Concepto2.Cantidad) * Concepto2.PrecioUnitario; Concepto2.Descuento = 0.00; Concepto2.NoIdentificacion = Serie + Folio; // Ejemplo prueba Concepto2.ObjetoImpuesto = "02";//Atributo requerido para expresar si la operación comercial es objeto o no de impuesto. /******************************** IMPUESTOS DEL CONCEPTO ********************************/ List ListaInpuestos2 = new List (); // TRASLADOS Servifact.Impuesto ImpuestosTrasladados2 = new Servifact.Impuesto(); ImpuestosTrasladados2.ClaveSATImpuesto = "002"; ImpuestosTrasladados2.Nombre = "IVA"; ImpuestosTrasladados2.Base = Math.Round(((Convert.ToDouble(Concepto2.Cantidad) * Concepto2.PrecioUnitario) - Concepto2.Descuento), 2); //1 FEDERAL, 2 LOCALES ImpuestosTrasladados2.Federal = 1; //1 TRASLADOS, 2 RETENCION ImpuestosTrasladados2.Tipo = 1; ImpuestosTrasladados2.TipoFactor = Servifact.TiposFactor.Tasa; ImpuestosTrasladados2.Tasa = double.Parse("0.16"); ImpuestosTrasladados2.Importe = Math.Round(ImpuestosTrasladados2.Base * ImpuestosTrasladados2.Tasa, 2); ListaInpuestos2.Add(ImpuestosTrasladados2); Concepto2.Impuestos = ListaInpuestos2.ToArray(); /******************************** CONCEPTOS 3 ********************************/ Servifact.Concepto Concepto3 = new Servifact.Concepto(); Concepto3.ClaveProductoServicio = "78102203"; Concepto3.Cantidad = 1; Concepto3.ClaveUnidad = "E48"; Concepto3.Unidad = "UNIDAD DE SERVICIO"; Concepto3.Descripcion = "ENTREGA A DOMICILIO"; Concepto3.PrecioUnitario = Convert.ToDouble(60.0000); Concepto3.Importe = Convert.ToDouble(Concepto3.Cantidad) * Concepto3.PrecioUnitario; Concepto3.Descuento = 0.00; Concepto3.NoIdentificacion = Serie + Folio; // Ejemplo prueba Concepto3.ObjetoImpuesto = "02";//Atributo requerido para expresar si la operación comercial es objeto o no de impuesto. /******************************** IMPUESTOS DEL CONCEPTO ********************************/ List ListaInpuestos3 = new List (); // TRASLADOS Servifact.Impuesto ImpuestosTrasladados3 = new Servifact.Impuesto(); ImpuestosTrasladados3.ClaveSATImpuesto = "002"; ImpuestosTrasladados3.Nombre = "IVA"; ImpuestosTrasladados3.Base = Math.Round(((Convert.ToDouble(Concepto3.Cantidad) * Concepto3.PrecioUnitario) - Concepto3.Descuento), 2); //1 FEDERAL, 2 LOCALES ImpuestosTrasladados3.Federal = 1; //1 TRASLADOS, 2 RETENCION ImpuestosTrasladados3.Tipo = 1; ImpuestosTrasladados3.TipoFactor = Servifact.TiposFactor.Tasa; ImpuestosTrasladados3.Tasa = double.Parse("0.16"); ImpuestosTrasladados3.Importe = Math.Round(ImpuestosTrasladados3.Base * ImpuestosTrasladados3.Tasa, 2); ListaInpuestos3.Add(ImpuestosTrasladados3); Concepto3.Impuestos = ListaInpuestos3.ToArray(); Conceptos.Add(Concepto); Conceptos.Add(Concepto2); Conceptos.Add(Concepto3); Comprobante.Conceptos = Conceptos.ToArray(); /******************************** CARTA PORTE ********************************/ CartaPorte.TranspInternac = Servifact.CartaPorteTranspInternac.No;//Atributo requerido para expresar si los bienes o mercancías que son transportadas ingresan o salen del territorio nacional. if (CartaPorte.TranspInternac == Servifact.CartaPorteTranspInternac.Sí) { CartaPorte.EntradaSalidaMercSpecified = true; CartaPorte.EntradaSalidaMerc = Servifact.CartaPorteEntradaSalidaMerc.Entrada;//Atributo requerido para expresar si los bienes o mercancías que son transportadas ingresan o salen del territorio nacional. CartaPorte.ViaEntradaSalida = "01"; //Atributo condicional para precisar la vía de ingreso o salida de los bienes o mercancías en territorio nacional. CartaPorte.PaisOrigenDestinoSpecified = true; CartaPorte.PaisOrigenDestino = Servifact.c_Pais.USA;//Atributo condicional para registrar la clave del país de origen o destino de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte. } CartaPorte.TotalDistRecSpecified = true; CartaPorte.TotalDistRec = Convert.ToDecimal(100); //Atributo condicional para registrar la suma de las distancias recorridas en kilómetros, registradas en el atributo “Ubicaciones:Ubicacion:DistanciaRecorrida” para el traslado de los bienes o mercancías /******************************** UBUCACIONES CARTA PORTE ********************************/ //------------------------------- // UBICACION ORIGEN //------------------------------- UbicacionOrigen.TipoUbicacion = Servifact.ArrayOfCartaPorteUbicacionUbicacionTipoUbicacion.Origen;//Atributo requerido para precisar si el tipo de ubicación corresponde al origen o destino de las ubicaciones para el traslado de los bienes y/o mercancías en los distintos medios de transporte. //UbicacionOrigen.IDUbicacion = "OR123456"; //Atributo condicional para registrar una clave que sirva para identificar el punto de salida de los bienes o mercancías que se trasladan por los distintos medios de transporte, mediante un folio, el cual estará compuesto de la siguiente forma: el acrónimo “OR” seguido de 6 dígitos numéricos asignados por el contribuyente que emite el comprobante para su identificación. UbicacionOrigen.RFCRemitenteDestinatario = "IAGL830810VA7"; //Atributo requerido para registrar el RFC del remitente o destinatario de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte UbicacionOrigen.NombreRemitenteDestinatario = "LORENZO IBARRA GARCIA"; //Atributo opcional para registrar el nombre del remitente o destinatario de los bienes o mercancías que se trasladan. if (UbicacionOrigen.RFCRemitenteDestinatario == "XEXX010101000") { UbicacionOrigen.NumRegIdTrib = "";//Atributo condicional para incorporar el número de identificación o registro fiscal del país de residencia para los efectos fiscales del remitente o destinatario de los bienes o mercancías que se trasladan, cuando sea residente en el extranjero. UbicacionOrigen.ResidenciaFiscalSpecified = true; UbicacionOrigen.ResidenciaFiscal = Servifact.c_Pais.USA;//Atributo condicional para registrar la clave del país de residencia para efectos fiscales del remitente o destinatario de los bienes o mercancías, conforme con el catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. } UbicacionOrigen.FechaHoraSalidaLlegada = Convert.ToDateTime("2023-08-29T18:00:00");//Atributo requerido para la expresión de la fecha y hora en la que salen o llegan los bienes y/o mercancías de origen o al destino, respectivamente. Se expresa en la forma AAAA-MMDDThh:mm:ss //UbicacionOrigen.TipoEstacion = "01";//Atributo condicional para precisar el tipo de estación por el que pasan los bienes o mercancías durante su traslado en los distintos medios de transporte. //NODO DOMICILIO if (UbicacionOrigen.TipoEstacion != "02") { Servifact.ArrayOfCartaPorteUbicacionUbicacionDomicilio Domicilio = new Servifact.ArrayOfCartaPorteUbicacionUbicacionDomicilio();//Nodo condicional para registrar información del domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte Domicilio.Calle = "ANTONIO ROSALES";//Atributo requerido para precisar la calle en la que está ubicado el domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.NumeroExterior = "42";//Atributo opcional que sirve para expresar el número exterior en donde se ubica el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.NumeroInterior = "103";//Atributo opcional que sirve para expresar el número interior, en caso de existir, en donde se ubica el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Colonia = "0001"; //Atributo opcional que sirve para expresar la colonia o dato análogo en donde se ubica el domicilio del origen o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Localidad = "02"; //Atributo opcional que sirve para precisar la ciudad, población, distrito u otro análogo en donde se encuentra ubicado el domicilio del origen y/o destino delos bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Municipio = "006";//Atributo opcional que sirve para precisar el municipio, delegación o alcaldía, condado u otro análogo en donde se encuentra ubicado el domicilio destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Estado = "SIN";//Atributo requerido para precisar el estado, entidad, región, comunidad, u otra figura análoga en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. El catálogo se publica en el portal del SAT en Internet y es conforme con la especificación ISO 3166-2. Domicilio.Pais = Servifact.c_Pais.MEX;//Atributo requerido que sirve para precisar la clave del país en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte, conforme con el catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. Domicilio.CodigoPostal = "80000"; //Atributo requerido para asentar el código postal (PO, BOX) en donde se encuentra el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Pais = Servifact.c_Pais.MEX;//Atributo requerido que sirve para precisar la clave del país en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte, conforme con el catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. UbicacionOrigen.Domicilio = Domicilio; } ListaUbicaciones.Add(UbicacionOrigen); //------------------------------- // UBICACION DESTINO //------------------------------- UbicacionDestino.TipoUbicacion = Servifact.ArrayOfCartaPorteUbicacionUbicacionTipoUbicacion.Destino;//Atributo requerido para precisar si el tipo de ubicación corresponde al origen o destino de las ubicaciones para el traslado de los bienes y/o mercancías en los distintos medios de transporte. //UbicacionDestino.IDUbicacion = "DE123456"; //Atributo condicional para registrar una clave que sirva para identificar el punto de salida de los bienes o mercancías que se trasladan por los distintos medios de transporte, mediante un folio, el cual estará compuesto de la siguiente forma: el acrónimo “DE” seguido de 6 dígitos numéricos asignados por el contribuyente que emite el comprobante para su identificación. UbicacionDestino.RFCRemitenteDestinatario = "ACA010726HQ1"; //Atributo requerido para registrar el RFC del remitente o destinatario de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte UbicacionDestino.NombreRemitenteDestinatario = "AIRES DE CAMPO";//Atributo opcional para registrar el nombre del remitente o destinatario de los bienes o mercancías que se trasladan. if (UbicacionDestino.RFCRemitenteDestinatario == "XEXX010101000") { UbicacionDestino.NumRegIdTrib = "";//Atributo condicional para incorporar el número de identificación o registro fiscal del país de residencia para los efectos fiscales del remitente o destinatario de los bienes o mercancías que se trasladan, cuando sea residente en el extranjero. UbicacionDestino.ResidenciaFiscalSpecified = true; UbicacionDestino.ResidenciaFiscal = Servifact.c_Pais.USA;//Atributo condicional para registrar la clave del país de residencia para efectos fiscales del remitente o destinatario de los bienes o mercancías, conforme con el catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. } UbicacionDestino.FechaHoraSalidaLlegada = Convert.ToDateTime("2023-08-29T18:00:00");//Atributo requerido para la expresión de la fecha y hora en la que salen o llegan los bienes y/o mercancías de origen o al destino, respectivamente. Se expresa en la forma AAAA-MMDDThh:mm:ss //UbicacionDestino.TipoEstacion = "01";//Atributo condicional para precisar el tipo de estación por el que pasan los bienes o mercancías durante su traslado en los distintos medios de transporte. UbicacionDestino.DistanciaRecorridaSpecified = true; UbicacionDestino.DistanciaRecorrida = Convert.ToDecimal(100); //Atributo condicional para registrar la distancia recorrida en kilómetros de la ubicación de Origen a la de Destino parcial o final, de los distintos medios de transporte que trasladan los bienes o mercancías. if (UbicacionDestino.TipoEstacion != "02") { Servifact.ArrayOfCartaPorteUbicacionUbicacionDomicilio Domicilio = new Servifact.ArrayOfCartaPorteUbicacionUbicacionDomicilio();//Nodo condicional para registrar información del domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte Domicilio.Referencia = "COLONIA CERCA DE LOMITA"; //Atributo requerido para precisar la calle en la que está ubicado el domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Calle = "CAMINOS DEL SUR"; //Atributo requerido para precisar la calle en la que está ubicado el domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.NumeroExterior = "230";//Atributo opcional que sirve para expresar el número exterior en donde se ubica el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. //Domicilio.NumeroInterior = ""; Domicilio.Colonia = "1761"; Domicilio.Localidad = "11"; Domicilio.Municipio = "016"; Domicilio.Estado = "CMX"; Domicilio.Pais = Servifact.c_Pais.MEX;//Atributo requerido que sirve para precisar la clave del país en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte, conforme con el catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. Domicilio.CodigoPostal = "11210"; UbicacionDestino.Domicilio = Domicilio; } ListaUbicaciones.Add(UbicacionDestino); CartaPorte.Ubicaciones = ListaUbicaciones.ToArray(); /************************************** NODO MERCANCIAS DE LA CARTA PORTE **************************************/ decimal sumaPesosKG = 0; //NODO MERCANCIA List Listamercancias = new List ();//Nodo requerido para registrar información de los bienes o mercancías que se trasladan en los distintos medios de transporte Servifact.CartaPorteMercanciasMercancia mercancia = new Servifact.CartaPorteMercanciasMercancia();//Nodo requerido para registrar información de los bienes o mercancías que se trasladan en los distintos medios de transporte mercancia.BienesTransp = "42151638"; //"31181701"; //Atributo requerido para expresar la clave de producto de los bienes o mercancías que se trasladan en los distintos medios de transporte. //mercancia.ClaveSTCC = "01394";//Atributo opcional para expresar la clave de producto conforme al catálogo de la STCC cuando el medio de transporte es ferroviario. mercancia.Descripcion = "Tijeras dentales"; //"PAQUETES"; //Atributo requerido para describir los bienes o mercancías que se trasladan en los distintos medios de transporte. mercancia.Cantidad = 1; //Atributo requerido para expresar la cantidad de los bienes o mercancías que se trasladan en los distintos medios de transporte mercancia.ClaveUnidad = "H87"; //Atributo requerido para precisar la clave de unidad de medida estandarizada aplicable para la cantidad de los bienes o mercancías que se trasladan en los distintos medios de transporte. La unidad debe corresponder con la descripción de los bienes o mercancías registrados. mercancia.Unidad = "PIEZA"; //Atributo opcional para precisar la unidad de medida propia de los bienes o mercancías que se trasladan en los distintos medios de transporte, aplicable para la cantidad. La unidad debe corresponder con la descripción de los bienes o mercancías. //mercancia.Dimensiones = "30/40/30cm";//Atributo opcional para expresar las medidas del empaque de los bienes o mercancías que se trasladan vía aérea. Se debe registrar la longitud, la altura y la anchura en centímetros o en pulgadas separados dichos valores por una diagonal. //mercancia.MaterialPeligrosoSpecified = true; //mercancia.MaterialPeligroso = Servifact.CartaPorteMercanciasMercanciaMaterialPeligroso.No;//Atributo condicional para precisar si los bienes o mercancías que se trasladan son considerados material peligroso. mercancia.MaterialPeligroso = Servifact.CartaPorteMercanciasMercanciaMaterialPeligroso.No;//Atributo condicional para precisar si los bienes o mercancías que se trasladan son considerados material peligroso. if (mercancia.MaterialPeligroso == Servifact.CartaPorteMercanciasMercanciaMaterialPeligroso.Sí) { mercancia.CveMaterialPeligroso = "";//Atributo condicional para precisar la clave del tipo de material peligroso que se transporta. mercancia.Embalaje = "";//Atributo condicional para precisar la clave del tipo de embalaje que se requiere para transportar el material o residuo peligroso. mercancia.DescripEmbalaje = "";//Atributo opcional para expresar la descripción del embalaje en el que se transporta los bienes o mercancías que se consideran material o residuo peligroso. } mercancia.PesoEnKg = 100; ;//Atributo requerido para indicar el peso en kilogramos de los bienes o mercancías que se trasladan en los distintos medios de transporte mercancia.ValorMercancia = 100; //Atributo condicional para expresar el monto del valor de los bienes o mercancías que se trasladan en los distintos medios de transporte, de acuerdo al valor mercado, el valor pactado en la contraprestación o al valor estimado que determine el contribuyente. mercancia.Moneda = Servifact.c_Moneda.MXN;//Atributo condicional para identificar la clave de la moneda utilizada para expresar el valor de los bienes o mercancías que se trasladan en los distintos medios de transporte, cuando se usa moneda nacional se registra MXN,conforme con la especificación ISO 4217 if (CartaPorte.TranspInternac == Servifact.CartaPorteTranspInternac.Sí) { mercancia.FraccionArancelaria = "";//Atributo condicional que sirve para expresar la clave de la fracción arancelaria correspondiente a la descripción de los bienes o mercancías que se trasladan en los distintos medios de transporte como importación o exportación, este dato se vuelve requerido cuando el atributo “EntradaSalidaMerc” contenga información. Debe ser conforme con el catálogo c_FraccionArancelaria publicado en el portal del SAT en Internet. mercancia.UUIDComercioExt = "";//Atributo opcional para expresar el folio fiscal o UUID del comprobante de comercio exterior que se relaciona, este dato se vuelve requerido cuando el atributo “EntradaSalidaMerc” contenga el valor “Salida”. if (CartaPorte.EntradaSalidaMerc == Servifact.CartaPorteEntradaSalidaMerc.Entrada) { List listaPedimentos = new List (); Servifact.CartaPorteMercanciasMercanciaPedimentos Pedimentos = new Servifact.CartaPorteMercanciasMercanciaPedimentos();//Nodo condicional para registrar la información del(los) número(s) de pedimento(s) de importación que se encuentra(n) asociado(s) al traslado de los bienes y/o mercancías de procedencia extranjera para acreditar la legal estancia o tenencia durante su traslado en territorio nacional. Pedimentos.Pedimento = "";//Atributo requerido para expresar el número de pedimento de importación que se encuentra asociado con el traslado de los bienes y/o mercancías de procedencia extranjera para acreditar la legal estancia y tenencia durante su traslado en territorio nacional, el cual se expresa en el siguiente formato: últimos 2 dígitos del año de validación seguidos por dos espacios, 2 dígitos de la aduana de despacho seguidos por dos espacios, 4 dígitos del número de la patente seguidos por dos espacios, 1 dígito que corresponde al último dígito del año en curso, salvo que se trate de un pedimento consolidado iniciado en el año inmediato anterior o del pedimento original de una rectificación, seguido de 6 dígitos de la numeración progresiva por aduana. listaPedimentos.Add(Pedimentos); mercancia.Pedimentos = listaPedimentos.ToArray(); } } if (Mercancias.TransporteMaritimo != null) { Servifact.CartaPorteMercanciasMercanciaDetalleMercancia DetMer = new Servifact.CartaPorteMercanciasMercanciaDetalleMercancia();//Nodo condicional para registrar mayor detalle de los bienes o mercancías que se transportan y será requerido cuando el traslado sea vía marítima DetMer.UnidadPesoMerc = "X4A";//Atributo requerido para expresar la clave de unidad de medida estandarizada del peso de los bienes o mercancías que se trasladan. DetMer.PesoBruto = 0;//Atributo requerido para expresar el peso total bruto de los bienes o mercancías que se trasladan. DetMer.PesoNeto = 0;//Atributo requerido para expresar el peso total neto de los bienes o mercancías que se trasladan. DetMer.PesoTara = 0;//Atributo requerido para expresar el peso bruto, menos el peso neto de las mercancías que se trasladan. DetMer.NumPiezasSpecified = true; DetMer.NumPiezas = 1; //Atributo opcional para registrar el número de piezas de los bienes o mercancías que se trasladan. mercancia.DetalleMercancia = DetMer; } sumaPesosKG += mercancia.PesoEnKg; Listamercancias.Add(mercancia); Mercancias.PesoBrutoTotal = 100; //Mercancias.PesoBrutoTotal = sumaPesosKG;//Atributo requerido para registrar la suma del peso bruto total estimado de los bienes y/o mercancías que se trasladan en los distintos medios de transporte //Mercancias.UnidadPeso = "X4A";//Atributo requerido para expresar la clave de unidad de medida estandarizada del peso de los bienes o mercancías que se trasladan vía férrea y aérea. Mercancias.UnidadPeso = "XKI"; //ListaGenerica[0].ClaveUnidad; //"X4A";//Atributo requerido para expresar la clave de unidad de medida estandarizada del peso de los bienes o mercancías que se trasladan vía férrea y aérea. //Mercancias.PesoNetoTotal = 0;//Atributo condicional para registrar la suma de los valores registrados en el atributo “PesoNeto” del nodo “DetalleMercancia” del elemento “Mercancia”. Mercancias.NumTotalMercancias = 1; //Atributo requerido para expresar el número total de los bienes o mercancías que se trasladan en los distintos medios de transporte, identificándose por cada nodo "Mercancia" registrado en el complemento. Mercancias.CargoPorTasacion = 0;//Atributo opcional para expresar el importe pagado por la tasación de los bienes o mercancías que se trasladan vía aérea. Mercancias.Mercancia = Listamercancias.ToArray(); CartaPorte.Mercancias = Mercancias; ///*NODO AUTOTRANSPORTE FEDERAL*/ /// Servifact.CartaPorteMercanciasAutotransporte auto = new Servifact.CartaPorteMercanciasAutotransporte();//Nodo condicional para registrar la información que permita la identificación del autotransporte de carga federal, por medio del cual se transportan los bienes o mercancías, que transitan a través de las carreteras federales del territorio nacional. auto.PermSCT = Servifact.c_TipoPermiso.TPAF01; //Atributo requerido para precisar la clave del tipo de permiso proporcionado por la SCT, el cual debe corresponder de acuerdo al tipo de autotransporte utilizado para el traslado de los bienes o mercancías registrado en el catálogo catCartaPorte:c_TipoPermiso. //auto.PermSCT = (Servifact.c_TipoPermiso)transporte.idTipoPermiso - 1; //Atributo requerido para precisar la clave del tipo de permiso proporcionado por la SCT, el cual debe corresponder de acuerdo al tipo de autotransporte utilizado para el traslado de los bienes o mercancías registrado en el catálogo catCartaPorte:c_TipoPermiso. auto.NumPermisoSCT = "0047SEX25052011021001095"; //Atributo requerdo para precisar el número del permiso otorgado por la SCT, el cual se debe capturar de acuerdo al tipo de autotransporte utilizado para el traslado de los bienes o mercancías. //NODO IDENTIFICACION VEHICULAR Servifact.CartaPorteMercanciasAutotransporteIdentificacionVehicular identVehi = new Servifact.CartaPorteMercanciasAutotransporteIdentificacionVehicular();//Nodo requerido para registrar los datos de identificación del autotransporte en el que se trasladan los bienes o mercancías. identVehi.ConfigVehicular = Servifact.c_ConfigAutotransporte.C2; //(Servifact.c_ConfigAutotransporte)ModeloGenerico.idAutotransporte - 1; // Servifact.c_ConfigAutotransporte.VL; //Atributo requerido para expresar la clave de nomenclatura del autotransporte que es utilizado para transportar los bienes o mercancías. identVehi.PlacaVM = "59AS9B"; //Atributo requerido para registrar el valor de la placa vehicular del autotransporte que es utilizado para transportar los bienes o mercancías, se deben registrar solo los caracteres alfanuméricos, sin guiones y espacios. identVehi.AnioModeloVM = 2021; //Atributo requerido para registrar el año del autotransporte que es utilizado para transportar los bienes o mercancías. auto.IdentificacionVehicular = identVehi; //NODO SEGUROS Servifact.CartaPorteMercanciasAutotransporteSeguros Seguro = new Servifact.CartaPorteMercanciasAutotransporteSeguros();//Nodo requerido para registrar los datos de las pólizas de seguro que cubren los riesgos en el traslado de los bienes y/o mercancías. Seguro.AseguraRespCivil = "3000000";//Atributo requerido para registrar el nombre de la aseguradora que cubre los riesgos por responsabilidad civil del autotransporte utilizado para el traslado de los bienes y/o mercancías. Seguro.PolizaRespCivil = "3200360742";//Atributo requerido para registrar el número de póliza asignado por la aseguradora, que cubre los riesgos por responsabilidad civil del autotransporte utilizado para el traslado de los bienes y/o mercancías. auto.Seguros = Seguro; Mercancias.Autotransporte = auto; CartaPorte.Mercancias = Mercancias; ///*NODO FIGURA TRANSPORTE*/ //Choferes operador = GestorChoferes.ObtenerChofer(ModeloGenerico.idOperador); List ListaTiposFigura = new List (); /// //NODO OPERADORES Servifact.ArrayOfCartaPorteTiposFiguraTiposFigura TipoFiguraOperador = new Servifact.ArrayOfCartaPorteTiposFiguraTiposFigura(); TipoFiguraOperador.TipoFigura = "01";//Atributo requerido para registrar la clave de la figura de transporte que interviene en el traslado de los bienes y/o mercancías. TipoFiguraOperador.RFCFigura = "VICR640831FE6"; //Atributo condicional para registrar el RFC de la figura de transporte que interviene en el traslado de los bienes y/o mercancías. TipoFiguraOperador.NumLicencia = "SIN.0111299"; //Atributo condicional para expresar el número de la licencia o el permiso otorgado al operador del autotransporte de carga en el que realiza el traslado de los bienes y/o mercancías. TipoFiguraOperador.NombreFigura = "JOSE RAMON VIDACA CHAIDEZ"; //Atributo opcional para registrar el nombre de la figura de transporte que interviene en el traslado de los bienes y/o mercancías. if (TipoFiguraOperador.RFCFigura == "") { TipoFiguraOperador.NumRegIdTribFigura = "";//Atributo condicional para registrar el número de identificación o registro fiscal del país de residencia de la figura de transporte que interviene en el traslado de los bienes y/o mercancías, cuando se trate de residentes en el extranjero para los efectos fiscales correspondientes. TipoFiguraOperador.ResidenciaFiscalFiguraSpecified = true; TipoFiguraOperador.ResidenciaFiscalFigura = Servifact.c_Pais.USA;//Atributo condicional para registrar la clave del país de residencia de la figura de transporte que interviene en el traslado de los bienes y/o mercancías para los efectos fiscales correspondientes. } Servifact.ArrayOfCartaPorteTiposFiguraTiposFiguraDomicilio DomicilioOperador = new Servifact.ArrayOfCartaPorteTiposFiguraTiposFiguraDomicilio();//Nodo opcional para registrar información del domicilio del(los) tipo(s) de figura transporte que intervenga(n) en el traslado de los bienes y/o mercancías. //DomicilioOperador.Referencia = ""; DomicilioOperador.Calle = "Lomita"; DomicilioOperador.NumeroExterior = "1150";//Atributo opcional que sirve para expresar el número exterior en donde se ubica el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. DomicilioOperador.NumeroInterior = "A"; DomicilioOperador.Colonia = "0168"; DomicilioOperador.Localidad = "02"; DomicilioOperador.Municipio = "006"; //Atributo opcional para precisar la clave del municipio, delegación o alcaldía, condado u otro análogo en donde se encuentra ubicado el domicilio del propietario del transporte DomicilioOperador.Estado = "SIN"; //Atributo requerido para precisar el estado, entidad, región, comunidad, u otra figura análoga en donde se encuentra ubicado el domicilio del propietario del transporte. DomicilioOperador.Pais = Servifact.c_Pais.MEX;//Atributo requerido que sirve para precisar la clave del país en donde se encuentra ubicado el domicilio del propietario del transporte, conforme al catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. DomicilioOperador.CodigoPostal = "80199"; //Atributo requerido para asentar el código postal (PO, BOX) en donde se encuentra ubicado el domicilio del propietario del transporte. TipoFiguraOperador.Domicilio = DomicilioOperador; ListaTiposFigura.Add(TipoFiguraOperador); CartaPorte.FiguraTransporte = ListaTiposFigura.ToArray(); Comprobante.CartaPorte = CartaPorte; Comprobante.Emisor = Emisor; Comprobante.Receptor = Receptor; Comprobante.Conceptos = Conceptos.ToArray(); Comprobante.CartaPorte = CartaPorte; string Usuario = "demoCFDI"; string Password = "CPKRTQ6FTD43)~"; Servifact.Servicios Servicio = new Servifact.Servicios(); return Servicio.TimbrarComprobante(ref Comprobante, Usuario, Password); }
private string ComprobanteV4CartaPorteV2Traslado(RFC, Serie, Folio) { Servicios2.Comprobante Comprobante = new Servicios2.Comprobante(); Servicios2.Emisor emisor = new Servicios2.Emisor(); Servicios2.Receptor receptor = new Servicios2.Receptor(); ListListaConceptos = new List (); Comprobante.Version = Servicios2.Versiones.Ver_4; // <- Nuevo Comprobante.TipoComprobante = "T"; Comprobante.SerieFolio = Serie; Comprobante.Nume_Folio = Folio; Comprobante.Fech_Comprobante = DateTime.Now; Comprobante.Moneda = Servicios2.Monedas.XXX; Comprobante.LugarExpedicion = "94300"; // <- Nuevo Comprobante.Exportacion = "01"; // <- Nuevo /* EMISOR */ emisor.RFC = "IIA040805DZ4"; emisor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV"; emisor.RegimenFiscal = "603"; Comprobante.Emisor = emisor; /* RECEPTOR */ receptor.RFC = "IIA040805DZ4"; receptor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV"; receptor.Domi_CodigoPostal = "94300"; // <- Nuevo receptor.RegimenFiscal = "603"; receptor.UsoCFDI = "S01"; // <- Nuevo Comprobante.Receptor = receptor; /* CONCEPTOS */ Servicios2.Concepto concepto = new Servicios2.Concepto(); concepto.ClaveProductoServicio = "31181701"; concepto.Cantidad = 2; concepto.Descripcion = "PAQUETES"; concepto.ClaveUnidad = "XPK"; concepto.Unidad = "PAQUETE"; concepto.PrecioUnitario = 0; concepto.Importe = 0; concepto.ObjetoImpuesto = "01"; // <- Nuevo ListaConceptos.Add(concepto); Comprobante.Conceptos = ListaConceptos.ToArray(); /* COMPLEMENTO CARTA PORTE */ Servicios2.CartaPorte CartaPorte = new Servicios2.CartaPorte(); List ListaUbicaciones = new List (); Servicios2.ArrayOfCartaPorteUbicacionUbicacion UbicacionOrigen = new Servicios2.ArrayOfCartaPorteUbicacionUbicacion(); Servicios2.ArrayOfCartaPorteUbicacionUbicacion UbicacionDestino = new Servicios2.ArrayOfCartaPorteUbicacionUbicacion(); Servicios2.CartaPorteMercancias Mercancias = new Servicios2.CartaPorteMercancias(); CartaPorte.TranspInternac = Servicios2.CartaPorteTranspInternac.No; CartaPorte.TotalDistRecSpecified = true; CartaPorte.TotalDistRec = Convert.ToDecimal(100); // Origenes UbicacionOrigen.TipoUbicacion = Servicios2.ArrayOfCartaPorteUbicacionUbicacionTipoUbicacion.Origen; UbicacionOrigen.RFCRemitenteDestinatario = emisor.RFC; UbicacionOrigen.NombreRemitenteDestinatario = emisor.Nomb_RazonSocial; UbicacionOrigen.FechaHoraSalidaLlegada = Convert.ToDateTime("2023-08-29T03:24:00"); Servicios2.ArrayOfCartaPorteUbicacionUbicacionDomicilio DomicilioOrigen = new Servicios2.ArrayOfCartaPorteUbicacionUbicacionDomicilio(); DomicilioOrigen.Calle = "TOMATE"; DomicilioOrigen.NumeroExterior = "3233"; //DomicilioOrigen.NumeroInterior = ""; DomicilioOrigen.Colonia = "2805"; DomicilioOrigen.Localidad = "12"; DomicilioOrigen.Municipio = "118"; DomicilioOrigen.Estado = "VER"; DomicilioOrigen.Pais = Servicios2.c_Pais.MEX; DomicilioOrigen.CodigoPostal = "94300"; DomicilioOrigen.Referencia = "CERCA DEL CENTRO"; UbicacionOrigen.Domicilio = DomicilioOrigen; ListaUbicaciones.Add(UbicacionOrigen); // Destinos UbicacionDestino.TipoUbicacion = Servicios2.ArrayOfCartaPorteUbicacionUbicacionTipoUbicacion.Destino; UbicacionDestino.RFCRemitenteDestinatario = emisor.RFC; UbicacionDestino.NombreRemitenteDestinatario = emisor.Nomb_RazonSocial; UbicacionDestino.DistanciaRecorridaSpecified = true; UbicacionDestino.DistanciaRecorrida = 100M; UbicacionDestino.FechaHoraSalidaLlegada = Convert.ToDateTime("2023-10-02T03:24:00"); Servicios2.ArrayOfCartaPorteUbicacionUbicacionDomicilio DomicilioDestino = new Servicios2.ArrayOfCartaPorteUbicacionUbicacionDomicilio(); DomicilioDestino.Calle = "ACOLMAN"; DomicilioDestino.NumeroExterior = "3233"; //DomicilioDestino.NumeroInterior = ""; DomicilioDestino.Colonia = "2650"; DomicilioDestino.Localidad = "14"; DomicilioDestino.Municipio = "104"; DomicilioDestino.Estado = "MEX"; DomicilioDestino.Pais = Servicios2.c_Pais.MEX; DomicilioDestino.CodigoPostal = "54070"; DomicilioDestino.Referencia = "ESQ. IXTLAHUACA"; UbicacionDestino.Domicilio = DomicilioDestino; ListaUbicaciones.Add(UbicacionDestino); CartaPorte.Ubicaciones = ListaUbicaciones.ToArray(); // Mercancías Mercancias.NumTotalMercancias = 1; Mercancias.PesoBrutoTotal = Convert.ToDecimal(800); Mercancias.UnidadPeso = "XPK"; List ListaMercancias = new List (); Servicios2.CartaPorteMercanciasMercancia Mercancia = new Servicios2.CartaPorteMercanciasMercancia(); Mercancia.BienesTransp = "31181701"; Mercancia.Cantidad = 2; Mercancia.Descripcion = "PAQUETES"; Mercancia.ClaveUnidad = "XPK"; Mercancia.Unidad = "PAQUETE"; Mercancia.PesoEnKg = Convert.ToDecimal(800); Mercancia.MaterialPeligrosoSpecified = true; Mercancia.MaterialPeligroso = Servicios2.CartaPorteMercanciasMercanciaMaterialPeligroso.No; //Atributo condicional para precisar si los bienes o mercancías que se trasladan son considerados material peligroso. // Guías Identificación List ListaGuiasId = new List (); Servicios2.CartaPorteMercanciasMercanciaGuiasIdentificacion GuiasIdentificacion = new Servicios2.CartaPorteMercanciasMercanciaGuiasIdentificacion(); GuiasIdentificacion.NumeroGuiaIdentificacion = "00000CL323"; GuiasIdentificacion.DescripGuiaIdentificacion = "1"; GuiasIdentificacion.PesoGuiaIdentificacion = 400; ListaGuiasId.Add(GuiasIdentificacion); Servicios2.CartaPorteMercanciasMercanciaGuiasIdentificacion GuiasIdentificacion2 = new Servicios2.CartaPorteMercanciasMercanciaGuiasIdentificacion(); GuiasIdentificacion2.NumeroGuiaIdentificacion = "00000CL324"; GuiasIdentificacion2.DescripGuiaIdentificacion = "1"; GuiasIdentificacion2.PesoGuiaIdentificacion = 400; ListaGuiasId.Add(GuiasIdentificacion2); Mercancia.GuiasIdentificacion = ListaGuiasId.ToArray(); ListaMercancias.Add(Mercancia); Mercancias.Mercancia = ListaMercancias.ToArray(); // Auto Transporte Federal Servicios2.CartaPorteMercanciasAutotransporte AutoTransporte = new Servicios2.CartaPorteMercanciasAutotransporte(); Servicios2.CartaPorteMercanciasAutotransporteIdentificacionVehicular IdentVehicular = new Servicios2.CartaPorteMercanciasAutotransporteIdentificacionVehicular(); Servicios2.CartaPorteMercanciasAutotransporteSeguros Seguro = new Servicios2.CartaPorteMercanciasAutotransporteSeguros(); AutoTransporte.NumPermisoSCT = "2512SEX960126BTA/12"; AutoTransporte.PermSCT = Servicios2.c_TipoPermiso.TPAF01; IdentVehicular.ConfigVehicular = Servicios2.c_ConfigAutotransporte.C2R3; IdentVehicular.PlacaVM = "45AL6A"; IdentVehicular.AnioModeloVM = 2007; AutoTransporte.IdentificacionVehicular = IdentVehicular; Seguro.AseguraRespCivil = "AXA"; Seguro.PolizaRespCivil = "VC1669190700"; AutoTransporte.Seguros = Seguro; // Remolque List ListaRemolque = new List (); Servicios2.ArrayOfCartaPorteMercanciasAutotransporteRemolqueRemolque remolque = new Servicios2.ArrayOfCartaPorteMercanciasAutotransporteRemolqueRemolque(); remolque.Placa = "AYA511"; remolque.SubTipoRem = Servicios2.c_SubTipoRem.CTR009; ListaRemolque.Add(remolque); AutoTransporte.Remolques = ListaRemolque.ToArray(); Mercancias.Autotransporte = AutoTransporte; CartaPorte.Mercancias = Mercancias; // Figura Transporte List ListaTiposFigura = new List (); Servicios2.ArrayOfCartaPorteTiposFiguraTiposFigura TipoFiguraOperador = new Servicios2.ArrayOfCartaPorteTiposFiguraTiposFigura(); TipoFiguraOperador.TipoFigura = "01"; TipoFiguraOperador.RFCFigura = "MOPJ760119737"; TipoFiguraOperador.NombreFigura = "JESUS GUILLERMO MONOBE PEREZ"; TipoFiguraOperador.NumLicencia = "LFD00067228"; Servicios2.ArrayOfCartaPorteTiposFiguraTiposFiguraDomicilio DomicilioOperador = new Servicios2.ArrayOfCartaPorteTiposFiguraTiposFiguraDomicilio(); //DomicilioOperador.Calle = ""; //DomicilioOperador.NumeroExterior = ""; //DomicilioOperador.NumeroInterior = ""; DomicilioOperador.Colonia = "0043"; DomicilioOperador.Localidad = "02"; //DomicilioOperador.Referencia = ""; DomicilioOperador.Municipio = "006"; DomicilioOperador.Estado = "SIN"; DomicilioOperador.Pais = Servicios2.c_Pais.MEX; DomicilioOperador.CodigoPostal = "80020"; TipoFiguraOperador.Domicilio = DomicilioOperador; ListaTiposFigura.Add(TipoFiguraOperador); CartaPorte.FiguraTransporte = ListaTiposFigura.ToArray(); Comprobante.CartaPorte = CartaPorte; string Usuario = "demoCFDI"; string Password = "CPKRTQ6FTD43)~"; Servicios2.Servicios Servicio = new Servicios2.Servicios(); return Servicio.TimbrarComprobante(ref Comprobante, Usuario, Password); }
private string ComprobanteV4CartaPorteV3Ingreso(string RFC, string Serie, int Folio) { Servicios2.Comprobante comprobante = new Test_wsCFD.Servicios2.Comprobante(); //Elemento Comprobante Servicios2.Emisor emisor = new Test_wsCFD.Servicios2.Emisor(); // Elemento Emisor Servicios2.Receptor receptor = new Test_wsCFD.Servicios2.Receptor(); // Elemento Receptor Servicios2.Concepto concepto = new Test_wsCFD.Servicios2.Concepto(); //Elemento Concepto Listconceptos = new List (); //Listado de Conceptos List Impuestos = new List (); //listado de impuestos a agregar al comprobante Servicios2.Impuesto Impuesto = new Test_wsCFD.Servicios2.Impuesto(); Servicios2.ConceptoInformacionAduanera InfoAduanera = new Test_wsCFD.Servicios2.ConceptoInformacionAduanera(); Servicios2.CartaPorte30 CartaPorte = new Test_wsCFD.Servicios2.CartaPorte30();//Elemento Carta Porte List ListaUbicaciones = new List (); Servicios2.ArrayOfCartaPorte30UbicacionUbicacion UbicacionOrigen = new Test_wsCFD.Servicios2.ArrayOfCartaPorte30UbicacionUbicacion();//Elemento ubicaciones de la carta porte Servicios2.ArrayOfCartaPorte30UbicacionUbicacion UbicacionDestino = new Test_wsCFD.Servicios2.ArrayOfCartaPorte30UbicacionUbicacion();//Elemento ubicaciones de la carta porte Servicios2.CartaPorte30Mercancias Mercancias = new Test_wsCFD.Servicios2.CartaPorte30Mercancias();//Elemento Mercancias de la carta porte //DATOS DEL COMPROBANTE comprobante.Version = Test_wsCFD.Servicios2.Versiones.Ver_4;//Version del comprobante comprobante.SerieFolio = Serie; //Parte inicial o final que acompaña al número de la factura y puede ser opcional comprobante.Nume_Folio = Folio; //Número consecutivo asignado al comprobante para el control interno comprobante.Fech_Comprobante = System.DateTime.Now; //Fecha de emisión del CFDI comprobante.TipoComprobante = "I";//Tipo de Comprobante fiscal definidos por el SAT T=Traslado, I=Ingreso comprobante.ComprobanteClase = Servicios2.Comprobante_Clase.CartaPorte; //Clase de comprobante comprobante.Moneda = Servicios2.Monedas.MXN;//Medida de cambio que se emplea en la transacion comercial comprobante.MetodoPago = "PUE"; //Metodo por el cual se realizara el pago del comprobante comprobante.LugarExpedicion = "80060"; //codigo postal del lugar de expedicion ; //comprobante.CondicionesPago = "CONTADO"; //Es la condición establecida en que deberá ser liquidada la factura "CONTADO" "CREDITO" comprobante.FormaPago = "03"; //Forma en que debera ser liquidada de la factura //comprobante.TipoCambio = 1; //Valor que tiene la moneda que se esta utilizando en la factura en relacion al peso mexicano Ejemplo: 1 para peso mexicano, 13.02 para dolares comprobante.Exportacion = "01"; /*INFORMACION DE LOS COMPROBANTES RELACIONADOS*/ //cfdisrelacionados.TipoRelacion = "04";//Atributo que indica la clave de la relación que existe entre éste que se esta generando y el o los CFDI previos. //List listaUUIDs = new List ();//listado de UUIDS Relacionados //Servicios2.UUIDRelacionado uuid = new Test_wsCFD.Servicios2.UUIDRelacionado(); //uuid.UUID = "4D2A6D62-AC26-4758-9B03-1080654913D6";//folio fiscal (UUID) de un CFDI relacionado con el presente comprobante //listaUUIDs.Add(uuid); //cfdisrelacionados.UUIDsRelacionados = listaUUIDs.ToArray(); //comprobante.CFDIRelacionados = cfdisrelacionados; /*INFORMACION DE QUIEN EXPIDE LA FACTURA*/ emisor.RFC = RFC; //RFC de la empresa o persona que va a emitir el comprobante emisor.Nomb_Comercial = "ILUNIMADORA DE ALMACENES SA DE CV"; //Nombre con el que se conoce a la empresa o persona que emite el comprobante emisor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV"; //Nombre con el que esta registrado ante hacienda quien emite el comprobante emisor.RegimenFiscal = "601"; //Regimen Fiscal del emisor /*DATOS DE LA EMPRESA A QUIEN SE EXPIDE LA FACTURA*/ receptor.RFC = "IEE100705KHA"; //RFC de la empresa o persona a quien se le va a emitir el comprobante receptor.Nomb_RazonSocial = "INNOVANCE EMPRENDEDORES EN ACCION"; //Nombre con el que esta registrado ante hacienda, quien se le va a emitir el comprobante receptor.Nomb_Comercial = "INNOVANCE EMPRENDEDORES EN ACCION"; //Nombre con el que se le conoce a la empresa o persona que se le va a emitir el comprobante //receptor.NumRegIdTrib = "383754717"; //Número de registro de identidad fiscal del receptor del comprobante fiscal receptor.UsoCFDI = "S01"; //Clave del uso que dará a esta factura el receptor del CFDI receptor.Domi_Pais = "MEX"; //Nombre del pais del domicilio fiscal de quien se le va a emitir el comprobante receptor.RegimenFiscal = "601"; receptor.Domi_CodigoPostal = "80060"; /*CONCEPTOS*/ concepto = new Servicios2.Concepto(); concepto.ClaveProductoServicio = "78101500";//Clave del producto o del servicio amparado por el presente concepto concepto.ClaveUnidad = "XPK"; //Clave de unidad de medida estandarizada aplicable para la cantidad expresada en el concepto concepto.Cantidad = 2; //Cantidad de bienes o servicios del tipo particular definido por el presente concepto concepto.Unidad = "Paquete"; //Unidad de medida aplicable para la cantidad expresada en el concepto(pieza, caja, kg, onza, metro, pulgada o litro) //concepto.NoIdentificacion = "ABCD123456789"; // Número de serie del bien o identificador del servicio amparado por el presente concepto concepto.Descripcion = "Paquetes"; //Descripción del bien o servicio cubierto por el presente concepto concepto.PrecioUnitario = 10.00; //Precio unitario del bien o servicio cubierto por el presente concepto //InfoAduanera.Numero = "20 47 1039 0000266"; //concepto.InformacionAduanera = InfoAduanera; concepto.ObjetoImpuesto = "02"; //concepto.Descuento = 0;//Importe de los descuentos aplicables al concepto /*IMPUESTOS POR CONCEPTO*/ /*EJEMPLO IMPUESTO FEDERAL TRASLADADO */ Impuesto = new Test_wsCFD.Servicios2.Impuesto(); Impuesto.Nombre = "IVA"; //Especifica el nombre del impuesto (IVA,IEPS,ISR) Impuesto.ClaveSATImpuesto = "002";//Clave del tipo de impuesto aplicable al concepto (001=ISR,002=IVA,003=IEPS) Impuesto.Base = 10.00; //Base para el cálculo del impuesto, la determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes Impuesto.Tipo = 1; //Especifica la naturaleza del impuesto (1 Trasladado, 2 Retenido) Impuesto.TipoFactor = Test_wsCFD.Servicios2.TiposFactor.Tasa; //Clave del tipo de factor que se aplica a la base del impuesto Impuesto.Tasa = 0.16; //tasa del impuesto que se retiene o traslada por cada concepto amparado en el comprobante Impuesto.Federal = 1; //Especifica si el impuesto es Federal 1 o Local 2 Impuesto.Importe = 1.6; //Importe calculado del impuesto Impuestos.Add(Impuesto); //Impuesto = new Test_wsCFD.Servicios2.Impuesto(); //Impuesto.Nombre = "IVA"; //Especifica el nombre del impuesto (IVA,IEPS,ISR) //Impuesto.ClaveSATImpuesto = "002";//Clave del tipo de impuesto aplicable al concepto (001=ISR,002=IVA,003=IEPS) //Impuesto.Base = 10.00; //Base para el cálculo del impuesto, la determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes //Impuesto.Tipo = 2; //Especifica la naturaleza del impuesto (1 Trasladado, 2 Retenido) //Impuesto.TipoFactor = Test_wsCFD.Servicios2.TiposFactor.Tasa; //Clave del tipo de factor que se aplica a la base del impuesto //Impuesto.Tasa = 0.03; //tasa del impuesto que se retiene o traslada por cada concepto amparado en el comprobante //Impuesto.Federal = 1; //Especifica si el impuesto es Federal 1 o Local 2 //Impuesto.Importe = 0.3; //Importe calculado del impuesto //Impuestos.Add(Impuesto); concepto.Impuestos = Impuestos.ToArray(); conceptos.Add(concepto); ///*CARTA PORTE*/ /// CartaPorte.IdCCP = generarIdCCP();//Atributo requerido para expresar los 36 caracteres del folio del complemento Carta Porte (IdCCP) de la transacción de timbrado conforme al estándar RFC 4122, para la identificación del CFDI con complemento Carta Porte CartaPorte.TranspInternac = Test_wsCFD.Servicios2.CartaPorteTranspInternac1.No;//Atributo requerido para expresar si los bienes o mercancías que son transportadas ingresan o salen del territorio nacional. if (CartaPorte.TranspInternac == Test_wsCFD.Servicios2.CartaPorteTranspInternac1.Sí) { CartaPorte.RegimenAduaneroSpecified = true; CartaPorte.RegimenAduanero = Test_wsCFD.Servicios2.c_RegimenAduanero.IMD;//Atributo condicional para expresar el tipo de régimen que se encuentra asociado con el traslado de los bienes y/o mercancías de procedencia extranjera. CartaPorte.EntradaSalidaMercSpecified = true; CartaPorte.EntradaSalidaMerc = Test_wsCFD.Servicios2.CartaPorteEntradaSalidaMerc1.Entrada;//Atributo requerido para expresar si los bienes o mercancías que son transportadas ingresan o salen del territorio nacional. CartaPorte.ViaEntradaSalida = "01"; //Atributo condicional para precisar la vía de ingreso o salida de los bienes o mercancías en territorio nacional. CartaPorte.PaisOrigenDestinoSpecified = true; CartaPorte.PaisOrigenDestino = Test_wsCFD.Servicios2.c_Pais.USA;//Atributo condicional para registrar la clave del país de origen o destino de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte. } CartaPorte.TotalDistRecSpecified = true; CartaPorte.TotalDistRec = 600.00M;//Atributo condicional para registrar la suma de las distancias recorridas en kilómetros, registradas en el atributo “Ubicaciones:Ubicacion:DistanciaRecorrida” para el traslado de los bienes o mercancías CartaPorte.RegistroISTMO = Test_wsCFD.Servicios2.CartaPorte30RegistroISTMO.Sí;//Atributo opcional para registrar las regiones, sí el traslado de los bienes y/o mercancías se realiza al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec. CartaPorte.RegistroISTMOSpecified = true; if (CartaPorte.RegistroISTMOSpecified == true) { CartaPorte.UbicacionPoloOrigen = "01";//Atributo condicional para registrar la región en donde inicia el traslado de los bienes y/o mercancias al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec. CartaPorte.UbicacionPoloDestino = "03";//Atributo condicional para registrar la región en donde termina el traslado de los bienes y/o mercancias al interior de los Polos de Desarrollo para el Bienestar del istmo de Tehuantepec. } ///*NODO UBICACIONES DE LA CARTA PORTE*/ /// //UBICACION ORIGEN UbicacionOrigen.TipoUbicacion = Test_wsCFD.Servicios2.ArrayOfCartaPorte30UbicacionUbicacionTipoUbicacion.Origen;//Atributo requerido para precisar si el tipo de ubicación corresponde al origen o destino de las ubicaciones para el traslado de los bienes y/o mercancías en los distintos medios de transporte. //UbicacionOrigen.IDUbicacion = "OR123456"; //Atributo condicional para registrar una clave que sirva para identificar el punto de salida de los bienes o mercancías que se trasladan por los distintos medios de transporte, mediante un folio, el cual estará compuesto de la siguiente forma: el acrónimo “OR” seguido de 6 dígitos numéricos asignados por el contribuyente que emite el comprobante para su identificación. UbicacionOrigen.RFCRemitenteDestinatario = "AEAA901130TF0"; //Atributo requerido para registrar el RFC del remitente o destinatario de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte UbicacionOrigen.NombreRemitenteDestinatario = "JOSE PEREZ LOPEZ";//Atributo opcional para registrar el nombre del remitente o destinatario de los bienes o mercancías que se trasladan. if (UbicacionOrigen.RFCRemitenteDestinatario == "XEXX010101000") { UbicacionOrigen.NumRegIdTrib = "";//Atributo condicional para incorporar el número de identificación o registro fiscal del país de residencia para los efectos fiscales del remitente o destinatario de los bienes o mercancías que se trasladan, cuando sea residente en el extranjero. UbicacionOrigen.ResidenciaFiscalSpecified = true; UbicacionOrigen.ResidenciaFiscal = Test_wsCFD.Servicios2.c_Pais.USA;//Atributo condicional para registrar la clave del país de residencia para efectos fiscales del remitente o destinatario de los bienes o mercancías, conforme con el catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. } //UbicacionOrigen.NumEstacion = "01";//Atributo condicional para registrar la clave de la estación de origen o destino para el traslado de los bienes y/o mercancías que se realiza a través de los distintos medios de transporte, esto de acuerdo al valor de la columna “Clave identificación” del catálogo c_Estaciones del complemento Carta Porte que permita asociarla al tipo de transporte. //UbicacionOrigen.NombreEstacion = "ESTACION 1";//Atributo condicional para registrar el nombre de la estación de origen o destino por la que se pasa para efectuar el traslado de los bienes y/o mercancías a través de los distintos medios de transporte, conforme al catálogo c_Estaciones del complemento Carta Porte. //UbicacionOrigen.NavegacionTraficoSpecified = true; //UbicacionOrigen.NavegacionTrafico = Test_wsCFD.Servicios2.ArrayOfCartaPorteUbicacionUbicacionNavegacionTrafico.Altura;//Atributo condicional para registrar el tipo de puerto de origen o destino en el cual se documentan los bienes y/o mercancías que se trasladan vía marítima UbicacionOrigen.FechaHoraSalidaLlegada = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"));//Atributo requerido para la expresión de la fecha y hora en la que salen o llegan los bienes y/o mercancías de origen o al destino, respectivamente. Se expresa en la forma AAAA-MMDDThh:mm:ss //UbicacionOrigen.TipoEstacion = "01";//Atributo condicional para precisar el tipo de estación por el que pasan los bienes o mercancías durante su traslado en los distintos medios de transporte. //NODO DOMICILIO if (UbicacionOrigen.TipoEstacion != "02") { Servicios2.ArrayOfCartaPorte30UbicacionUbicacionDomicilio Domicilio = new Test_wsCFD.Servicios2.ArrayOfCartaPorte30UbicacionUbicacionDomicilio();//Nodo condicional para registrar información del domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte Domicilio.Calle = "RUBI";//Atributo requerido para precisar la calle en la que está ubicado el domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.NumeroExterior = "1528";//Atributo opcional que sirve para expresar el número exterior en donde se ubica el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.NumeroInterior = "B";//Atributo opcional que sirve para expresar el número interior, en caso de existir, en donde se ubica el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Colonia = "0084";//Atributo opcional que sirve para expresar la colonia o dato análogo en donde se ubica el domicilio del origen o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Localidad = "02";//Atributo opcional que sirve para precisar la ciudad, población, distrito u otro análogo en donde se encuentra ubicado el domicilio del origen y/o destino delos bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Municipio = "006";//Atributo opcional que sirve para precisar el municipio, delegación o alcaldía, condado u otro análogo en donde se encuentra ubicado el domicilio destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Estado = "SIN";//Atributo requerido para precisar el estado, entidad, región, comunidad, u otra figura análoga en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. El catálogo se publica en el portal del SAT en Internet y es conforme con la especificación ISO 3166-2. Domicilio.Pais = Test_wsCFD.Servicios2.c_Pais.MEX;//Atributo requerido que sirve para precisar la clave del país en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte, conforme con el catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. Domicilio.CodigoPostal = "80060";//Atributo requerido para asentar el código postal (PO, BOX) en donde se encuentra el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. UbicacionOrigen.Domicilio = Domicilio; } ListaUbicaciones.Add(UbicacionOrigen); //UBICACION DESTINO UbicacionDestino.TipoUbicacion = Test_wsCFD.Servicios2.ArrayOfCartaPorte30UbicacionUbicacionTipoUbicacion.Destino;//Atributo requerido para precisar si el tipo de ubicación corresponde al origen o destino de las ubicaciones para el traslado de los bienes y/o mercancías en los distintos medios de transporte. //UbicacionDestino.IDUbicacion = "DE123456"; //Atributo condicional para registrar una clave que sirva para identificar el punto de salida de los bienes o mercancías que se trasladan por los distintos medios de transporte, mediante un folio, el cual estará compuesto de la siguiente forma: el acrónimo “DE” seguido de 6 dígitos numéricos asignados por el contribuyente que emite el comprobante para su identificación. UbicacionDestino.RFCRemitenteDestinatario = "XAXX010101000"; //Atributo requerido para registrar el RFC del remitente o destinatario de los bienes y/o mercancías que se trasladan a través de los distintos medios de transporte UbicacionDestino.NombreRemitenteDestinatario = "CLIENTE GENERAL";//Atributo opcional para registrar el nombre del remitente o destinatario de los bienes o mercancías que se trasladan. if (UbicacionDestino.RFCRemitenteDestinatario == "XEXX010101000") { UbicacionDestino.NumRegIdTrib = "";//Atributo condicional para incorporar el número de identificación o registro fiscal del país de residencia para los efectos fiscales del remitente o destinatario de los bienes o mercancías que se trasladan, cuando sea residente en el extranjero. UbicacionDestino.ResidenciaFiscalSpecified = true; UbicacionDestino.ResidenciaFiscal = Test_wsCFD.Servicios2.c_Pais.USA;//Atributo condicional para registrar la clave del país de residencia para efectos fiscales del remitente o destinatario de los bienes o mercancías, conforme con el catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. } //UbicacionDestino.NumEstacion = "03";//Atributo condicional para registrar la clave de la estación de origen o destino para el traslado de los bienes y/o mercancías que se realiza a través de los distintos medios de transporte, esto de acuerdo al valor de la columna “Clave identificación” del catálogo c_Estaciones del complemento Carta Porte que permita asociarla al tipo de transporte. //UbicacionDestino.NombreEstacion = "Nogales";//Atributo condicional para registrar el nombre de la estación de origen o destino por la que se pasa para efectuar el traslado de los bienes y/o mercancías a través de los distintos medios de transporte, conforme al catálogo c_Estaciones del complemento Carta Porte. //UbicacionDestino.NavegacionTraficoSpecified = true; //UbicacionDestino.NavegacionTrafico = Test_wsCFD.Servicios2.ArrayOfCartaPorteUbicacionUbicacionNavegacionTrafico.Altura;//Atributo condicional para registrar el tipo de puerto de origen o destino en el cual se documentan los bienes y/o mercancías que se trasladan vía marítima UbicacionDestino.FechaHoraSalidaLlegada = Convert.ToDateTime(DateTime.Now.AddDays(2).ToString("yyyy-MM-ddTHH:mm:ss"));//Atributo requerido para la expresión de la fecha y hora en la que salen o llegan los bienes y/o mercancías de origen o al destino, respectivamente. Se expresa en la forma AAAA-MMDDThh:mm:ss //UbicacionDestino.TipoEstacion = "01";//Atributo condicional para precisar el tipo de estación por el que pasan los bienes o mercancías durante su traslado en los distintos medios de transporte. UbicacionDestino.DistanciaRecorridaSpecified = true; UbicacionDestino.DistanciaRecorrida = 600.00M;//Atributo condicional para registrar la distancia recorrida en kilómetros de la ubicación de Origen a la de Destino parcial o final, de los distintos medios de transporte que trasladan los bienes o mercancías. if (UbicacionDestino.TipoEstacion != "02") { Servicios2.ArrayOfCartaPorte30UbicacionUbicacionDomicilio Domicilio = new Test_wsCFD.Servicios2.ArrayOfCartaPorte30UbicacionUbicacionDomicilio();//Nodo condicional para registrar información del domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte Domicilio.Calle = "ISLA DE GPE";//Atributo requerido para precisar la calle en la que está ubicado el domicilio de origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.NumeroExterior = "8526";//Atributo opcional que sirve para expresar el número exterior en donde se ubica el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.NumeroInterior = "B";//Atributo opcional que sirve para expresar el número interior, en caso de existir, en donde se ubica el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Colonia = "0084";//Atributo opcional que sirve para expresar la colonia o dato análogo en donde se ubica el domicilio del origen o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Localidad = "02";//Atributo opcional que sirve para precisar la ciudad, población, distrito u otro análogo en donde se encuentra ubicado el domicilio del origen y/o destino delos bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Municipio = "006";//Atributo opcional que sirve para precisar el municipio, delegación o alcaldía, condado u otro análogo en donde se encuentra ubicado el domicilio destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. Domicilio.Estado = "SIN";//Atributo requerido para precisar el estado, entidad, región, comunidad, u otra figura análoga en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. El catálogo se publica en el portal del SAT en Internet y es conforme con la especificación ISO 3166-2. Domicilio.Pais = Test_wsCFD.Servicios2.c_Pais.MEX;//Atributo requerido que sirve para precisar la clave del país en donde se encuentra ubicado el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte, conforme con el catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. Domicilio.CodigoPostal = "80060";//Atributo requerido para asentar el código postal (PO, BOX) en donde se encuentra el domicilio del origen y/o destino de los bienes o mercancías que se trasladan en los distintos medios de transporte. UbicacionDestino.Domicilio = Domicilio; } ListaUbicaciones.Add(UbicacionDestino); CartaPorte.Ubicaciones = ListaUbicaciones.ToArray(); ///*NODO MERCANCIAS DE LA CARTA PORTE*/ /// Mercancias.PesoBrutoTotal = 300;//Atributo requerido para registrar la suma del peso bruto total estimado de los bienes y/o mercancías que se trasladan en los distintos medios de transporte Mercancias.UnidadPeso = "X4G";//Atributo requerido para expresar la clave de unidad de medida estandarizada del peso de los bienes o mercancías que se trasladan vía férrea y aérea. Mercancias.PesoNetoTotal = 0;//Atributo condicional para registrar la suma de los valores registrados en el atributo “PesoNeto” del nodo “DetalleMercancia” del elemento “Mercancia”. Mercancias.NumTotalMercancias = 1;//Atributo requerido para expresar el número total de los bienes o mercancías que se trasladan en los distintos medios de transporte, identificándose por cada nodo "Mercancia" registrado en el complemento. Mercancias.CargoPorTasacion = 0;//Atributo opcional para expresar el importe pagado por la tasación de los bienes o mercancías que se trasladan vía aérea. Mercancias.LogisticaInversaRecoleccionDevolucionSpecified = true; Mercancias.LogisticaInversaRecoleccionDevolucion = Test_wsCFD.Servicios2.CartaPorte30MercanciasLogisticaInversaRecoleccionDevolucion.Sí;//Atributo condicional para expresar si se hace uso de alguno de los servicios de logística inversa, recolección o devolución para el traslado de los bienes y/o mercancías. //NODO MERCANCIA List Listamercancias = new List ();//Nodo requerido para registrar información de los bienes o mercancías que se trasladan en los distintos medios de transporte Servicios2.CartaPorte30MercanciasMercancia mercancia = new Test_wsCFD.Servicios2.CartaPorte30MercanciasMercancia();//Nodo requerido para registrar información de los bienes o mercancías que se trasladan en los distintos medios de transporte mercancia.BienesTransp = "51102300";//Atributo requerido para expresar la clave de producto de los bienes o mercancías que se trasladan en los distintos medios de transporte. //mercancia.ClaveSTCC = "01394";//Atributo opcional para expresar la clave de producto conforme al catálogo de la STCC cuando el medio de transporte es ferroviario. mercancia.Descripcion = "MEDICAMENTOS";//Atributo requerido para describir los bienes o mercancías que se trasladan en los distintos medios de transporte. mercancia.Cantidad = 2;//Atributo requerido para expresar la cantidad de los bienes o mercancías que se trasladan en los distintos medios de transporte mercancia.ClaveUnidad = "X4G";//Atributo requerido para precisar la clave de unidad de medida estandarizada aplicable para la cantidad de los bienes o mercancías que se trasladan en los distintos medios de transporte. La unidad debe corresponder con la descripción de los bienes o mercancías registrados. mercancia.Unidad = "CAJA";//Atributo opcional para precisar la unidad de medida propia de los bienes o mercancías que se trasladan en los distintos medios de transporte, aplicable para la cantidad. La unidad debe corresponder con la descripción de los bienes o mercancías. //mercancia.Dimensiones = "30/40/30cm";//Atributo opcional para expresar las medidas del empaque de los bienes o mercancías que se trasladan vía aérea. Se debe registrar la longitud, la altura y la anchura en centímetros o en pulgadas separados dichos valores por una diagonal. mercancia.MaterialPeligrosoSpecified = false; mercancia.MaterialPeligroso = Test_wsCFD.Servicios2.CartaPorte30MercanciasMercanciaMaterialPeligroso.No;//Atributo condicional para precisar si los bienes o mercancías que se trasladan son considerados material peligroso. if (mercancia.MaterialPeligroso == Test_wsCFD.Servicios2.CartaPorte30MercanciasMercanciaMaterialPeligroso.Sí) { mercancia.CveMaterialPeligroso = "";//Atributo condicional para precisar la clave del tipo de material peligroso que se transporta. mercancia.Embalaje = "";//Atributo condicional para precisar la clave del tipo de embalaje que se requiere para transportar el material o residuo peligroso. mercancia.DescripEmbalaje = "";//Atributo opcional para expresar la descripción del embalaje en el que se transporta los bienes o mercancías que se consideran material o residuo peligroso. } mercancia.SectorCOFEPRIS = "01";//Atributo opcional para expresar la clasificación del producto que se traslada a través de los distintos medios de transporte y que debe contar con autorización por la autoridad correspondiente. if (mercancia.SectorCOFEPRIS == "01") { mercancia.DenominacionGenericaProd = "AZITROMICINA";//Atributo condicional para expresar el fármaco o la sustancia activa del medicamento, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte. mercancia.DenominacionDistintivaProd = "SICALAN";//Atributo condicional para expresar la marca con la que se comercializa el producto o nombre que le asigna el laboratorio o fabricante a sus especialidades farmacéuticas con el fin de distinguirlas de otras similares del medicamento, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte. mercancia.Fabricante = "SIMILARES";//Atributo condicional para expresar el nombre o razón social del establecimiento que realiza la fabricación o manufactura del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte. mercancia.FechaCaducidadSpecified = true; mercancia.FechaCaducidad = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));//Atributo condicional para registrar la fecha de caducidad del medicamento, psicotrópico o estupefaciente; o para expresar la fecha de reanálisis del precursor o químico de uso dual que se traslada a través de los distintos medios de transporte. Se expresa en la forma AAAA-MM-DD. mercancia.LoteMedicamento = "215847";//Atributo condicional para expresar la denominación que identifica y confiere trazabilidad del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente elaborado en un ciclo de producción, bajo condiciones equivalentes de operación y durante un periodo. mercancia.FormaFarmaceutica = "05";//Atributo condicional para expresar la forma farmacéutica o mezcla del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que presenta ciertas características físicas para su adecuada dosificación, conservación y administración. mercancia.CondicionesEspTransp = "04";//Atributo condicional para expresar la condición en la cual es necesario mantener el medicamento, precursor, químico de uso dual, psicotrópicos o estupefacientes durante el traslado y almacenamiento. mercancia.RegistroSanitarioFolioAutorizacion = "852146416";//Atributo condicional para expresar el registro sanitario o folio de autorización con el que cuenta la empresa para el traslado del medicamento, psicotrópico o estupefaciente. } if (mercancia.SectorCOFEPRIS == "02") { mercancia.NombreIngredienteActivo = "";//Atributo condicional para expresar el nombre común del ingrediente activo de los precursores, químicos de uso dual, plaguicidas o fertilizantes que se trasladan a través de los distintos medios de transporte. mercancia.NomQuimico = "";//Atributo condicional para expresar el nombre de la sustancia activa de los precursores, químicos de uso dual o sustancias tóxicas que se traslada a través de los distintos medios de transporte. mercancia.Fabricante = "";//Atributo condicional para expresar el nombre o razón social del establecimiento que realiza la fabricación o manufactura del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte. mercancia.FechaCaducidadSpecified = true; mercancia.FechaCaducidad = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));//Atributo condicional para registrar la fecha de caducidad del medicamento, psicotrópico o estupefaciente; o para expresar la fecha de reanálisis del precursor o químico de uso dual que se traslada a través de los distintos medios de transporte. Se expresa en la forma AAAA-MM-DD. mercancia.LoteMedicamento = "";//Atributo condicional para expresar la denominación que identifica y confiere trazabilidad del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente elaborado en un ciclo de producción, bajo condiciones equivalentes de operación y durante un periodo. mercancia.FormaFarmaceutica = "";//Atributo condicional para expresar la forma farmacéutica o mezcla del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que presenta ciertas características físicas para su adecuada dosificación, conservación y administración. mercancia.CondicionesEspTransp = "";//Atributo condicional para expresar la condición en la cual es necesario mantener el medicamento, precursor, químico de uso dual, psicotrópicos o estupefacientes durante el traslado y almacenamiento. } if (mercancia.SectorCOFEPRIS == "03") { mercancia.DenominacionGenericaProd = "";//Atributo condicional para expresar el fármaco o la sustancia activa del medicamento, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte. mercancia.DenominacionDistintivaProd = "";//Atributo condicional para expresar la marca con la que se comercializa el producto o nombre que le asigna el laboratorio o fabricante a sus especialidades farmacéuticas con el fin de distinguirlas de otras similares del medicamento, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte. mercancia.Fabricante = "";//Atributo condicional para expresar el nombre o razón social del establecimiento que realiza la fabricación o manufactura del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que se traslada a través de los distintos medios de transporte. mercancia.FechaCaducidadSpecified = true; mercancia.FechaCaducidad = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));//Atributo condicional para registrar la fecha de caducidad del medicamento, psicotrópico o estupefaciente; o para expresar la fecha de reanálisis del precursor o químico de uso dual que se traslada a través de los distintos medios de transporte. Se expresa en la forma AAAA-MM-DD. mercancia.LoteMedicamento = "";//Atributo condicional para expresar la denominación que identifica y confiere trazabilidad del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente elaborado en un ciclo de producción, bajo condiciones equivalentes de operación y durante un periodo. mercancia.FormaFarmaceutica = "";//Atributo condicional para expresar la forma farmacéutica o mezcla del medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente que presenta ciertas características físicas para su adecuada dosificación, conservación y administración. mercancia.CondicionesEspTransp = "";//Atributo condicional para expresar la condición en la cual es necesario mantener el medicamento, precursor, químico de uso dual, psicotrópicos o estupefacientes durante el traslado y almacenamiento. mercancia.RegistroSanitarioFolioAutorizacion = "";//Atributo condicional para expresar el registro sanitario o folio de autorización con el que cuenta la empresa para el traslado del medicamento, psicotrópico o estupefaciente. } if (mercancia.SectorCOFEPRIS == "04") { mercancia.NomQuimico = "";//Atributo condicional para expresar el nombre de la sustancia activa de los precursores, químicos de uso dual o sustancias tóxicas que se traslada a través de los distintos medios de transporte. mercancia.NumCAS = "";//Atributo condicional para expresar el número Chemical Abstracts Service (CAS) con el que se identifica el compuesto químico de la sustancia tóxica. } if (mercancia.SectorCOFEPRIS == "05") { mercancia.NombreIngredienteActivo = "";//Atributo condicional para expresar el nombre común del ingrediente activo de los precursores, químicos de uso dual, plaguicidas o fertilizantes que se trasladan a través de los distintos medios de transporte. mercancia.NumRegSanPlagCOFEPRIS = "";//Atributo condicional para expresar el número de registro sanitario para plaguicidas o fertilizantes cuya importación, comercialización y uso están permitidos en México, mismo que emite la Comisión Intersecretarial para el Control del Proceso y Uso de Plaguicidas, Fertilizantes y Sustancias Tóxicas (CICLOPLAFEST). mercancia.DatosFabricante = "";//Atributo condicional para registrar el país y nombre o razón social de quien produce o fabrica el ingrediente activo del plaguicida o fertilizante. mercancia.DatosFormulador = "";//Atributo condicional para registrar el país y nombre o razón social de quien formula el ingrediente activo del plaguicida o fertilizante. mercancia.DatosMaquilador = "";//Atributo condicional para registrar el país y nombre o razón social de quien maquila el ingrediente activo del plaguicida o fertilizante. mercancia.UsoAutorizado = "";//Atributo condicional para registrar el uso autorizado del plaguicida o fertilizante de acuerdo a la regulación del país. } if (CartaPorte.TranspInternac == Test_wsCFD.Servicios2.CartaPorteTranspInternac1.Sí && CartaPorte.EntradaSalidaMerc == Test_wsCFD.Servicios2.CartaPorteEntradaSalidaMerc1.Entrada && (mercancia.SectorCOFEPRIS == "01" || mercancia.SectorCOFEPRIS == "02" || mercancia.SectorCOFEPRIS == "03")) { mercancia.PermisoImportacion = "";//Atributo condicional para registrar el folio del permiso de importación con el que cuenta el medicamento, precursor, químico de uso dual, psicotrópico o estupefaciente. } if (CartaPorte.TranspInternac == Test_wsCFD.Servicios2.CartaPorteTranspInternac1.Sí && CartaPorte.EntradaSalidaMerc == Test_wsCFD.Servicios2.CartaPorteEntradaSalidaMerc1.Entrada && (mercancia.SectorCOFEPRIS == "01" || mercancia.SectorCOFEPRIS == "02" || mercancia.SectorCOFEPRIS == "04" || mercancia.SectorCOFEPRIS == "05")) { mercancia.FolioImpoVUCEM = "";//Atributo condicional para registrar el número de folio de importación VUCEM para la identificación del documento, para el traslado de medicamentos, precursores o químicos de uso dual, sustancias tóxicas, plaguicidas o fertizantes. } if (CartaPorte.TranspInternac == Test_wsCFD.Servicios2.CartaPorteTranspInternac1.Sí && CartaPorte.EntradaSalidaMerc == Test_wsCFD.Servicios2.CartaPorteEntradaSalidaMerc1.Entrada && mercancia.SectorCOFEPRIS == "04") { mercancia.RazonSocialEmpImp = "";//Atributo condicional para expresar el nombre o razón social de la empresa importadora de las sustancias tóxicas. } mercancia.PesoEnKg = 300;//Atributo requerido para indicar el peso en kilogramos de los bienes o mercancías que se trasladan en los distintos medios de transporte mercancia.ValorMercancia = 0;//Atributo condicional para expresar el monto del valor de los bienes o mercancías que se trasladan en los distintos medios de transporte, de acuerdo al valor mercado, el valor pactado en la contraprestación o al valor estimado que determine el contribuyente. mercancia.Moneda = Test_wsCFD.Servicios2.c_Moneda.MXN;//Atributo condicional para identificar la clave de la moneda utilizada para expresar el valor de los bienes o mercancías que se trasladan en los distintos medios de transporte, cuando se usa moneda nacional se registra MXN,conforme con la especificación ISO 4217 if (CartaPorte.TranspInternac == Test_wsCFD.Servicios2.CartaPorteTranspInternac1.Sí) { mercancia.FraccionArancelaria = "";//Atributo condicional que sirve para expresar la clave de la fracción arancelaria correspondiente a la descripción de los bienes o mercancías que se trasladan en los distintos medios de transporte como importación o exportación, este dato se vuelve requerido cuando el atributo “EntradaSalidaMerc” contenga información. Debe ser conforme con el catálogo c_FraccionArancelaria publicado en el portal del SAT en Internet. mercancia.TipoMateria = "";//Atributo condicional para expresar el estado de la materia o producto al realizar una operación de comercio exterior a través de los distintos medios de transporte. if (mercancia.TipoMateria == "05") { mercancia.DescripcionMateria = "";//Atributo condicional para expresar la descripción del estado de la materia o producto al realizar una operación de comercio exterior a través de los distintos medios de transporte. } mercancia.UUIDComercioExt = "";//Atributo opcional para expresar el folio fiscal o UUID del comprobante de comercio exterior que se relaciona, este dato se vuelve requerido cuando el atributo “EntradaSalidaMerc” contenga el valor “Salida”. if (CartaPorte.EntradaSalidaMerc == Test_wsCFD.Servicios2.CartaPorteEntradaSalidaMerc1.Entrada) { List listaPedimentos = new List (); Servicios2.CartaPorte30MercanciasMercanciaDocumentacionAduanera Pedimentos = new Test_wsCFD.Servicios2.CartaPorte30MercanciasMercanciaDocumentacionAduanera();//Nodo condicional para registrar la información del(los) documento(s) aduanero(s) que se encuentra(n) asociado(s) al traslado de los bienes y/o mercancías por los distintos medios de transporte de procedencia extranjera para acreditar la legal estancia o tenencia durante su traslado en territorio nacional. Pedimentos.TipoDocumento = "";//Atributo requerido para expresar el tipo de documento aduanero que se encuentra asociado al traslado de los bienes y/o mercancías de procedencia extranjera durante su traslado en territorio nacional. if (Pedimentos.TipoDocumento == "01") { Pedimentos.NumPedimento = "";//Atributo condicional para expresar el número de pedimento de importación que se encuentra asociado con el traslado de los bienes y/o mercancías de procedencia extranjera para acreditar la legal estancia y tenencia durante su traslado en territorio nacional, el cual se expresa en el siguiente formato: últimos 2 dígitos del año de validación seguidos por dos espacios, 2 dígitos de la aduana de despacho seguidos por dos espacios, 4 dígitos del número de la patente seguidos por dos espacios, 1 dígito que corresponde al último dígito del año en curso, salvo que se trate de un pedimento consolidado iniciado en el año inmediato anterior o del pedimento original de una rectificación, seguido de 6 dígitos de la numeración progresiva por aduana. Pedimentos.RFCImpo = "";//Atributo condicional para expresar el RFC del importador de los bienes y/o mercancías que fue registrado en la documentación aduanera correspondiente y este se encuentre en la lista de RFC inscritos no cancelados del SAT (l_RFC). } else { Pedimentos.IdentDocAduanero = "";//Atributo condicional para expresar el identificador o folio del documento aduanero que se encuentra asociado al traslado de los bienes y/o mercancías de procedencia extranjera para acreditar la legal estancia o tenencia durante su traslado en territorio nacional. } listaPedimentos.Add(Pedimentos); mercancia.DocumentacionAduanera = listaPedimentos.ToArray(); } } if (Mercancias.TransporteMaritimo != null) { Servicios2.CartaPorte30MercanciasMercanciaDetalleMercancia DetMer = new Test_wsCFD.Servicios2.CartaPorte30MercanciasMercanciaDetalleMercancia();//Nodo condicional para registrar mayor detalle de los bienes o mercancías que se transportan y será requerido cuando el traslado sea vía marítima DetMer.UnidadPesoMerc = "X4A";//Atributo requerido para expresar la clave de unidad de medida estandarizada del peso de los bienes o mercancías que se trasladan. DetMer.PesoBruto = 0;//Atributo requerido para expresar el peso total bruto de los bienes o mercancías que se trasladan. DetMer.PesoNeto = 0;//Atributo requerido para expresar el peso total neto de los bienes o mercancías que se trasladan. DetMer.PesoTara = 0;//Atributo requerido para expresar el peso bruto, menos el peso neto de las mercancías que se trasladan. DetMer.NumPiezasSpecified = true; DetMer.NumPiezas = 1; //Atributo opcional para registrar el número de piezas de los bienes o mercancías que se trasladan. mercancia.DetalleMercancia = DetMer; } Listamercancias.Add(mercancia); Mercancias.Mercancia = Listamercancias.ToArray(); CartaPorte.Mercancias = Mercancias; ///*NODO AUTOTRANSPORTE FEDERAL*/ /// Servicios2.CartaPorte30MercanciasAutotransporte auto = new Test_wsCFD.Servicios2.CartaPorte30MercanciasAutotransporte();//Nodo condicional para registrar la información que permita la identificación del autotransporte de carga federal, por medio del cual se transportan los bienes o mercancías, que transitan a través de las carreteras federales del territorio nacional. auto.PermSCT = Test_wsCFD.Servicios2.c_TipoPermiso30.TPAF01;//Atributo requerido para precisar la clave del tipo de permiso proporcionado por la SCT, el cual debe corresponder de acuerdo al tipo de autotransporte utilizado para el traslado de los bienes o mercancías registrado en el catálogo catCartaPorte:c_TipoPermiso. auto.NumPermisoSCT = "5236";//Atributo requerdo para precisar el número del permiso otorgado por la SCT, el cual se debe capturar de acuerdo al tipo de autotransporte utilizado para el traslado de los bienes o mercancías. //NODO IDENTIFICACION VEHICULAR Servicios2.CartaPorte30MercanciasAutotransporteIdentificacionVehicular identVehi = new Test_wsCFD.Servicios2.CartaPorte30MercanciasAutotransporteIdentificacionVehicular();//Nodo requerido para registrar los datos de identificación del autotransporte en el que se trasladan los bienes o mercancías. identVehi.ConfigVehicular = Test_wsCFD.Servicios2.c_ConfigAutotransporte30.VL;//Atributo requerido para expresar la clave de nomenclatura del autotransporte que es utilizado para transportar los bienes o mercancías. identVehi.PesoBrutoVehicular = 100M;//Atributo requerido para indicar en toneladas el peso bruto vehicular permitido del autotransporte de acuerdo a la NOM-SCT-012-2017 que es utilizado para realizar el traslado de los bienes y/o mercancías. identVehi.PlacaVM = "VPE262A"; //Atributo requerido para registrar solo los caracteres alfanuméricos, sin guiones ni espacios de la placa vehicular del autotransporte que es utilizado para transportar los bienes y/o mercancías. identVehi.AnioModeloVM = 2010; //Atributo requerido para registrar el año del autotransporte que es utilizado para transportar los bienes o mercancías. auto.IdentificacionVehicular = identVehi; //NODO SEGUROS Servicios2.CartaPorte30MercanciasAutotransporteSeguros Seguro = new Test_wsCFD.Servicios2.CartaPorte30MercanciasAutotransporteSeguros();//Nodo requerido para registrar los datos de las pólizas de seguro que cubren los riesgos en el traslado de los bienes y/o mercancías. Seguro.AseguraRespCivil = "AXA";//Atributo requerido para registrar el nombre de la aseguradora que cubre los riesgos por responsabilidad civil del autotransporte utilizado para el traslado de los bienes y/o mercancías. Seguro.PolizaRespCivil = "85214796";//Atributo requerido para registrar el número de póliza asignado por la aseguradora, que cubre los riesgos por responsabilidad civil del autotransporte utilizado para el traslado de los bienes y/o mercancías. if (mercancia.MaterialPeligroso == Test_wsCFD.Servicios2.CartaPorte30MercanciasMercanciaMaterialPeligroso.Sí) { Seguro.AseguraMedAmbiente = "";//Atributo condicional para registrar el nombre de la aseguradora, que cubre los posibles daños al medio ambiente (aplicable para los transportistas de materiales, residuos o remanentes y desechos peligrosos). Seguro.PolizaMedAmbiente = "";//Atributo condicional para registrar el número de póliza asignado por la aseguradora, que cubre los posibles daños al medio ambiente (aplicable para los transportistas de materiales, residuos o remanentes y desechos peligrosos). } //Seguro.AseguraCarga = "";//Atributo opcional para registrar el nombre de la aseguradora que cubre los riesgos de la carga (bienes y/o mercancías) del autotransporte utilizado para el traslado. //Seguro.PolizaCarga = "";//Atributo opcional para expresar el número de póliza asignado por la aseguradora que cubre los riesgos de la carga (bienes y/o mercancías) del autotransporte utilizado para el traslado. //Seguro.PrimaSeguroSpecified = true; //Seguro.PrimaSeguro = 0;//Atributo opcional para registrar el valor del importe por el cargo adicional convenido entre el transportista y el cliente, el cual será igual al valor de la prima del seguro contratado, conforme a lo establecido en la cláusula novena del Acuerdo por el que se homologa la Carta de Porte regulada por la Ley de Caminos, Puentes y Autotransporte Federal, con el complemento Carta Porte que debe acompañar al Comprobante Fiscal Digital por Internet (CFDI). auto.Seguros = Seguro; //NODO PARA LOS REMOLQUES List ListaRemolques = new List (); Servicios2.ArrayOfCartaPorte30MercanciasAutotransporteRemolqueRemolque remolque = new Test_wsCFD.Servicios2.ArrayOfCartaPorte30MercanciasAutotransporteRemolqueRemolque();//Nodo requerido para expresar la información del remolque o semirremolques que se emplean con el autotransporte para el traslado de los bienes o mercancías. remolque.SubTipoRem = Test_wsCFD.Servicios2.c_SubTipoRem30.CTR002;//Atributo requerido para expresar la clave del subtipo de remolque o semirremolques que se emplean con el autotransporte para el traslado de los bienes o mercancías. remolque.Placa = "VPE262A";//Atributo requerido para registrar el valor de la placa vehicular del remolque o semirremolque que es utilizado para transportar los bienes o mercancías, se deben registrar solo los caracteres alfanuméricos, sin guiones y espacios. ListaRemolques.Add(remolque); auto.Remolques = ListaRemolques.ToArray(); Mercancias.Autotransporte = auto; CartaPorte.Mercancias = Mercancias; ///*NODO FIGURA TRANSPORTE*/ List ListaTiposFigura = new List (); /// //NODO OPERADORES Servicios2.ArrayOfCartaPorte30TiposFiguraTiposFigura TipoFiguraOperador = new Test_wsCFD.Servicios2.ArrayOfCartaPorte30TiposFiguraTiposFigura(); TipoFiguraOperador.TipoFigura = "01";//Atributo requerido para registrar la clave de la figura de transporte que interviene en el traslado de los bienes y/o mercancías. TipoFiguraOperador.RFCFigura = "AEAA901130TF0";//Atributo condicional para registrar el RFC de la figura de transporte que interviene en el traslado de los bienes y/o mercancías. TipoFiguraOperador.NumLicencia = "12345678";//Atributo condicional para expresar el número de la licencia o el permiso otorgado al operador del autotransporte de carga en el que realiza el traslado de los bienes y/o mercancías. TipoFiguraOperador.NombreFigura = "EJEMPLO DE OPERADOR";//Atributo opcional para registrar el nombre de la figura de transporte que interviene en el traslado de los bienes y/o mercancías. if (TipoFiguraOperador.RFCFigura == "") { TipoFiguraOperador.NumRegIdTribFigura = "";//Atributo condicional para registrar el número de identificación o registro fiscal del país de residencia de la figura de transporte que interviene en el traslado de los bienes y/o mercancías, cuando se trate de residentes en el extranjero para los efectos fiscales correspondientes. TipoFiguraOperador.ResidenciaFiscalFiguraSpecified = true; TipoFiguraOperador.ResidenciaFiscalFigura = Test_wsCFD.Servicios2.c_Pais.USA;//Atributo condicional para registrar la clave del país de residencia de la figura de transporte que interviene en el traslado de los bienes y/o mercancías para los efectos fiscales correspondientes. } Servicios2.ArrayOfCartaPorte30TiposFiguraTiposFiguraDomicilio DomicilioOperador = new Test_wsCFD.Servicios2.ArrayOfCartaPorte30TiposFiguraTiposFiguraDomicilio();//Nodo opcional para registrar información del domicilio del(los) tipo(s) de figura transporte que intervenga(n) en el traslado de los bienes y/o mercancías. DomicilioOperador.Calle = "EL DORADO";//Atributo opcional que sirve para precisar la calle en que está ubicado el domicilio del propietario del medio de transporte. DomicilioOperador.NumeroExterior = "905";//Atributo opcional que sirve para expresar el número exterior en donde se ubica el domicilio del propietario del transporte. //DomicilioOperador.NumeroInterior = "";//Atributo opcional que sirve para expresar el número interior, en caso de existir, en donde se ubica el domicilio del propietario del transporte DomicilioOperador.Colonia = "0084";//Atributo opcional que sirve para expresar la clave de la colonia o dato análogo en donde se ubica el domicilio del propietario del transporte. DomicilioOperador.Localidad = "02";//Atributo opcional para precisar la clave de la ciudad, población, distrito u análogo en donde se encuentra ubicado el domicilio del propietario del transporte. //DomicilioOperador.Referencia = "";//Atributo opcional para expresar una referencia geográfica adicional que permita una más fácil o precisa ubicación del propietario del transporte; por ejemplo, las coordenadas GPS. DomicilioOperador.Municipio = "006";//Atributo opcional para precisar la clave del municipio, delegación o alcaldía, condado u otro análogo en donde se encuentra ubicado el domicilio del propietario del transporte DomicilioOperador.Estado = "SIN";//Atributo requerido para precisar el estado, entidad, región, comunidad, u otra figura análoga en donde se encuentra ubicado el domicilio del propietario del transporte. DomicilioOperador.Pais = Test_wsCFD.Servicios2.c_Pais.MEX;//Atributo requerido que sirve para precisar la clave del país en donde se encuentra ubicado el domicilio del propietario del transporte, conforme al catálogo c_Pais publicado en el portal del SAT en Internet que está basado en la especificación ISO 3166-1. DomicilioOperador.CodigoPostal = "80060";//Atributo requerido para asentar el código postal (PO, BOX) en donde se encuentra ubicado el domicilio del propietario del transporte. TipoFiguraOperador.Domicilio = DomicilioOperador; ListaTiposFigura.Add(TipoFiguraOperador); CartaPorte.FiguraTransporte = ListaTiposFigura.ToArray(); comprobante.CartaPorte30 = CartaPorte; comprobante.Emisor = emisor; comprobante.Receptor = receptor; comprobante.Conceptos = conceptos.ToArray(); comprobante.CartaPorte30 = CartaPorte; string Usuario = "demoCFDI"; string Password = "CPKRTQ6FTD43)~"; Servifact.Servicios Servicio = new Servifact.Servicios(); return Servicio.TimbrarComprobante(ref comprobante, Usuario, Password); } private string generarIdCCP() { Guid generatedUuid = Guid.NewGuid(); string uuidStr = generatedUuid.ToString(); string uuidWithC = "CCC" + uuidStr.Substring(3); return uuidWithC; }
private string ComprobanteV4CartaPorteV2Traslado(RFC, Serie, Folio) { Servicios2.Comprobante Comprobante = new Servicios2.Comprobante(); Servicios2.Emisor emisor = new Servicios2.Emisor(); Servicios2.Receptor receptor = new Servicios2.Receptor(); ListListaConceptos = new List (); Comprobante.Version = Servicios2.Versiones.Ver_4; // <- Nuevo Comprobante.TipoComprobante = "T"; Comprobante.SerieFolio = Serie; Comprobante.Nume_Folio = Folio; Comprobante.Fech_Comprobante = DateTime.Now; Comprobante.Moneda = Servicios2.Monedas.XXX; Comprobante.LugarExpedicion = "94300"; // <- Nuevo Comprobante.Exportacion = "01"; // <- Nuevo /* EMISOR */ emisor.RFC = "IIA040805DZ4"; emisor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV"; emisor.RegimenFiscal = "603"; Comprobante.Emisor = emisor; /* RECEPTOR */ receptor.RFC = "IIA040805DZ4"; receptor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV"; receptor.Domi_CodigoPostal = "94300"; // <- Nuevo receptor.RegimenFiscal = "603"; receptor.UsoCFDI = "S01"; // <- Nuevo Comprobante.Receptor = receptor; /* CONCEPTOS */ Servicios2.Concepto concepto = new Servicios2.Concepto(); concepto.ClaveProductoServicio = "31181701"; concepto.Cantidad = 2; concepto.Descripcion = "PAQUETES"; concepto.ClaveUnidad = "XPK"; concepto.Unidad = "PAQUETE"; concepto.PrecioUnitario = 0; concepto.Importe = 0; concepto.ObjetoImpuesto = "01"; // <- Nuevo ListaConceptos.Add(concepto); Comprobante.Conceptos = ListaConceptos.ToArray(); /* COMPLEMENTO CARTA PORTE */ Servicios2.CartaPorte CartaPorte = new Servicios2.CartaPorte(); List ListaUbicaciones = new List (); Servicios2.ArrayOfCartaPorteUbicacionUbicacion UbicacionOrigen = new Servicios2.ArrayOfCartaPorteUbicacionUbicacion(); Servicios2.ArrayOfCartaPorteUbicacionUbicacion UbicacionDestino = new Servicios2.ArrayOfCartaPorteUbicacionUbicacion(); Servicios2.CartaPorteMercancias Mercancias = new Servicios2.CartaPorteMercancias(); CartaPorte.TranspInternac = Servicios2.CartaPorteTranspInternac.No; CartaPorte.TotalDistRecSpecified = true; CartaPorte.TotalDistRec = Convert.ToDecimal(100); // Origenes UbicacionOrigen.TipoUbicacion = Servicios2.ArrayOfCartaPorteUbicacionUbicacionTipoUbicacion.Origen; UbicacionOrigen.RFCRemitenteDestinatario = emisor.RFC; UbicacionOrigen.NombreRemitenteDestinatario = emisor.Nomb_RazonSocial; UbicacionOrigen.FechaHoraSalidaLlegada = Convert.ToDateTime("2023-08-29T03:24:00"); Servicios2.ArrayOfCartaPorteUbicacionUbicacionDomicilio DomicilioOrigen = new Servicios2.ArrayOfCartaPorteUbicacionUbicacionDomicilio(); DomicilioOrigen.Calle = "TOMATE"; DomicilioOrigen.NumeroExterior = "3233"; //DomicilioOrigen.NumeroInterior = ""; DomicilioOrigen.Colonia = "2805"; DomicilioOrigen.Localidad = "12"; DomicilioOrigen.Municipio = "118"; DomicilioOrigen.Estado = "VER"; DomicilioOrigen.Pais = Servicios2.c_Pais.MEX; DomicilioOrigen.CodigoPostal = "94300"; DomicilioOrigen.Referencia = "CERCA DEL CENTRO"; UbicacionOrigen.Domicilio = DomicilioOrigen; ListaUbicaciones.Add(UbicacionOrigen); // Destinos UbicacionDestino.TipoUbicacion = Servicios2.ArrayOfCartaPorteUbicacionUbicacionTipoUbicacion.Destino; UbicacionDestino.RFCRemitenteDestinatario = emisor.RFC; UbicacionDestino.NombreRemitenteDestinatario = emisor.Nomb_RazonSocial; UbicacionDestino.DistanciaRecorridaSpecified = true; UbicacionDestino.DistanciaRecorrida = 100M; UbicacionDestino.FechaHoraSalidaLlegada = Convert.ToDateTime("2023-10-02T03:24:00"); Servicios2.ArrayOfCartaPorteUbicacionUbicacionDomicilio DomicilioDestino = new Servicios2.ArrayOfCartaPorteUbicacionUbicacionDomicilio(); DomicilioDestino.Calle = "ACOLMAN"; DomicilioDestino.NumeroExterior = "3233"; //DomicilioDestino.NumeroInterior = ""; DomicilioDestino.Colonia = "2650"; DomicilioDestino.Localidad = "14"; DomicilioDestino.Municipio = "104"; DomicilioDestino.Estado = "MEX"; DomicilioDestino.Pais = Servicios2.c_Pais.MEX; DomicilioDestino.CodigoPostal = "54070"; DomicilioDestino.Referencia = "ESQ. IXTLAHUACA"; UbicacionDestino.Domicilio = DomicilioDestino; ListaUbicaciones.Add(UbicacionDestino); CartaPorte.Ubicaciones = ListaUbicaciones.ToArray(); // Mercancías Mercancias.NumTotalMercancias = 1; Mercancias.PesoBrutoTotal = Convert.ToDecimal(800); Mercancias.UnidadPeso = "XPK"; List ListaMercancias = new List (); Servicios2.CartaPorteMercanciasMercancia Mercancia = new Servicios2.CartaPorteMercanciasMercancia(); Mercancia.BienesTransp = "31181701"; Mercancia.Cantidad = 2; Mercancia.Descripcion = "PAQUETES"; Mercancia.ClaveUnidad = "XPK"; Mercancia.Unidad = "PAQUETE"; Mercancia.PesoEnKg = Convert.ToDecimal(800); Mercancia.MaterialPeligrosoSpecified = true; Mercancia.MaterialPeligroso = Servicios2.CartaPorteMercanciasMercanciaMaterialPeligroso.No; //Atributo condicional para precisar si los bienes o mercancías que se trasladan son considerados material peligroso. // Guías Identificación List ListaGuiasId = new List (); Servicios2.CartaPorteMercanciasMercanciaGuiasIdentificacion GuiasIdentificacion = new Servicios2.CartaPorteMercanciasMercanciaGuiasIdentificacion(); GuiasIdentificacion.NumeroGuiaIdentificacion = "00000CL323"; GuiasIdentificacion.DescripGuiaIdentificacion = "1"; GuiasIdentificacion.PesoGuiaIdentificacion = 400; ListaGuiasId.Add(GuiasIdentificacion); Servicios2.CartaPorteMercanciasMercanciaGuiasIdentificacion GuiasIdentificacion2 = new Servicios2.CartaPorteMercanciasMercanciaGuiasIdentificacion(); GuiasIdentificacion2.NumeroGuiaIdentificacion = "00000CL324"; GuiasIdentificacion2.DescripGuiaIdentificacion = "1"; GuiasIdentificacion2.PesoGuiaIdentificacion = 400; ListaGuiasId.Add(GuiasIdentificacion2); Mercancia.GuiasIdentificacion = ListaGuiasId.ToArray(); ListaMercancias.Add(Mercancia); Mercancias.Mercancia = ListaMercancias.ToArray(); // Auto Transporte Federal Servicios2.CartaPorteMercanciasAutotransporte AutoTransporte = new Servicios2.CartaPorteMercanciasAutotransporte(); Servicios2.CartaPorteMercanciasAutotransporteIdentificacionVehicular IdentVehicular = new Servicios2.CartaPorteMercanciasAutotransporteIdentificacionVehicular(); Servicios2.CartaPorteMercanciasAutotransporteSeguros Seguro = new Servicios2.CartaPorteMercanciasAutotransporteSeguros(); AutoTransporte.NumPermisoSCT = "2512SEX960126BTA/12"; AutoTransporte.PermSCT = Servicios2.c_TipoPermiso.TPAF01; IdentVehicular.ConfigVehicular = Servicios2.c_ConfigAutotransporte.C2R3; IdentVehicular.PlacaVM = "45AL6A"; IdentVehicular.AnioModeloVM = 2007; AutoTransporte.IdentificacionVehicular = IdentVehicular; Seguro.AseguraRespCivil = "AXA"; Seguro.PolizaRespCivil = "VC1669190700"; AutoTransporte.Seguros = Seguro; // Remolque List ListaRemolque = new List (); Servicios2.ArrayOfCartaPorteMercanciasAutotransporteRemolqueRemolque remolque = new Servicios2.ArrayOfCartaPorteMercanciasAutotransporteRemolqueRemolque(); remolque.Placa = "AYA511"; remolque.SubTipoRem = Servicios2.c_SubTipoRem.CTR009; ListaRemolque.Add(remolque); AutoTransporte.Remolques = ListaRemolque.ToArray(); Mercancias.Autotransporte = AutoTransporte; CartaPorte.Mercancias = Mercancias; // Figura Transporte List ListaTiposFigura = new List (); Servicios2.ArrayOfCartaPorteTiposFiguraTiposFigura TipoFiguraOperador = new Servicios2.ArrayOfCartaPorteTiposFiguraTiposFigura(); TipoFiguraOperador.TipoFigura = "01"; TipoFiguraOperador.RFCFigura = "MOPJ760119737"; TipoFiguraOperador.NombreFigura = "JESUS GUILLERMO MONOBE PEREZ"; TipoFiguraOperador.NumLicencia = "LFD00067228"; Servicios2.ArrayOfCartaPorteTiposFiguraTiposFiguraDomicilio DomicilioOperador = new Servicios2.ArrayOfCartaPorteTiposFiguraTiposFiguraDomicilio(); //DomicilioOperador.Calle = ""; //DomicilioOperador.NumeroExterior = ""; //DomicilioOperador.NumeroInterior = ""; DomicilioOperador.Colonia = "0043"; DomicilioOperador.Localidad = "02"; //DomicilioOperador.Referencia = ""; DomicilioOperador.Municipio = "006"; DomicilioOperador.Estado = "SIN"; DomicilioOperador.Pais = Servicios2.c_Pais.MEX; DomicilioOperador.CodigoPostal = "80020"; TipoFiguraOperador.Domicilio = DomicilioOperador; ListaTiposFigura.Add(TipoFiguraOperador); CartaPorte.FiguraTransporte = ListaTiposFigura.ToArray(); Comprobante.CartaPorte = CartaPorte; string Usuario = "demoCFDI"; string Password = "CPKRTQ6FTD43)~"; Servicios2.Servicios Servicio = new Servicios2.Servicios(); return Servicio.TimbrarComprobante(ref Comprobante, Usuario, Password); }
private string ComprobanteV4CartaPorteV3Traslado(RFC, Serie, Folio) { Servicios2.Comprobante Comprobante = new Servicios2.Comprobante(); Servicios2.Emisor emisor = new Servicios2.Emisor(); Servicios2.Receptor receptor = new Servicios2.Receptor(); ListListaConceptos = new List (); // Datos de la Carta Porte Servicios2.CartaPorte30 CartaPorte = new Servicios2.CartaPorte30(); List ListaUbicaciones = new List (); Servicios2.ArrayOfCartaPorte30UbicacionUbicacion UbicacionOrigen = new Servicios2.ArrayOfCartaPorte30UbicacionUbicacion(); Servicios2.ArrayOfCartaPorte30UbicacionUbicacion UbicacionDestino = new Servicios2.ArrayOfCartaPorte30UbicacionUbicacion(); Servicios2.CartaPorte30Mercancias Mercancias = new Servicios2.CartaPorte30Mercancias(); Comprobante.Version = Servicios2.Versiones.Ver_4; Comprobante.TipoComprobante = "T"; Comprobante.SerieFolio = Serie; Comprobante.Nume_Folio = Folio; Comprobante.Fech_Comprobante = DateTime.Now; Comprobante.Moneda = Servicios2.Monedas.XXX; Comprobante.LugarExpedicion = "94300"; Comprobante.Exportacion = "01"; emisor.RFC = "IIA040805DZ4"; emisor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV"; emisor.RegimenFiscal = "603"; Comprobante.Emisor = emisor; receptor.RFC = "IIA040805DZ4"; receptor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV"; receptor.Domi_CodigoPostal = "94300"; receptor.RegimenFiscal = "603"; receptor.UsoCFDI = "S01"; Comprobante.Receptor = receptor; Servicios2.Concepto concepto = new Servicios2.Concepto(); concepto.ClaveProductoServicio = "31181701"; concepto.Cantidad = 1; concepto.Descripcion = "PAQUETES"; concepto.ClaveUnidad = "XPK"; concepto.Unidad = "PAQUETE"; concepto.PrecioUnitario = 0; concepto.Importe = 0; concepto.ObjetoImpuesto = "01"; ListaConceptos.Add(concepto); Comprobante.Conceptos = ListaConceptos.ToArray(); // CARTA PORTE 3.0 CartaPorte.IdCCP = generarIdCCP(); // <- Nuevo CartaPorte.TranspInternac = Servicios2.CartaPorteTranspInternac1.No; CartaPorte.TotalDistRecSpecified = true; CartaPorte.TotalDistRec = 100M; // Ubicación Origen UbicacionOrigen.TipoUbicacion = Servicios2.ArrayOfCartaPorte30UbicacionUbicacionTipoUbicacion.Origen; UbicacionOrigen.RFCRemitenteDestinatario = emisor.RFC; UbicacionOrigen.NombreRemitenteDestinatario = emisor.Nomb_RazonSocial; //DateTime FechaHoraSalida = Convert.ToDateTime("2024/03/21T11:51:00"); UbicacionOrigen.FechaHoraSalidaLlegada = Convert.ToDateTime("2024/03/21T11:51:00"); Servicios2.ArrayOfCartaPorte30UbicacionUbicacionDomicilio DomicilioOrigen = new Servicios2.ArrayOfCartaPorte30UbicacionUbicacionDomicilio(); DomicilioOrigen.NumeroExterior = "3233"; //DomicilioOrigen.NumeroInterior = "A"; DomicilioOrigen.Colonia = "2805"; DomicilioOrigen.Localidad = "12"; DomicilioOrigen.Municipio = "118"; DomicilioOrigen.Estado = "VER"; DomicilioOrigen.Pais = Servicios2.c_Pais.MEX; DomicilioOrigen.CodigoPostal = "94300"; DomicilioOrigen.Referencia = "CERCA DEL CENTRO"; UbicacionOrigen.Domicilio = DomicilioOrigen; ListaUbicaciones.Add(UbicacionOrigen); // Ubicación Destino UbicacionDestino.TipoUbicacion = Servicios2.ArrayOfCartaPorte30UbicacionUbicacionTipoUbicacion.Destino; UbicacionDestino.RFCRemitenteDestinatario = emisor.RFC; UbicacionDestino.NombreRemitenteDestinatario = emisor.Nomb_RazonSocial; UbicacionDestino.DistanciaRecorridaSpecified = true; UbicacionDestino.DistanciaRecorrida = 100M; UbicacionDestino.FechaHoraSalidaLlegada = Convert.ToDateTime("2024/03/22T11:51:00"); Servicios2.ArrayOfCartaPorte30UbicacionUbicacionDomicilio DomicilioDestino = new Servicios2.ArrayOfCartaPorte30UbicacionUbicacionDomicilio(); DomicilioDestino.Calle = "ACOLMAN"; DomicilioDestino.NumeroExterior = "3233"; DomicilioDestino.NumeroInterior = "B"; DomicilioDestino.Colonia = "2650"; DomicilioDestino.Localidad = "14"; DomicilioDestino.Municipio = "104"; DomicilioDestino.Estado = "MEX"; DomicilioDestino.Pais = Servicios2.c_Pais.MEX; DomicilioDestino.CodigoPostal = "54070"; DomicilioDestino.Referencia = "ESQ. IXTLAHUACA"; UbicacionDestino.Domicilio = DomicilioDestino; ListaUbicaciones.Add(UbicacionDestino); CartaPorte.Ubicaciones = ListaUbicaciones.ToArray(); // MERCANCIAS Mercancias.PesoBrutoTotal = 15M; Mercancias.UnidadPeso = "XPK"; Mercancias.NumTotalMercancias = 1; Mercancias.LogisticaInversaRecoleccionDevolucionSpecified = true; Mercancias.LogisticaInversaRecoleccionDevolucion = Test_wsCFD.Servicios2.CartaPorte30MercanciasLogisticaInversaRecoleccionDevolucion.Sí;//Atributo condicional para expresar si se hace uso de alguno de los servicios de logística inversa, recolección o devolución para el traslado de los bienes y/o mercancías. // MERCANCIA List ListaMercancias = new List (); Servicios2.CartaPorte30MercanciasMercancia Mercancia = new Servicios2.CartaPorte30MercanciasMercancia(); Mercancia.BienesTransp = "31181701"; Mercancia.Cantidad = 1; Mercancia.Descripcion = "PAQUETES"; Mercancia.ClaveUnidad = "XPK"; Mercancia.Unidad = "PAQUETE"; Mercancia.PesoEnKg = 15M; // Añadido para indicar que no es material peligroso Mercancia.MaterialPeligroso = Servicios2.CartaPorte30MercanciasMercanciaMaterialPeligroso.No; Mercancia.MaterialPeligrosoSpecified = true; Mercancia.MaterialPeligroso = Servicios2.CartaPorte30MercanciasMercanciaMaterialPeligroso.No;//Atributo condicional para precisar si los bienes o mercancías que se trasladan son considerados material peligroso. if (Mercancia.MaterialPeligroso == Servicios2.CartaPorte30MercanciasMercanciaMaterialPeligroso.Sí) { Mercancia.CveMaterialPeligroso = "";//Atributo condicional para precisar la clave del tipo de material peligroso que se transporta. Mercancia.Embalaje = "";//Atributo condicional para precisar la clave del tipo de embalaje que se requiere para transportar el material o residuo peligroso. Mercancia.DescripEmbalaje = "";//Atributo opcional para expresar la descripción del embalaje en el que se transporta los bienes o mercancías que se consideran material o residuo peligroso. } List ListaGuiasId = new List (); Servicios2.CartaPorte30MercanciasMercanciaGuiasIdentificacion GuiasIdentificacion = new Servicios2.CartaPorte30MercanciasMercanciaGuiasIdentificacion(); GuiasIdentificacion.NumeroGuiaIdentificacion = "00000CL554"; GuiasIdentificacion.DescripGuiaIdentificacion = "TOMATES"; GuiasIdentificacion.PesoGuiaIdentificacion = 15M; ListaGuiasId.Add(GuiasIdentificacion); Mercancia.GuiasIdentificacion = ListaGuiasId.ToArray(); ListaMercancias.Add(Mercancia); Mercancias.Mercancia = ListaMercancias.ToArray(); // AUTOTRANSPORTE Servicios2.CartaPorte30MercanciasAutotransporte AutoTransporte = new Servicios2.CartaPorte30MercanciasAutotransporte(); Servicios2.CartaPorte30MercanciasAutotransporteIdentificacionVehicular IdentVehicular = new Servicios2.CartaPorte30MercanciasAutotransporteIdentificacionVehicular(); Servicios2.CartaPorte30MercanciasAutotransporteSeguros Seguro = new Servicios2.CartaPorte30MercanciasAutotransporteSeguros(); AutoTransporte.NumPermisoSCT = "2512SEX960126BTA/12"; AutoTransporte.PermSCT = Servicios2.c_TipoPermiso30.TPAF01; IdentVehicular.ConfigVehicular = Servicios2.c_ConfigAutotransporte30.C2R2; IdentVehicular.PesoBrutoVehicular = 30M; IdentVehicular.PlacaVM = "45AL6A"; IdentVehicular.AnioModeloVM = 2007; AutoTransporte.IdentificacionVehicular = IdentVehicular; Seguro.AseguraRespCivil = "AXA"; Seguro.PolizaRespCivil = "VC1669190700"; AutoTransporte.Seguros = Seguro; List ListaRemolque = new List (); Servicios2.ArrayOfCartaPorte30MercanciasAutotransporteRemolqueRemolque remolque = new Servicios2.ArrayOfCartaPorte30MercanciasAutotransporteRemolqueRemolque(); remolque.Placa = "AYA511"; remolque.SubTipoRem = Servicios2.c_SubTipoRem30.CTR009; ListaRemolque.Add(remolque); AutoTransporte.Remolques = ListaRemolque.ToArray(); Mercancias.Autotransporte = AutoTransporte; CartaPorte.Mercancias = Mercancias; // FIGURA TRANSPORTE List ListaTiposFigura = new List (); Servicios2.ArrayOfCartaPorte30TiposFiguraTiposFigura TipoFiguraOperador = new Servicios2.ArrayOfCartaPorte30TiposFiguraTiposFigura(); TipoFiguraOperador.TipoFigura = "01"; TipoFiguraOperador.RFCFigura = "MOPJ760119737"; TipoFiguraOperador.NombreFigura = "JESUS GUILLERMO MONOBE PEREZ"; TipoFiguraOperador.NumLicencia = "LFD00067228"; Servicios2.ArrayOfCartaPorte30TiposFiguraTiposFiguraDomicilio DomicilioOperador = new Servicios2.ArrayOfCartaPorte30TiposFiguraTiposFiguraDomicilio(); DomicilioOperador.Calle = "Av. Rosalez"; DomicilioOperador.NumeroExterior = "18"; //DomicilioOperador.NumeroInterior = ""; DomicilioOperador.Colonia = "0043"; DomicilioOperador.Localidad = "02"; //DomicilioOperador.Referencia = ""; DomicilioOperador.Municipio = "006"; DomicilioOperador.Estado = "SIN"; DomicilioOperador.Pais = Servicios2.c_Pais.MEX; DomicilioOperador.CodigoPostal = "80020"; TipoFiguraOperador.Domicilio = DomicilioOperador; ListaTiposFigura.Add(TipoFiguraOperador); CartaPorte.FiguraTransporte = ListaTiposFigura.ToArray(); Comprobante.CartaPorte30 = CartaPorte; string Usuario = "demoCFDI"; string Password = "CPKRTQ6FTD43)~"; Servicios2.Servicios Servicio = new Servicios2.Servicios(); return Servicio.TimbrarComprobante(ref Comprobante, Usuario, Password); }
private Servicios2.Comprobante CargarComprobanteComercioExterior20(string RFC, string Serie, int Folio) { Servicios2.Comprobante comprobante = new Test_wsCFD.Servicios2.Comprobante(); //Elemento Comprobante Servicios2.Emisor emisor = new Test_wsCFD.Servicios2.Emisor(); // Elemento Emisor Servicios2.Receptor receptor = new Test_wsCFD.Servicios2.Receptor(); // Elemento Receptor Servicios2.Concepto concepto = new Test_wsCFD.Servicios2.Concepto(); //Elemento Concepto Listconceptos = new List (); //Listado de Conceptos List Impuestos = new List (); //listado de impuestos a agregar al comprobante Servicios2.Impuesto Impuesto = new Test_wsCFD.Servicios2.Impuesto(); Servicios2.ComercioExterior20 comercioExterior = new Test_wsCFD.Servicios2.ComercioExterior20();//Elemento ComercioExterior Servicios2.ComercioExterior20Emisor emisorCE = new Test_wsCFD.Servicios2.ComercioExterior20Emisor();//Elemento Emisor del Comercio Exterior Servicios2.ComercioExterior20EmisorDomicilio DomicilioEmisorCE = new Test_wsCFD.Servicios2.ComercioExterior20EmisorDomicilio();//Elemento Domicilio Emisor del Comercio Exterior Servicios2.ComercioExterior20Receptor receptoCE = new Test_wsCFD.Servicios2.ComercioExterior20Receptor();//Elemento Receptor del Comercio Exterior Servicios2.ComercioExterior20ReceptorDomicilio DomicilioReceptorCE = new Test_wsCFD.Servicios2.ComercioExterior20ReceptorDomicilio();//Elemento Domicilio Receptor del Comercio Exterior List propietariosCE = new List ();//Elemento Propiestario del Comercio Exterior Servicios2.ComercioExterior20Destinatario destinatario = new Test_wsCFD.Servicios2.ComercioExterior20Destinatario();//Elemento Destinatario Servicios2.ComercioExterior20DestinatarioDomicilio domicilioDes = new Test_wsCFD.Servicios2.ComercioExterior20DestinatarioDomicilio();//Elemento domicilio del Destinatario List ListaMercancias = new List ();//listado de Mercancias de Comercio Exterior Servicios2.ArrayOfComercioExterior20MercanciaMercancia mercancia = new Test_wsCFD.Servicios2.ArrayOfComercioExterior20MercanciaMercancia(); List listaDescEspe = new List (); Servicios2.ArrayOfComercioExterior20MercanciaMercanciaDescripcionesEspecificas descEspec = new Test_wsCFD.Servicios2.ArrayOfComercioExterior20MercanciaMercanciaDescripcionesEspecificas(); //DATOS DEL COMPROBANTE comprobante.Version = Test_wsCFD.Servicios2.Versiones.Ver_4 ;//Version del comprobante comprobante.SerieFolio = Serie; //Parte inicial o final que acompaña al número de la factura y puede ser opcional comprobante.Nume_Folio = Folio; //Número consecutivo asignado al comprobante para el control interno comprobante.Fech_Comprobante = System.DateTime.Now; //Fecha de emisión del CFDI comprobante.TipoComprobante = "I";//Tipo de Comprobante fiscal definidos por el SAT T=Traslado, I=Ingreso comprobante.ComprobanteClase = Servicios2.Comprobante_Clase.Factura; //Clase de comprobante comprobante.Moneda = Servicios2.Monedas.USD;//Medida de cambio que se emplea en la transacion comercial comprobante.MetodoPago = "PUE"; //Metodo por el cual se realizara el pago del comprobante comprobante.LugarExpedicion = "80060"; //codigo postal del lugar de expedicion ; //comprobante.CondicionesPago = "CONTADO"; //Es la condición establecida en que deberá ser liquidada la factura "CONTADO" "CREDITO" comprobante.FormaPago = "01"; //Forma en que debera ser liquidada de la factura comprobante.TipoCambio = 16.9898; //Valor que tiene la moneda que se esta utilizando en la factura en relacion al peso mexicano Ejemplo: 1 para peso mexicano, 13.02 para dolares comprobante.Exportacion = "02"; /INFORMACION DE LOS COMPROBANTES RELACIONADOS/ //cfdisrelacionados.TipoRelacion = "04";//Atributo que indica la clave de la relación que existe entre éste que se esta generando y el o los CFDI previos. //List listaUUIDs = new List ();//listado de UUIDS Relacionados //Servicios2.UUIDRelacionado uuid = new Test_wsCFD.Servicios2.UUIDRelacionado(); //uuid.UUID = "4D2A6D62-AC26-4758-9B03-1080654913D6";//folio fiscal (UUID) de un CFDI relacionado con el presente comprobante //listaUUIDs.Add(uuid); //cfdisrelacionados.UUIDsRelacionados = listaUUIDs.ToArray(); //comprobante.CFDIRelacionados = cfdisrelacionados; /INFORMACION DE QUIEN EXPIDE LA FACTURA/ emisor.RFC = RFC; //RFC de la empresa o persona que va a emitir el comprobante emisor.Nomb_Comercial = "ILUNIMADORA DE ALMACENES SA DE CV"; //Nombre con el que se conoce a la empresa o persona que emite el comprobante emisor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV"; //Nombre con el que esta registrado ante hacienda quien emite el comprobante emisor.RegimenFiscal = "601"; //Regimen Fiscal del emisor /DATOS DE LA EMPRESA A QUIEN SE EXPIDE LA FACTURA/ receptor.RFC = "XEXX010101000"; //RFC de la empresa o persona a quien se le va a emitir el comprobante receptor.Nomb_RazonSocial = "EMPRESA DEL EXTRANJERO"; //Nombre con el que esta registrado ante hacienda, quien se le va a emitir el comprobante receptor.Nomb_Comercial = "EMPRESA DEL EXTRANJERO"; //Nombre con el que se le conoce a la empresa o persona que se le va a emitir el comprobante receptor.NumRegIdTrib = "383754717"; //Número de registro de identidad fiscal del receptor del comprobante fiscal receptor.UsoCFDI = "S01"; //Clave del uso que dará a esta factura el receptor del CFDI receptor.Domi_Pais = "USA"; //Nombre del pais del domicilio fiscal de quien se le va a emitir el comprobante receptor.RegimenFiscal = "616"; receptor.Domi_CodigoPostal = "80060"; /CONCEPTOS/ concepto = new Servicios2.Concepto(); concepto.ClaveProductoServicio = "50406517";//Clave del producto o del servicio amparado por el presente concepto concepto.ClaveUnidad = "KGM"; //Clave de unidad de medida estandarizada aplicable para la cantidad expresada en el concepto concepto.Cantidad = 1; //Cantidad de bienes o servicios del tipo particular definido por el presente concepto concepto.Unidad = "KG"; //Unidad de medida aplicable para la cantidad expresada en el concepto(pieza, caja, kg, onza, metro, pulgada o litro) concepto.NoIdentificacion = "0001"; // Número de serie del bien o identificador del servicio amparado por el presente concepto concepto.Descripcion = "TOMATE BOLA 2 TANDAS"; //Descripción del bien o servicio cubierto por el presente concepto concepto.PrecioUnitario = 8.7562; //Precio unitario del bien o servicio cubierto por el presente concepto //concepto.Descuento = 0;//Importe de los descuentos aplicables al concepto concepto.ObjetoImpuesto = "01"; /IMPUESTOS POR CONCEPTO/ /*EJEMPLO IMPUESTO FEDERAL TRASLADADO */ //Impuesto = new Test_wsCFD.Servicios2.Impuesto(); //Impuesto.Nombre = "IVA"; //Especifica el nombre del impuesto (IVA,IEPS,ISR) //Impuesto.ClaveSATImpuesto = "002";//Clave del tipo de impuesto aplicable al concepto (001=ISR,002=IVA,003=IEPS) //Impuesto.Base = 10.00; //Base para el cálculo del impuesto, la determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes //Impuesto.Tipo = 1; //Especifica la naturaleza del impuesto (1 Trasladado, 2 Retenido) //Impuesto.TipoFactor = Test_wsCFD.Servicios2.TiposFactor.Tasa; //Clave del tipo de factor que se aplica a la base del impuesto //Impuesto.Tasa = 0; //tasa del impuesto que se retiene o traslada por cada concepto amparado en el comprobante //Impuesto.Federal = 1; //Especifica si el impuesto es Federal 1 o Local 2 //Impuesto.Importe = 0; //Importe calculado del impuesto //Impuestos.Add(Impuesto); //concepto.Impuestos = Impuestos.ToArray(); conceptos.Add(concepto); ///COMERCIO EXTERIOR/ if (comprobante.TipoComprobante == "T") { comercioExterior.MotivoTraslado = "03";//indica la clave del motivo por el cual en la exportación de mercancías en definitiva con clave de pedimento A1, éstas no son objeto de enajenación o siéndolo sean a título gratuito, desde el domicilio del emisor hacia el domicilio del receptor o del destinatario } comercioExterior.ClaveDePedimento = Test_wsCFD.Servicios2.c_ClavePedimento20.A1; //clave de pedimento que se haya declarado (A1 = IMPORTACION O EXPORTACION DEFINITIVA) comercioExterior.CertificadoOrigen = 0; //certificados de Origen de los Tratados de Libre Comercio que ha celebrado México con diversos países (0 = No Funge como certificado de origen, 1 = Funge como certificado de origen) comercioExterior.IncotermSpecified = true;//especifica si lleva incoterm comercioExterior.Incoterm = Test_wsCFD.Servicios2.c_INCOTERM20.DAP; //Atributo que indica la clave del INCOTERM aplicable a la factura, debe de ser un valor del catalogo publicado por el SAT //comercioExterior.NumeroExportadorConfiable = "2821382311238";//indica el número de exportador confiable, conforme al artículo 22 del Anexo 1 del Tratado de Libre Comercio con la Asociación Europea y a la Decisión de la Comunidad Europea //comercioExterior.NumCertificadoOrigen = "149B3491-E2A2-46F8-98BD-0BE590D6986E"; //Expresa el folio del certificado de origen o el folio fiscal del CFDI con el que se pagó la expedición del certificado de origen comercioExterior.TipoCambioUSD = 16.9898M; //indica el número de pesos mexicanos que equivalen a un dólar de Estados Unidos comercioExterior.TotalUSD = Convert.ToDecimal("8.76");//indica el importe total del comprobante en dólares de Estados Unidos comercioExterior.Observaciones = "FACTURA DE PRUEBA VERSION 2.0"; //especifica alguna información adicional, como alguna leyenda que debe incluir el CFDI /////DATOS DEL EMISOR PARA COMERCIO EXTERIOR/ //emisorCE.Curp = "XXXX850505HDFLNS09"; //Expresa la CURP del emisor del CFDI cuando es una persona física DomicilioEmisorCE.Calle = "ISLA DE GPE"; //Calle en que está ubicado el domicilio del emisor del comprobante DomicilioEmisorCE.NumeroExterior = "1666"; //Número exterior en donde se ubica el domicilio del emisor del comprobante DomicilioEmisorCE.NumeroInterior = "-A"; //Número interior, en caso de existir, en donde se ubica el domicilio del emisor del comprobante DomicilioEmisorCE.Colonia = "0084"; //Clave de la colonia en donde se ubica el domicilio del emisor del comprobante DomicilioEmisorCE.Localidad = "02"; //Clave de la ciudad, población, distrito u otro análogo en donde se ubica el domicilio del emisor del comprobante DomicilioEmisorCE.Municipio = "006"; //Clave del municipio o delegación en donde se encuentra ubicado el domicilio del emisor del comprobante DomicilioEmisorCE.Estado = (Test_wsCFD.Servicios2.c_Estado)Enum.Parse(typeof(Test_wsCFD.Servicios2.c_Estado), "SIN"); //Clave del estado en donde se encuentra ubicado el domicilio del emisor del comprobante DomicilioEmisorCE.CodigoPostal = "80060"; //Clave del código postal en donde se encuentra ubicado el domicilio del emisor del comprobante DomicilioEmisorCE.Pais = Test_wsCFD.Servicios2.c_Pais.MEX; //Clave del país donde se encuentra ubicado el domicilio del emisor del comprobante //DomicilioEmisorCE.Referencia = "REFERENCIA"; //Referencia geográfica adicional que permita una más fácil o precisa ubicación del domicilio del emisor del comprobante emisorCE.Domicilio = DomicilioEmisorCE; /////DATOS DEL PROPIETARIO PARA COMERCIO EXTERIOR/ if (comercioExterior.MotivoTraslado == "05")//si el motivo de traslado es Envío de mercancías propiedad de terceros se debe registrar el nodo Propietarios { Servicios2.ComercioExterior20Propietario propietario = new Test_wsCFD.Servicios2.ComercioExterior20Propietario(); propietario.NumRegIdTrib = "752491201"; propietario.ResidenciaFiscal = Test_wsCFD.Servicios2.c_Pais.USA; propietariosCE.Add(propietario); comercioExterior.Propietario = propietariosCE.ToArray(); } /////DATOS DEL RECEPTOR PARA COMERCIO EXTERIOR/ receptoCE.NumRegIdTrib = "383754717"; DomicilioReceptorCE.Calle = "W GOLDHILL RD"; //Calle en que está ubicado el domicilio del receptor del comprobante DomicilioReceptorCE.NumeroExterior = "555"; //Número exterior en donde se ubica el domicilio del receptor del comprobante DomicilioReceptorCE.NumeroInterior = "UNIT A SUITE 26"; //Número interior, en caso de existir, en donde se ubica el domicilio del receptor del comprobante DomicilioReceptorCE.Colonia = "NA"; //Colonia o dato análogo en donde se ubica el domicilio del receptor del comprobante DomicilioReceptorCE.Localidad = "NOGALES"; //Ciudad, población, distrito u otro análogo en donde se ubica el domicilio del receptor del comprobante DomicilioReceptorCE.Municipio = "NOGALES"; //Municipio, delegación, condado u otro análogo en donde se encuentra ubicado el domicilio del receptor del comprobante DomicilioReceptorCE.Estado = "AZ"; //Estado, entidad, región, comunidad u otra figura análoga en donde se encuentra ubicado el domicilio del receptor del comprobante DomicilioReceptorCE.Pais = Test_wsCFD.Servicios2.c_Pais.USA; //Clave del país donde se encuentra ubicado el domicilio del receptor del comprobante DomicilioReceptorCE.CodigoPostal = "75886"; //Código postal (PO, BOX) en donde se encuentra ubicado el domicilio del receptor del comprobante //DomicilioReceptorCE.Referencia = "REFERENCIA"; //Referencia geográfica adicional que permita una más fácil o precisa ubicación del domicilio del receptor del comprobante receptoCE.Domicilio = DomicilioReceptorCE; /////DATOS DEL DESTINATARIO PARA COMERCIO EXTERIOR/ /////Expresa los datos del destinatario de la mercancía cuando este sea distinto del receptor del comprobante, o bien cuando el domicilio se trate de alguna sucursal./ List ListaDest = new List (); destinatario.Nombre = "PUBLICO EN GENERAL"; //expresa el nombre completo, denominación o razón social del destinatario de la mercancía exportada destinatario.NumRegIdTrib = "752491201"; //éxpresa el número de identificación o registro fiscal del país de residencia para efectos fiscales del destinatario de la mercancía exportada ///////DATOS DEL DOMICILIO DEL DESTINATARIO PARA COMERCIO EXTERIOR/ List DomicilioDestinatario = new List (); domicilioDes.Calle = "ISLA DE GPE"; //expresa la calle en que está ubicado el domicilio del destinatario de la mercancía domicilioDes.NumeroExterior = "1666"; //expresa el número exterior en donde se ubica el domicilio del destinatario de la mercancía domicilioDes.NumeroInterior = "A"; //expresa el número interior, en caso de existir, en donde se ubica el domicilio del destinatario de la mercancía domicilioDes.Colonia = "QUINTAS"; //expresa la colonia o dato análogo en donde se ubica el domicilio del destinatario de la mercancía domicilioDes.Localidad = "CULIACAN DE ROSALES"; //expresa la ciudad, población, distrito u otro análogo en donde se ubica el domicilio del destinatario de la mercancía domicilioDes.Referencia = "CERCA DE LA TIENDA"; //expresa una referencia geográfica adicional que permita una más fácil o precisa ubicación del domicilio del destinatario de la mercancía, por ejemplo las coordenadas GPS domicilioDes.Municipio = "CULIACAN"; //expresa el municipio, delegación, condado u otro análogo en donde se encuentra ubicado el destinatario de la mercancía domicilioDes.Estado = "CA"; //expresa el estado, entidad, región, comunidad u otra figura análoga en donde se encuentra ubicado el domicilio del destinatario de la mercancía, debe de ser un valor del catalogo publicado por el SAT domicilioDes.Pais = Test_wsCFD.Servicios2.c_Pais.USA; //expresa el país donde se encuentra ubicado el destinatario de la mercancía, debe de ser un valor del catalogo publicado por el SA domicilioDes.CodigoPostal = "80060"; //expresa el código postal (PO, BOX) en donde se encuentra ubicado el domicilio del destinatario de la mercancía DomicilioDestinatario.Add(domicilioDes); destinatario.Domicilio = DomicilioDestinatario.ToArray(); ListaDest.Add(destinatario); /////DATOS DE LAS MERCANCIAS PARA COMERCIO EXTERIOR/ mercancia.NoIdentificacion = "0001"; //expresa el número de parte, la clave de identificación que asigna la empresa o el número de serie de la mercancía exportada, debe de ser el mismo del concepto mercancia.FraccionArancelaria = "0707000100"; //expresar la fracción arancelaria correspondiente a la descripción de la mercancía exportada, este dato se vuelve requerido cuando se cuente con él o se esté obligado legalmente a contar con él, debe de ser un valor del catalogo publicado por el SAT mercancia.CantidadAduanaSpecified = true; //indica si lleva la cantidad de aduana mercancia.CantidadAduana = 1M; //expresa la cantidad de bienes en la aduana conforme a la UnidadAduana cuando en el nodo Comprobante:Conceptos:Concepto se hubiera registrado información comercial mercancia.UnidadAduana = "01"; //expresa la unidad de medida aplicable para la cantidad expresada en la mercancía en la aduana, debe de ser un valor del catalogo publicado por el SAT mercancia.ValorUnitarioAduanaSpecified = true; //indica si lleva el valor unitario de aduana mercancia.ValorUnitarioAduana = Convert.ToDecimal("8.7562"); //expresa el valor o precio unitario del bien en la aduana. Se expresa en dólares de Estados Unidos (USD) mercancia.ValorDolares = Convert.ToDecimal("8.7562"); //indica el valor total en dólares de Estados Unidos /////DATOS DE LAS DESCRIPCIONES ESPECIFICAS POR MERCANCIA PARA COMERCIO EXTERIOR/ //descEspec.Marca = "xxxxx"; //indica la marca de la mercancía //descEspec.Marca = "xxxx"; //indica el modelo de la mercancía //descEspec.SubModelo = "xxxx"; //indica el submodelo de la mercancía //descEspec.NumeroSerie = "xxxx"; //indica el número de serie de la mercancía //listaDescEspe.Add(descEspec); //mercancia.DescripcionesEspecificas = listaDescEspe.ToArray(); ListaMercancias.Add(mercancia); comercioExterior.Emisor = emisorCE; comercioExterior.Receptor = receptoCE; comercioExterior.Destinatario = ListaDest.ToArray(); ; comercioExterior.Mercancias = ListaMercancias.ToArray(); comprobante.Emisor = emisor; comprobante.Receptor = receptor; comprobante.Conceptos = conceptos.ToArray(); comprobante.ComercioExterior20 = comercioExterior; string Usuario = "demoCFDI"; string Password = "CPKRTQ6FTD43)~"; Servicios2.Servicios Servicio = new Servicios2.Servicios(); return Servicio.TimbrarComprobante(ref comprobante, Usuario, Password); }
private Servicios2.Comprobante FormarComprobanteV4NotaCredito(string RFC, string Serie, int Folio) { Servicios2.Comprobante Comprobante = new Servicios2.Comprobante(); //Comprobante Servicios2.Emisor Emisor = new Servicios2.Emisor(); //Emisor Servicios2.Receptor Receptor = new Servicios2.Receptor(); //Receptor ListConceptos = new List (); //Listado de Conceptos List UUIDRelacionados = new List (); //Listado de UUIDRelacionados Servicios2.CFDIRelacionados CFDIRelacionados = new Servicios2.CFDIRelacionados(); Servicios2.UUIDRelacionado UUIDRelacionado = new Servicios2.UUIDRelacionado(); /******************************** DATOS DEL COMPROBANTE ********************************/ Comprobante.Version = Servicios2.Versiones.Ver_4; // <- Nuevo Comprobante.TipoComprobante = "E"; Comprobante.SerieFolio = Serie; Comprobante.Nume_Folio = Folio; Comprobante.FormaPago = "01"; Comprobante.CondicionesPago = ""; Comprobante.Fech_Comprobante = DateTime.Now; Comprobante.Moneda = (Servicios2.Monedas.MXN); Comprobante.MetodoPago = "PUE"; Comprobante.LugarExpedicion = "80060"; Comprobante.Exportacion = "01"; // <- Nuevo /******************************** DOCUMENTOS RELACIONADOS ********************************/ List ListaCfdisRelacionados = new List ();//Elemento CFDIRelacionados Servicios2.CFDIRelacionados cfdisrelacionados2 = new Servicios2.CFDIRelacionados(); cfdisrelacionados2.TipoRelacion = "01";//Atributo que indica la clave de la relación que existe entre éste que se esta generando y el o los CFDI previos. List listaUUIDs2 = new List ();//listado de UUIDS Relacionados Servicios2.UUIDRelacionado uuid2 = new Servicios2.UUIDRelacionado(); uuid2.UUID = "453b672b-463d-4d95-91a2-001b651a6ace";//folio fiscal (UUID) de un CFDI relacionado con el presente comprobante listaUUIDs2.Add(uuid2); cfdisrelacionados2.UUIDsRelacionados = listaUUIDs2.ToArray(); ListaCfdisRelacionados.Add(cfdisrelacionados2); Comprobante.ListaCFDIRelacionados = ListaCfdisRelacionados.ToArray(); /******************************** DATOS DEL EMISOR Datos de la empresa que espide la factura. ********************************/ Emisor.RFC = RFC; Emisor.Nomb_Comercial = "ILUNIMADORA DE ALMACENES SA DE CV";//Nombre con el que se conoce a la empresa o persona que emite el comprobante Emisor.Nomb_RazonSocial = "ILUNIMADORA DE ALMACENES SA DE CV";//Nombre con el que esta registrado ante hacienda quien emite el comprobante Emisor.RegimenFiscal = "601";//Clave del régimen del contribuyente emisor al que aplicará el efecto fiscal de este comprobante Comprobante.Emisor = Emisor; /******************************** DATOS DEL RECEPTOR Datos de la empresa a quien espide la factura. ********************************/ Receptor.RFC = "ACA010726HQ1"; //RFC de la empresa o persona a quien se le va a emitir el comprobante Receptor.Nomb_RazonSocial = "AIRES DE CAMPO"; //Nombre con el que esta registrado ante hacienda, quien se le va a emitir el comprobante Receptor.Nomb_Comercial = "AIRES DE CAMPO"; //Nombre con el que se le conoce a la empresa o persona que se le va a emitir el comprobante Receptor.UsoCFDI = "G02";//Clave del uso que dará a esta factura el receptor del CFDI Receptor.Domi_CodigoPostal = "11210";//Atributo requerido para registrar el código postal del domicilio fiscal del receptor del comprobante. Receptor.RegimenFiscal = "601";//Atributo requerido para incorporar la clave del régimen fiscal del contribuyente receptor al que aplicará el efecto fiscal de este comprobante. Comprobante.Receptor = Receptor; /******************************** CONCEPTOS ********************************/ Servicios2.Concepto Concepto = new Servicios2.Concepto(); Concepto.ClaveProductoServicio = "84111506"; Concepto.Cantidad = 1; Concepto.ClaveUnidad = "ACT"; Concepto.Unidad = "Actividad"; Concepto.Descripcion = "Compra de mercancía"; Concepto.PrecioUnitario = 6733.92; Concepto.Importe = 6733.92; Concepto.Descuento = Convert.ToDouble(0); Concepto.ObjetoImpuesto = "01"; // <- Nuevo Conceptos.Add(Concepto); //Inpuesto del Concepto List ListaInpuestos = new List (); Comprobante.Conceptos = Conceptos.ToArray(); string Usuario = "demoCFDI"; string Password = "CPKRTQ6FTD43)~"; Servicios2.Servicios Servicio = new Servicios2.Servicios(); return Servicio.TimbrarComprobante(ref Comprobante, Usuario, Password); }