100 lines
4.0 KiB
TypeScript
100 lines
4.0 KiB
TypeScript
import { Request, Response } from 'express';
|
|
import { SheriffDataLog } from '../models/SheriffDataLog';
|
|
|
|
export const getCompanyByRut = async (req: Request, res: Response) => {
|
|
try {
|
|
const { rut } = req.params;
|
|
console.log("getCompanyByRut", rut);
|
|
if (!rut) {
|
|
return res.status(400).json({
|
|
success: false,
|
|
message: 'RUT is required'
|
|
});
|
|
}
|
|
|
|
// Clean RUT format
|
|
const cleanRut = rut.replace(/\./g, '').toUpperCase();
|
|
|
|
// Find the most recent log for this RUT
|
|
const existingLog = await SheriffDataLog.findOne({ rut: cleanRut }).sort({ fetchedAt: -1 });
|
|
|
|
if (!existingLog) {
|
|
return res.status(404).json({
|
|
success: false,
|
|
message: 'No se encontró información para el RUT ingresado'
|
|
});
|
|
}
|
|
|
|
console.log('Found log:', JSON.stringify(existingLog, null, 2));
|
|
|
|
// Extract relevant data from the log
|
|
const companyData = {
|
|
RUT: cleanRut,
|
|
"Razon Social": existingLog.summaryData?.data?.sii?.razonSocial || "N/A",
|
|
"Inicio Actividades": existingLog.summaryData?.data?.sii?.inicioActividades || "N/A",
|
|
"Situacion Actual": existingLog.summaryData?.data?.sii?.situacionActual || "N/A",
|
|
"Empresa Menor": existingLog.summaryData?.data?.sii?.empresaMenor || "N/A",
|
|
"Autorizado Moneda Extranjera": existingLog.summaryData?.data?.sii?.autorizadoMonedaExtranjera || "N/A",
|
|
|
|
// Business Size Information
|
|
"Tamaño Empresa": existingLog.summaryData?.data?.siiBusinessSize?.textSize || "N/A",
|
|
"Ventas Anuales (UF)": existingLog.summaryData?.data?.siiBusinessSize?.annualSales || "N/A",
|
|
"Trabajadores Dependientes": existingLog.summaryData?.data?.siiBusinessSize?.dependentWorkers?.toString() || "N/A",
|
|
|
|
// Activities
|
|
"Actividades Economicas": existingLog.summaryData?.data?.sii?.actividadEconomicaVigente?.map((act: any) => ({
|
|
actividad: act.activities,
|
|
codigo: act.code,
|
|
categoria: act.category,
|
|
afectoIVA: act.ivaAffection,
|
|
fecha: act.date
|
|
})) || [],
|
|
|
|
// Properties and Vehicles
|
|
"Cantidad de Propiedades": existingLog.summaryData?.data?.propertiesSummary?.propertiesQuantity || 0,
|
|
"Avaluo Total Propiedades": existingLog.summaryData?.data?.propertiesSummary?.totalAppraisal || "0",
|
|
"Cantidad de Vehiculos": existingLog.summaryData?.data?.vehiclesSummary?.vehiclesQuantity || 0,
|
|
|
|
// Credit Scoring
|
|
"Clasificacion de Riesgo": existingLog.summaryData?.data?.creditScoring?.classificationLabel || "N/A",
|
|
"Porcentaje de Clasificacion": existingLog.summaryData?.data?.creditScoring?.classificationPercentage || 0,
|
|
|
|
// Company Registration
|
|
"Fecha de Constitucion": existingLog.officialDiaryData?.data?.[0]?.fecha || "N/A",
|
|
"Socios": existingLog.officialDiaryData?.data?.[0]?.socios?.map((socio: any) => ({
|
|
nombre: socio.nombre,
|
|
rut: socio.rut,
|
|
domicilio: socio.domicilio
|
|
})) || [],
|
|
|
|
// Banking Information
|
|
"Deuda Bancaria": {
|
|
"Deuda Directa Comercial": existingLog.summaryData?.data?.deudaBancariaSummary?.deudaDirectaComercial || 0,
|
|
"Deuda Directa Vigente": existingLog.summaryData?.data?.deudaBancariaSummary?.deudaDirectaVigente || 0,
|
|
"Linea de Credito": existingLog.summaryData?.data?.deudaBancariaSummary?.lineaCredito || 0,
|
|
"Fecha": existingLog.summaryData?.data?.deudaBancariaSummary?.date || "N/A"
|
|
},
|
|
|
|
updatedAt: existingLog.fetchedAt?.toISOString() || new Date().toISOString(),
|
|
source: 'sheriffDataLog',
|
|
duxiterMD: existingLog.duxiterMD || ''
|
|
};
|
|
|
|
// Log the extracted data
|
|
console.log('Extracted company data:', JSON.stringify(companyData, null, 2));
|
|
|
|
return res.status(200).json({
|
|
success: true,
|
|
data: companyData,
|
|
source: 'sheriffDataLog'
|
|
});
|
|
|
|
} catch (error) {
|
|
console.error('Error in getCompanyByRut:', error);
|
|
return res.status(500).json({
|
|
success: false,
|
|
message: 'Error interno del servidor',
|
|
error: error instanceof Error ? error.message : 'Error desconocido'
|
|
});
|
|
}
|
|
};
|