Пример #1
0
        public Boolean ModificarDB(fa_pedido_Info info, ref string msg)
        {
            try
            {
                fa_pedido_det_Data        pedido_data = new fa_pedido_det_Data();
                List <fa_pedido_det_Info> listaAux    = new List <fa_pedido_det_Info>();

                listaAux = pedido_data.Get_List_pedido_det(info.IdEmpresa, info.IdSucursal, info.IdBodega, info.IdPedido);

                #region variables List para verificar ordenes despacho
                List <fa_orden_Desp_det_x_fa_pedido_det_Info> ListaOrdenDEspachoxPedido = new List <fa_orden_Desp_det_x_fa_pedido_det_Info>();
                List <fa_orden_Desp_det_x_fa_pedido_det_Info> lstemporal = new List <fa_orden_Desp_det_x_fa_pedido_det_Info>();
                #endregion

                #region verificar ordenes de despacho para Talme

                fa_orden_Desp_det_x_fa_pedido_det_Data odata = new fa_orden_Desp_det_x_fa_pedido_det_Data();
                fa_orden_Desp_Info infoPedido = new fa_orden_Desp_Info();

                infoPedido.IdEmpresa  = info.IdEmpresa;
                infoPedido.IdBodega   = info.IdBodega;
                infoPedido.IdSucursal = info.IdSucursal;
                infoPedido.IdPedido   = info.IdPedido;

                ListaOrdenDEspachoxPedido = odata.Get_List_fa_orden_Desp_det_x_fa_pedido_det_x_Pedido(infoPedido);

                if (ListaOrdenDEspachoxPedido.Count() == 0)
                {
                    return(data.ModificarDB(info, ref msg));
                }
                else
                {
                    foreach (var itemODP in ListaOrdenDEspachoxPedido)
                    {
                        fa_orden_Desp_det_x_fa_pedido_det_Info temp = new fa_orden_Desp_det_x_fa_pedido_det_Info();

                        temp.od_cantidad        = itemODP.od_cantidad;
                        temp.od_IdBodega        = itemODP.od_IdBodega;
                        temp.od_IdEmpresa       = itemODP.od_IdEmpresa;
                        temp.od_IdOrdenDespacho = itemODP.od_IdOrdenDespacho;
                        temp.od_IdProducto      = itemODP.od_IdProducto;
                        temp.od_IdSucursal      = itemODP.od_IdSucursal;
                        temp.od_Secuencia       = itemODP.od_Secuencia;
                        temp.pe_IdBodega        = itemODP.pe_IdBodega;
                        temp.pe_IdEmpresa       = itemODP.pe_IdEmpresa;
                        temp.pe_IdPedido        = itemODP.pe_IdPedido;
                        temp.pe_IdProducto      = itemODP.pe_IdProducto;
                        temp.pe_IdSucursal      = itemODP.pe_IdSucursal;

                        temp.pe_Secuencia = itemODP.pe_Secuencia;

                        lstemporal.Add(temp);
                    }

                    #region Elimina los datos de la tabla  "fa_orden_Desp_det_x_fa_pedido_det"
                    fa_orden_Desp_det_x_fa_pedido_det_Data odata1 = new fa_orden_Desp_det_x_fa_pedido_det_Data();
                    fa_orden_Desp_Info info1 = new fa_orden_Desp_Info();

                    info1.ListaAuxiliar = ListaOrdenDEspachoxPedido;
                    odata1.EliminarDB(info1);
                    #endregion

                    #region asigno el valor de las columnas "Esta_en_Base" y "Tiene_Despacho"
                    foreach (var item1 in listaAux)
                    {
                        foreach (var item2 in info.lista_detalle)
                        {
                            if (item1.IdProducto == item2.IdProducto && item1.Secuencial == item2.Secuencial)
                            {
                                item2.Tiene_Despacho = item1.Tiene_Despacho;
                                item2.Esta_en_Base   = item1.Esta_en_Base;
                            }
                        }
                    }
                    #endregion

                    #region buscar max secuencia detalle pedido
                    fa_pedido_det_Data odatape = new fa_pedido_det_Data();
                    int SecuenciaMax           = 0;
                    SecuenciaMax = odatape.GetIdPedido(info.IdEmpresa, info.IdSucursal, info.IdBodega, info.IdPedido);
                    #endregion

                    #region asigno el nuevo secuencial al nuevo item en detalle pedido
                    foreach (var item2 in info.lista_detalle)
                    {
                        if (item2.IdProducto != 0)
                        {
                            if (item2.Esta_en_Base == "N" || item2.Esta_en_Base == null)
                            {
                                SecuenciaMax     = SecuenciaMax + 1;
                                item2.Secuencial = SecuenciaMax;
                            }
                        }
                    }
                    #endregion

                    #region Grabo el nuevo detalle pedido
                    in_producto_x_tb_bodega_Data data_producto_bodega = new in_producto_x_tb_bodega_Data();

                    (from q in listaAux select q).ToList().ForEach(q => q.dp_cantidad = q.dp_cantidad * -1);

                    data_producto_bodega.ModificarDB(listaAux);

                    foreach (var item in listaAux)
                    {
                        pedido_data.EliminarDB(item, ref msg);
                    }

                    data_producto_bodega.ModificarDB(info.lista_detalle);

                    foreach (var item in info.lista_detalle)
                    {
                        if (item.IdProducto != 0)
                        {
                            pedido_data.GrabarDB(item, ref msg);
                        }
                    }
                    msg = "Se ha procedido actualizar el registro del Pedido #: " + info.IdPedido.ToString() + " exitosamente";

                    #endregion

                    #region guardo en tabla "fa_orden_Desp_det_x_fa_pedido_det"
                    fa_orden_Desp_det_x_fa_pedido_det_Data odataOD = new fa_orden_Desp_det_x_fa_pedido_det_Data();
                    fa_orden_Desp_Info Info_OD = new fa_orden_Desp_Info();

                    foreach (var item in lstemporal)
                    {
                        fa_orden_Desp_det_Info Infotemp = new fa_orden_Desp_det_Info();

                        Infotemp.IdEmpresa       = item.pe_IdEmpresa;
                        Infotemp.IdSucursal      = item.pe_IdSucursal;
                        Infotemp.IdBodega        = item.pe_IdBodega;
                        Infotemp.IdProducto      = item.pe_IdProducto;
                        Infotemp.IdOrdenDespacho = item.od_IdOrdenDespacho;
                        Infotemp.Secuencia       = item.od_Secuencia;
                        Infotemp.SecuenciaPedido = item.pe_Secuencia;
                        Infotemp.IdPedido        = item.pe_IdPedido;
                        Infotemp.od_cantidad     = item.od_cantidad;
                        Info_OD.ListaDetalle.Add(Infotemp);
                    }

                    odataOD.GuardarDB(Info_OD);
                    #endregion
                }

                #endregion

                return(true);
            }
            catch (Exception ex)
            {
                Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message);
                throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "ModificarDB", ex.Message), ex)
                      {
                          EntityType = typeof(fa_pedido_Bus)
                      };
            }
        }
        public Boolean GuardarDB(com_solicitud_compra_Info info, ref string msg)
        {
            try
            {
                Boolean res = true;

                if (validarObjeto(info, ref msg))
                {
                    odata.GuardarDB(info);

                    #region grabar en tabla com_solicitud_compra_det_aprobacion

                    // consultar el detalle solicitud

                    com_solicitud_compra_det_Bus         bus_DetSol = new com_solicitud_compra_det_Bus();
                    List <com_solicitud_compra_det_Info> lisDetSol  = new List <com_solicitud_compra_det_Info>();
                    lisDetSol = bus_DetSol.Get_list_DetalleLstSolicitudCompra(info.IdEmpresa, info.IdSucursal, info.IdSolicitudCompra);

                    if (lisDetSol.Count() == 0)
                    {
                        res = false;
                    }

                    List <com_solicitud_compra_det_aprobacion_Info> listDetApr = new List <com_solicitud_compra_det_aprobacion_Info>();

                    List <com_solicitud_compra_det_pre_aprobacion_Info> listDetPreApr = new List <com_solicitud_compra_det_pre_aprobacion_Info>();

                    foreach (var item in lisDetSol)
                    {
                        com_solicitud_compra_det_aprobacion_Info infoDetApr = new com_solicitud_compra_det_aprobacion_Info();
                        infoDetApr.Checked           = true;
                        infoDetApr.IdEmpresa         = item.IdEmpresa;
                        infoDetApr.IdSucursal_SC     = item.IdSucursal;
                        infoDetApr.IdSolicitudCompra = item.IdSolicitudCompra;
                        infoDetApr.Secuencia_SC      = item.Secuencia;
                        infoDetApr.IdProducto_SC     = item.IdProducto;
                        infoDetApr.NomProducto_SC    = item.NomProducto;
                        infoDetApr.Cantidad_aprobada = item.do_Cantidad;

                        com_parametro_Bus  bus_param  = new com_parametro_Bus();
                        com_parametro_Info info_param = new com_parametro_Info();
                        info_param = bus_param.Get_Info_parametro(item.IdEmpresa);

                        infoDetApr.IdEstadoAprobacion = info_param.IdEstadoAprobacion_SolCompra;

                        infoDetApr.IdProveedor_SC      = null;
                        infoDetApr.IdUsuarioAprueba    = param.IdUsuario;
                        infoDetApr.FechaHoraAprobacion = param.Fecha_Transac;
                        infoDetApr.do_observacion      = "";

                        listDetApr.Add(infoDetApr);


                        //preaprobacion

                        com_solicitud_compra_det_pre_aprobacion_Info infoDetPreApr = new com_solicitud_compra_det_pre_aprobacion_Info();
                        infoDetPreApr.IdEmpresa           = item.IdEmpresa;
                        infoDetPreApr.IdSucursal_SC       = item.IdSucursal;
                        infoDetPreApr.IdSolicitudCompra   = item.IdSolicitudCompra;
                        infoDetPreApr.Secuencia_SC        = item.Secuencia;
                        infoDetPreApr.IdEstadoAprobacion  = info_param.IdEstadoAprobacion_SolCompra;
                        infoDetPreApr.IdUsuarioAprueba    = param.IdUsuario;
                        infoDetPreApr.FechaHoraAprobacion = DateTime.Now;
                        infoDetPreApr.observacion         = "**Pendiente**";

                        listDetPreApr.Add(infoDetPreApr);
                    }

                    com_solicitud_compra_det_aprobacion_Bus Bus_DetAproba = new com_solicitud_compra_det_aprobacion_Bus();
                    string validaMotivo = "";
                    if (Bus_DetAproba.Validar_objeto_AprobSolComp(listDetApr, validaMotivo, ref msg))
                    {
                        com_solicitud_compra_det_aprobacion_Data odataDetApr = new com_solicitud_compra_det_aprobacion_Data();
                        odataDetApr.GuardarDB(listDetApr);


                        com_solicitud_compra_det_pre_aprobacion_Data odataDetPreApr = new com_solicitud_compra_det_pre_aprobacion_Data();
                        odataDetPreApr.GuardarDB(listDetPreApr);
                    }

                    #endregion

                    #region grabar en tabla in_producto_x_tb_bodega

                    // 1. obtener el detalle solicitud compra

                    com_solicitud_compra_det_Bus         bus_DetSoli = new com_solicitud_compra_det_Bus();
                    List <com_solicitud_compra_det_Info> listDetSoli = new List <com_solicitud_compra_det_Info>();
                    listDetSoli = bus_DetSoli.Get_list_DetalleLstSolicitudCompra(info.IdEmpresa, info.IdSucursal, info.IdSolicitudCompra);

                    // 2. recorro el detalle solicitud
                    foreach (var item in lisDetSol)
                    {
                        in_producto_x_tb_bodega_Data DataInserte = new in_producto_x_tb_bodega_Data();

                        // 3. Obtengo bodega Sucursal

                        int IdBodega = 0;

                        tb_Bodega_Bus         bus_Bodega = new tb_Bodega_Bus();
                        List <tb_Bodega_Info> listBod    = new List <tb_Bodega_Info>();
                        listBod = bus_Bodega.Get_List_Bodega(item.IdEmpresa, item.IdSucursal);

                        if (listBod.Count() == 0)
                        {
                            // crear bodega Sucursal
                            tb_Bodega_Info infoBodega = new tb_Bodega_Info();
                            infoBodega.IdEmpresa      = item.IdEmpresa;
                            infoBodega.IdSucursal     = item.IdSucursal;
                            infoBodega.bo_Descripcion = "Bodega Principal";
                            infoBodega.Fecha_Transac  = param.Fecha_Transac;


                            int    id   = 0;
                            string msg1 = "";
                            bus_Bodega.GrabarDB(infoBodega, ref id, ref msg1);
                            IdBodega = id;
                        }
                        else
                        {
                            tb_Bodega_Info infoBod = listBod.FirstOrDefault();
                            IdBodega = infoBod.IdBodega;
                        }

                        //// 4. Verifico producto (in_producto_x_tb_bodega)
                        //if (!DataInserte.VerificarExisteProductoXSucursalXBodega(item.IdEmpresa, item.IdSucursal, IdBodega, Convert.ToDecimal(item.IdProducto)))
                        //{
                        //    // 5. Obtengo producto (in_Producto)
                        //    in_Producto_data odataP = new in_Producto_data();
                        //    in_Producto_Info infoPro = new in_Producto_Info();
                        //    infoPro = odataP.BuscarProducto(Convert.ToDecimal(item.IdProducto), item.IdEmpresa);

                        //    in_producto_x_tb_bodega_Info infoProxBod = new in_producto_x_tb_bodega_Info();

                        //    infoProxBod.IdEmpresa = item.IdEmpresa;
                        //    infoProxBod.IdSucursal = item.IdSucursal;
                        //    infoProxBod.IdBodega = IdBodega;
                        //    infoProxBod.IdProducto = Convert.ToDecimal(item.IdProducto);
                        //    infoProxBod.pr_precio_publico = infoPro.pr_precio_publico;
                        //    infoProxBod.pr_precio_mayor = infoPro.pr_precio_mayor;
                        //    infoProxBod.pr_precio_puerta = 0;
                        //    infoProxBod.pr_precio_minimo = infoPro.pr_precio_minimo;
                        //    infoProxBod.pr_Por_descuento = infoPro.Porc_Descuento;
                        //    infoProxBod.pr_stock = infoPro.pr_stock;
                        //    infoProxBod.pr_stock_maximo = infoPro.pr_stock_maximo;
                        //    infoProxBod.pr_stock_minimo = infoPro.pr_stock_minimo;
                        //    infoProxBod.pr_costo_fob = infoPro.pr_costo_fob;
                        //    infoProxBod.pr_costo_CIF = infoPro.pr_costo_CIF;
                        //    infoProxBod.pr_costo_promedio = infoPro.pr_costo_promedio;

                        //    // 5. Inserto (in_producto_x_tb_bodega)
                        //    string mensajea = "";
                        //    DataInserte.GrabaDBUnItem(infoProxBod, info.IdEmpresa, ref mensajea);
                        //}
                        //else
                        //{

                        //}
                    }
                    #endregion
                }
                else
                {
                    res = false;
                }

                return(res);
            }
            catch (Exception ex)
            {
                Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message);
                throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "GuardarDB", ex.Message), ex)
                      {
                          EntityType = typeof(com_solicitud_compra_Bus)
                      };
            }
        }