Saltar a contenido

Catálogos SIFEN

Los valores válidos de cada campo con código, centralizados y validados.

smartdoc.Iva.TEN                    # "10_percent"
smartdoc.SaleType.CASH              # "cash"
smartdoc.MeasureUnit.UNIT           # 77
smartdoc.TransactionType.SERVICES   # 2

smartdoc.Iva.TEN.rate               # 0.10
smartdoc.SaleType.labels()          # {"cash": "Contado", "credit": "Crédito"}

Todos los catálogos aceptan el miembro, su valor o su etiqueta, y el SDK normaliza:

smartdoc.Iva.coerce("10_percent")   # Iva.TEN

Cerrados y abiertos

Hay dos familias, y la diferencia importa.

Cerrados — valores de texto propios de SmartDoc. Mandar otra cosa es un error, y el SDK lo rechaza localmente con las opciones válidas.

Abiertos — códigos numéricos de SIFEN. La DNIT define el catálogo completo y la API lo acepta entero, así que el SDK deja pasar cualquier código oficial aunque no lo liste por nombre. Un código nuevo no obliga a esperar una versión del paquete.

smartdoc.TransactionType.coerce(99)   # pasa: catálogo abierto
smartdoc.Currency.coerce("EUR")       # ValidationError: catálogo cerrado

SaleType

Cerrado. Campo saleType.

Miembro Valor Etiqueta
SaleType.CASH cash Contado
SaleType.CREDIT credit Crédito

El valor no es la etiqueta

Lo que viaja en el campo es "cash" o "credit". "Contado" y "Crédito" son las etiquetas para mostrar en pantalla. El SDK acepta las dos formas y manda siempre el valor.

Iva

Cerrado. Campo items[].ivaType.

Miembro Valor Etiqueta Tasa
Iva.TEN 10_percent 10% 0.10
Iva.FIVE 5_percent 5% 0.05
Iva.EXEMPT exempt Exento 0
Iva.MIXED_TEN mixed_10_percent Mixto 10% 0.10
Iva.MIXED_FIVE mixed_5_percent Mixto 5% 0.05

Los dos mixtos exigen iva_base: el porcentaje de la línea que está gravado.

El IVA va incluido en el precio

No se suma. Un ítem de 1.100.000 al 10% contiene 100.000 de IVA (1.100.000 / 11) sobre una base gravada de 1.000.000. Al 5% el divisor es 21.

Currency

Cerrado. Campo currency.

Miembro Valor Etiqueta
Currency.PYG PYG Guaraníes
Currency.USD USD Dólares Americanos
Currency.PAB PAB Balboas

Con cualquiera distinta de PYG hace falta exchange_rate.

ClientType

Cerrado. Campo clientType.

Miembro Valor Etiqueta
ClientType.PERSON person Persona
ClientType.ENTITY entity Entidad
ClientType.FOREIGN_ENTITY foreign_entity Cliente Extranjero
ClientType.NOT_NOMINATED not_nominated Sin Nombre
ClientType.DIPLOMATIC diplomatic Diplomático
ClientType.GOVERNMENT government Gobierno

Los recibos aceptan solo los tres primeros. FOREIGN_ENTITY es el único tipo que puede llevar dirección sin códigos geográficos paraguayos.

AssociatedDocumentType

Cerrado. Campo associatedDocumentType.

Miembro Valor Etiqueta
ELECTRONIC_INVOICE electronic_invoice Factura Electrónica
PRINTED_INVOICE printed_invoice Factura Impresa
RETENTION_CERTIFICATE retention_certificate Constancia de Retención
NONE none Ninguno

Notas de crédito y débito aceptan los dos primeros; los recibos aceptan además NONE.

ReceiptPaymentMethod

Cerrado. Campo paymentMethod del recibo.

Miembro Valor Etiqueta
CASH cash Efectivo
CHECK check Cheque
BANK_TRANSFER bank_transfer Transferencia Bancaria

Con CHECK hacen falta check_bank y check_number.

ProviderType y ProviderDocumentType

Cerrados. Campos providerType y providerDocumentType de la autofactura.

ProviderType Valor Etiqueta
NO_RUC no_ruc No Contribuyente
FOREIGN foreign Extranjero
ProviderDocumentType Valor Etiqueta
PARAGUAYAN_ID paraguayan_dni Cédula paraguaya
PASSPORT passport Pasaporte
FOREIGN_ID foreign_dni Cédula Extranjera
RESIDENCE_CARD residence_card Carnet de residencia

TransactionType

Abierto. Campo transactionTypeCode, del 1 al 13.

Código Miembro Descripción
1 MERCHANDISE_SALE Venta de mercadería
2 SERVICES Prestación de servicios
3 MIXED Mixto (venta de mercadería y servicios)
4 FIXED_ASSET_SALE Venta de activo fijo
5 CURRENCY_SALE Venta de divisas
6 CURRENCY_PURCHASE Compra de divisas
7 PROMOTION_OR_SAMPLES Promoción o entrega de muestras
8 DONATION Donación
9 ADVANCE_PAYMENT Anticipo
10 PRODUCT_PURCHASE Compra de productos
11 SERVICES_PURCHASE Compra de servicios
12 TAX_CREDIT_SALE Venta de crédito fiscal
13 MEDICAL_SAMPLES Muestras médicas (Art. 3 RG 24/2014)

MeasureUnit

Abierto. Campo items[].measureUnit. Por omisión UNIT (77).

Código Miembro Descripción
77 UNIT Unidad
885 GLOBAL_UNIT Unidad Medida Global
2329 INTERNATIONAL_UNIT Unidad Internacional
569 RATION Ración
104 DETERMINATION Determinación
2366 COST_PER_THOUSAND Costo por Mil
891 PER_MILEAGE Por Milaje
95 MILLIMETER Milímetros
91 CENTIMETER Centímetros
87 / 108 METER / METER_ALT Metros
660 LINEAR_METER Metro lineal
625 KILOMETER Kilómetros
94 INCH Pulgadas
103 YARD Yardas
96 SQUARE_MILLIMETER Milímetros cuadrados
92 SQUARE_CENTIMETER Centímetros cuadrados
109 SQUARE_METER Metros cuadrados
869 HECTARE Hectáreas
93 CUBIC_CENTIMETER Centímetros cúbicos
110 CUBIC_METER Metros cúbicos
88 MILLILITER Mililitros
89 LITER Litros
90 MILLIGRAM Miligramos
86 GRAM Gramos
83 KILOGRAM Kilogramos
99 TON Tonelada
79 KILOGRAM_PER_SQUARE_METER Kilogramos por metro cuadrado
666 SECOND Segundo
101 MINUTE Minuto
100 HOUR Hora
102 DAY Día
98 MONTH Mes
97 YEAR Año

RemissionReason

Abierto. Campo reasonCode de la nota de remisión. Por omisión SALE (1).

Código Miembro Descripción
1 SALE Traslado por ventas
2 CONSIGNMENT Traslado por consignación
3 EXPORT Exportación
4 PURCHASE Traslado por compra
5 IMPORT Importación
6 RETURN Traslado por devolución
7 BETWEEN_COMPANY_LOCATIONS Traslado entre locales de la empresa
8 TRANSFORMATION Traslado de bienes por transformación
9 REPAIR Traslado de bienes por reparación
10 MOBILE_ISSUER Traslado por emisor móvil
11 EXHIBITION Exhibición o demostración
12 TRADE_FAIR Participación en ferias
13 PARCEL Traslado de encomienda
14 SEIZURE Decomiso
99 OTHER Otro

RemissionResponsible

Abierto. Campo responsibleCode.

Código Miembro Descripción
1 INVOICE_ISSUER Emisor de la factura
2 INVOICE_AND_GOODS_HOLDER Poseedor de la factura y bienes
3 CARRIER_COMPANY Empresa transportista
4 CUSTOMS_BROKER Despachante de Aduanas
5 TRANSPORT_AGENT Agente de transporte o intermediario

Transporte

Abiertos. Campos de la nota de remisión.

Catálogo Campo Valores
TransportType transportTypeCode 1 OWN (Propio), 2 THIRD_PARTY (Tercero)
TransportMode transportModeCode 1 LAND, 2 RIVER, 3 AIR, 4 MULTIMODAL
VehicleIdentificationType transportVehicleDocumentTypeCode 1 VIN, 2 REGISTRATION

FreightResponsible (campo transportResponsibleCode):

Código Miembro Descripción
1 INVOICE_ISSUER Emisor de la Factura Electrónica
2 INVOICE_RECEIVER Receptor de la Factura Electrónica
3 THIRD_PARTY Tercero
4 TRANSPORT_AGENT Agente intermediario del transporte
5 OWN_TRANSPORT Transporte propio

El tipo de vehículo no es un catálogo

Vehicle.type es una descripción libre de 4 a 10 caracteres —"CAMION", "Camioneta"—, distinta de TransportType, que sí es un código.

CarrierDocumentType

Abierto. Campo carrierDocumentTypeCode.

Código Miembro Descripción
1 PARAGUAYAN_ID Cédula paraguaya
2 PASSPORT Pasaporte
3 FOREIGN_ID Cédula extranjera
4 RESIDENCE_CARD Carnet de residencia
5 UNNAMED Innominado
6 DIPLOMATIC_CARD Tarjeta Diplomática de exoneración fiscal
9 UNSPECIFIED No especificado

PrintedDocumentType

Abierto. Campo associatedDocumentPrintedType.

Código Miembro Descripción
1 INVOICE Factura
2 CREDIT_NOTE Nota de crédito
3 DEBIT_NOTE Nota de débito
4 REMISSION_NOTE Nota de remisión
5 WITHHOLDING_RECEIPT Comprobante de retención

Países

249 códigos ISO-3. Van como datos, no como enum.

from smartdoc.constants import countries

countries.PARAGUAY              # "PRY"
countries.name("BRA")           # "Brasil"
countries.code("Argentina")     # "ARG"
countries.search("islas")       # [("SLB", "Islas Salomón"), ...]

Geografía

18 departamentos, 270 distritos y 6419 ciudades, embebidos en el paquete.

ciudad = smartdoc.geo.find_city("Asunción")
ciudad.code, ciudad.district.code, ciudad.department.code

Ver Documentos para cómo se usan.

Estados

19 estados, compartidos por los seis tipos de documento. Ver Documentos.

Permisos

23 permisos, 12 de lectura y 11 de escritura. No hay jerarquía entre ellos.

smartdoc.Permission.READ_INVOICES     # "read_invoices"
smartdoc.constants.permissions.ALL    # los 23