Arrastre para cambiar el tamaño
cfdi33 (Clase)
Experiencia simple con el gobierno digital con productos fáciles de usar
Estándar de Comprobante fiscal digital a través de Internet.
Jerarquía de herencia
SystemObject
  EasyOne.Comprobantecfdi33

Espacio de nombres:  EasyOne.Comprobante
Ensamblado:  EasyOne (en EasyOne.dll) Versión: 1.0.0.0 (1.0)
Sintaxis
C#
public class cfdi33

El tipo cfdi33 expone a los siguientes miembros.

Métodos
  NombreDescripción
Método públicoMiembro estáticoEasyOne_cfdi33_AddCfdiRelacionado
Nodo requerido para precisar la información de los comprobantes relacionados.
Método públicoMiembro estáticoEasyOne_cfdi33_AddConcepto
Nodo requerido para registrar la información detallada de un bien o servicio amparado en el comprobante.
Método públicoMiembro estáticoEasyOne_cfdi33_AddInformacionAduanera
Nodo opcional para introducir la información aduanera aplicable cuando se trate de ventas de primera mano de mercancías importadas o se trate de operaciones de comercio exterior con bienes o servicios.
Método públicoMiembro estáticoEasyOne_cfdi33_AddParte
Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto expresado en el comprobante fiscal digital por Internet.
Método públicoMiembro estáticoEasyOne_cfdi33_AddParteInformacionAduanera
Nodo opcional para introducir la información aduanera aplicable cuando se trate de ventas de primera mano de mercancías importadas o se trate de operaciones de comercio exterior con bienes o servicios.
Método públicoMiembro estáticoEasyOne_cfdi33_AddRetencion
Nodo requerido para asentar la información detallada de una retención de impuestos aplicable al presente concepto.
Método públicoMiembro estáticoEasyOne_cfdi33_AddRetencionesRetencion
Nodo requerido para la información detallada de una retención de impuesto específico.
Método públicoMiembro estáticoEasyOne_cfdi33_AddTraslado
Nodo requerido para asentar la información detallada de un traslado de impuestos aplicable al presente concepto.
Método públicoMiembro estáticoEasyOne_cfdi33_AddTrasladosTraslado
Nodo requerido para la información detallada de un traslado de impuesto específico.
Método públicoMiembro estáticoEasyOne_cfdi33_Create
Construye el objeto cfdi33
Método públicoMiembro estáticoEasyOne_cfdi33_Free
Libera los recursos usados por este objeto
Método públicoMiembro estáticoEasyOne_cfdi33_SetCfdiRelacionados
Nodo opcional para precisar la información de los comprobantes relacionados.
Método públicoMiembro estáticoEasyOne_cfdi33_SetComprobante
Estándar de Comprobante Fiscal Digital por Internet.
Método públicoMiembro estáticoEasyOne_cfdi33_SetComprobanteImpuestos
Nodo condicional para expresar el resumen de los impuestos aplicables.
Método públicoMiembro estáticoEasyOne_cfdi33_SetCuentaPredial
Nodo opcional para asentar el número de cuenta predial con el que fue registrado el inmueble, en el sistema catastral de la entidad federativa de que trate, o bien para incorporar los datos de identificación del certificado de participación inmobiliaria no amortizable.
Método públicoMiembro estáticoEasyOne_cfdi33_SetEmisor
Nodo requerido para expresar la información del contribuyente emisor del comprobante.
Método públicoMiembro estáticoEasyOne_cfdi33_SetReceptor
Nodo requerido para precisar la información del contribuyente receptor del comprobante.
Top
Ejemplos

El siguiente ejemplo muestra un codigo en C# que genera un CFDI 3.2.

Ejemplo C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace Consola.EasyOne
{
    class ConsolaEasyOne
    {

        #region dll cfd 3.3
        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern int EasyOne_FirmaComprobante(int p, string csd, string key, string pwd);

        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern string EasyOne_LeeResultado(int p, int valor);

        //NOTA: Wraper temporal para timbrar CFDI 3.3 de pruebas
        [DllImport(@"EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_SetInvoiceOneFachadaInfoPrueba(int p, string AgenteId, string SoftwareId);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern int EasyOne_cfdi33_Create(string outFile);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_Free(int p);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_SetComprobante(int p, string Serie, string Folio, string Fecha, string FormaPago, string CondicionesDePago, string SubTotal, string Descuento, string Moneda, string TipoCambio, string Total, string TipoDeComprobante, string MetodoPago, string LugarExpedicion, string Confirmacion);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_SetCfdiRelacionados(int p, string TipoRelacion);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_AddCfdiRelacionado(int p, string UUID);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_SetEmisor(int p, string Rfc, string Nombre, string RegimenFiscal);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_SetReceptor(int p, string Rfc, string Nombre, string ResidenciaFiscal, string NumRegIdTrib, string UsoCFDI);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_AddConcepto(int p, string ClaveProdServ, string NoIdentificacion, string Cantidad, string ClaveUnidad, string Unidad, string Descripcion, string ValorUnitario, string Importe, string Descuento);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_AddTraslado(int p, string Base, string Impuesto, string TipoFactor, string TasaOCuota, string Importe);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_AddRetencion(int p, string Base, string Impuesto, string TipoFactor, string TasaOCuota, string Importe);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_AddInformacionAduanera(int p, string NumeroPedimento);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_SetCuentaPredial(int p, string Numero);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_AddParte(int p, string ClaveProdServ, string NoIdentificacion, string Cantidad, string Unidad, string Descripcion, string ValorUnitario, string Importe);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_AddParteInformacionAduanera(int p, string NumeroPedimento);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_SetComprobanteImpuestos(int p, string TotalImpuestosRetenidos, string TotalImpuestosTrasladados);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_AddRetencionesRetencion(int p, string Impuesto, string Importe);

        [DllImport("EasyOne.DLL", CallingConvention = CallingConvention.Cdecl)]
        static public extern void EasyOne_cfdi33_AddTrasladosTraslado(int p, string Impuesto, string TipoFactor, string TasaOCuota, string Importe);


        #endregion



        static void Main(string[] args)
        {
            try
            {
                GeneraCFDI33();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

        }

        public static void GeneraCFDI33()
        {

            //Iniciamos creando el objeto cfdi3.3 e indicamos el nombre del archivo de salida "Ejemplo.xml"
            int p = EasyOne_cfdi33_Create("Ejemplo.xml");

            EasyOne_cfdi33_SetComprobante(p, "A", "1", string.Format("{0:yyyy-MM-ddTHH:mm:ss}", DateTime.Now), "01", "CondicinoesPago", "1000", "0", "MXN", "1", "1160.00", "I", "PUE", "64000", "");

            EasyOne_cfdi33_SetEmisor(p, "AAA010101AAA", "prueba", "601");

            EasyOne_cfdi33_SetReceptor(p, "XEXX010101000", "receptor", "USA", "", "P01");

            //Agregamos los Impuestos a nivel Comprobante
            //Es importante que las siguietes 2 líneas de código se coloquen antes de agregar conceptos e impuestos a nivel concepto.
            EasyOne_cfdi33_SetComprobanteImpuestos(p, "", "160.00");
            EasyOne_cfdi33_AddTrasladosTraslado(p, "002", "Tasa", "0.160000", "160.00");


            //Agregamos los concepto
            EasyOne_cfdi33_AddConcepto(p, "01010101", "1", "1", "H87", "Pieza", "Ejemplo 1", "1000.00", "1000.00", "0");
            EasyOne_cfdi33_AddTraslado(p, "1000", "002", "Tasa", "0.160000", "160.00");



            //Enviamos el CFDI al metodo de PRUEBAS
            //En la siguiente línea es necesario incluir la Clave de Integración que se proporciona en la Guía de Implementación (Menú "Ayuda" de su Oficina Virtual).
            EasyOne_SetInvoiceOneFachadaInfoPrueba(p, "USAR_CLAVE_DE_INTEGRACION", "USAR_CLAVE_DE_INTEGRACION");

            //Para enviar el CFDI a PRODUCCION se debe quitar la linea de arriba y usar la siguiente linea descomentada.
            //En la siguiente línea es necesario incluir la Clave de Integración que se proporciona en la Guía de Implementación (Menú "Ayuda" de su Oficina Virtual).
            //EasyOne_SetInvoiceOneFachadaInfo(p, "USAR_CLAVE_DE_INTEGRACION", "USAR_CLAVE_DE_INTEGRACION");

            //En la siguiente línea se deben colocar los nombres de los archivos de certificado de sellos del Emisor.
            //Para fines de esta prueba se usarán los certificados de sellos del Emisor AAA010101AAA.
            //Favor de colocar estos archivos (.CER y .KEY) en la misma carpeta donde se encuentra la aplicación.
            int i = EasyOne_FirmaComprobante(p, "CSD01_AAA010101AAA.cer", "CSD01_AAA010101AAA.key", "12345678a");

             //Si el resultado es 0 = El CFDI se procesó correctamente
             if (i == 0)
             {
                 string resultadoXML = String.Empty;

                 //Obtenemos el XML completo y timbrado
                 Console.WriteLine(resultadoXML = EasyOne_LeeResultado(p, 8));
             }
             else
             {
                 //En caso de error mostrar el detalle.
                 Console.WriteLine(EasyOne_LeeResultado(p, 11));
             }

             Console.ReadLine();

         }
     }
 }
Vea también