예제 #1
0
        public void Pedido_Registrar(int idEmpresa, int codigoUsuario, PedidoCabBE objPedidoCabBE, List <PedidoDetBE> lstProductos,
                                     List <GlosaBE> lstImpuestos, decimal?idOperacion, string password, decimal limiteCredito)
        {
            ////using (dmIntranetDataContext dci = new dmIntranetDataContext(ConfigurationManager.ConnectionStrings["genesys"].ConnectionString))
            using (dmIntranetDataContext dci = new dmIntranetDataContext(GS.configuration.Init.GetValue(Constant.sistema, Constant.key, "genesys")))
            {
                ////dmGenesysDataContext dcg = new dmGenesysDataContext(string.Format(ConfigurationManager.ConnectionStrings[dci.Empresa.SingleOrDefault(x => x.idEmpresa == idEmpresa).baseDatos].ConnectionString, "usrGEN" + (10000 + codigoUsuario).ToString().Substring(1, 4)));
                dmGenesysDataContext dcg = new dmGenesysDataContext(string.Format(GS.configuration.Init.GetValue(Constant.sistema, Constant.key, dci.Empresa.SingleOrDefault(x => x.idEmpresa == idEmpresa).baseDatos), "usrGEN" + (10000 + codigoUsuario).ToString().Substring(1, 4)));
                try
                {
                    //Desaorueba para que se pueda editar
                    if (idOperacion != null && dcg.OV.ToList().Find(x => x.Op == idOperacion).Aprobacion1&& objPedidoCabBE.IdPago != 2 && limiteCredito >= objPedidoCabBE.Total)
                    {
                        dcg.VBG01076("OV", idOperacion, codigoUsuario, "1");
                    }

                    dcg.VBG00522(ref idOperacion, objPedidoCabBE.IdAgenda, objPedidoCabBE.NroRegistro, objPedidoCabBE.FechaOrden, objPedidoCabBE.FechaDespacho,
                                 objPedidoCabBE.FechaEntrega, objPedidoCabBE.FechaVigencia, objPedidoCabBE.Fecha, objPedidoCabBE.FechaVencimiento, objPedidoCabBE.IdEnvio,
                                 objPedidoCabBE.IdAgenciaAnexoReferencia, objPedidoCabBE.IdVendedor, objPedidoCabBE.IdMoneda, objPedidoCabBE.Neto, objPedidoCabBE.Descuento,
                                 objPedidoCabBE.Subtotal, objPedidoCabBE.Impuestos, objPedidoCabBE.Total, objPedidoCabBE.Observaciones, objPedidoCabBE.Prioridad,
                                 objPedidoCabBE.EntregaParcial, objPedidoCabBE.Estado, objPedidoCabBE.IdPago, objPedidoCabBE.IdAgenciaAnexo, objPedidoCabBE.TEA,
                                 objPedidoCabBE.IdAgenciaDireccion1, objPedidoCabBE.IdAgenciaDireccion2, objPedidoCabBE.ModoPago, objPedidoCabBE.NotasDespacho, objPedidoCabBE.IdCondicionCredito,
                                 objPedidoCabBE.NroOrdenCliente, objPedidoCabBE.IdNaturalezaGasto, objPedidoCabBE.IdAgendaOrigen, objPedidoCabBE.IdSucursalOrigen,
                                 objPedidoCabBE.IdReferenciaOrigen, objPedidoCabBE.IdDireccionOrigen, objPedidoCabBE.IdAgendaDestino, objPedidoCabBE.IdSucursalDestino,
                                 objPedidoCabBE.IdReferenciaDestino, objPedidoCabBE.IdDireccionDestino, objPedidoCabBE.IdTipoDespacho, objPedidoCabBE.IdTipoPedido,
                                 objPedidoCabBE.IdDocumentoVenta, objPedidoCabBE.IdAlmacen, objPedidoCabBE.IdTransportista, objPedidoCabBE.IdChofer, objPedidoCabBE.IdVehiculo1,
                                 objPedidoCabBE.IdVehiculo2, objPedidoCabBE.IdVehiculo3, objPedidoCabBE.HoraAtencionOpcional1_Desde, objPedidoCabBE.HoraAtencionOpcional1_Hasta,
                                 objPedidoCabBE.HoraAtencionOpcional2_Desde, objPedidoCabBE.HoraAtencionOpcional2_Hasta, objPedidoCabBE.HoraAtencionOpcional3_Desde, objPedidoCabBE.HoraAtencionOpcional3_Hasta,
                                 objPedidoCabBE.IdSede, objPedidoCabBE.IdContacto);

                    if (idOperacion == null)
                    {
                        throw new ArgumentException("No se pudo registrar el pedido, revisar los campos obligatorios.");
                    }

                    dcg.VBG00523(idOperacion);

                    foreach (PedidoDetBE objPedidoDetBE in lstProductos)
                    {
                        decimal?idAmarre = null;
                        if (objPedidoDetBE.IdAmarre > 0)
                        {
                            idAmarre = objPedidoDetBE.IdAmarre;
                        }
                        if (objPedidoDetBE.Estado)
                        {
                            dcg.VBG00525(ref idAmarre, idOperacion, objPedidoDetBE.TablaOrigen, objPedidoDetBE.Linea, objPedidoDetBE.ID_Item, objPedidoDetBE.ID_ItemPedido,
                                         objPedidoDetBE.Item_ID, objPedidoDetBE.Cantidad, objPedidoDetBE.Precio, objPedidoDetBE.Dcto, objPedidoDetBE.DctoValor, objPedidoDetBE.Importe,
                                         objPedidoDetBE.ID_ItemAnexo, objPedidoDetBE.ID_CCosto, objPedidoDetBE.ID_UnidadGestion, objPedidoDetBE.ID_UnidadProyecto, objPedidoDetBE.ID_UnidadInv,
                                         objPedidoDetBE.FactorUnidadInv, objPedidoDetBE.CantidadUnidadInv, objPedidoDetBE.ID_UnidadDoc, objPedidoDetBE.CantidadUnidadDoc, objPedidoDetBE.Observaciones);
                        }
                        else
                        {
                            dcg.VBG00526(idAmarre);
                        }
                    }

                    foreach (GlosaBE objImpuesto in lstImpuestos)
                    {
                        dcg.VBG00524(idOperacion, objImpuesto.IdGlosa, objImpuesto.BaseImponible, objImpuesto.Importe);
                    }
                    dcg.VBG04091(idOperacion);

                    if (limiteCredito >= objPedidoCabBE.Total)
                    {
                        //Aprobar el pedido
                        if (objPedidoCabBE.IdPago != 2)
                        {
                            dcg.VBG01076("OV", idOperacion, codigoUsuario, "1");
                        }

                        //
                        string  moneda = null;
                        decimal?total  = null;
                        bool?   ok     = false;

                        if (objPedidoCabBE.NroRegistro == "0" || objPedidoCabBE.NroRegistro == null)
                        {
                            dcg.VBG00045(idOperacion, ref moneda, ref total, ref ok, null);
                            //Seleccionar impresora
                            VBG00038Result objImpresora = dcg.VBG00038(52).ToList()[0];
                            //Actualizar impresora
                            string  nombreImpresora = null;
                            decimal?idDocumento     = null;
                            string  nombreDocumento = null;
                            string  serieLetra      = null;
                            decimal?serieNumero     = null;
                            decimal?numero          = null;
                            int?    lenLetrasSerie  = null;
                            int?    lenNumeroSerie  = null;
                            int?    lenNumero       = null;
                            decimal?cantidad        = null;
                            string  archivoRpt      = null;
                            decimal?longitud        = null;
                            decimal?ancho           = null;

                            dcg.VBG00037(objImpresora.ID_Impresora, ref nombreImpresora, ref idDocumento, ref nombreDocumento, ref serieLetra, ref serieNumero,
                                         ref numero, ref lenLetrasSerie, ref lenNumeroSerie, ref lenNumero, ref cantidad, ref archivoRpt, ref longitud, ref ancho);

                            decimal?idImpresora = objImpresora.ID_Impresora;
                            dcg.VBG00036(ref idImpresora, nombreImpresora, idDocumento, serieLetra, serieNumero, numero + 1, lenLetrasSerie, lenNumeroSerie,
                                         lenNumero, cantidad - 1);

                            dcg.VBG00040(4, idOperacion, Math.Round((Math.Pow(10, Convert.ToDouble(lenNumeroSerie)) + Convert.ToDouble(serieNumero)), 0).ToString().Substring(1, Convert.ToInt32(lenNumeroSerie)), numero + 1);
                        }
                    }
                }
                catch (Exception ex)
                {
                    dci.Excepcion_Registrar(ex.Message, ex.TargetSite.Name);
                    throw new ArgumentException("No se pudo registrar el pedido en la base de datos.");
                }
                finally
                {
                    dcg.SubmitChanges();
                    dci.SubmitChanges();
                    dcg.Connection.Close();
                    dci.Connection.Close();
                }
            }
        }
예제 #2
0
        public decimal OrdenVenta_Registrar(int idEmpresa, int codigoUsuario, gsOV_BuscarCabeceraResult objOrdenVentaCabBE,
                                            List <gsOV_BuscarDetalleResult> lstProductos, List <GlosaBE> lstImpuestos, decimal?idOperacion, decimal limiteCredito,
                                            List <gsPedidos_FechasLetrasSelectResult> ListaFechas)


        {
            using (dmIntranetDataContext dci = new dmIntranetDataContext(GS.configuration.Init.GetValue(Constant.sistema, Constant.key, "genesys")))

            {
                dmGenesysDataContext dcg = new dmGenesysDataContext(string.Format(GS.configuration.Init.GetValue(Constant.sistema, Constant.key, dci.Empresa.SingleOrDefault(x => x.idEmpresa == idEmpresa).baseDatos), "usrGEN" + (10000 + codigoUsuario).ToString().Substring(1, 4)));

                VBG00004Result objEmpresa;
                try
                {
                    objEmpresa = dcg.VBG00004().Single();
                    using (TransactionScope scope = new TransactionScope())
                    {
                        //Desaorueba para que se pueda editar
                        if (idOperacion != null && dcg.OV.ToList().Find(x => x.Op == idOperacion).Aprobacion1&& objOrdenVentaCabBE.Id_Pago != 2 &&
                            (limiteCredito >= objOrdenVentaCabBE.Total || !objEmpresa.EvaluaLimCredito))
                        {
                            dcg.VBG01076("OV", idOperacion, 1, "1");
                        }

                        if (objOrdenVentaCabBE.ID_CondicionCredito == 0 && objOrdenVentaCabBE.Id_Pago == 1)
                        {
                            throw new ArgumentException("No se puede registrar el pedido, se está procesando un pedido con Tipo de Venta: Crédito y Tipo Credito: Contado, presione F5 para refrescar el formulario");
                        }

                        dcg.VBG00522(ref idOperacion, objOrdenVentaCabBE.ID_Agenda, objOrdenVentaCabBE.NoRegistro, objOrdenVentaCabBE.FechaOrden, objOrdenVentaCabBE.FechaDespacho,
                                     objOrdenVentaCabBE.FechaEntrega, objOrdenVentaCabBE.FechaVigencia, objOrdenVentaCabBE.FechaEmision, objOrdenVentaCabBE.FechaVencimiento, objOrdenVentaCabBE.ID_Envio,
                                     objOrdenVentaCabBE.ID_AgendaAnexoReferencia, objOrdenVentaCabBE.ID_Vendedor, objOrdenVentaCabBE.ID_Moneda, objOrdenVentaCabBE.Neto, objOrdenVentaCabBE.Dcto,
                                     objOrdenVentaCabBE.SubTotal, objOrdenVentaCabBE.Impuestos, objOrdenVentaCabBE.Total, objOrdenVentaCabBE.Observaciones, objOrdenVentaCabBE.Prioridad,
                                     objOrdenVentaCabBE.EntregaParcial, objOrdenVentaCabBE.Estado, objOrdenVentaCabBE.Id_Pago, objOrdenVentaCabBE.ID_AgendaAnexo, objOrdenVentaCabBE.TEA,
                                     objOrdenVentaCabBE.ID_AgendaDireccion, objOrdenVentaCabBE.ID_AgendaDireccion2, objOrdenVentaCabBE.ModoPago, objOrdenVentaCabBE.NotasDespacho, objOrdenVentaCabBE.ID_CondicionCredito,
                                     objOrdenVentaCabBE.NroOrdenCliente, objOrdenVentaCabBE.ID_NaturalezaGastoIngreso, objOrdenVentaCabBE.ID_AgendaOrigen, objOrdenVentaCabBE.DireccionOrigenSucursal,
                                     objOrdenVentaCabBE.DireccionOrigenReferencia, objOrdenVentaCabBE.DireccionOrigenDireccion, objOrdenVentaCabBE.ID_AgendaDestino, objOrdenVentaCabBE.DireccionDestinoSucursal,
                                     objOrdenVentaCabBE.DireccionDestinoReferencia, objOrdenVentaCabBE.DireccionDestinoDireccion, objOrdenVentaCabBE.ID_TipoDespacho, objOrdenVentaCabBE.ID_TipoPedido,
                                     objOrdenVentaCabBE.ID_DocumentoVenta, objOrdenVentaCabBE.ID_Almacen, objOrdenVentaCabBE.ID_Transportista, objOrdenVentaCabBE.ID_Chofer, objOrdenVentaCabBE.ID_Vehiculo1,
                                     objOrdenVentaCabBE.ID_Vehiculo2, objOrdenVentaCabBE.ID_Vehiculo3, objOrdenVentaCabBE.HoraAtencionOpcion1_Desde, objOrdenVentaCabBE.HoraAtencionOpcion1_Hasta,
                                     objOrdenVentaCabBE.HoraAtencionOpcion2_Desde, objOrdenVentaCabBE.HoraAtencionOpcion2_Hasta, objOrdenVentaCabBE.HoraAtencionOpcion3_Desde, objOrdenVentaCabBE.HoraAtencionOpcion3_Hasta,
                                     objOrdenVentaCabBE.ID_Sede, objOrdenVentaCabBE.Contacto);

                        if (idOperacion == null)
                        {
                            throw new ArgumentException("No se pudo registrar el pedido, revisar los campos obligatorios.");
                        }

                        dcg.VBG00523(idOperacion);

                        foreach (gsOV_BuscarDetalleResult objProducto in lstProductos)
                        {
                            decimal?idAmarre = null;
                            if (objProducto.ID_Amarre > 0)
                            {
                                idAmarre = objProducto.ID_Amarre;
                            }

                            if (objProducto.Estado != 0)
                            {
                                dcg.VBG00525(ref idAmarre, idOperacion, objProducto.TablaOrigen, objProducto.Linea, objProducto.ID_Item, objProducto.ID_ItemPedido,
                                             objProducto.Item_ID, objProducto.Cantidad, objProducto.Precio, objProducto.Dcto, objProducto.DctoValor, objProducto.Importe,
                                             objProducto.ID_ItemAnexo, objProducto.ID_CCosto, objProducto.ID_UnidadGestion, objProducto.ID_UnidadProyecto, objProducto.ID_UnidadInv,
                                             objProducto.FactorUnidadInv, objProducto.CantidadUnidadInv, objProducto.ID_UnidadDoc, objProducto.CantidadUnidadDoc, objProducto.Observaciones);
                            }
                            else
                            {
                                if (objProducto.ID_Amarre > 0)
                                {
                                    dcg.VBG00526(idAmarre);
                                }
                            }
                        }

                        foreach (GlosaBE objImpuesto in lstImpuestos)
                        {
                            dcg.VBG00524(idOperacion, objImpuesto.IdGlosa, objImpuesto.BaseImponible, objImpuesto.Importe);
                        }

                        dcg.VBG04091(idOperacion);

                        if (limiteCredito >= objOrdenVentaCabBE.Total || !objEmpresa.EvaluaLimCredito)
                        {
                            //Aprobar el pedido
                            if (objOrdenVentaCabBE.Id_Pago != 2)
                            {
                                dcg.VBG01076("OV", idOperacion, 1, "1");
                            }

                            string  moneda = null;
                            decimal?total  = null;
                            bool?   ok     = false;

                            if (objOrdenVentaCabBE.NoRegistro == "0" || objOrdenVentaCabBE.NoRegistro == null)
                            {
                                dcg.VBG00045(idOperacion, ref moneda, ref total, ref ok, null);
                                //Seleccionar impresora
                                VBG00038Result objImpresora = dcg.VBG00038(52).ToList()[0];
                                //Actualizar impresora
                                string  nombreImpresora = null;
                                decimal?idDocumento     = null;
                                string  nombreDocumento = null;
                                string  serieLetra      = null;
                                decimal?serieNumero     = null;
                                decimal?numero          = null;
                                int?    lenLetrasSerie  = null;
                                int?    lenNumeroSerie  = null;
                                int?    lenNumero       = null;
                                decimal?cantidad        = null;
                                string  archivoRpt      = null;
                                decimal?largo           = null;
                                decimal?ancho           = null;

                                dcg.VBG00037(objImpresora.ID_Impresora, ref nombreImpresora, ref idDocumento, ref nombreDocumento, ref serieLetra, ref serieNumero,
                                             ref numero, ref lenLetrasSerie, ref lenNumeroSerie, ref lenNumero, ref cantidad, ref archivoRpt, ref largo, ref ancho);

                                decimal?idImpresora = objImpresora.ID_Impresora;
                                dcg.VBG00036(ref idImpresora, nombreImpresora, idDocumento, serieLetra, serieNumero, numero + 1, lenLetrasSerie, lenNumeroSerie,
                                             lenNumero, cantidad - 1);

                                dcg.VBG00040(4, idOperacion, Math.Round((Math.Pow(10, Convert.ToDouble(lenNumeroSerie)) + Convert.ToDouble(serieNumero)), 0).ToString().Substring(1, Convert.ToInt32(lenNumeroSerie)), numero + 1);
                            }

                            //if (lstProductos.FindAll(x => x.Stock - x.Cantidad < 0 && x.Estado == 1 && x.Item_ID != KardexFlete).Count > 0 && objOrdenVentaCabBE.Id_Pago != 2)
                            //{
                            //    dcg.VBG01076("OV", idOperacion, 1, "1");
                            //}

                            //--------------Actualizar Fecha Letras

                            dcg.gsProcesoLetras_EliminarTotal((int)idOperacion, codigoUsuario);
                            gsProcesoLetras_RegistrarResult     objProceso    = new gsProcesoLetras_RegistrarResult();
                            gsProcesoLetras_Registrar_OLDResult objProcesoOLD = new gsProcesoLetras_Registrar_OLDResult();


                            if (ListaFechas != null)
                            {
                                if (ListaFechas.Count() > 0)
                                {
                                    int ID_PROCESO     = 0;
                                    int ID_PROCESO_OLD = 0;
                                    objProceso    = dcg.gsProcesoLetras_Registrar(0, codigoUsuario).Single();
                                    objProcesoOLD = dcg.gsProcesoLetras_Registrar_OLD(0, codigoUsuario).Single();

                                    ID_PROCESO     = (int)objProceso.Column1;
                                    ID_PROCESO_OLD = (int)objProcesoOLD.Column1;

                                    dcg.gsProcesoLetrasDetalle_Registrar(ID_PROCESO, (int)idOperacion, 0);
                                    dcg.gsProcesoLetrasDetalle_Registrar_OLD(ID_PROCESO_OLD, (int)idOperacion, 0);

                                    foreach (gsPedidos_FechasLetrasSelectResult objFecha in ListaFechas.OrderBy(x => x.Fecha))
                                    {
                                        dcg.gsPedidos_FechasLetrasInsert(ID_PROCESO_OLD, objFecha.Fecha, codigoUsuario);
                                        dcg.gsFactura_FechasLetrasInsert(ID_PROCESO, objFecha.Fecha, 0, codigoUsuario);
                                    }
                                }
                            }

                            //-------------------------------------------------------
                        }
                        dcg.SubmitChanges();
                        scope.Complete();
                        dcg.Connection.Close();

                        return((decimal)idOperacion);
                    }
                }
                catch (Exception ex)
                {
                    dci.Excepcion_Registrar(ex.Message, ex.TargetSite.Name);
                    dci.SubmitChanges();
                    throw new ArgumentException("No se pudo registrar el pedido en la base de datos.");
                }
                finally
                {
                    dcg.Connection.Close();
                }
            }
        }