Beispiel #1
0
        private void CalcularImportes()
        {
            double pesoAf   = (this.txtPesoTotalAforado.Text == "")? 0 : Convert.ToDouble(this.txtPesoTotalAforado.Text);
            double pesoReal = (this.txtPeso.Text == "")? 0 : Convert.ToDouble(this.txtPeso.Text);

            //Crear instancia de la que resuelve los calculos de los importes

            //Cargar los datos necesarios para calcular el importe del flete
            admGuiaO.PesoKgReal = pesoReal;
            if (this.txtAlto.Text != "" && this.txtAncho.Text != "" && this.txtLargo.Text != "")
            {
                admGuiaO.VolumenTotal = Convert.ToDouble(this.txtAlto.Text) * Convert.ToDouble(this.txtAncho.Text) * Convert.ToDouble(this.txtLargo.Text);
            }

            double pesoAfM3 = 0;


            /*SFE: 22/03/2013. Valor de conversion a M3. Si se ingresa un valor en el campo de conversion, hay que calcular en base a esto*/
            if (txtM3.Text.Length > 0 && txtM3.Text.Trim() != string.Empty && txtM3.Text != "0")
            {
                double valorConversionM3 = 0;

                //Si es cliente corporativo, buscar el parametro para el convenio y la unidad de venta.
                if (admGuiaO.ClienteCorpRemitente.ClienteID != 0 || (admGuiaO.ClienteCorpDestinatario.ClienteID != 0 && admGuiaO.AgenteGuiaPagoID == NegociosSisPackInterface.SisPack.TipoAgenteGuia.Destinatario))
                {
                    admGuiaO.UnidadVentaID = Utiles.Validaciones.obtieneEntero(Request.Form[ddlUnidadVenta.UniqueID]);
                    valorConversionM3      = admGuiaO.ObtenerValorConversionM3ClienteCorp();
                    //Si no está definido, buscar el parámetro por Unidad de Venta.
                    if (valorConversionM3 == 0)
                    {
                        // Busco la Unidad de Venta y consulto si tiene definido un valor de conversion m3
                        int          uniVenta = Utiles.Validaciones.obtieneEntero(Request.Form[ddlUnidadVenta.UniqueID]);
                        IUnidadVenta uVenta   = UnidadVentaFactory.GetUnidadVenta();
                        uVenta.UnidadVentaID = uniVenta;
                        uVenta.Consultar();

                        if (uVenta.ValorConversionM3 != 0) //tiene definido un valor de conversion de m3, usarlos
                        {
                            valorConversionM3 = uVenta.ValorConversionM3;
                        }
                        else // si no esta definido a nivel de Unidad de Venta tengo que utilizar el de parámetro general
                        {
                            IParametroUNegocio paramMin = ParametroUNegocioFactory.GetParametroUNegocio();
                            paramMin.UnidadNegocioID = this.UnidadNegocioID;
                            paramMin.Parametro       = NegociosSisPackInterface.SisPack.Parametro.ValorConversionM3;
                            paramMin.Consultar();
                            valorConversionM3 = Convert.ToDouble(paramMin.ValorString);
                        }
                    }
                }
                // Si es cliente eventual, buscar valor de conversion a nivel de unidad de venta
                else
                {
                    // Busco la Unidad de Venta y consulto si tiene definido un valor de conversion m3
                    int          uniVenta = Utiles.Validaciones.obtieneEntero(Request.Form[ddlUnidadVenta.UniqueID]);
                    IUnidadVenta uVenta   = UnidadVentaFactory.GetUnidadVenta();
                    uVenta.UnidadVentaID = uniVenta;
                    uVenta.Consultar();

                    if (uVenta.ValorConversionM3 != 0)
                    {
                        valorConversionM3 = uVenta.ValorConversionM3;
                    }
                    else
                    // si no esta definido a nivel de Unidad de Venta tengo que utilizar el de parámetro general
                    {
                        IParametroUNegocio paramMin = ParametroUNegocioFactory.GetParametroUNegocio();
                        paramMin.UnidadNegocioID = this.UnidadNegocioID;
                        paramMin.Parametro       = NegociosSisPackInterface.SisPack.Parametro.ValorConversionM3;
                        paramMin.Consultar();
                        valorConversionM3 = Convert.ToDouble(paramMin.ValorString);
                    }
                }
                //Si se encontró algun valor de conversion.
                if (valorConversionM3 > 0)
                {
                    admGuiaO.MetrosCubicos = Utiles.Validaciones.obtieneDouble(txtM3.Text);
                    pesoAfM3 = admGuiaO.MetrosCubicos * valorConversionM3;
                }
            }

            double pesoTotalAforado = (pesoAf > pesoReal) ? pesoAf : pesoReal;

            if (pesoAfM3 > 0)
            {
                if (pesoTotalAforado > pesoAfM3)
                {
                    admGuiaO.PesoTotal = pesoTotalAforado;
                }
                else
                {
                    admGuiaO.PesoTotal = pesoAfM3;
                }
            }
            else
            {
                admGuiaO.PesoTotal = (pesoAf > pesoReal)? pesoAf : pesoReal;
            }

            admGuiaO.CantBultos = Convert.ToInt32(this.txtBultos.Text);

            admGuiaO.UnidadVentaID = Utiles.Validaciones.obtieneEntero(Request.Form[ddlUnidadVenta.UniqueID]);

            admGuiaO.ModalidadEntregaID = Utiles.Validaciones.obtieneEntero(this.ddlModalidadEntrega.SelectedValue);

            admGuiaO.LimiteKg = 3000;
            admGuiaO.PorcentajeBonificacionAutorizacion = 0;
            admGuiaO.ImporteACobrarAutorizacion         = 0;

            admGuiaO.ValorDeclarado = Convert.ToDouble(this.txtValorDeclarado.Text);

            int modalidadEntregaID = Utiles.Validaciones.obtieneEntero(this.ddlModalidadEntrega.SelectedValue);

            //admGuiaO.UnidadNegocioID = this.UnidadNegocioID;
            IAgencia agencia = AgenciaFactory.GetAgencia();

            agencia.AgenciaByLocalidadSimulador(Utiles.Validaciones.obtieneEntero(ddlLocalidadRemitente), Utiles.Validaciones.obtieneEntero(ddlCodigoPostalRemitente), 1, 0, Utiles.Validaciones.obtieneEntero(this.ddlUnidadVenta.SelectedValue), modalidadEntregaID, 0, false);
            if (agencia.AgenciaID != 0)
            {
                admGuiaO.AgenciaOrigenID = agencia.AgenciaID;
            }
            else
            {
                throw new Exception("No es posible realizar el envío desde el origen hacia el destino seleccionado.");
            }

            agencia.AgenciaByLocalidadSimulador(Utiles.Validaciones.obtieneEntero(ddlLocalidadDestinatario), Utiles.Validaciones.obtieneEntero(ddlCodigoPostalDestinatario), 0, 1, Utiles.Validaciones.obtieneEntero(this.ddlUnidadVenta.SelectedValue), modalidadEntregaID, 0, false);
            if (agencia.AgenciaID != 0)
            {
                admGuiaO.AgenciaDestinoID = agencia.AgenciaID;
            }
            else
            {
                throw new Exception("No es posible realizar el envío desde el origen hacia el destino seleccionado.");
            }

            admGuiaO.TipoDestinoID = (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia;

            //Por si hay que calcular comision de contrareembolso
            admGuiaO.ImporteCRGuia = 0;             //(this.txtImporteContraReembolso.Text== "")? 0 : Convert.ToDouble(this.txtImporteContraReembolso.Text);
            //admGuiaO.ImporteCRGuia = admGuiaO.ValorDeclarado;

            admGuiaO.PagaEntregaEnDomicilio        = false;     //this.chkPagaEnDomicilio.Checked;
            admGuiaO.PromocionServicioTransporteID = 0;

            admGuiaO.BonificacionAgencia = 0;  //Utiles.Validaciones.obtieneEntero(this.txtBonificacionAgencia.Text);
            admGuiaO.UsuarioID           = 1;  //this.usuario.UsuarioID;

            //esto le indica a AdminstracionGuias, que la agencia que calcula los importes
            //es automatizada, por lo tanto debe tener en cuenta el área de influencia
            admGuiaO.NoAutomatizada  = false;
            admGuiaO.UnidadNegocioID = 1;

            admGuiaO.ClienteEventRemitente.Domicilio.Localidad.LocalidadID           = Utiles.Validaciones.obtieneEntero(ddlLocalidadRemitente);
            admGuiaO.ClienteEventDestinatario.Domicilio.Localidad.LocalidadID        = Utiles.Validaciones.obtieneEntero(ddlLocalidadDestinatario);
            admGuiaO.ClienteEventRemitente.Domicilio.Localidad.CodigoPostal          = ddlCodigoPostalRemitenteCodigo;
            admGuiaO.ClienteEventDestinatario.Domicilio.Localidad.CodigoPostal       = ddlCodigoPostalDestinatarioCodigo;
            admGuiaO.ClienteEventRemitente.Domicilio.OCodigoPostal.CodigoPostalID    = Utiles.Validaciones.obtieneEntero(ddlCodigoPostalRemitente);
            admGuiaO.ClienteEventDestinatario.Domicilio.OCodigoPostal.CodigoPostalID = Utiles.Validaciones.obtieneEntero(ddlCodigoPostalDestinatario);


            admGuiaO.NoCalcularPromociones = false;

            admGuiaO.CalcularImportes();

            this.lblBonificacion.Text = "";
            this.lblNombrePromo.Text  = "";

            if (admGuiaO.TipoPromocion == 1)
            {
                IPromocionOrigenDestinoUVenta promo = PromocionOrigenDestinoUVentaFactory.GetPromocionOrigenDestinoUVenta();
                promo.PromocionOrigenDestinoUVentaID = admGuiaO.PromoID;
                promo.UnidadNegocioID = 1;
                promo.Consultar();

                if (promo.IncrementoBonificacionPorcentaje < 0 && promo.IncrementoBonificacionImporteFijo <= 0)
                {
                    this.lblNombrePromo.Text = " - Promoción: " + promo.PromocionOrigenDestinoUVentaDescrip;
                    string bonificacion = "";
                    if (promo.IncrementoBonificacionPorcentaje < 0)
                    {
                        bonificacion = promo.IncrementoBonificacionPorcentaje.ToString() + "%";
                    }
                    else if (promo.IncrementoBonificacionImporteFijo < 0)
                    {
                        bonificacion = "$ " + promo.IncrementoBonificacionImporteFijo.ToString();
                    }

                    this.lblBonificacion.Text = "(" + bonificacion + ")";
                }
            }

            if (admGuiaO.TipoGuia == "A" || admGuiaO.TipoGuia == "E")
            {
                this.lblImporteFlete.Text  = Formatos.Importe(admGuiaO.ImporteFlete);
                this.lblImporteSeguro.Text = Formatos.Importe(admGuiaO.ImporteSeguro);
                this.lblImporteRetiro.Text = Formatos.Importe(admGuiaO.ImporteRetiro);
                //if(!this.chkPagaEnDomicilio.Checked)
                this.lblImporteEntrega.Text = Formatos.Importe(admGuiaO.ImporteEntrega);
                //else
                //	this.lblImporteEntrega.Text = "0";
                this.lblImporteComisCR.Text      = Formatos.Importe(admGuiaO.ImporteComisCR);
                this.lblImporteNeto.Text         = Formatos.Importe(admGuiaO.ImporteNetoTotal);
                this.lblImporteIVAInscripto.Text = Formatos.Importe(admGuiaO.ImporteIVAInscripto);
                //}
            }
            else
            {
                this.lblImporteFlete.Text  = Formatos.Importe(admGuiaO.ImporteFlete + admGuiaO.ImporteFleteIVA);                 //+ admGuiaO.ImporteRedespachoIVA
                this.lblImporteSeguro.Text = Formatos.Importe(admGuiaO.ImporteSeguro + admGuiaO.ImporteSeguroIVA);
                this.lblImporteRetiro.Text = Formatos.Importe(admGuiaO.ImporteRetiro + admGuiaO.ImporteRetiroIVA);
                //if(!this.chkPagaEnDomicilio.Checked)
                this.lblImporteEntrega.Text = Formatos.Importe(admGuiaO.ImporteEntrega + admGuiaO.ImporteEntregaIVA);
                //else
                //	this.lblImporteEntrega.Text = "0";
                this.lblImporteComisCR.Text      = Formatos.Importe(admGuiaO.ImporteComisCR + admGuiaO.ImporteComisCRIVA);
                this.lblImporteIVAInscripto.Text = "";
                this.lblImporteNeto.Text         = "";
                //}
            }

            this.lblImporteRedondeo.Text    = Formatos.Importe(admGuiaO.ImporteRedondeo);
            this.lblImporteTotalCobrar.Text = Formatos.Importe(admGuiaO.ImporteTotalCobrar);
        }
        protected void DevolverGuia(object sender, DataGridCommandEventArgs e)
        {
            try
            {
                bool hayError = false;
                GuiaOriginalID = Convert.ToInt32(this.dtgGuiasNuevas.DataKeys[e.Item.ItemIndex]);
                DsGuias            ds = (DsGuias)Session["DsGuiasConsul"];
                DsGuias.DatosRow[] dr = (DsGuias.DatosRow[])ds.Datos.Select("GuiaID = " + GuiaOriginalID);

                if (dr.Length > 0)
                {
                    DsGuiasFacturas dsGuiasDet;
                    //recupera todas las guías y sus correspondientes detalles
                    if (Session["DsGuiasDetalles"] == null)
                    {
                        IGuiaFactura guiaFact = GuiaFacturaFactory.GetGuiaFactura();
                        ((IGuia)guiaFact).AgenciaDestinoID = this.AgenciaConectadaID;
                        ((IGuia)guiaFact).TipoGuia         = this.rbtGuiaA.Checked ? "A" : this.rbtGuiaB.Checked ? "B" : "";
                        dsGuiasDet = guiaFact.GetGuiasFacturasAgDestinoDataSet(fechaDesde, fechaHasta);

                        Session["DsGuiasDetalles"] = dsGuiasDet;
                    }
                    else
                    {
                        dsGuiasDet = (DsGuiasFacturas)Session["DsGuiasDetalles"];
                    }

                    if (Session["AgenciaConectada"] == null)
                    {
                        oAgencia           = AgenciaFactory.GetAgencia();
                        oAgencia.AgenciaID = Convert.ToInt32(this.AgenciaConectadaID);
                        oAgencia.ConsultarBasico();
                    }
                    else
                    {
                        oAgencia = (IAgencia)Session["AgenciaConectada"];
                    }



                    //CARGO DATOS DE LA CABEZA DE LA FACTURA
                    DsGuiasFacturas.DatosRow[] drFactCab = (DsGuiasFacturas.DatosRow[])dsGuiasDet.Datos.Select("GuiaID = " + GuiaOriginalID + " AND PesoTotal > 0");
                    if (drFactCab.Length > 0)
                    {
                        //Parámetro: ID de cliente correspondiente a ANDESMAR
                        IParametroUNegocio param = ParametroUNegocioFactory.GetParametroUNegocio();
                        param.UnidadNegocioID = this.UnidadNegocioID;
                        param.Parametro       = NegociosSisPackInterface.SisPack.Parametro.ClienteDeAdministracion;
                        param.Consultar();

                        // obtengo los datos de la agencia destino, para guardar el número correcto de la guía
                        // que se devuelve

                        IAgencia agDestino = AgenciaFactory.GetAgencia();
                        agDestino.AgenciaID = drFactCab[0].AgenciaOrigenID;
                        agDestino.ConsultarBasico();

                        guiaNueva = AdministrarGuiasFactory.GetAdministrarGuias();
                        guiaNueva.AgenciaDestinoID = drFactCab[0].AgenciaOrigenID;
                        guiaNueva.AgenciaOrigenID  = drFactCab[0].AgenciaDestinoID;
                        //si la unidad de venta tiene servicio flete pago en destino,
                        //la condición de pago siempre es contado.
                        guiaNueva.CondicionPagoID                = (NegociosSisPackInterface.SisPack.CondicionPago)drFactCab[0].CondicionPagoID;
                        guiaNueva.AgenteGuiaPagoID               = NegociosSisPackInterface.SisPack.TipoAgenteGuia.Destinatario;
                        guiaNueva.AgentePagoCondicionIVA         = (NegociosSisPackInterface.SisPack.CondicionIva)drFactCab[0].CondicionIvaAgentePago;
                        guiaNueva.AgentePagoEsClienteCorporativo = true;
                        guiaNueva.ClienteCorp.ClienteID          = drFactCab[0].RemitenteClienteID;
                        guiaNueva.CantBultos = drFactCab[0].CantidadBultosTotal;
                        guiaNueva.ClienteCorpRemitente.ClienteID = Convert.ToInt32(param.ValorString);
                        guiaNueva.ClienteCorpRemitente.Consultar();
                        guiaNueva.ClienteCorpDestinatario.ClienteID = drFactCab[0].RemitenteClienteID;
                        guiaNueva.ClienteCorpDestinatario.Consultar();

                        guiaNueva.NroCUITAgentePago = drFactCab[0].CUITAgentePago;
                        guiaNueva.NroGuia           = drFactCab[0].NroGuia;
                        guiaNueva.NroSucursalGuia   = oAgencia.SucursalDGI;
                        guiaNueva.Observaciones     = "Devolución guía número " + Utiles.Formatos.CerosIzq(Convert.ToInt32(agDestino.SucursalDGI), 4) + "-" + Utiles.Formatos.CerosIzq(drFactCab[0].NroGuia, 8) + "-" + drFactCab[0].TipoGuia;
                        //guiaNueva.Observaciones = "Devolución guía número " + Utiles.Formatos.CerosIzq(Convert.ToInt32(oAgencia.SucursalDGI), 4) + "-" + Utiles.Formatos.CerosIzq(drFactCab[0].NroGuia, 8) + "-" + drFactCab[0].TipoGuia;
                        guiaNueva.PesoTotal        = drFactCab[0].PesoTotal;
                        guiaNueva.PesoKgReal       = drFactCab[0].PesoTotal;
                        guiaNueva.UnidadNegocioID  = drFactCab[0].UnidadNegocioID;
                        guiaNueva.ValorDeclarado   = drFactCab[0].ValorDeclaradoTotal;
                        guiaNueva.VolumenTotal     = drFactCab[0].VolumenTotal;
                        guiaNueva.RemitoClienteNro = drFactCab[0].RemitoClienteNro.ToString();

                        //CARGO DATOS DEL DETALLE DE LA FACTURA
                        DsGuiasFacturas.DatosDetalleRow[] drFactDet = (DsGuiasFacturas.DatosDetalleRow[])dsGuiasDet.DatosDetalle.Select("GuiaID = " + GuiaOriginalID);
                        if (drFactDet.Length > 0)
                        {
                            guiaNueva.TipoBultoID = (NegociosSisPackInterface.SisPack.TipoBulto)drFactDet[0].TipoBultoID;

                            //el try se usa en caso de que el seguro venga con DBNull
                            //en cuyo caso se le coloca en cero.
                            try
                            {
                                guiaNueva.SeguroTantoPorMil = Convert.ToDouble(drFactDet[0].SeguroTantoPorMil);
                            }
                            catch (Exception)
                            {
                                guiaNueva.SeguroTantoPorMil = 0;
                            }
                            guiaNueva.GuiaDevueltaID = drFactDet[0].GuiaID;


                            //Si la u. de vta de la guía a devolver tiene servicio ContraReembolso, o Acuse de recibo
                            //regresa como encomienda estándar sin servicio adicional.
                            IUnidadVenta uVta = UnidadVentaFactory.GetUnidadVenta();
                            DsUnidadVentaTEntregaProductoServicio            dsUV  = uVta.GetServiciosDisponiblesByProductoTEntregaAgenciaDataSet();
                            DsUnidadVentaTEntregaProductoServicio.DatosRow[] drsUV = (DsUnidadVentaTEntregaProductoServicio.DatosRow[])dsUV.Datos.Select("UnidadVentaID = " + drFactDet[0].UnidadVentaID
                                                                                                                                                         + " AND (ServicioID = " + (int)NegociosSisPackInterface.SisPack.Servicio.ContraReembolso + " OR ServicioID = " + (int)NegociosSisPackInterface.SisPack.Servicio.AcuseRecibo + ")");
                            if (drsUV.Length > 0)
                            {
                                //Parámetro: ID Unidad de venta correspondiente a Encomienda estándar sin servicio adicional
                                param.Parametro = NegociosSisPackInterface.SisPack.Parametro.EncomiendaEstandarSinServAdicional;
                                param.Consultar();
                                guiaNueva.UnidadVentaID = Convert.ToInt32(param.ValorString);
                            }
                            else
                            {
                                guiaNueva.UnidadVentaID = drFactDet[0].UnidadVentaID;
                            }


                            //la guia debe devolverse con la modalidad de entrega inversa a la original
                            // siempre y cuando esa modalidad estè contemplada en el convenio del cliente
                            // para la unidad de venta con la que sale la guia nueva
                            IAdministrarGuias guiaOriginal = AdministrarGuiasFactory.GetAdministrarGuias();
                            guiaOriginal.GuiaID = drFactCab[0].GuiaID;
                            guiaOriginal.ClienteCorp.ClienteID = drFactCab[0].RemitenteClienteID;
                            guiaOriginal.UnidadVentaID         = guiaNueva.UnidadVentaID;
                            guiaOriginal.ModalidadEntregaID    = guiaOriginal.GetModalidadEntrega();
                            guiaOriginal.AgenciaOrigenID       = drFactCab[0].AgenciaOrigenID;

                            /*if(guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta) && guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta))
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta;
                             * if(guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta))
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta;
                             * else if (guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta))
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta;
                             * else
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;*/

                            //para que vuelva con entrega a domicilio hay 1 condicion:
                            // - que el cliente tenga en el convenio la modalidad de entrega a domic para
                            //	la UV con la que sale la guia para el destino de la guia q vuelve
                            // nota: en ultima instancia vuelve Ter-Ter indptemente de que esté o no en el convenio del cliente

                            if (guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaTerminal) || guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta))
                            {
                                guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta;
                            }
                            else
                            {
                                guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;
                            }

                            /*if(guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaTerminal && guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta))
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta;
                             * else if (guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta && guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta))
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta;
                             * else if (guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta)
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;
                             * else if (guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal)
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;
                             * else
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;*/


                            //CARGO DATOS DE LOS SUBCONCEPTOS FACTURADOS
                            DsGuiasFacturas.DatosDetalleSubconceptoFacturableRow[] drFactSCF = (DsGuiasFacturas.DatosDetalleSubconceptoFacturableRow[])dsGuiasDet.DatosDetalleSubconceptoFacturable.Select("GuiaID = " + drFactDet[0].GuiaID
                                                                                                                                                                                                           + " AND GuiaFacturaDetalleID = " + drFactDet[0].GuiaFacturaDetalleID + " AND (SubConceptoFacturableID = " + (int)NegociosSisPackInterface.SisPack.SubConceptoFacturable.FleteNacional + " OR SubConceptoFacturableID = " + (int)NegociosSisPackInterface.SisPack.SubConceptoFacturable.Seguro + ")");
                            if (drFactSCF.Length > 0)
                            {
                                foreach (DsGuiasFacturas.DatosDetalleSubconceptoFacturableRow drSubConcepto in drFactSCF)
                                {
                                    if (drSubConcepto.SubConceptoFacturableID == (int)NegociosSisPackInterface.SisPack.SubConceptoFacturable.FleteNacional)
                                    {
                                        guiaNueva.ImporteFlete = drSubConcepto.Importe;
                                    }
                                    else
                                    {
                                        guiaNueva.ImporteSeguro = drSubConcepto.Importe;
                                    }
                                }

                                guiaNueva.CalcularImportes();
                                Session["guiaNueva"] = guiaNueva;
                                this.ObtenerNroGuia(dr[0].TipoGuia);
                            }
                            else
                            {
                                hayError = true;
                            }
                        }
                        else
                        {
                            hayError = true;
                        }
                    }
                    else
                    {
                        hayError = true;
                    }
                }
                if (hayError)
                {
                    ((ErrorWeb)phErrores.FindControl("Error")).setMensaje(this.TraducirTexto("Errores.Invalidos.GuiaIncompleta"));
                }
            }
            catch (Exception ex)
            {
                ((ErrorWeb)(this.phErrores.Controls[0])).setMensaje(TraducirTexto(ex.Message));
            }
        }
Beispiel #3
0
        private void CalcularImportes()
        {
            bool esValido = true;

            RequiredFieldValidator reqUnidadVenta = (RequiredFieldValidator)this.phValidUnidadVenta.FindControl("validUVenta");

            reqUnidadVenta.Enabled = true;
            reqUnidadVenta.Validate();
            if (!reqUnidadVenta.IsValid)
            {
                esValido = false;
            }

            RequiredFieldValidator reqME = (RequiredFieldValidator)this.phValidModalidadEntrega.FindControl("validME");

            reqME.Enabled = true;
            reqME.Validate();
            if (!reqME.IsValid)
            {
                esValido = false;
            }

            RequiredFieldValidator reqBultos = (RequiredFieldValidator)this.phValidBultos.FindControl("validBultos");

            reqBultos.Enabled = true;
            reqBultos.Validate();
            if (!reqBultos.IsValid)
            {
                esValido = false;
            }

            RequiredFieldValidator reqPeso = (RequiredFieldValidator)this.phValidPeso.FindControl("validPeso");

            reqPeso.Enabled = true;
            reqPeso.Validate();
            if (!reqPeso.IsValid)
            {
                esValido = false;
            }

            RequiredFieldValidator reqValorDeclarado = (RequiredFieldValidator)this.phValidUnidadVenta.FindControl("validDeclarado");

            reqValorDeclarado.Enabled = true;
            reqValorDeclarado.Validate();
            if (!reqValorDeclarado.IsValid)
            {
                esValido = false;
            }

            if (esValido)
            {
                double pesoAf   = (this.txtPesoTotalAforado.Text == "") ? 0 : Convert.ToDouble(this.txtPesoTotalAforado.Text);
                double pesoReal = (this.txtPeso.Text == "") ? 0 : Convert.ToDouble(this.txtPeso.Text);

                //Crear instancia de la que resuelve los calculos de los importes

                //Cargar los datos necesarios para calcular el importe del flete
                admGuiaO.PesoKgReal = pesoReal;
                if (this.txtAlto.Text != "" && this.txtAncho.Text != "" && this.txtLargo.Text != "")
                {
                    admGuiaO.VolumenTotal = Convert.ToDouble(this.txtAlto.Text) * Convert.ToDouble(this.txtAncho.Text) * Convert.ToDouble(this.txtLargo.Text);
                }

                double pesoAfM3 = 0;

                /*SFE: 22/03/2013. Valor de conversion a M3. Si se ingresa un valor en el campo de conversion, hay que calcular en base a esto*/
                if (txtM3.Text.Length > 0 && txtM3.Text.Trim() != string.Empty && txtM3.Text != "0")
                {
                    double valorConversionM3 = 0;

                    //Si es cliente corporativo, buscar el parametro para el convenio y la unidad de venta.
                    if (admGuiaO.ClienteCorpRemitente.ClienteID != 0 || (admGuiaO.ClienteCorpDestinatario.ClienteID != 0 && admGuiaO.AgenteGuiaPagoID == NegociosSisPackInterface.SisPack.TipoAgenteGuia.Destinatario))
                    {
                        admGuiaO.UnidadVentaID = Utiles.Validaciones.obtieneEntero(Request.Form[ddlUnidadVenta.UniqueID]);
                        valorConversionM3      = admGuiaO.ObtenerValorConversionM3ClienteCorp();
                        //Si no está definido, buscar el parámetro por Unidad de Venta.
                        if (valorConversionM3 == 0)
                        {
                            // Busco la Unidad de Venta y consulto si tiene definido un valor de conversion m3
                            int          uniVenta = Utiles.Validaciones.obtieneEntero(Request.Form[ddlUnidadVenta.UniqueID]);
                            IUnidadVenta uVenta   = UnidadVentaFactory.GetUnidadVenta();
                            uVenta.UnidadVentaID = uniVenta;
                            uVenta.Consultar();

                            if (uVenta.ValorConversionM3 != 0) //tiene definido un valor de conversion de m3, usarlos
                            {
                                valorConversionM3 = uVenta.ValorConversionM3;
                            }
                            else // si no esta definido a nivel de Unidad de Venta tengo que utilizar el de parámetro general
                            {
                                IParametroUNegocio paramMin = ParametroUNegocioFactory.GetParametroUNegocio();
                                paramMin.UnidadNegocioID = this.UnidadNegocioID;
                                paramMin.Parametro       = NegociosSisPackInterface.SisPack.Parametro.ValorConversionM3;
                                paramMin.Consultar();
                                valorConversionM3 = Convert.ToDouble(paramMin.ValorString);
                            }
                        }
                    }

                    //Si se encontró algun valor de conversion.
                    if (valorConversionM3 > 0)
                    {
                        admGuiaO.MetrosCubicos = Utiles.Validaciones.obtieneDouble(txtM3.Text);
                        pesoAfM3 = admGuiaO.MetrosCubicos * valorConversionM3;
                    }
                }

                double pesoTotalAforado = (pesoAf > pesoReal) ? pesoAf : pesoReal;
                if (pesoAfM3 > 0)
                {
                    if (pesoTotalAforado > pesoAfM3)
                    {
                        admGuiaO.PesoTotal = pesoTotalAforado;
                    }
                    else
                    {
                        admGuiaO.PesoTotal = pesoAfM3;
                    }
                }
                else
                {
                    admGuiaO.PesoTotal = (pesoAf > pesoReal) ? pesoAf : pesoReal;
                }

                admGuiaO.CantBultos = Convert.ToInt32(this.txtBultos.Text);

                admGuiaO.UnidadVentaID      = Utiles.Validaciones.obtieneEntero(Request.Form[ddlUnidadVenta.UniqueID]);
                admGuiaO.ModalidadEntregaID = Utiles.Validaciones.obtieneEntero(Request.Form[ddlModalidadEntrega.UniqueID]);

                admGuiaO.LimiteKg = 3000;
                admGuiaO.PorcentajeBonificacionAutorizacion = 0;
                admGuiaO.ImporteACobrarAutorizacion         = 0;

                admGuiaO.ValorDeclarado = Convert.ToDouble(this.txtValorDeclarado.Text);

                int modalidadEntregaID = Utiles.Validaciones.obtieneEntero(this.ddlModalidadEntrega.SelectedValue);

                //admGuiaO.UnidadNegocioID = this.UnidadNegocioID;
                IAgencia agencia = AgenciaFactory.GetAgencia();
                agencia.AgenciaByLocalidadSimulador(Utiles.Validaciones.obtieneEntero(ddlLocalidadRemitente), Utiles.Validaciones.obtieneEntero(ddlCodigoPostalRemitente), 1, 0, Utiles.Validaciones.obtieneEntero(this.ddlUnidadVenta.SelectedValue), modalidadEntregaID, 0, true);
                if (agencia.AgenciaID != 0)
                {
                    admGuiaO.AgenciaOrigenID = agencia.AgenciaID;
                }
                else
                {
                    throw new Exception("No es posible realizar el envío desde el origen seleccionado.");
                }


                agencia.AgenciaByLocalidadSimulador(Utiles.Validaciones.obtieneEntero(ddlLocalidadDestinatario), Utiles.Validaciones.obtieneEntero(ddlCodigoPostalDestinatario), 0, 1, Utiles.Validaciones.obtieneEntero(this.ddlUnidadVenta.SelectedValue), modalidadEntregaID, 0, true);
                if (agencia.AgenciaID != 0)
                {
                    admGuiaO.AgenciaDestinoID = agencia.AgenciaID;
                }
                else
                {
                    throw new Exception("No es posible realizar el envío hacia el destino seleccionado.");
                }

                int agenciaDestino = admGuiaO.AgenciaDestinoID;
                if (agenciaDestino > 0)
                {
                    admGuiaO.TipoDestinoID    = (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia;
                    admGuiaO.AgenciaDestinoID = agenciaDestino;
                }
                else if (agenciaDestino < 0)
                {
                    admGuiaO.TipoDestinoID    = (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.PuntoRecepcion;
                    admGuiaO.AgenciaDestinoID = agenciaDestino * -1;
                }

                //Por si hay que calcular comision de contrareembolso
                admGuiaO.ImporteCRGuia = 0;//(this.txtImporteContraReembolso.Text== "")? 0 : Convert.ToDouble(this.txtImporteContraReembolso.Text);
                //admGuiaO.ImporteCRGuia = admGuiaO.ValorDeclarado;

                admGuiaO.PagaEntregaEnDomicilio        = false;//this.chkPagaEnDomicilio.Checked;
                admGuiaO.PromocionServicioTransporteID = 0;

                admGuiaO.BonificacionAgencia = 0; //Utiles.Validaciones.obtieneEntero(this.txtBonificacionAgencia.Text);
                admGuiaO.UsuarioID           = 1; //this.usuario.UsuarioID;

                //esto le indica a AdminstracionGuias, que la agencia que calcula los importes
                //es automatizada, por lo tanto debe tener en cuenta el área de influencia
                admGuiaO.NoAutomatizada                 = false;
                admGuiaO.UnidadNegocioID                = 1;
                admGuiaO.ClienteCorp.ClienteID          = ClienteFacturacion1.ClienteCorporativoID ?? 0;
                admGuiaO.ClienteCorpRemitente.ClienteID = ClienteFacturacion1.ClienteCorporativoID ?? 0;
                admGuiaO.ClienteCorpRemitente.Nombre    = "";
                admGuiaO.ClienteCorpRemitente.DomicilioComercial.Localidad.LocalidadID        = Utiles.Validaciones.obtieneEntero(ddlLocalidadRemitente);
                admGuiaO.ClienteCorpRemitente.DomicilioGuia.Localidad.CodigoPostal            = CodPostalRemitente;
                admGuiaO.ClienteCorpRemitente.DomicilioGuia.Localidad.LocalidadID             = Utiles.Validaciones.obtieneEntero(ddlLocalidadRemitente);
                admGuiaO.ClienteCorpRemitente.DomicilioGuia.OCodigoPostal.CodigoPostalID      = Utiles.Validaciones.obtieneEntero(ddlCodigoPostalRemitente);
                admGuiaO.ClienteCorpRemitente.DomicilioComercial.OCodigoPostal.CodigoPostalID = Utiles.Validaciones.obtieneEntero(ddlCodigoPostalRemitente);

                admGuiaO.ClienteCorpDestinatario.ClienteID = ClienteFacturacion1.ClienteCorporativoID ?? 0;
                admGuiaO.ClienteCorpDestinatario.DomicilioComercial.Localidad.LocalidadID        = Utiles.Validaciones.obtieneEntero(ddlLocalidadDestinatario);
                admGuiaO.ClienteCorpDestinatario.DomicilioGuia.Localidad.CodigoPostal            = CodPostalDestinatario;
                admGuiaO.ClienteCorpDestinatario.DomicilioGuia.Localidad.LocalidadID             = Utiles.Validaciones.obtieneEntero(ddlLocalidadDestinatario);
                admGuiaO.ClienteCorpDestinatario.DomicilioGuia.OCodigoPostal.CodigoPostalID      = Utiles.Validaciones.obtieneEntero(ddlCodigoPostalDestinatario);
                admGuiaO.ClienteCorpDestinatario.DomicilioComercial.OCodigoPostal.CodigoPostalID = Utiles.Validaciones.obtieneEntero(ddlCodigoPostalDestinatario);
                admGuiaO.ClienteCorpDestinatario.Nombre = "";

                admGuiaO.RemiEsCorporativo = true;
                admGuiaO.DestEsCorporativo = true;
                admGuiaO.AgentePagoEsClienteCorporativo = true;
                admGuiaO.CalcularImportes();

                if (admGuiaO.TipoGuia == "A" || admGuiaO.TipoGuia == "E")
                {
                    this.lblImporteFlete.Text  = Formatos.Importe(admGuiaO.ImporteFlete);
                    this.lblImporteSeguro.Text = Formatos.Importe(admGuiaO.ImporteSeguro);
                    this.lblImporteRetiro.Text = Formatos.Importe(admGuiaO.ImporteRetiro);
                    //if(!this.chkPagaEnDomicilio.Checked)
                    this.lblImporteEntrega.Text = Formatos.Importe(admGuiaO.ImporteEntrega);
                    //else
                    //	this.lblImporteEntrega.Text = "0";
                    this.lblImporteComisCR.Text      = Formatos.Importe(admGuiaO.ImporteComisCR);
                    this.lblImporteNeto.Text         = Formatos.Importe(admGuiaO.ImporteNetoTotal);
                    this.lblImporteIVAInscripto.Text = Formatos.Importe(admGuiaO.ImporteIVAInscripto);
                    //}
                }
                else
                {
                    this.lblImporteFlete.Text  = Formatos.Importe(admGuiaO.ImporteFlete + admGuiaO.ImporteFleteIVA); //+ admGuiaO.ImporteRedespachoIVA
                    this.lblImporteSeguro.Text = Formatos.Importe(admGuiaO.ImporteSeguro + admGuiaO.ImporteSeguroIVA);
                    this.lblImporteRetiro.Text = Formatos.Importe(admGuiaO.ImporteRetiro + admGuiaO.ImporteRetiroIVA);
                    //if(!this.chkPagaEnDomicilio.Checked)
                    this.lblImporteEntrega.Text = Formatos.Importe(admGuiaO.ImporteEntrega + admGuiaO.ImporteEntregaIVA);
                    //else
                    //	this.lblImporteEntrega.Text = "0";
                    this.lblImporteComisCR.Text      = Formatos.Importe(admGuiaO.ImporteComisCR + admGuiaO.ImporteComisCRIVA);
                    this.lblImporteIVAInscripto.Text = "";
                    this.lblImporteNeto.Text         = "";
                    //}
                }

                if (admGuiaO.TarifarioClienteFleteID > 0)
                {
                    ITarifarioClienteFlete tari = TarifarioClienteFleteFactory.GetTarifarioClienteFlete();
                    tari.TarifarioClienteFleteID = admGuiaO.TarifarioClienteFleteID;
                    tari.Consultar();
                    this.txtTarifarioFlete.Text = tari.TarifarioClienteFleteDescrip;
                }
                else if (admGuiaO.TarifarioFleteID > 0)
                {
                    ITarifarioFlete tari = TarifarioFleteFactory.GetTarifarioFlete();
                    tari.TarifarioFleteID = admGuiaO.TarifarioFleteID;
                    tari.Consultar();
                    this.txtTarifarioFlete.Text = tari.TarifarioFleteDescrip;
                }
                else if (admGuiaO.TarifarioVentaRedespachoID > 0)
                {
                    ITarifario tari = TarifarioReDespachoFactory.GetTarifarioRedespacho("V");
                    tari.TarifarioID = admGuiaO.TarifarioVentaRedespachoID;
                    tari.Consultar();
                    this.txtTarifarioFlete.Text = tari.TarifarioDescrip;
                }

                if (admGuiaO.TarifarioClienteRetiroID > 0)
                {
                    ITarifario tariRetiro = TarifarioFactory.GetTarifario("CRE");
                    tariRetiro.TarifarioID = admGuiaO.TarifarioClienteRetiroID;
                    tariRetiro.Consultar();
                    this.txtTarifarioRetiro.Text = tariRetiro.TarifarioDescrip;
                }
                else if (admGuiaO.TarifarioRetiroID > 0)
                {
                    ITarifario tariRetiro = TarifarioFactory.GetTarifario("RE");
                    tariRetiro.TarifarioID = admGuiaO.TarifarioRetiroID;
                    tariRetiro.Consultar();
                    this.txtTarifarioRetiro.Text = tariRetiro.TarifarioDescrip;
                }

                if (admGuiaO.TarifarioClienteEntregaID > 0)
                {
                    ITarifario tariEntrega = TarifarioFactory.GetTarifario("CRE");
                    tariEntrega.TarifarioID = admGuiaO.TarifarioClienteEntregaID;
                    tariEntrega.Consultar();
                    this.txtTarifarioEntrega.Text = tariEntrega.TarifarioDescrip;
                }
                else if (admGuiaO.TarifarioEntregaID > 0)
                {
                    ITarifario tariRetiro = TarifarioFactory.GetTarifario("RE");
                    tariRetiro.TarifarioID = admGuiaO.TarifarioEntregaID;
                    tariRetiro.Consultar();
                    this.txtTarifarioEntrega.Text = tariRetiro.TarifarioDescrip;
                }

                this.lblImporteRedondeo.Text    = Formatos.Importe(admGuiaO.ImporteRedondeo);
                this.lblImporteTotalCobrar.Text = Formatos.Importe(admGuiaO.ImporteTotalCobrar);
            }
        }
Beispiel #4
0
        private void CalcularImportes()
        {
            double pesoAf   = Utiles.Validaciones.obtieneDouble(pesoAforadoH.Value); //(this.txtPesoTotalAforado.Text == "") ? 0 : Convert.ToDouble(this.txtPesoTotalAforado.Text);
            double pesoReal = Utiles.Validaciones.obtieneDouble(pesoRealH.Value);    //(this.txtPeso.Text == "") ? 0 : Convert.ToDouble(this.txtPeso.Text);

            //Crear instancia de la que resuelve los calculos de los importes
            //Cargar los datos necesarios para calcular el importe del flete
            admGuiaO.PesoKgReal = pesoReal;

            admGuiaO.PesoTotal  = (pesoAf > pesoReal) ? pesoAf : pesoReal;
            admGuiaO.CantBultos = Utiles.Validaciones.obtieneEntero(cantidadBultosH.Value);
            //admGuiaO.AgenciaOrigenID = this.AgenciaConectadaID;

            //admGuiaO.UnidadVentaID = Utiles.Validaciones.obtieneEntero(this.ddlUnidadVenta.SelectedValue);
            admGuiaO.UnidadVentaID = Utiles.Validaciones.obtieneEntero(unidadVentaIDH.Value);

            admGuiaO.ModalidadEntregaID = Utiles.Validaciones.obtieneEntero(modalidadEntregaIDH.Value);

            admGuiaO.LimiteKg = 3000;
            admGuiaO.PorcentajeBonificacionAutorizacion = 0;
            admGuiaO.ImporteACobrarAutorizacion         = 0;

            admGuiaO.ValorDeclarado = Utiles.Validaciones.obtieneDouble(valorDeclaradoH.Value);

            //admGuiaO.UnidadNegocioID = this.UnidadNegocioID;
            IAgencia agencia = AgenciaFactory.GetAgencia();

            admGuiaO.AgenciaOrigenID = Utiles.Validaciones.obtieneEntero(agenciaOrigenIDH.Value);//agencia.AgenciaID;

            admGuiaO.AgenciaDestinoID = Utiles.Validaciones.obtieneEntero(agenciaDestinoIDH.Value);

            admGuiaO.TipoDestinoID = (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia;

            //Por si hay que calcular comision de contrareembolso
            admGuiaO.ImporteCRGuia = 0;//(this.txtImporteContraReembolso.Text== "")? 0 : Convert.ToDouble(this.txtImporteContraReembolso.Text);
            //admGuiaO.ImporteCRGuia = admGuiaO.ValorDeclarado;

            admGuiaO.PagaEntregaEnDomicilio        = false;//this.chkPagaEnDomicilio.Checked;
            admGuiaO.PromocionServicioTransporteID = 0;

            admGuiaO.BonificacionAgencia = 0; //Utiles.Validaciones.obtieneEntero(this.txtBonificacionAgencia.Text);
            admGuiaO.UsuarioID           = 1; //this.usuario.UsuarioID;

            //esto le indica a AdminstracionGuias, que la agencia que calcula los importes
            //es automatizada, por lo tanto debe tener en cuenta el área de influencia
            admGuiaO.NoAutomatizada  = false;
            admGuiaO.UnidadNegocioID = 1;

            admGuiaO.ClienteEventRemitente.Domicilio.Localidad.LocalidadID     = Utiles.Validaciones.obtieneEntero(localidadOrigenIDH.Value);  // Utiles.Validaciones.obtieneEntero(this.txtLocalidadSelec.Text);
            admGuiaO.ClienteEventRemitente.Domicilio.Localidad.CodigoPostal    = localidadOrigenCCPPH.Value;                                   // Utiles.Validaciones.obtieneEntero(this.txtLocalidadSelec.Text);
            admGuiaO.ClienteEventDestinatario.Domicilio.Localidad.LocalidadID  = Utiles.Validaciones.obtieneEntero(localidadDestinoIDH.Value); //Utiles.Validaciones.obtieneEntero(this.txtLocalidadDestinoSelec.Text);
            admGuiaO.ClienteEventDestinatario.Domicilio.Localidad.CodigoPostal = localidadDestinoCCPPH.Value;

            admGuiaO.NoCalcularPromociones = false;

            DateTime horaInicio = new DateTime();
            DateTime horaFin    = new DateTime();

            horaInicio = DateTime.Now;
            admGuiaO.CalcularImportes();
            horaFin = DateTime.Now;

            double segundosTolerancia = Utiles.Validaciones.obtieneDouble(TiempoMonitorProcesoH.Value);//Utiles.Validaciones.obtieneDouble(System.Configuration.ConfigurationManager.AppSettings["TiempoMonitorProceso"].ToString());
            double segundos           = horaFin.Subtract(horaInicio).TotalSeconds;

            if (segundos > segundosTolerancia)
            {
                tblIncorrecto.Visible = true;
                tblCorrecto.Visible   = false;
            }
            else
            {
                tblIncorrecto.Visible = false;
                tblCorrecto.Visible   = true;
            }
            segundos = Matematicas.Redondear(segundos, 3);

            lblHora.Text   = horaInicio.ToString();
            lblTiempo.Text = segundos.ToString() + " segundos";
            Logger.Info("Calculo de Importes. " + segundos.ToString() + " segundos . Hora Inicio: " + horaInicio.ToString() + ". Hora Fin: " + horaFin.ToString());
        }