/// <summary> /// Ejemplo de nota de débito B, emitida a un responsable monotributista /// </summary> /// /// <remarks> /// Solo se demuestra la impresión de un ítem, pero todas las funciones demostradas /// en el "Ticket-Factura A" también están disponibles para la emisión de Notas de /// Débito. /// </remarks> public void NotaDebitoB() { // Abre la operación. // IMPORTANTE: Solo se establecen los datos mínimos necesarios para poder abrir el // ticket factura. // // Inspeccione la estructura cmdO.Input por otros datos que son opcionales, por ejemplo, // mas campos de dirección del cliente, etc. // // Respecto del 'TipoDeDocumento', el DNI/etc solo se permiten para consumidores finales. // El resto de los responsable deben presentar CUIT (o para el exento, CUIL) var cmdO = new CMD_TFAbrir(); cmdO.Input.Tipo = true; // Indica abrir NOTA DE DEBITO cmdO.Input.NomCliente_1 = "Martin Guzman"; cmdO.Input.DirecCliente_1 = "Casa Rosada - CABA"; cmdO.Input.RespIva = TipoRespEnum.Monotributo; cmdO.Input.TipoDoc = TipoDocEnum.CUIT; cmdO.Input.NroDoc = "20168993278"; cmdO.Input.LineaDoc_1 = "083-0001-00000001"; if (!ExecCommand(cmdO)) { return; } // Envía un ítem de $12.50 (10 x $1.25) // Prestar atención a la opción 'ImportesBrutos'. Al estar activa significa que el precio // unitario ($1.25, en este ejemplo), incluye impuestos. Se imprimirá discriminado, como // corresponde, pero el total a cobrar será 12.50. var cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Cantidad = 10; cmdI.Input.Unitario = 1.25m; cmdI.Input.CondIVA = CodTKItemCondIva.Gravado; cmdI.Input.TasaIVA = 2100; // 2 decimales por default. cmdI.Input.CodigoMedida = CodUnidadMedida.Litros; cmdI.Input.Descrip = "Aceite Patito PVC"; cmdI.Input.ItemDescExtra1 = "Inmejorable para milanesas!"; ExecCommand(cmdI); // Cierra la nota de debito. var cmdC = new CMD_TFCerrar(); ExecCommand(cmdC); }
/// <summary> /// Ejemplo de nota de débito A, emitida a un responsable inscripto /// </summary> /// /// <remarks> /// Solo se demuestra la impresión de un ítem, pero todas las funciones demostradas /// en el "Ticket-Factura A" también están disponibles para la emisión de Notas de /// Débito. /// </remarks> public void NotaDebitoA() { // Abre la operación. var cmdO = new CMD_TFAbrir(); cmdO.Input.Tipo = true; // Indica que es 'Nota de Debito' cmdO.Input.NomCliente_1 = "Alberdi S.A."; cmdO.Input.DirecCliente_1 = "Alberdi 1256 - Salta Capital"; cmdO.Input.RespIva = TipoRespEnum.Inscripto; cmdO.Input.TipoDoc = TipoDocEnum.CUIT; cmdO.Input.NroDoc = "30578411174"; cmdO.Input.LineaDoc_1 = "083-0001-00000001"; if (!ExecCommand(cmdO)) { return; } // Envía un ítem de $12.50 (10 x $1.25) // Prestar atención a la opción 'ImportesBrutos'. Al estar activa significa que el precio // unitario ($1.25, en este ejemplo), incluye impuestos. Se imprimirá discriminado, como // corresponde, pero el total a cobrar será 12.50. var cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Cantidad = 10; cmdI.Input.Unitario = 1.25m; cmdI.Input.CondIVA = CodTKItemCondIva.Gravado; cmdI.Input.TasaIVA = 2100; // 2 decimales por default. cmdI.Input.CodigoMedida = CodUnidadMedida.Litros; cmdI.Input.Descrip = "Aceite Patito PVC"; cmdI.Input.ItemDescExtra1 = "Inmejorable para milanesas!"; ExecCommand(cmdI); // Cierra la nota de debito. var cmdC = new CMD_TFCerrar(); ExecCommand(cmdC); }
void CommonTF() { // Envía un ítem de $12.50 (10 x $1.25) // Prestar atención a la opción 'ImportesBrutos'. Al estar activa significa que el precio // unitario ($1.25, en este ejemplo), incluye impuestos. Se imprimirá discriminado, como // corresponde, pero el total a cobrar será 12.50. var cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Cantidad = 10; cmdI.Input.Unitario = 1.25m; cmdI.Input.CondIVA = CodTKItemCondIva.Gravado; cmdI.Input.TasaIVA = 2100; // 2 decimales por default. cmdI.Input.CodigoMedida = CodUnidadMedida.Litros; cmdI.Input.Descrip = "Aceite Patito PVC"; cmdI.Input.ItemDescExtra1 = "Inmejorable para milanesas!"; ExecCommand(cmdI); // El mismo producto del renglón anterior, pero ahora el precio unitario es neto de // impuestos (se corrige en este ejemplo $1.033 para que dé $1.25 al final, igual que // en el item anterior. cmdI.Input.Unitario = 1.033m; cmdI.Input.ImportesBrutos = false; ExecCommand(cmdI); // Envía un ítem que posteriormente se ANULARA cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Unitario = 15.10m; cmdI.Input.Cantidad = 1; cmdI.Input.CondIVA = CodTKItemCondIva.Gravado; cmdI.Input.TasaIVA = 1050; cmdI.Input.Descrip = "Renglon que anularemos"; ExecCommand(cmdI); // Anula el renglón anterior. NO ES NECESARIO QUE LA ANULACIÓN sea correlativa con el // renglón a anular. Lo que importa es que todos los datos coincidan. cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Tipo = TFI_Tipo.AnulVenta; cmdI.Input.Unitario = 15.10m; cmdI.Input.Cantidad = 1; cmdI.Input.CondIVA = CodTKItemCondIva.Gravado; cmdI.Input.TasaIVA = 1050; cmdI.Input.Descrip = "Renglon que anularemos"; ExecCommand(cmdI); // Prueba enviando un ítem exento de IVA cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Unitario = 30m; cmdI.Input.Cantidad = 10; cmdI.Input.CondIVA = CodTKItemCondIva.Exento; cmdI.Input.Descrip = "Prueba producto exento"; ExecCommand(cmdI); // Probamos un producto con $1.35 de impuesto interno. En estos casos, el producto debe // tener IVA distito de cero. cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Unitario = 30m; cmdI.Input.Cantidad = 10; cmdI.Input.CondIVA = CodTKItemCondIva.Gravado; cmdI.Input.TasaIVA = 2100; cmdI.Input.ImpIntFijos = 1.35m; cmdI.Input.Descrip = "ImpInt por Monto"; ExecCommand(cmdI); // Ahora probamos un producto con 10% de impuesto interno. // El impuesto interno porcencual se codifica con 8 dígitos donde los 2 primeros son la // parte entera y el resto la decimal. Por ejemplo, 10% se configura 10000000 y un // valor de 5.374 será 5374000 cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Unitario = 30m; cmdI.Input.Cantidad = 10; cmdI.Input.CondIVA = CodTKItemCondIva.Gravado; cmdI.Input.TasaIVA = 2100; cmdI.Input.ImpIntPorc = 10000000m; cmdI.Input.Descrip = "ImpInt por Monto"; ExecCommand(cmdI); // Se pueden imprimir hasta 4 descripciones adicionales. Los datos MTX son para un posible // "archivo matrix" todavía no implementado por la AFIP, pero deberían ser el código EAN // del producto y la cantidad real de ítems EAN vendidos (Sin son kgs, por ejemplo, cuenta // 1 cada paquete) cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Unitario = 12.35m; cmdI.Input.Cantidad = 1; cmdI.Input.CondIVA = CodTKItemCondIva.Gravado; cmdI.Input.Descrip = "Item completo"; cmdI.Input.TasaIVA = 2100; cmdI.Input.CodigoMTX = "779779779779"; cmdI.Input.UnidadMTX = 13; cmdI.Input.ItemDescExtra1 = "Linea de Descripcion 4"; cmdI.Input.ItemDescExtra2 = "Linea de Descripcion 3"; cmdI.Input.ItemDescExtra3 = "Linea de Descripcion 2"; cmdI.Input.ItemDescExtra4 = "Linea de Descripcion 1"; ExecCommand(cmdI); // Los recargos sobre un ítem anterior se codifican muy parecido que un ítem de venta // Importante: La cantidad debe ser '1' cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Tipo = TFI_Tipo.Recargo; cmdI.Input.Unitario = 12.35m; cmdI.Input.Cantidad = 1; cmdI.Input.CondIVA = CodTKItemCondIva.Gravado; cmdI.Input.TasaIVA = 2100; cmdI.Input.Descrip = "Recargo de $12.35"; ExecCommand(cmdI); // Los siguientes ejemplos muestran como hacer descuentos o bonificaciones sobre un ítem // ya vendido. // // IMPORTANTE: No se permitirá restar IVA que no se haya vendido antes. cmdI = new CMD_TFItem(); cmdI.Input.ImportesBrutos = true; cmdI.Input.Tipo = TFI_Tipo.Bonif; cmdI.Input.Unitario = 9.60m; cmdI.Input.Cantidad = 1; cmdI.Input.CondIVA = CodTKItemCondIva.Gravado; cmdI.Input.TasaIVA = 2100; cmdI.Input.Descrip = "Bonificación de $9.60"; ExecCommand(cmdI); cmdI.Input.Tipo = TFI_Tipo.Descuento; cmdI.Input.Unitario = 11m; cmdI.Input.Cantidad = 1; cmdI.Input.Descrip = "Descuento de $11"; ExecCommand(cmdI); // Si enviamos un subtotal ANTES de entrar a la fase de descuentos/recargos globales u // de "otros tributos" o de medios de cobro, el subtotal podrá imprimirse. Sino, no se // imprimirá pero si se devolverá el total actual del ticket. var cmdS = new CMD_TFSubtotal(); cmdS.Input.Print = true; ExecCommand(cmdS); // Agregamos un recargo "global". Como tal, prorratea automáticamente el IVA/Impuesto // interno que corresponda entre todas las tasas de IVA y de impuesto interno que se // hayan usado dentro de la operación. var cmdG = new CMD_TFDescuento(); cmdG.Input.Tipo = TFD_Tipo.Recargo; cmdG.Input.Monto = 25.50m; cmdG.Input.Descrip = "Recargo de prueba de $25"; ExecCommand(cmdG); // Ahora hacemos un descuento global. Igual que en el recargo global, los impuestos // se prorratean automáticamente. cmdG = new CMD_TFDescuento(); cmdG.Input.Tipo = TFD_Tipo.Descuento; cmdG.Input.Monto = 13.33m; cmdG.Input.Descrip = "Descuento de prueba de $13.33"; ExecCommand(cmdG); // Como muestra de los "otros impuestos", agregamos una percepción de ingresos brutos var cmdOT = new CMD_TFOtroTributo(); cmdOT.Input.Descrip = "Percepción IIBB de $7.30"; cmdOT.Input.Monto = 7.30m; cmdOT.Input.TasaIVA = 2100; cmdOT.Input.Tipo = TFOT_Tipo.ImpIngBrutos; ExecCommand(cmdOT); // Mandamos otro subtotal. Este no se imprimirá nunca pero sirve, por ejemplo, para // capturar el total final de la operación. Lo usaremos en este ejemplo, posteriormente, // para imprimir un código EAN al pie del ticket con el total. ExecCommand(cmdS); var totalTkt = cmdS.Output.MontoBruto; // Ingresando ya a la sección de pagos, registramos un pago parcial de $120 con tarjeta // de crédito. var cmdP = new CMD_TFPago(); cmdP.Input.Codigo = CodMedioDePago.Tarjeta_de_credito; cmdP.Input.Cuotas = 3; cmdP.Input.DetaAdic = "Mastercard Bco. Galicia"; cmdP.Input.DetaCupon = "1321"; cmdP.Input.Monto = 100m; cmdP.Input.PagoDescExtra1 = "Plan 'Paga como quieras'"; cmdP.Input.PagoDescExtra2 = "www.mastercard.com.ar"; ExecCommand(cmdP); // Completamos con otro medio de pago que incluso nos genera el vuelto. // IMPORTANTE: Si los medios de pago no llegaran a completar la operación, el comando // de cierre de operación "completará" la operación con un ingreso automático de // efectivo. cmdP = new CMD_TFPago(); cmdP.Input.Codigo = CodMedioDePago.Efectivo; cmdP.Input.Monto = 1000m; ExecCommand(cmdP); // Cierra el ticket. Observa como se reemplaza una de la línea nro 5 del pié de ticket // por un código de barra EAN con el total del ticket. var cmdC = new CMD_TFCerrar(); cmdC.Input.RNumLinea1 = 5; cmdC.Input.RTextLinea1 = "\\cc2501" + ((int)totalTkt).ToString().PadLeft(8, '0'); ExecCommand(cmdC); }