public static bool RecalcularImportesTarifarioCliente(ITarifarioClienteFlete tariFleteNuevo, int usuarioID)
        {
            ITarifarioFleteZona tariZonaRef = TarifarioFleteZonaFactory.GetTarifarioFleteZona();

            tariZonaRef.TarifarioFleteZonaID = tariFleteNuevo.TarifarioFleteZonaReferenciaID;
            tariZonaRef.Consultar();

            //ITarifarioFlete
            ITarifariosFleteZonaTopeCol zonasTopes = TarifarioFleteZonaTopeColFactory.GetTarifarioFleteZonaTopeCol();

            zonasTopes.TarifarioFleteID = tariZonaRef.TarifarioFleteID;
            zonasTopes.Consultar();

            bool esPorcentaje;

            if (tariFleteNuevo.PorcentajeAjuste != 0)
            {
                esPorcentaje = true;
            }
            else
            {
                esPorcentaje = false;
            }

            //Iterar por la coleccion de importes de topes y asignar el importe que corresponda.
            ITarifariosClienteFleteTopeCol topesCol = tariFleteNuevo.TopesCol;


            for (int i = 0; i < topesCol.getCount(); i++)
            {
                //Recuperar el importe de referencia de la coleccion de topes
                ITarifarioClienteFleteTope oTope = topesCol.GetTarifarioFleteTope(i);
                //ITarifarioFleteZona oZona = zonasCol.GetTarifarioFleteZona(i);
                ITarifarioFleteZonaTope oZonaTope = zonasTopes.ConsultarExisteByZonaTopeID(oTope.Tope.TopeID, tariZonaRef.Zona.ZonaID);
                //ITarifarioFleteZona oZonaRef = tariRef.ZonasCol.GetTarifarioFleteZonaByZonaID (oZona.Zona.ZonaID);

                if (tariFleteNuevo.FactorAjuste != "")
                {
                    if (esPorcentaje)
                    {
                        if (tariFleteNuevo.FactorAjuste == "+")
                        {
                            //oZona.ImporteKgExcedente = oZonaRef.ImporteKgExcedente + (oZonaRef.ImporteKgExcedente * (tariFleteNuevo.PorcentajeAjuste/100)) ;
                            oTope.Importe = oZonaTope.Importe + (oZonaTope.Importe * (tariFleteNuevo.PorcentajeAjuste / 100));
                            if (tariFleteNuevo.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo)
                            {
                                oTope.ImporteBultoExc = oZonaTope.ImporteBultoExc + (oZonaTope.ImporteBultoExc * (tariFleteNuevo.PorcentajeAjuste / 100));
                            }
                        }
                        else
                        {
                            oTope.Importe = oZonaTope.Importe - (oZonaTope.Importe * (tariFleteNuevo.PorcentajeAjuste / 100));
                            if (oTope.Importe < 0)
                            {
                                oTope.Importe = 0;
                            }
                            if (tariFleteNuevo.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo)
                            {
                                oTope.ImporteBultoExc = oZonaTope.ImporteBultoExc - (oZonaTope.ImporteBultoExc * (tariFleteNuevo.PorcentajeAjuste / 100));
                                if (oTope.ImporteBultoExc < 0)
                                {
                                    oTope.ImporteBultoExc = 0;
                                }
                            }
                        }
                    }
                    else
                    {
                        if (tariFleteNuevo.FactorAjuste == "+")
                        {
                            oTope.Importe = oZonaTope.Importe + tariFleteNuevo.ImporteAjuste;
                            if (tariFleteNuevo.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo)
                            {
                                oTope.ImporteBultoExc = oZonaTope.ImporteBultoExc + tariFleteNuevo.ImporteAjuste;
                            }
                        }
                        else
                        {
                            oTope.Importe = oZonaTope.Importe - tariFleteNuevo.ImporteAjuste;
                            if (oTope.Importe < 0)
                            {
                                oTope.Importe = 0;
                            }
                            if (tariFleteNuevo.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo)
                            {
                                oTope.ImporteBultoExc = oZonaTope.ImporteBultoExc - tariFleteNuevo.ImporteAjuste;
                                if (oTope.ImporteBultoExc < 0)
                                {
                                    oTope.ImporteBultoExc = 0;
                                }
                            }
                        }
                    }
                }
                else
                {
                    oTope.Importe = oZonaTope.Importe;
                    if (tariFleteNuevo.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo)
                    {
                        oTope.ImporteBultoExc = oZonaTope.ImporteBultoExc;
                    }
                }
            }

            try
            {
                if (tariFleteNuevo.Guardar(usuarioID))
                {
                    if (tariFleteNuevo.TopesCol.Guardar(usuarioID))
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception)
            {
                return(false);
            }
        }
Beispiel #2
0
        private void butTopes_Click(object sender, System.EventArgs e)
        {
            ITarifariosClienteFleteTopeCol tariTopes = tariFlete.TopesCol;

            tariTopes.TarifarioClienteFleteID = tariFlete.TarifarioClienteFleteID;
            string vol = "";
            bool   bul = false;
            bool   bulKilo = false;
            bool   isOK = true;
            double importe, importeBultoExc;

            /*SFE Se agrega validador de volumen para Bulto_Variable, a pedido de Carlos Marcon*/
            if (tariFlete.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto || tariFlete.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Variable)
            {
                bul = true;
            }
            if (tariFlete.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo)
            {
                bul     = true;
                bulKilo = true;
            }
            // SFE: Borrar esto si no se usa. Es decir si no se muestra el excedente por bulto_variable
//			/*SFE Agregar Validador para Bulto Variable en el importe bulto excedente*/
//			if(tariFlete.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Variable)
//			{
//				bulKilo = true;
//			}
            foreach (DataGridItem item in dtgTopesDisponibles.Items)
            {
                if (((CheckBox)item.FindControl("chkTopeDisp")).Checked)
                {
                    if (bul)
                    {
                        BaseValidator          valVolumen = (RegularExpressionValidator)((PlaceHolder)item.FindControl("phValidVol")).FindControl("valVolumen");
                        RequiredFieldValidator reqVolumen = (RequiredFieldValidator)((PlaceHolder)item.FindControl("phValidVol")).FindControl("reqVolumen");
                        valVolumen.Enabled = true;
                        reqVolumen.Enabled = true;
                        valVolumen.Validate();
                        reqVolumen.Validate();
                        if (!valVolumen.IsValid || !reqVolumen.IsValid)
                        {
                            isOK = false;
                        }
                        //}
                        if (bulKilo)
                        {
                            BaseValidator          valImporteBultoDisp = (RegularExpressionValidator)((PlaceHolder)item.FindControl("phValidImporteBultoDisp")).FindControl("valImporteBultoDisp");
                            RequiredFieldValidator reqImporteBultoDisp = (RequiredFieldValidator)((PlaceHolder)item.FindControl("phValidImporteBultoDisp")).FindControl("reqImporteBultoDisp");
                            valImporteBultoDisp.Enabled = true;
                            reqImporteBultoDisp.Enabled = true;
                            valImporteBultoDisp.Validate();
                            reqImporteBultoDisp.Validate();
                            if (!valImporteBultoDisp.IsValid || !reqImporteBultoDisp.IsValid)
                            {
                                isOK = false;
                            }
                        }
                    }
                    BaseValidator          valImporteDisp = (RegularExpressionValidator)((PlaceHolder)item.FindControl("phValidImporteDisp")).FindControl("valImporteDisp");
                    RequiredFieldValidator reqImporteDisp = (RequiredFieldValidator)((PlaceHolder)item.FindControl("phValidImporteDisp")).FindControl("reqImporteDisp");
                    valImporteDisp.Enabled = true;
                    reqImporteDisp.Enabled = true;
                    valImporteDisp.Validate();
                    reqImporteDisp.Validate();
                    if (!valImporteDisp.IsValid || !reqImporteDisp.IsValid)
                    {
                        isOK = false;
                    }
                }
            }
            if (!isOK)
            {
                return;
            }
            foreach (DataGridItem item in dtgTopesDisponibles.Items)
            {
                if (((CheckBox)item.FindControl("chkTopeDisp")).Checked)
                {
                    importe = Convert.ToDouble(((TextBox)item.FindControl("txtImporteDisp")).Text);

                    vol = ((TextBox)item.FindControl("txtVolumen")).Text;

                    importeBultoExc = ((TextBox)item.FindControl("txtImporteBultoDisp")).Text == "" ? 0 : Convert.ToDouble(((TextBox)item.FindControl("txtImporteBultoDisp")).Text);
                    ITarifarioClienteFleteTope oTariTope = tariTopes.AddTarifarioFleteTope();
                    oTariTope.Tope.TopeID      = Convert.ToInt32(dtgTopesDisponibles.DataKeys[item.DataSetIndex]);
                    oTariTope.Tope.TopeKgHasta = Convert.ToInt32(((Label)item.FindControl("lblTopeKgHasta")).Text);
                    /*SFE Asignar el item checkeado o no en la tabla TopesDisponibles*/
                    oTariTope.KgVariable = ((CheckBox)item.FindControl("chkTopeDispVar")).Checked;
                    //oTariTope.Importe = Convert.ToDouble(((TextBox)item.FindControl("txtImporteDisp")).Text);
                    if (bul)
                    {
                        oTariTope.Cm3Hasta = Convert.ToDouble(vol);
                    }
                    if (bulKilo)
                    {
                        oTariTope.ImporteBultoExc = importeBultoExc;
                    }
                    if (tariFlete.TarifarioFleteZonaReferenciaID != 0)
                    {
                        oTariTope.Importe = AdministrarTarifarios.CalcularImporte(importe, tariFlete.FactorAjuste, tariFlete.PorcentajeAjuste, tariFlete.ImporteAjuste);
                        if (bulKilo)
                        {
                            oTariTope.ImporteBultoExc = AdministrarTarifarios.CalcularImporte(importeBultoExc, tariFlete.FactorAjuste, tariFlete.PorcentajeAjuste, tariFlete.ImporteAjuste);
                            if (oTariTope.ImporteBultoExc < 0)
                            {
                                oTariTope.ImporteBultoExc = 0;
                            }
                        }
                        if (oTariTope.Importe < 0)
                        {
                            oTariTope.Importe = 0;
                        }
                    }
                    else
                    {
                        oTariTope.Importe = importe;
                        if (bulKilo)
                        {
                            oTariTope.ImporteBultoExc = importeBultoExc;
                        }
                    }
                }
            }

            // Obtenemos el usuario que ejecuta la acción.
            IUsuarios usuarioConectado = UsuariosFactory.GetUsuario();

            usuarioConectado.Login = this.UsuarioConectadoID;
            usuarioConectado.ConsultarByLogin();

            try
            {
                tariTopes.Guardar(usuarioConectado.UsuarioID);
                this.BindGridTopesDisp(0);
                this.BindGridTopesTarif(0);
                this.SetearPorTarifarioReferencia();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            Session["tarifario"] = tariFlete;
        }