예제 #1
0
        public List <fa_orden_Desp_det_x_fa_pedido_det_Info> Get_List_fa_orden_Desp_det_x_fa_pedido_det_x_Producto(fa_orden_Desp_Info info)
        {
            List <fa_orden_Desp_det_x_fa_pedido_det_Info> lst = new List <fa_orden_Desp_det_x_fa_pedido_det_Info>();

            try
            {
                using (EntitiesFacturacion context = new EntitiesFacturacion())
                {
                    var contact = from q in context.fa_orden_Desp_det_x_fa_pedido_det

                                  where q.pe_IdEmpresa == info.IdEmpresa &&
                                  q.pe_IdSucursal == info.IdSucursal &&
                                  q.pe_IdBodega == info.IdBodega &&
                                  q.pe_IdPedido == info.IdPedido &&
                                  q.pe_IdProducto == info.IdProducto

                                  select q;

                    foreach (var item in contact)
                    {
                        fa_orden_Desp_det_x_fa_pedido_det_Info temp = new fa_orden_Desp_det_x_fa_pedido_det_Info();

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

                        lst.Add(temp);
                    }
                }

                return(lst);
            }
            catch (Exception ex)
            {
                string arreglo = ToString();
                tb_sis_Log_Error_Vzen_Data oDataLog      = new tb_sis_Log_Error_Vzen_Data();
                tb_sis_Log_Error_Vzen_Info Log_Error_sis = new tb_sis_Log_Error_Vzen_Info(ex.ToString(), "", arreglo, "", "", "", "", "", DateTime.Now);
                mensaje = ex.ToString();
                oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje);
                throw new Exception(ex.ToString());
            }
        }
예제 #2
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)
                      };
            }
        }