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
List Conceptos = 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
List conceptos = 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
List Conceptos = 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 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
List conceptos = 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();
List ListaConceptos = 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();
List ListaConceptos = 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
List conceptos = 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
List Conceptos = 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);
}