import { PreventiveWorkOrdersActive } from "../preventive-work-orders-active.interface";
import { SliderData } from "../slider.interface";
import { ShoppingCart } from "./artitle.interface";
import { DispatchData } from "./dispatch.interface";
import { PurchasePurpose } from "./purchase-purpose.interface";


export interface ObjectRequestLine {
  USER: string;
  LINE: number;
  PRODUCTS: any;
  PURPOSE: PurchasePurpose;
}

export interface ResponseRequestLines{
  error: boolean;
  msg: string;
  response: Array<RequestLines>;
}

export interface ResponseDataRequestLines{
  error: boolean;
  msg: string;
  response: RequestLines;
}

export interface RequestLines {
  ID_LINEA_SOLICITUD: number;
  NUMERO_PROVEEDOR: string;
  NOMBRE_COMERCIAL: string;
  ORDEN_TRABAJO_PREVENTIVO: number | null;
  ORDEN_TRABAJO_CORRECTIVO: number | null;
  ESTADO: string;
  USUARIO_REGISTRA: string;
  FECHA_REGISTRA: string;
  USUARIO_MODIFICA: string | null;
  FECHA_MODIFICA: string | null;
  NUMERO_ORDEN: string | null;
  SELECTED: Array<DetailsProduct>;
}

export interface DetailsProduct {
  ID_ARTICULO_SELECCIONADO: string;
  NUMERO_PROVEEDOR: string;
  ESTADO: string;
  NUMERO_INFORMACION: string;
  CODIGO_INFORMACION: string;
  MODELO_INFORMACION: string;
  CODIGO_MONEDA: string;
  MONEDA_DESCRIPCION: string;
  PRECIO_UNITARIO: number;
  MONTO_MINIMO: number;
  CARACTERISTICAS_INFORMACION: string;
  NUMERO_DESCRIPCION: string;
  IMAGENES: Array<string>;
  DESCRIPCION: string;
  CARACTERISTICAS: string;
  COMPRA_WEB: number;
  NUMERO_ARTICULO: number;
  CODIGO: string;
  ARTICULO: string;
  CODIGO_FAMILIA: string;
  NOMBRE_FAMILIA: string;
  CODIGO_SUBFAMILIA: string;
  NOMBRE_SUBFAMILIA: string;
  ID_UNIDAD: number;
  NOMBRE_UNIDAD: string;
  ACRONIMO_UNIDAD: string;
  CARR_IMAG: Array<SliderData>;
}

export interface ObjectDeleteArtitleByRequestLine {
  USUARIO: string;
  NUMERO_LINEA: number;
  NUMERO_INFORMACION: string;
  NUMERO_PROVEEDOR: string;
  NUMERO_ARTICULO: string;
  ID_LINEA_SOLICITUD: string;
}

export interface ObjectGetRequest {
  ID_LINEA_SOLICITUD: string;
  NUMERO_PROVEEDOR: string;
  NUMERO_LINEA: number;
  USUARIO: string;
}

export interface DataProducts {
  NUMERO_ARTI_SELE: string;
  NUMERO_ARTICULO: string;
  NUMERO_PRODUCTO: string;
  MODELO: string;
  CODIGO: string;
  CARACTERISTICAS: string;
  CANTIDAD: string;
  PRECIO_UNITARIO: string;
  PRECIO_TOTAL: string;
  ESTADO: string;
  USUARIO_REGISTRA: string;
  FECHA_REGISTRA: string;
  USUARIO_MODIFICA: string;
  FECHA_MODIFICA: string;
}
export interface ResponseData{
  error: string;
  msg: string;
  response: RequestLines
}

export interface DialogDataGroup {
  dispatch: Array<DispatchData>;
  dataConfig: GroupRequestLine;
  preventiveMaintenance: Array<PreventiveWorkOrdersActive>;
}

export interface GroupRequestLine {
  NUMERO_PROVEEDOR: string;
  PROVEEDOR: string;
  PRECIO_TOTAL: number;
  MONEDA: string;
  FECHA_REGISTRA: string;
  FECHA_MODIFICA: string;
  USUARIO_REGISTRA: string;
  USUARIO_MODIFICA: string;
  DESPACHO: string;
  METODO_PAGO: string;
  // PROPOSITO: string;
  PRODUCTOS: Array<DetailsProduct>;
  // ACTIVIDAD: string;
  PROYECTO: string;
}

export interface OrderDataRequest {
  NUMERO_PROVEEDOR: string;
  PROVEEDOR: string;
  PRECIO_TOTAL: number;
  MONEDA: string;
  DESPACHO: string;
}

export interface ResponseDataOrder {
  error: boolean;
  msg: string;
  response: Array<GetOrderData>;
}

export interface GetOrderData {
  NUMERO_ORDEN: string;
  NUMERO_SOLICITUD_COMPRA: number;
  NUMERO_PROVEEDOR: string;
  NOMBRE_COMERCIAL: string;
  TIPO_NACIONALIDAD: string;
  ID_DESPACHO: number;
  NOMBRE_DESPACHO: string;
  ESTADO: string;
  USUARIO_MODIFICA: string;
  FECHA_MODIFICA: string;
}

export interface ResponseDataOrderDetails {
  error: boolean;
  msg: string;
  response: GetOrderDetails;
}

export interface GetOrderDetails {
  NUMERO_ORDEN: string;
  ESTADO_ORDEN: string;
  USUARIO_REGISTRA: string;
  FECHA_REGISTRA: string;
  USUARIO_MODIFICA: string;
  FECHA_MODIFICA: string;
  NUMERO_SOLICITUD_COMPRA: number;
  ORDEN_TRABAJO_PREVENTIVO: number | null,
  ORDEN_TRABAJO_CORRECTIVO: number | null,
  ID_DESPACHO: number,
  NOMBRE_DESPACHO: string;
  NOMBRE_RESPONSABLE: string;
  APELLIDO_PATERNO_RESPONSABLE: string;
  APELLIDO_MATERNO_RESPONSABLE: string;
  LADA: string;
  TELEFONO: number;
  CORREO_ELECTRONICO: string;
  CALLE: string;
  NUMERO_EXTERIOR: string;
  NUMERO_INTERIOR: string | null;
  CODIGO_POSTAL: string;
  LOCALIDAD: string;
  COLONIA: string;
  MUNICIPIO: string;
  ENTIDAD_FEDERATIVA: string;
  PAIS: string;
  COMENTARIOS: string;
  NUMERO_PROVEEDOR: string;
  NOMBRE_COMERCIAL: string;
  NOMBRE_PROVEEDOR: string;
  APELLIDO_PATERNO_PROVEEDOR: string;
  APELLIDO_MATERNO_PROVEEDOR: string;
  CORREO_ELECTRONICO_PROVEEDOR: string;
  LADA1_PROVEEDOR: string;
  TELEFONO1_PROVEEDOR: number,
  LADA2_PROVEEDOR: string | null,
  TELEFONO2_PROVEEDOR: number | null,
  RFC: string;
  TAXID: string | null;
  ARTI:Array<ArtitleDetailsOrder>;
  HIST:Array<HistoryOrder>;
}

export interface ResponseDataArtitleByRequest {
  error: boolean;
  msg: string;
  response: Array<ShoppingCart>;
}

export interface ArtitleDetailsOrder {
  ID_ARTICULO_SELECCION: string;
  CODIGO_FAMILIA: string;
  NOMBRE_FAMILIA: string;
  CODIGO_SUBFAMILIA: string;
  NOMBRE_SUBFAMILIA: string;
  ID_ARTICULO: number;
  CODIGO: string;
  NOMRE_ARTICULO: string;
  ID_DESCRIPCION: number;
  IMAGEN: string[],
  DESCRIPCION: string;
  CARACTERISTICAS: string | null;
  COMPRA_WEB: number;
  ID_INFORMACION: number;
  CODIGO_ARTICULO: string;
  MODELO_ARTICULO: string;
  CODIGO_MONEDA: string;
  PRECIO: number;
  MONTO_MINIMO: number;
  CARACTERISTIAS_INFORMACION: string;
  ID_UNIDAD: number;
  NOMBRE_UNIDAD: string;
  ACRONIMO_UNIDAD: string | null;
  CANTIDAD: number;
}

export interface ResponseDataHistoryOrder {
  error: boolean;
  msg: string;
  response: Array<HistoryOrder>;
}
export interface ResponseDataLastState {
  error: boolean;
  msg: string;
  response: HistoryOrder;
}

export interface HistoryOrder{
  NUMERO_ORDEN: string;
  ID_HISTORIA_ORDEN: number;
  ESTADO_ORDEN: string;
  DESCRIPCION: string | null,
  EVIDENCIA: string[] | null,
  PORCENTAJE_ENTREGA: number;
  USUARIO_MODIFICA: string | null;
  FECHA_MODIFICA: string | null;
}

export interface RequestOrder { 
  NUMERO_SOLICITUD: string;
  DESPACHO: string;
  PROPOSITO: string;
  ID_MANT_PREV: string;
  ID_MANT_CORR: string;
  NUMERO_LINEA: number;
  USUARIO: string;
}
