Obtener resumen de impuestos Librería CFDI 3.3
Para obtener el resumen de impuestos de los conceptos de un CFDi se puede utilizar la clase TMDResumenlImpuestos de la siguiente manera:
Primeramente generamos un CFDi utilizando la clase TMDCfdi33; los conceptos agregados son 2 con los siguientes impuestos:
Concepto 1
Traslado IVA Tasa 0.16 Importe 400
Retencion ISR Tasa 0.29 Importe 696
Concepto 2
Traslado IVA Tasa 0.16 Importe 400
Retencion ISR Tasa 0.29 Importe 696
Retencion IEPS Tasa 0.53 Importe 1272
Resumen quedaría
Traslado IVA Tasa 0.16 Importe 800
Retencion ISR Tasa 0.29 Importe 1392
Retencion IEPS Tasa 0.53 Importe 1272
En código sería: (Nota: necesitas los archivos de la entrada "Librería CFDi 3.3")
/* CFDI - Impuestos -> Nodo condicional para expresar el resumen de los impuestos aplicables. */
/* Generamos un cfdi básico */
TMDCfdi33 _cfdi = MDCfdiTestSourceCodes.LoadBasicCfdi();
/* El Cfdi generado contiene un concepto con los siguientes impuestos Impuesto = "002";
* TipoFactor = "Tasa"; TasaOCuota = 0.16m; .Importe = 400;
*
* Agregamos otro impuesto al concepto existente
*/
TMDCfdi33ConceptoItem _concepto = _cfdi.Conceptos.Concepto[0];
//ISR
TMDCfdi33RetencionItem _retencion = _concepto.Impuestos.Retenciones.Retencion.Add();
_retencion.Base = 2400;
_retencion.Impuesto = "001";
_retencion.TipoFactor = "Tasa";
_retencion.TasaOCuota = 0.29m;
_retencion.Importe = 696;
/* Agregamos otro concepto con 2 impuestos */
_concepto = _cfdi.Conceptos.Concepto.Add();
_concepto.NoIdentificacion = "01";
_concepto.ClaveProdServ = "72103300";
_concepto.Cantidad = 1;
_concepto.ClaveUnidad = "E48";
_concepto.Unidad = "SERVICIO";
_concepto.Descripcion = "MANO DE OBRA POR REPARACIÓN DE FALLA ELÉCTRICA";
_concepto.ValorUnitario = 2500;
_concepto.Importe = 2500;
//IVA
TMDCfdi33TrasladoItem _traslado = _concepto.Impuestos.Traslados.Traslado.Add();
_traslado.Base = 2500;
_traslado.Impuesto = "002";
_traslado.TipoFactor = "Tasa";
_traslado.TasaOCuota = 0.16m;
_traslado.Importe = 400;
//ISR
_retencion = _concepto.Impuestos.Retenciones.Retencion.Add();
_retencion.Base = 2400;
_retencion.Impuesto = "001";
_retencion.TipoFactor = "Tasa";
_retencion.TasaOCuota = 0.29m;
_retencion.Importe = 696;
//IEPS
_retencion = _concepto.Impuestos.Retenciones.Retencion.Add();
_retencion.Base = 2400;
_retencion.Impuesto = "003";
_retencion.TipoFactor = "Tasa";
_retencion.TasaOCuota = 0.53000m;
_retencion.Importe = 1272;
/* Obtenemos el resumen de impuestos de los conceptos */
/* ************************************************** */
TMDResumenlImpuestos _resumeImpuestos = new TMDResumenlImpuestos(_cfdi);
_resumeImpuestos.Generate();
/* Sustituimos el resumen de impuestos calculados */
_cfdi.Impuestos = _resumeImpuestos.Impuestos;
En la depuración podemos observar que los resultados concuerdan con lo esperado:
Primeramente generamos un CFDi utilizando la clase TMDCfdi33; los conceptos agregados son 2 con los siguientes impuestos:
Concepto 1
Traslado IVA Tasa 0.16 Importe 400
Retencion ISR Tasa 0.29 Importe 696
Concepto 2
Traslado IVA Tasa 0.16 Importe 400
Retencion ISR Tasa 0.29 Importe 696
Retencion IEPS Tasa 0.53 Importe 1272
Resumen quedaría
Traslado IVA Tasa 0.16 Importe 800
Retencion ISR Tasa 0.29 Importe 1392
Retencion IEPS Tasa 0.53 Importe 1272
En código sería: (Nota: necesitas los archivos de la entrada "Librería CFDi 3.3")
/* CFDI - Impuestos -> Nodo condicional para expresar el resumen de los impuestos aplicables. */
/* Generamos un cfdi básico */
TMDCfdi33 _cfdi = MDCfdiTestSourceCodes.LoadBasicCfdi();
/* El Cfdi generado contiene un concepto con los siguientes impuestos Impuesto = "002";
* TipoFactor = "Tasa"; TasaOCuota = 0.16m; .Importe = 400;
*
* Agregamos otro impuesto al concepto existente
*/
TMDCfdi33ConceptoItem _concepto = _cfdi.Conceptos.Concepto[0];
//ISR
TMDCfdi33RetencionItem _retencion = _concepto.Impuestos.Retenciones.Retencion.Add();
_retencion.Base = 2400;
_retencion.Impuesto = "001";
_retencion.TipoFactor = "Tasa";
_retencion.TasaOCuota = 0.29m;
_retencion.Importe = 696;
/* Agregamos otro concepto con 2 impuestos */
_concepto = _cfdi.Conceptos.Concepto.Add();
_concepto.NoIdentificacion = "01";
_concepto.ClaveProdServ = "72103300";
_concepto.Cantidad = 1;
_concepto.ClaveUnidad = "E48";
_concepto.Unidad = "SERVICIO";
_concepto.Descripcion = "MANO DE OBRA POR REPARACIÓN DE FALLA ELÉCTRICA";
_concepto.ValorUnitario = 2500;
_concepto.Importe = 2500;
//IVA
TMDCfdi33TrasladoItem _traslado = _concepto.Impuestos.Traslados.Traslado.Add();
_traslado.Base = 2500;
_traslado.Impuesto = "002";
_traslado.TipoFactor = "Tasa";
_traslado.TasaOCuota = 0.16m;
_traslado.Importe = 400;
//ISR
_retencion = _concepto.Impuestos.Retenciones.Retencion.Add();
_retencion.Base = 2400;
_retencion.Impuesto = "001";
_retencion.TipoFactor = "Tasa";
_retencion.TasaOCuota = 0.29m;
_retencion.Importe = 696;
//IEPS
_retencion = _concepto.Impuestos.Retenciones.Retencion.Add();
_retencion.Base = 2400;
_retencion.Impuesto = "003";
_retencion.TipoFactor = "Tasa";
_retencion.TasaOCuota = 0.53000m;
_retencion.Importe = 1272;
/* Obtenemos el resumen de impuestos de los conceptos */
/* ************************************************** */
TMDResumenlImpuestos _resumeImpuestos = new TMDResumenlImpuestos(_cfdi);
_resumeImpuestos.Generate();
/* Sustituimos el resumen de impuestos calculados */
_cfdi.Impuestos = _resumeImpuestos.Impuestos;
En la depuración podemos observar que los resultados concuerdan con lo esperado:
/* ****************************************************************** */
EL SOFTWARE SE PROPORCIONA "TAL CUAL" Y EL AUTOR RECHAZA TODAS LAS
GARANTÍAS CON RESPECTO A ESTE SOFTWARE, INCLUIDAS TODAS LAS GARANTÍAS
IMPLÍCITAS DE COMERCIABILIDAD Y ADECUACIÓN. EN NINGÚN CASO EL AUTOR SERÁ
RESPONSABLE POR CUALQUIER DAÑO ESPECIAL, DIRECTO, INDIRECTO O CONSECUENTE,
O CUALQUIER DAÑO QUE RESULTE DE LA PÉRDIDA DE USO, DATOS O BENEFICIOS, YA
SEA EN UNA ACCIÓN DE CONTRATO, NEGLIGENCIA U OTRA ACCIÓN EXTRACONTRACTUAL
QUE SURJA DE O EN CONEXIÓN CON EL USO O RENDIMIENTO DE ESTE SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Comentarios
Publicar un comentario