import { InformationsData } from "../provider/provider.interface";

export interface ArtitleResponse{
  ID_DESC_ARTI: string;
  ID_ARTICULO:string;
  CODIGO:string;
  MODELO:string;
  ID_FAMILIA:string;
  FAMILIA:string;
  ID_SUBFAMILIA:string;
  SUBFAMILIA:string;
  DESCRIPCION:string;
  CARACTERISTICAS:string;
  CANTIDAD: number;
  COMPRA_WEB: string;
  INFO_PRODUCTO: string;
  TIPO: string;
  URL_IMAGEN: string;
  ID_PROVEEDOR: string;
  PROVEEDOR: string;
}

export interface DialogModule {
  DATA: DataTableResponse;
  TITLE: string;
  ACTIONS: string;
}

export interface ResponseDataFamilies {
  error: boolean;
  msg: string;
  response: Array<FamiliesAndSubfamilies>;
}

export interface ResponseDataArtitle {
  error: boolean;
  msg: string;
  response: Array<ArtitleResponse>;
}


export interface ResponseDataById {
  error: boolean;
  msg: string;
  response: ResponseArtitle;
}

export interface ResponseArtitle {
  NUMERO_ARTICULO: string;
  CODIGO: string;
  ID_FAMILIA: string;
  FAMILIA: string;
  ID_SUBFAMILIA: string;
  SUBFAMILIA: string;
  ARTICULO: string;
  INFORMACION: Array<ResponseInformation>;
}

export interface ResponseInformation {
  NUMERO_DESCRIPCION: string;
  DESCRIPCION?: string | null;
  CARACTERISTICAS: string;
  COMPRA_WEB: boolean;
  TIPO: string;
  IMAGEN: string;
  PROVEEDOR: InformationsData;
  ESTADO: string;
  DETALLES: Array<ResponseDetails>;
}

export interface ResponseDetails {
  NUMERO_DETALLE: string;
  CODIGO: string;
  MODELO: string;
  MONEDA: string;
  PRECIO: string;
  CANTIDAD: string;
  ESTADO: string;
  CARACTERISTICAS: string;
}

export interface FamiliesAndSubfamilies {
  ID: string;
  NOMBRE: string;
  SUBFAMILIAS: Array<FamiliesAndSubfamilies>;
}

export interface Subfamilies {
  ID_SUBFAMILIA: string;
  SUBFAMILIA: string;
}

export interface ItemFamily {
  expandable: boolean;
  name: string;
  level: number;
  id: string;
}

export interface TypeForm {
  type:string;
  element?: ArtitleResponse | null;
}

export interface ObjectRequest {
  lineNumber: number;
  idArtitle: string;
  idProvider: string;
}

export interface ResponseArtitle {
  error: boolean;
  msg: string;
  response: ArtitleResponse;
}

export interface ResponseDataLine {
  error: boolean;
  msg: string;
}

export interface DataTableResponse {
  URL_IMAGEN: string;
  NUMERO_ARTICULO: string;
  ARTICULO: string;
  NUMERO_PROVEEDOR: string;
  NUMERO_PRODUCTO: string;
  MODELO: string;
  CODIGO: string;
  CARACTERISTICAS: string;
  TIPO: string;
  CANTIDAD: number;
  MONEDA: string;
  PRECIO: string;
}

export interface ContentArtitle{
  idArtitle: string;
  idProvider: string;
  artitle: string;
  url_imagen: string;
  content: Array<DataTableResponse>;
}

export interface ProductoDetails {
  ID_DESC_ARTI: string;
  ID_ARTICULO: string;
  CODIGO_ARTICULO: string;
  MODELO_ARTICULO: string;
  ID_ARTICULO_FAMILIA: string;
  FAMILIA_ARTICULO: string;
  ID_ARTICULO_SUBFAMILIA: string;
  SUBFAMILIA_ARTICULO: string;
  DESCRIPCION_ARTICULO: string;
  CARACTERISTICAS_ARTICULO: string;
  COMPRA_ARTICULO_WEB: string;
  TIPO_ARTICULO: string;
  URL_ARTICULO_IMAGEN: string;
  ID_ARTICULO_PROVEEDOR: string;
  PROVEEDOR_ARTICULO: string;
  CODIGO_PRODUCTO: string;
  MODELO_PRODUCTO: string;
  PRECIO_PRODUCTO: number;
  CANTIDAD_PRODUCTO: number;
  CARACTERISTICAS_PRODUCTO: string;
  NUMERO_PRODUCTO: string;
}


export interface InformationArtitle {
  NO: string;
  IMAGEN?: FileReader | null;
  URLIMAGE: string;
  DESCRIPCION: string;
  CARACTERISTICAS?: string | null;
  TIPO: string;
  PROVEEDOR: InformationsData;
  COMPRA_WEB: boolean;
  ESTADO: string;
  DETAILS: Array<DetailsArtitle>;
}

export interface DetailsArtitle {
  NO: string;
  CODIGO: string;
  MODELO: string;
  MONEDA: DataMoneda;
  CANTIDAD: string;
  PRECIO: string;
  ESTADO: string;
  CARACTERISTICAS: string;
}


export interface ResponseFormDetails {
  typeForm: string;
  element: any;
  itemElement?: DetailsArtitle;
}

export interface DataFormDetails {
  element: InformationArtitle,
  itemElement: DetailsArtitle | null
}

export interface DataMoneda {
  codigo: string;
  moneda: string;
}
