Esquema de datos
Articulos
Objetos complejos, con arrays de variantes y etiquetas
export enum TipoTalleColor {
NINGUNO = 0,
TALLES = 1,
COLORES = 2,
TALLES_COLORES = 3,
}
export interface Articulo {
articuloId: number;
codigo: string;
descripcion: string;
descripcionWeb: string;
nombre: string; // se genera automatico segun codigo y descripcion
talleColor: TipoTalleColor;
precio1: number;
precio2: number;
precio3: number;
precio4: number;
precio5: number;
stockTotal: number;
curva: ArticuloCurva[];
tags: ArticuloTag[];
}
export interface ArticuloCurva {
articuloId: number;
colorId?: number;
talleId?: number;
colorNombre: string;
colorCodigo: string;
talleNombre: string;
talleCodigo: string;
unidades: number;
}
Con curva incluida
Objeto plano, con variantes en raiz
export interface ArticuloConCurva {
articuloId: number;
version: number;
codigo: string;
descripcion: string;
descripcionWeb: string;
nombre: string; // se genera automatico segun codigo y descripcion
talleColor: TipoTalleColor;
precio1: number;
precio2: number;
precio3: number;
precio4: number;
precio5: number;
colorId?: number;
talleId?: number;
colorNombre: string;
colorCodigo: string;
talleNombre: string;
talleCodigo: string;
unidades: number;
}
Tags
En ninox las Tags
son las Etiquetas y/o Categorias
export enum TipoTag {
TODAS = -1,
TAG = 0,
CATEGORIA,
MARCA,
TEMPORADA,
}
export interface ArticuloTag {
articuloId: number;
articuloTagId: number;
tipo: TipoTag;
tagId: number;
tagNombre: string;
padreId?: number;
destacada: boolean;
}
Pedido
Un pedido de tercero al enviarse a Ninox resultará en un Pedido de venta o una Preventa que reserva stock, esto dependerá de la configuración de la integración
enum CondicionIva {
SIN_CATEGORIA = 0,
CONSUMIDOR_FINAL = 1,
RESPONSABLE_INSCRIPTO = 2,
MONOTRIBUTO = 3,
EXENTO = 4,
RESPONSABLE_NO_INSCRIPTO = 5,
}
export interface PedidoTerceros {
ordenId: number;
numero: number;
detalle: string;
direccionEnvio: DireccionTerceros;
direccionFacturacion: DireccionTerceros;
productos: ArticuloTerceros[];
usuario: UsuarioTerceros;
subtotal: number;
descuento: number;
envio: number;
recargo: number;
total: number;
}
export interface DireccionTerceros {
provincia: string;
localidad: string;
direccion: string;
codigoPostal: string;
}
export interface UsuarioTerceros {
nombre: string;
email: string;
dni: string;
cuit: string;
telefono: string;
condicion: CondicionIva;
}
export interface ArticuloTerceros {
articuloId: number;
precio: number;
talleId?: number;
colorId?: number;
cantidad: number;
}
Pedido resultado
export interface PedidoResultado {
facturaId: number; // si llega en 0, no se realizó el pedido
numero: number;
pVNumero: number;
sref: string;
estado: number;
datos: { [key: string]: string };
electronica: boolean;
cae: string;
caevencimiento: string;
resultado: string;
observaciones: string;
errorFE: string;
saldo?: number;
errores: boolean;
}
Entidad
export interface Entidad {
entidadId: number;
version: number;
nombre: string;
razonSocial: string;
contacto: string;
provinciaId?: number;
localidadId?: number;
cuit: string;
dni: string;
telefono: string;
direccion: string;
codigoPostal: string;
email: string;
}
Comprobantes
export interface Factura {
facturaId: number;
comprobanteTipo: number;
numero: number;
numeroFull: string;
detalle: string;
sucursalId?: number;
sucursalNombre: string;
puntoVentaId?: number;
depositoId: number;
depositoNombre: string;
entidadId: number;
entidadNombre: string;
entidadRazonSocial: string;
entidadContacto: string;
entidadDireccion: string;
entidadEmail: string;
subtotal: number;
descuento: number;
envio: number;
recargo: number;
iva: number;
subTotal2: number;
total: number;
items: FacturaItem[];
}
export interface FacturaItem {
facturaItemid: number;
facturaId: number;
articuloId: number;
talleId?: number;
colorId?: number;
cantidad: number;
precio: number;
subTotal: number;
descuento: number;
total: number;
}