예제 #1
0
 public void finishProcessByError(BIANCHI_PROCESS process, String error, String interfaz)
 {
     Console.WriteLine("Se produjo el siguiente error: " + error);
     process.fin         = DateTime.Now;
     process.cant_lineas = 0;
     process.estado      = Constants.ESTADO_ERROR;
     Console.WriteLine("Actualizamos con estado: " + Constants.ESTADO_ERROR + ", la row de bianchi_process");
     Update(process);
     Console.WriteLine("Desbloqueamos la row de bianchi_process");
     UnlockRow();
     Console.WriteLine("Finalizamos la ejecucion de la interface: " + interfaz);
 }
예제 #2
0
        public BIANCHI_PROCESS GetProcessInit(DateTime?fechaUltima, String interfaceName)
        {
            BIANCHI_PROCESS obj = new BIANCHI_PROCESS();

            obj.inicio       = DateTime.Now;
            obj.maquina      = Environment.MachineName;
            obj.process_id   = Process.GetCurrentProcess().Id;
            obj.fecha_ultima = fechaUltima;
            obj.interfaz     = interfaceName;

            return(obj);
        }
        public bool Process(DateTime?dateTime)
        {
            Console.WriteLine("Comienzo del proceso para la interfaz " + INTERFACE);

            BIANCHI_PROCESS process = service.FindByName(INTERFACE);

            if (process == null)
            {
                Console.WriteLine("No hay configuracion en BIANCHI_PROCESS para la interface: " + INTERFACE);
                Console.WriteLine("Finalizamos la ejecucion de la interface: " + INTERFACE);
                return(false);
            }

            /* Inicializamos los datos del proceso */
            Console.WriteLine("Inicializando los datos del proceso");
            process.inicio     = DateTime.Now;
            process.maquina    = Environment.MachineName;
            process.process_id = System.Diagnostics.Process.GetCurrentProcess().Id;
            Console.WriteLine("Inicio: " + process.inicio);
            Console.WriteLine("Maquina: " + process.maquina);
            Console.WriteLine("Process_id: " + process.process_id);

            /* Bloquea la row, para que no pueda ser actualizada por otra ejecucion de la misma interface */
            Console.WriteLine("Si hay otro proceso ejecutandose para la interface " + INTERFACE + " esperamos a que termine");
            Console.WriteLine("Bloqueando la row de BIANCHI_PROCESS, para la interfaz " + INTERFACE);
            service.LockRow(process.id);

            /* Obtenemos la fecha */
            if (Utils.IsInvalidateDates(dateTime, process.fecha_ultima))
            {
                service.UnlockRow();
                return(false);
            }
            DateTime lastTime = Utils.GetDateToProcess(dateTime, process.fecha_ultima);

            /* Convierto DateTime a String */
            String lastStringTime = Utils.ConvertDateTimeInString(lastTime);

            /* Cargamos archivo con parametros propios para cada interface */
            Console.WriteLine("Cargamos archivo de configuracion");
            if (!FilePropertyUtils.Instance.ReadFile(Constants.PROPERTY_FILE_NAME))
            {
                service.finishProcessByError(process, Constants.FAILED_LOAD_FILE, INTERFACE);
                return(false);
            }

            /* Obtenemos las keys de las URLs del archivo externo */
            String[] URLkeys = FilePropertyUtils.Instance.GetKeysArrayString(INTERFACE + "." + Constants.URLS);

            /* Preparamos la URL con sus parametros y llamamos al servicio */
            String urlPath = String.Empty;
            String user    = FilePropertyUtils.Instance.GetValueString(Constants.BASIC_AUTH, Constants.USER);
            String pass    = FilePropertyUtils.Instance.GetValueString(Constants.BASIC_AUTH, Constants.PASS);

            Console.WriteLine("Usuario del Servicio Rest: " + user);

            /* Obtenemos las URLs, las armamos con sus parametros, obtenemos los datos y armamos los objetos Clientes */
            Dictionary <String, tblSubCliente> diccionary = new Dictionary <string, tblSubCliente>();

            foreach (String key in URLkeys)
            {
                // Obtenemos las URLs
                String url = FilePropertyUtils.Instance.GetValueString(INTERFACE + "." + Constants.URLS, key);
                // Armamos la URL
                urlPath = clientesUtils.BuildUrl(url, key, lastStringTime);
                Console.WriteLine("Url: " + urlPath);
                // Obtenemos los datos
                String myJsonString = Utils.SendRequest(urlPath, user, pass);
                // Armamos los objetos Clientes
                if (!String.Empty.Equals(myJsonString))
                {
                    clientesUtils.MappingCliente(myJsonString, key, diccionary);
                }
                else
                {
                    Console.WriteLine("Fallo el llamado al Rest Service");
                    Console.WriteLine("Finalizamos la ejecucion de la interface: " + INTERFACE);
                    service.UnlockRow();
                    return(false);
                }
            }

            // LLamando al SP por cada cliente
            int?tipoProceso = FilePropertyUtils.Instance.GetValueInt(INTERFACE, Constants.NUMERO_INTERFACE);

            int?tipoMensaje   = 0;
            int codigoCliente = FilePropertyUtils.Instance.GetValueInt(INTERFACE, Constants.NUMERO_CLIENTE);
            int count         = 0;
            int countError    = 0;

            Console.WriteLine("Codigo de interface: " + tipoProceso);
            Console.WriteLine("Llamando al SP por cada cliente");
            foreach (KeyValuePair <string, tblSubCliente> entry in diccionary)
            {
                Console.WriteLine("Procesando cliente: " + entry.Value.subc_codigoCliente);
                int sub_proc_id = serviceCliente.CallProcedure(tipoProceso, tipoMensaje);
                entry.Value.subc_proc_id    = sub_proc_id;
                entry.Value.subc_codigo     = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.NUMERO_CLIENTE);
                entry.Value.subc_areaMuelle = String.Empty;
                entry.Value.subc_telefono   = String.Empty;

                try
                {
                    serviceCliente.Save(entry.Value);
                }
                catch (DbEntityValidationException ex)
                {
                    Console.Error.WriteLine("Error al agregar cliente: " + entry.Value.subc_codigoCliente);
                    foreach (var errors in ex.EntityValidationErrors)
                    {
                        foreach (var validationError in errors.ValidationErrors)
                        {
                            string errorMessage = validationError.ErrorMessage;
                            Console.Error.WriteLine(errorMessage);
                        }
                    }
                    countError++;
                } catch (Exception ex) {
                    Console.Error.WriteLine("Error desconocido al agregar cliente: " + entry.Value.subc_codigoCliente);
                    Console.Error.WriteLine(ex.Message);
                    countError++;
                }
                count++;
            }

            Console.WriteLine("Finalizó el proceso de actualización de clientes");
            Console.WriteLine(countError + " Clientes no pudieron ser procesados");

            /* Agregamos datos faltantes de la tabla de procesos */
            Console.WriteLine("Preparamos la actualizamos de BIANCHI_PROCESS");
            process.fin          = DateTime.Now;
            process.fecha_ultima = DateTime.Now;
            process.cant_lineas  = count;
            process.estado       = Constants.ESTADO_OK;
            Console.WriteLine("Fecha_fin: " + process.fin);
            Console.WriteLine("Cantidad de clientes procesados: " + process.cant_lineas);
            Console.WriteLine("Estado: " + process.estado);

            /* Actualizamos la tabla BIANCHI_PROCESS */
            Console.WriteLine("Actualizamos BIANCHI_PROCESS");
            service.Update(process);

            /* Liberamos la row, para que la tome otra interface */
            Console.WriteLine("Se libera la row de BIANCHI_PROCESS");
            service.UnlockRow();

            Console.WriteLine("Fin del proceso, para la interfaz " + INTERFACE);
            Console.WriteLine("Proceso Finalizado correctamente");

            return(true);
        }
예제 #4
0
        public bool Process(DateTime?dateTime)
        {
            Console.WriteLine("Comienzo del proceso para la interfaz " + INTERFACE);

            BIANCHI_PROCESS process = service.FindByName(INTERFACE);

            if (process == null)
            {
                Console.WriteLine("No hay configuracion en BIANCHI_PROCESS para la interface: " + INTERFACE);
                Console.WriteLine("Finalizamos la ejecucion de la interface: " + INTERFACE);
                return(false);
            }

            /* Inicializamos los datos del proceso */
            Console.WriteLine("Inicializando los datos del proceso");
            process.inicio     = DateTime.Now;
            process.maquina    = Environment.MachineName;
            process.process_id = System.Diagnostics.Process.GetCurrentProcess().Id;
            Console.WriteLine("Inicio: " + process.inicio);
            Console.WriteLine("Maquina: " + process.maquina);
            Console.WriteLine("Process_id: " + process.process_id);

            /* Bloquea la row, para que no pueda ser actualizada por otra ejecucion de la misma interface */
            Console.WriteLine("Si hay otro proceso ejecutandose para la interface " + INTERFACE + " esperamos a que termine");
            Console.WriteLine("Bloqueando la row de BIANCHI_PROCESS, para la interfaz " + INTERFACE);
            if (!service.LockRow(process.id))
            {
                Console.WriteLine("No se pudo lockear la row para la interface " + INTERFACE + " se cancela la ejecucion");
                return(false);
            }

            /* Cargamos archivo con parametros propios para cada interface */
            Console.WriteLine("Cargamos archivo de configuracion");
            if (!FilePropertyUtils.Instance.ReadFile(Constants.PROPERTY_FILE_NAME))
            {
                service.finishProcessByError(process, Constants.FAILED_LOAD_FILE, INTERFACE);
                return(false);
            }

            // INICIO BUSQUEDA DE DATOS
            String emplazamiento = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.EMPLAZAMIENTO);
            String orderCompany  = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.ORDER_COMPANY);
            String lastStatus    = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.INTERFACE_INFORME_PEDIDO_LAST_STATUS);
            String nextStatus    = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.INTERFACE_INFORME_PEDIDO_NEXT_STATUS);
            String version       = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.INTERFACE_INFORME_PEDIDO_P554211I_VERSION);
            int    tipoProceso   = FilePropertyUtils.Instance.GetValueInt(INTERFACE, Constants.TIPO_PROCESO);

            var almacenes = FilePropertyUtils.Instance.GetValueArrayString(INTERFACE + "." + Constants.ALMACEN);
            var tipos     = FilePropertyUtils.Instance.GetValueArrayString(INTERFACE + "." + Constants.TIPO);

            List <tblInformePedido>  informes = serviceInformePedido.FindInformes(emplazamiento, almacenes, tipos, tipoProceso);
            List <InformePedidoJson> jsonList = null;

            /* Obtenemos usuario y contraseña del archivo para el servicio Rest */
            String urlPath = String.Empty;
            String user    = FilePropertyUtils.Instance.GetValueString(Constants.BASIC_AUTH, Constants.USER);
            String pass    = FilePropertyUtils.Instance.GetValueString(Constants.BASIC_AUTH, Constants.PASS);

            Console.WriteLine("Usuario del Servicio Rest: " + user);

            /* Obtenemos la URL del archivo */
            String url = FilePropertyUtils.Instance.GetValueString(INTERFACE + "." + Constants.URLS, Constants.INTERFACE_ANULACION_REMITO_URL);

            int     count      = 0;
            int     countError = 0;
            Boolean callArchivar;

            foreach (tblInformePedido informe in informes)
            {
                callArchivar = true;
                String orderType = FilePropertyUtils.Instance.GetValueString(INTERFACE + "." + Constants.INTERFACE_PEDIDOS_LETRA, informe.ipec_letra);
                jsonList = informePedidoUtils.MappingInforme(informe, orderCompany, orderType, lastStatus, nextStatus, version);

                if (jsonList.Any())
                {
                    Console.WriteLine("Se llevara a cabo el envio al servicio REST de los detalles de la cabecera: " + informe.ipec_proc_id);
                    foreach (InformePedidoJson json in jsonList)
                    {
                        var jsonString = informePedidoUtils.JsonToString(json);
                        Console.WriteLine("Se enviara el siguiente Json al servicio REST: ");
                        Console.WriteLine(jsonString);
                        /* Send request */
                        if (!(informePedidoUtils.SendRequestPost(url, user, pass, jsonString)))
                        {
                            Console.WriteLine("Se llamara al procedure para informar el error");
                            serviceInformePedido.CallProcedureInformarEjecucion(informe.ipec_proc_id, InformePedidoUtils.LAST_ERROR, new ObjectParameter("error", typeof(String)));
                            callArchivar = false;
                            countError++;
                        }
                        else
                        {
                            Console.WriteLine("El servicio REST retorno OK:");
                            Console.WriteLine(jsonString);
                            count++;
                        }
                    }

                    if (callArchivar)
                    {
                        Console.WriteLine("Se llamara al procedure para archivar el informe");
                        serviceInformePedido.CallProcedureArchivarInformePedido(informe.ipec_proc_id, new ObjectParameter("error", typeof(String)));
                    }
                }
                else
                {
                    Console.WriteLine("No se encontraron detalles para la cabecera: " + informe.ipec_proc_id);
                }
            }

            Console.WriteLine("Finalizó el proceso de envio de anulaciones");

            /* Agregamos datos faltantes de la tabla de procesos */
            Console.WriteLine("Preparamos los datos a actualizar en BIANCHI_PROCESS");
            process.fin          = DateTime.Now;
            process.fecha_ultima = DateTime.Now;
            process.cant_lineas  = count;
            process.estado       = Constants.ESTADO_OK;
            Console.WriteLine("Fecha_fin: " + process.fin);
            Console.WriteLine("Cantidad de Recepciones procesadas OK: " + process.cant_lineas);
            Console.WriteLine("Cantidad de Recepciones procesadas con ERROR: " + countError);
            Console.WriteLine("Estado: " + process.estado);

            /* Actualizamos la tabla BIANCHI_PROCESS */
            Console.WriteLine("Actualizamos BIANCHI_PROCESS");
            service.Update(process);

            /* Liberamos la row, para que la tome otra interface */
            Console.WriteLine("Se libera la row de BIANCHI_PROCESS");
            service.UnlockRow();

            Console.WriteLine("Fin del proceso, para la interfaz " + INTERFACE);
            Console.WriteLine("Proceso Finalizado correctamente");

            return(true);
        }
예제 #5
0
        public bool Process(DateTime?dateTime)
        {
            Console.WriteLine("Comienzo del proceso para la interfaz " + INTERFACE);

            BIANCHI_PROCESS process = service.FindByName(INTERFACE);

            if (process == null)
            {
                Console.WriteLine("No hay configuracion en BIANCHI_PROCESS para la interface: " + INTERFACE);
                Console.WriteLine("Finalizamos la ejecucion de la interface: " + INTERFACE);
                return(false);
            }

            /* Inicializamos los datos del proceso */
            Console.WriteLine("Inicializando los datos del proceso");
            process.inicio     = DateTime.Now;
            process.maquina    = Environment.MachineName;
            process.process_id = System.Diagnostics.Process.GetCurrentProcess().Id;
            Console.WriteLine("Inicio: " + process.inicio);
            Console.WriteLine("Maquina: " + process.maquina);
            Console.WriteLine("Process_id: " + process.process_id);

            /* Bloquea la row, para que no pueda ser actualizada por otra ejecucion de la misma interface */
            Console.WriteLine("Si hay otro proceso ejecutandose para la interface " + INTERFACE + " esperamos a que termine");
            Console.WriteLine("Bloqueando la row de BIANCHI_PROCESS, para la interfaz " + INTERFACE);
            if (!service.LockRow(process.id))
            {
                Console.WriteLine("No se pudo lockear la row para la interface " + INTERFACE + " se cancela la ejecucion");
                return(false);
            }

            /* Obtenemos la fecha */
            if (Utils.IsInvalidateDates(dateTime, process.fecha_ultima))
            {
                service.finishProcessByError(process, Constants.FAILED_LOAD_DATES, INTERFACE);
                return(false);
            }
            DateTime lastTime = Utils.GetDateToProcess(dateTime, process.fecha_ultima);

            /* Convierto DateTime a String formato YYYYMMDD */
            String lastStringTime = lastStringTime = Utils.ConvertDateTimeInString(lastTime);

            /* Cargamos archivo con parametros propios para cada interface */
            Console.WriteLine("Cargamos archivo de configuracion");
            if (!FilePropertyUtils.Instance.ReadFile(Constants.PROPERTY_FILE_NAME))
            {
                service.finishProcessByError(process, Constants.FAILED_LOAD_FILE, INTERFACE);
                return(false);
            }

            /* Obtenemos usuario y contraseña del archivo para el servicio Rest */
            String urlPath = String.Empty;
            String user    = FilePropertyUtils.Instance.GetValueString(Constants.BASIC_AUTH, Constants.USER);
            String pass    = FilePropertyUtils.Instance.GetValueString(Constants.BASIC_AUTH, Constants.PASS);

            Console.WriteLine("Usuario del Servicio Rest: " + user);

            /* Obtenemos la URL del archivo */
            String url = FilePropertyUtils.Instance.GetValueString(INTERFACE + "." + Constants.URLS, Constants.ITEMS_URL);

            /* Armamos la URL con parametros */
            Dictionary <String, String> URLdictionary = new Dictionary <string, string>();

            URLdictionary.Add(Constants.PARAM_FECHA, lastStringTime);
            urlPath = Utils.BuildUrl(url, URLdictionary);

            Console.WriteLine("URL: " + urlPath);

            /* Obtenemos los datos */
            String myJsonString = Utils.SendRequest(urlPath, user, pass);

            /* Mapping */
            List <ItemDTO> itemDTO = null;
            Dictionary <String, tblProducto> dictionary = new Dictionary <string, tblProducto>();

            if (!String.Empty.Equals(myJsonString))
            {
                itemDTO = itemUtils.MappingJsonRecepcion(myJsonString);
                if (itemDTO.Any())
                {
                    itemUtils.MappingReceptionDTORecepcion(itemDTO, dictionary);
                }
                else
                {
                    service.finishProcessByError(process, Constants.NOT_DATA_FOUND, INTERFACE);
                    return(false);
                }
            }
            else
            {
                service.finishProcessByError(process, Constants.FAILED_CALL_REST, INTERFACE);
                return(false);
            }

            int count               = 0;
            int countError          = 0;
            int countAlreadyProcess = 0;
            int?tipoMensaje         = 0;
            int tipoProceso         = FilePropertyUtils.Instance.GetValueInt(INTERFACE, Constants.NUMERO_INTERFACE);
            int codigoCliente       = FilePropertyUtils.Instance.GetValueInt(INTERFACE, Constants.NUMERO_CLIENTE);

            Console.WriteLine("Codigo de interface: " + tipoProceso);

            // Validamos si hay que insertar o descartar la recepcion
            foreach (KeyValuePair <string, tblProducto> entry in dictionary)
            {
                // LLamo al SP y seteo su valor a la cabecera y sus detalles
                int prod_proc_id = serviceProducto.CallProcedure(tipoProceso, tipoMensaje);
                entry.Value.prod_proc_id = prod_proc_id;

                Console.WriteLine("Procesando ITEM: " + entry.Value.prod_codigo);
                if (serviceProducto.Save(entry.Value))
                {
                    count++;
                }
                else
                {
                    countError++;
                }
            }

            Console.WriteLine("Finalizó el proceso de actualización de Recepciones");

            /* Agregamos datos faltantes de la tabla de procesos */
            Console.WriteLine("Preparamos los datos a actualizar en BIANCHI_PROCESS");
            process.fin          = DateTime.Now;
            process.fecha_ultima = DateTime.Now;
            process.cant_lineas  = count;
            process.estado       = Constants.ESTADO_OK;
            Console.WriteLine("Fecha_fin: " + process.fin);
            Console.WriteLine("Cantidad de Recepciones procesadas OK: " + process.cant_lineas);
            Console.WriteLine("Cantidad de Recepciones procesadas con ERROR: " + countError);
            Console.WriteLine("Cantidad de Recepciones evitadas: " + countAlreadyProcess);
            Console.WriteLine("Estado: " + process.estado);

            /* Actualizamos la tabla BIANCHI_PROCESS */
            Console.WriteLine("Actualizamos BIANCHI_PROCESS");
            service.Update(process);

            /* Liberamos la row, para que la tome otra interface */
            Console.WriteLine("Se libera la row de BIANCHI_PROCESS");
            service.UnlockRow();

            Console.WriteLine("Fin del proceso, para la interfaz " + INTERFACE);
            Console.WriteLine("Proceso Finalizado correctamente");

            return(true);
        }
        public bool Process(DateTime?dateTime)
        {
            Console.WriteLine("Comienzo del proceso para la interfaz " + INTERFACE);

            BIANCHI_PROCESS process = service.FindByName(INTERFACE);

            if (process == null)
            {
                Console.WriteLine("No hay configuracion en BIANCHI_PROCESS para la interface: " + INTERFACE);
                Console.WriteLine("Finalizamos la ejecucion de la interface: " + INTERFACE);
                return(false);
            }

            /* Inicializamos los datos del proceso */
            Console.WriteLine("Inicializando los datos del proceso");
            process.inicio     = DateTime.Now;
            process.maquina    = Environment.MachineName;
            process.process_id = System.Diagnostics.Process.GetCurrentProcess().Id;
            Console.WriteLine("Inicio: " + process.inicio);
            Console.WriteLine("Maquina: " + process.maquina);
            Console.WriteLine("Process_id: " + process.process_id);

            /* Bloquea la row, para que no pueda ser actualizada por otra ejecucion de la misma interface */
            Console.WriteLine("Si hay otro proceso ejecutandose para la interface " + INTERFACE + " esperamos a que termine");
            Console.WriteLine("Bloqueando la row de BIANCHI_PROCESS, para la interfaz " + INTERFACE);
            if (!service.LockRow(process.id))
            {
                Console.WriteLine("No se pudo lockear la row para la interface " + INTERFACE + " se cancela la ejecucion");
                return(false);
            }

            /* Cargamos archivo con parametros propios para cada interface */
            Console.WriteLine("Cargamos archivo de configuracion");
            if (!FilePropertyUtils.Instance.ReadFile(Constants.PROPERTY_FILE_NAME))
            {
                service.finishProcessByError(process, Constants.FAILED_LOAD_FILE, INTERFACE);
                return(false);
            }

            // INICIO BUSQUEDA DE DATOS
            String numeroInterfaz = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.NUMERO_INTERFACE);
            String emplazamiento  = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.EMPLAZAMIENTO);
            String cliente        = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.INTERFACE_CLIENTE);
            String fromStatus     = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.INTERFACE_PEDIDOS_FROM_STATUS);
            String toStatus       = FilePropertyUtils.Instance.GetValueString(INTERFACE, Constants.INTERFACE_PEDIDOS_TO_STATUS);

            /* Obtenemos usuario y contraseña del archivo para el servicio Rest */
            String urlPath = String.Empty;
            String user    = FilePropertyUtils.Instance.GetValueString(Constants.BASIC_AUTH, Constants.USER);
            String pass    = FilePropertyUtils.Instance.GetValueString(Constants.BASIC_AUTH, Constants.PASS);

            Console.WriteLine("Usuario del Servicio Rest: " + user);

            /* Obtenemos la URL del archivo */
            String urlPost = FilePropertyUtils.Instance.GetValueString(INTERFACE + "." + Constants.URLS, Constants.INTERFACE_PEDIDOS_URL_POST);

            /* Obtenemos los tipos de pedidos del archivo externo para llamar a la URL segun tipo */
            String[] tiposPedido = FilePropertyUtils.Instance.GetKeysArrayString(INTERFACE + "." + Constants.INTERFACE_PEDIDOS_TIPO_PEDIDO);

            int countOKPedido             = 0;
            int countErrorPedido          = 0;
            int countAlreadyProcessPedido = 0;
            int?tipoMensaje   = 0;
            int tipoProceso   = FilePropertyUtils.Instance.GetValueInt(INTERFACE, Constants.TIPO_PROCESO);
            int codigoCliente = FilePropertyUtils.Instance.GetValueInt(INTERFACE, Constants.NUMERO_CLIENTE);

            Console.WriteLine("Codigo de interface: " + tipoProceso);

            /* Mapping */
            List <PedidoDTO> pedidosDTO = null;
            Dictionary <string, tblPedido> dictionary = new Dictionary <string, tblPedido>();

            /* Armamos la URL con parametros */
            PedidoJson json       = pedidoUtils.getJson(fromStatus, toStatus, tiposPedido);
            var        jsonString = pedidoUtils.JsonToString(json);

            Console.WriteLine("Se enviara el siguiente Json al servicio REST: ");
            Console.WriteLine(jsonString);
            Console.WriteLine("Se realiza el envio al servicio REST : " + urlPost);
            pedidosDTO = pedidoUtils.SendRequestPost(urlPost, user, pass, jsonString);
            if (pedidosDTO.Any())
            {
                pedidoUtils.MappingPedidoDTOPedido(pedidosDTO, dictionary, emplazamiento, cliente);
                // Validamos si hay que insertar o descartar el pedido
                foreach (KeyValuePair <string, tblPedido> entry in dictionary)
                {
                    if (servicePedido.IsAlreadyProcess(entry.Value.pedc_almacen, entry.Value.pedc_tped_codigo, entry.Value.pedc_letra, entry.Value.pedc_sucursal, entry.Value.pedc_numero))
                    {
                        Console.WriteLine("El pedido " + entry.Value.pedc_numero + " ya fue tratado, no se procesara");
                        countAlreadyProcessPedido++;
                    }
                    // No está procesada! la voy a guardar
                    else
                    {
                        // LLamo al SP y seteo su valor a la cabecera y sus detalles
                        int recc_proc_id = servicePedido.CallProcedure(tipoProceso, tipoMensaje);
                        entry.Value.pedc_proc_id = recc_proc_id;
                        foreach (tblPedidoDetalle detalle in entry.Value.tblPedidoDetalle)
                        {
                            detalle.pedd_proc_id = recc_proc_id;
                        }

                        Console.WriteLine("Procesando pedido: " + entry.Value.pedc_numero);
                        if (servicePedido.Save(entry.Value))
                        {
                            countOKPedido++;
                        }
                        else
                        {
                            countErrorPedido++;
                        }
                    }
                }
            }
            else
            {
                Console.WriteLine(Constants.FAILED_GETTING_DATA);
            }

            Console.WriteLine("Finalizó el proceso de actualización de Pedidos");

            /* Agregamos datos faltantes de la tabla de procesos */
            Console.WriteLine("Preparamos los datos a actualizar en BIANCHI_PROCESS");
            process.fin          = DateTime.Now;
            process.fecha_ultima = process.inicio;
            process.cant_lineas  = countOKPedido;
            process.estado       = Constants.ESTADO_OK;
            Console.WriteLine("Fecha_fin: " + process.fin);
            Console.WriteLine("Cantidad de pedidos procesados OK: " + process.cant_lineas);
            Console.WriteLine("Cantidad de pedidos procesados con ERROR: " + countErrorPedido);
            Console.WriteLine("Cantidad de pedidos evitados: " + countAlreadyProcessPedido);
            Console.WriteLine("Estado: " + process.estado);

            /* Actualizamos la tabla BIANCHI_PROCESS */
            Console.WriteLine("Actualizamos BIANCHI_PROCESS");
            service.Update(process);

            /* Liberamos la row, para que la tome otra interface */
            Console.WriteLine("Se libera la row de BIANCHI_PROCESS");
            service.UnlockRow();

            Console.WriteLine("Fin del proceso, para la interfaz " + INTERFACE);
            Console.WriteLine("Proceso Finalizado correctamente");

            return(true);
        }
예제 #7
0
 public void Update(BIANCHI_PROCESS obj)
 {
     dao.Update(obj);
 }
예제 #8
0
 public void Save(BIANCHI_PROCESS obj)
 {
     dao.Save(obj);
 }