//Iniciar Administrador de Tareas Programadas del Servidor. public void Run(HttpApplicationState application, System.Web.Caching.Cache cache) { //Obtener todas las tareas registradas en la tabla Global GTAREAS. DataSet dsTareasGlobal = new DataSet(); DBFunctions.RequestGlobal(dsTareasGlobal, IncludeSchema.NO, "global", "select gtar_descriptor, gtar_database, gtar_params, gtar_hora, gtar_activa from gtareas where gtar_activa = 'S';"); //Recorrer, validar y ejecutar todas las tareas definidas. for (int t = 0; t < dsTareasGlobal.Tables[0].Rows.Count; t++) { string horaTarea = dsTareasGlobal.Tables[0].Rows[t]["gtar_hora"].ToString(); bool ejecutarTarea = ValidarTarea(horaTarea); if (ejecutarTarea) { string idTarea = dsTareasGlobal.Tables[0].Rows[t]["gtar_descriptor"].ToString(); string dataBaseCliente = dsTareasGlobal.Tables[0].Rows[t]["gtar_database"].ToString(); string parametrosFuncionTarea = dsTareasGlobal.Tables[0].Rows[t]["gtar_params"].ToString(); //Identificar tarea y ejecutarla. //De acuerdo a la base de datos Cliente definida y los parametros asociados a cada función (Descritos en la tabla GTIPOTAREAS). //Nota: Nuevas tareas deberan adicionarse aquí, y estar definidas en la clase DescriptorTarea.cs y en la Base de Datos Global en GTAREAS y GTIPOTAREAS. switch (idTarea) { case "OT_15M": DescriptorTarea.FTPEstadoActualOT(dataBaseCliente, parametrosFuncionTarea); break; case "OT_24H": DescriptorTarea.FTPFacturaDiariaOT(dataBaseCliente, parametrosFuncionTarea); break; case "CT_18H": DescriptorTarea.EmailClienteCitasTaller(dataBaseCliente, parametrosFuncionTarea); break; case "SA_08D": DescriptorTarea.CierreAutomaticoOrdenesSAC(dataBaseCliente, parametrosFuncionTarea); break; } } } }
//Ejecutar tarea programada: OT_24H //Obtiene el estado actual de las OT ya facturadas en el día Actual. Crea archivo txt y lo envia por FTP. public static void FTPFacturaDiariaOT(string dataBaseCliente, string parametrosFuncionTarea) { //ParametrosFuncionTarea //almacen,idArchivos,usuario,contraseña // 0 , 1 , 2 , 3 String[] arrParams = parametrosFuncionTarea.Split(','); DataSet dsOT24 = new DataSet(); DBFunctions.RequestGlobal(dsOT24, IncludeSchema.NO, dataBaseCliente, @"select mo.pdoc_codigo, mo.mord_numeorde, DATE(mo.mord_salida) as mord_salida, do.pven_codigo, mo.mcat_vin, mc.mcat_anomode, pc.pcol_descripcion, mc.pcat_codigo, mc.mcat_numeultikilo, pca.pcat_descripcion, m.pmar_nombre, sum( do.dord_valooper) as valOp from morden mo, dordenoperacion do, ptempario pt, mcatalogovehiculo mc, pcolor pc, pcatalogovehiculo pca, pmarca m where mo.pdoc_codigo = do.pdoc_codigo and mo.mord_numeorde = do.mord_numeorde and do.ptem_operacion = pt.ptem_operacion and mc.mcat_vin = mo.mcat_vin and pc.pcol_codigo = mc.pcol_codigo and pca.pcat_codigo = mc.pcat_codigo and m.pmar_codigo = pca.pmar_codigo and(mo.test_estado = 'F' or mo.test_estado = 'E') and DATE(mo.mord_salida) = DATE(current timestamp) and mo.palm_almacen = '" + arrParams[0] + @"' group by mo.pdoc_codigo, mo.mord_numeorde, mo.mord_salida, do.pven_codigo, mo.mcat_vin, mc.mcat_anomode, pc.pcol_descripcion, mc.pcat_codigo, mc.mcat_numeultikilo, pca.pcat_descripcion, m.pmar_nombre order by mo.pdoc_codigo, mo.mord_numeorde;"); DBFunctions.RequestGlobal(dsOT24, IncludeSchema.NO, dataBaseCliente, @"select mo.pdoc_codigo, mo.mord_numeorde, do.ptem_operacion, pt.ptem_descripcion from morden mo, dordenoperacion do, ptempario pt, mcatalogovehiculo mc, pcolor pc, pcatalogovehiculo pca, pmarca m where mo.pdoc_codigo = do.pdoc_codigo and mo.mord_numeorde = do.mord_numeorde and do.ptem_operacion = pt.ptem_operacion and mc.mcat_vin = mo.mcat_vin and pc.pcol_codigo = mc.pcol_codigo and pca.pcat_codigo = mc.pcat_codigo and m.pmar_codigo = pca.pmar_codigo and(mo.test_estado = 'F' or mo.test_estado = 'E') and DATE(mo.mord_salida) = DATE(current timestamp) and mo.palm_almacen = '" + arrParams[0] + @"';"); DescriptorTarea dt = new DescriptorTarea(); dt.CrearArchivoTxt24(dsOT24, arrParams); }
//Ejecutar tarea programada: OT_15M //Obtiene el estado actual de las OT no facturadas de los ultimos 15 días. Crea archivo txt y lo envia por FTP. public static void FTPEstadoActualOT(string dataBaseCliente, string parametrosFuncionTarea) { //ParametrosFuncionTarea //almacen,idArchivos,usuario,contraseña // 0 , 1 , 2 , 3 String[] arrParams = parametrosFuncionTarea.Split(','); DataSet dsOT15 = new DataSet(); DBFunctions.RequestGlobal(dsOT15, IncludeSchema.NO, dataBaseCliente, @"select pdoc_codigo concat mord_numeorde AS RO_NUMBER, mord_entrada AS OPEN_DATE, mord_salida AS CLOSE_DATE, facobra AS CUSTOMER_LABOR, sum(facrep) AS CUSTOMER_PARTS, 0 AS CUSTOMER_MISC, '' AS GOG, '' AS COMPLAINT_CODE, mord_obseclie AS COMPLAINT_DESC, pven_codigo AS ADVISOR, pven_codigo AS TECHNICIAN, mord_obserece AS COMMENTS, '' AS LABOR_HOURS, '' AS PROMISED_DATE, mnit_nit AS CUST, mnit_nombres AS FIRST_NAME, mnit_apellidos AS LAST_NAME, '' AS ADDRESS, '' AS CITY, '' AS STATE, '' AS ZIP, mnit_celular AS PHONE, mnit_email AS EMAIL, pmar_nombre AS MAKE, pcat_descripcion AS MODEL, mcat_anomode AS YEAR, mcat_vin AS VIN, mcat_numeultikilo AS MILEAGE from (select mo.pdoc_codigo, mo.mord_numeorde, mo.mord_entrada, mo.mord_salida, mo.mord_obseclie, mo.mord_obserece, mo.mnit_nit, mtr.pdoc_factura, mtr.mfac_numero, dit.facrep, dor.facobra, pv.pven_codigo, m.mnit_nombres, m.mnit_apellidos, m.mnit_telefono, m.mnit_email, p.pmar_nombre, pca.pcat_descripcion, mca.mcat_anomode, mo.mcat_vin , mca.mcat_numeultikilo from morden mo, mordentransferencia mtr, mcatalogovehiculo mca, pcatalogovehiculo pca, pmarca p, (select pdoc_codigo, dite_numedocu, sum(dite_cantidad * dite_costprom) as facrep from ditems group by pdoc_codigo, dite_numedocu) as dit, (select pdoc_codigo, mord_numeorde, sum(dord_valooper) as facobra from dordenoperacion group by pdoc_codigo, mord_numeorde) as dor, pvendedor pv, mnit m where mo.pdoc_codigo = mtr.pdoc_codigo and mo.mord_numeorde=mtr.mord_numeorde and mtr.pdoc_factura = dit.pdoc_codigo and mtr.mfac_numero=dit.dite_numedocu and mo.pdoc_codigo = dor.pdoc_codigo and mo.mord_numeorde=dor.mord_numeorde and mo.test_estado = 'A' and (DAYS(CURRENT DATE) - DAYS(mo.mord_entrada) ) <= 15 and pv.pven_codigo = (select pven_codigo as facobra from dordenoperacion where pdoc_codigo=mo.pdoc_codigo and mord_numeorde=mo.mord_numeorde fetch first row only) and m.mnit_nit=mo.mnit_nit and mca.mcat_vin = mo.mcat_vin and pca.pcat_codigo = mca.pcat_codigo and pca.pmar_codigo = p.pmar_codigo and mo.palm_almacen = '" + arrParams[0] + @"' ) as ot group by pdoc_codigo, mord_numeorde, mord_entrada, mord_salida, mord_obseclie, mord_obserece, pdoc_factura, facobra, pven_codigo, mnit_nit, mnit_nombres, mnit_apellidos, mnit_telefono, mnit_email, pmar_nombre, pcat_descripcion, mcat_anomode, mcat_vin, mcat_numeultikilo order by ro_number;"); DescriptorTarea dt = new DescriptorTarea(); dt.CrearArchivoTxt(dsOT15, arrParams); }