import { CataloguePaymentMethod } from "../catalogue.interface";
import { GetPaymentMethod } from "../payment-method.interface";

export interface ResponseDataProvider {
  error: boolean,
  msg: string,
  response: Array<InformationsData>
}



export interface ProviderData {
  NUMERO_PROVEEDOR: string;
  RAZON_SOCIAL: string;
  NOMBRE: string;
  PRIMER_APELLIDO: string;
  SEGUNDO_APELLIDO: string;
  CORREO: string;
  LADA1: string;
  TELEFONO1: number;
  LADA2?: string;
  TELEFONO2?: number;
  RFC: string;
  TAXID?: string;
  REGIMEN_FISCAL: string;
  TIPO: string;
  TIPO_CONTRIBUYENTE: string;
  SITIOWEB: string;
  METODO_PAGO: string;
  ESTADO: string;
  USUARIO_REGISTRA: string;
  FECHA_REGISTRA: string;
  USUARIO_MODIFICA: string;
  FECHA_MODIFICA: string;
  CALLE: string;
  EXTERIOR: string;
  INTERIOR?: string;
  CODIGO_POSTAL: string;
  COLONIA: string;
  LOCALIDAD: string;
  MUNICIPIO: string;
  ENTIDAD: string;
  PAIS: string;
  REFERENCIAS: Array<any>,
  CONTACTOS: Array<any>,
  CONDICIONES: Array<any>,
  CATALAGOS: Array<any>,
  METODOS_PAGO: Array<any>,

}

export interface ResponseDataProviderInformation {
  error: boolean,
  msg: string,
  response: Array<InformationsData>
}
export interface ProviderInformation {
  NUMERO_PROVEEDOR: string;
  RAZON_SOCIAL: string;
  NOMBRE: string;
  PRIMER_APELLIDO: string;
  SEGUNDO_APELLIDO: string;
  CORREO: string;
  LADA1: string;
  TELEFONO1: string;
  LADA2: string;
  TELEFONO2: string;
  RFC: string;
  TAXID: string;
  REGIMEN_FISCAL: string;
  TIPO_CONTRIBUYENTE: string;
  TIPO_EMPRESA: string;
  SITIO_WEB: string;
  METODO_PAGO: string;
}

export interface InformationData {
  NUMERO_PROVEEDOR: string;
  RAZON_SOCIAL: string;
  CORREO: string;
  NOMBRE: string;
  PRIMER_APELLIDO: string;
  SEGUNDO_APELLIDO: string;
  LADA1: string;
  TELEFONO1: string;
  LADA2: string;
  TELEFONO2: string;
  REGIMEN_FISCAL: string;
  TIPO: string;
  TIPO_CONTRIBUYENTE: string;
  RFC: string;
  TAXID: string;
  SITIOWEB: string;
  ESTADO: string;
  CALLE: string;
  EXTERIOR: string;
  INTERIOR: string;
  CODIGO_POSTAL: string;
  COLONIA: string;
  LOCALIDAD: string;
  MUNICIPIO: string;
  ENTIDAD: string;
  PAIS: string;
  ID_SUBCONTRACT: string | null;
  REFERENCIAS?: Array<ReferenceData>;
  CONTACTOS?: Array<ContactForm>;
  CONDICIONES?: Array<ConditionForm>;
  METODOS_PAGO?: Array<CataloguePaymentMethod>;
  CATALAGOS?: Array<CatalogForm>;
  
}

export interface DataDialogReference {
  typeDialog: string;
  dataElement: ReferenceData;
  dataSource: Array<ReferenceData>;
}

export interface DataDialogContact{
  typeDialog: string;
  dataElement: ContactForm;
  dataSource: Array<ContactForm>;
}

export interface ReferenceData {
  NUMERO_REFERENCIA?: string | number | null;
  RAZON_SOCIAL: string;
  CORREO: string;
  LADA: string;
  TELEFONO: string;
  RFC: string;
  DIRECCION: string;
  ESTADO: string;
}

/* export interface ContactData {
  ID_CONTACTO: number;
  NOMBRE_CONTACTO: string;
  TIPO_CONTACTO: string;
  CALLE: string;
  NUMERO_EXTERIOR: string;
  NUMERO_INTERIOR: string;
  CODIGO_POSTAL: string;
  COLONIA: string;
  LOCALIDAD: string;
  MUNICIPIO: string;
  ENTIDAD: string;
  PAIS: string;
  LADA1: string;
  TELEFONO1: number | string;
  LADA2: string;
  TELEFONO2: number | string;
  CORREO1: string;
  CORREO2: string;
  OBSERVACIONES: string;
  ESTADO:string;
} */

export interface ConditionData {
  ID_CONDICION?: string | number;
  TIPO_CONDICION: string;
  INFORMACION: string;
  ESTADO: string;
}

export interface DataDialogCondition{
  typeDialog: string;
  dataElement: ConditionData;
  dataSource: Array<ConditionData>;
}

export interface CatalogData {
  ID_CATALOG?: number | string;
  CATALAGO: string;
  DESCRIPCION: string;
  URL_CATALAGO: string;
  ESTADO: string;
}
export interface DataDialogCatalog {
  typeDialog: string;
  dataElement: CatalogData;
  dataSource: Array<CatalogData>;
}


export interface RevisionData {
  NO: number;
  TYPE_REV: string;
  FORMULARIO_REV: string;
  MENSAJE_REV: string;
}

export interface SaveData {
  INFORMATION_PERSONAL: InformationData,
  REFERENCES: Array<ReferenceData>;
  CONTACTS: Array<ContactForm>;
  CONDITIONS: Array<ConditionData>;
  PAYMENT_MEDIA: Array<GetPaymentMethod>;
  CATALOGS: Array<CatalogData>;
}

export interface ProviderSave {
  USER: string;
  OBJ_DATA: SaveData;
  FERE: string;
}

export interface InformationForm {
  NUMERO_PROVEEDOR?: string;
  RAZON_SOCIAL: string;
  CORREO: string;
  NOMBRE: string;
  PRIMER_APELLIDO: string;
  SEGUNDO_APELLIDO: string;
  LADA1: string;
  TELEFONO1: number;
  LADA2: string;
  TELEFONO2: number;
  REGIMEN_FISCAL: string;
  TIPO_EMPRESA: string;
  RFC: string;
  TAXID: string;
  SITIO_WEB: string;
  ESTADO: string;
  REFERENCIAS?: Array<ReferenceData>;
  CONTACTOS?: Array<ContactForm>;
  CONDICIONES?: Array<ConditionForm>;
  METODOS_PAGO?: Array<GetPaymentMethod>;
  CATALAGOS?: Array<CatalogForm>;
}


export interface ContactForm {
  ID_CONTACTO: number;
  NOMBRE_CONTACTO: string;
  TIPO_CONTACTO: string;
  CALLE: string;
  NUMERO_EXTERIOR: string;
  NUMERO_INTERIOR: string;
  CODIGO_POSTAL: string;
  COLONIA: string;
  LOCALIDAD: string;
  MUNICIPIO: string;
  ENTIDAD: string;
  PAIS: string;
  LADA1: string;
  TELEFONO1: string;
  LADA2: string;
  TELEFONO2: string;
  CORREO1: string;
  CORREO2: string;
  OBSERVACIONES: string;
  ESTADO: string;
}

export interface ConditionForm {
  NUMERO_CONDICION?: string | null;
  TIPO_CONDICION: string;
  INFORMACION: string;
  ESTADO: string;
}

export interface CatalogForm {
  NUMERO_CATALAGO?: string | number;
  CATALAGO: string;
  DESCRIPCION: string;
  URL_CATALAGO: string;
  ESTADO: string;
}




export interface TypeForm {
  type: 'REGI' | 'EDIT' ;
  element?: InformationData | null;
  subcontract: string | null;
}


export interface RegisterProvider{
  user: string;
  line: number;
  obj_response: RegisterForm;
}
export interface RegisterForm {
  INFORMACION: InformationData;
  REFERENCIAS: Array<ReferenceData>;
  CONTACTOS: Array<ContactForm>;
  CONDICIONES: Array<ConditionForm>;
  METODOS_PAGO: Array<GetPaymentMethod>;
  CATALAGOS: Array<CatalogForm>;
}


export interface ReferencesData {
  ID_REFERENCE:string;
  EMPRESA:string;
  CORREO:string;
  LADA: string;
  TELEFONO:string;
  RFC:string;
  DIRECCION:string;
  ESTADO:string;
  USUARIO_REGISTRA:string;
  FECHA_REGISTRA:string;
  USUARIO_MODIFICA:string;
  FECHA_MODIFICA:string;
}

export interface ConditionsData {
  NUMERO_CONDICION: string;
  TIPO_CONDICION: string;
  INFORMACION: string;
  ESTADO: string;
  USUARIO_REGISTRA: string;
  FECHA_REGISTRA: string;
  USUARIO_MODIFICA: string;
  FECHA_MODIFICA: string;
}

export interface CatalogsData {
  NUMERO_CATALAGO: string;
  CATALAGO: string;
  DESCRIPCION: string;
  URL_CATALAGO: string;
  ESTADO: string;
  USUARIO_REGISTRA: string;
  FECHA_REGISTRA: string;
  USUARIO_MODIFICA: string;
  FECHA_MODIFICA: string;
}

export interface ResponseDataInformationProvider {
  error: boolean,
  msg: string,
  response: InformationsData
}

export interface InformationsData {
  PROV_NUPR: string;
  PROV_NOCO: string;
  PROV_NOMB: string;
  PROV_APPA: string;
  PROV_APMA: string;
  PROV_CORR: string;
  PROV_LAD1: string;
  PROV_TEL1: string;
  PROV_LAD2: string;
  PROV_TEL2: string;
  PROV_XRFC: string;
  PROV_XTAX: string;
  REFI_CRFI: string;
  REFI_DRFI: string;
  PROV_TIPO: string;
  PROV_TICO: string;
  PROV_SIWE: string;
  PROV_MEPA: string;
  PROV_CALL: string;
  PROV_NUEX: string;
  PROV_NUIN: string;
  PROV_COPO: string;
  PROV_COLO: string;
  PROV_MUNI: string;
  PROV_LOCA: string;
  PROV_ENTI: string;
  PROV_PAIS: string;
  PROV_ESTA: string;
  PROV_INEX: string;
  PROV_USRE: string;
  PROV_FERE: string;
  PROV_USMO: string;
  PROV_FEMO: string;
  PROV_FEAR: string;
}

export interface DeleteProvider{
  line: number;
  user: string;
  numero_proveedor: string;
}


export interface ResponseDataGetProvidersActives {
  error: boolean;
  msg: string;
  response: GetProvidersActives[];
}

export interface GetProvidersActives {
  NUMERO_PROVEEDOR: string;
  RAZON_SOCIAL: string;
  NOMBRE: string;
  PRIMER_APELLIDO: string;
  SEGUNDO_APELLIDO: string;
}


export interface ResponseDataGetProvidersById {
  error: boolean;
  msg: string;
  response: GetProvider;
}


export interface GetProvider {
  NUMERO_PROVEEDOR: string;
  RAZON_SOCIAL: string;
  NOMBRE: string;
  PRIMER_APELLIDO: string;
  SEGUNDO_APELLIDO: string;
  CORREO: string;
  LADA1: string;
  TELEFONO1: number;
  LADA2: string;
  TELEFONO2: number;
  RFC: string;
  TAXID: string;
  NUMERO_REGIMEN_FISCAL: string;
  REGIMEN_FISCAL: string;
  TIPO: string;
  TIPO_CONTRIBUYENTE: string;
  SITIOWEB: string;
  CALLE: string;
  EXTERIOR: string;
  INTERIOR: string;
  CODIGO_POSTAL: string;
  COLONIA: string;
  MUNICIPIO: string;
  LOCALIDAD: string;
  ENTIDAD_FEDERATIVA: string;
  PAIS: string;
}