Ejemplo n.º 1
0
        public ActionResult CostesadicionalesUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] TransformacionesCostesadicionalesModel item)
        {
            var model = Session[sessioncostes] as List <TransformacionesCostesadicionalesModel>;

            if (ModelState.IsValid)
            {
                var editItem = model.Single(f => f.Id == item.Id);
                if (item.Tipodocumento == TipoCosteAdicional.Documento && string.IsNullOrEmpty(item.Referenciadocumento))
                {
                    ModelState.AddModelError("Referenciadocumento", "El campo es obligatorio");
                }
                {
                    if (item.Tipodocumento == TipoCosteAdicional.Importefijo)
                    {
                        item.Referenciadocumento = string.Empty;
                        item.Total = Math.Round((double)(item.Importe * (item.Porcentaje / 100.0)), 2);
                    }

                    if (item.Tipodocumento == TipoCosteAdicional.Costexm2 || item.Tipodocumento == TipoCosteAdicional.Costexm3)
                    {
                        item.Referenciadocumento = string.Empty;
                        item.Total = 0;
                    }


                    editItem.Tipodocumento       = item.Tipodocumento;
                    editItem.Referenciadocumento = item.Referenciadocumento;
                    editItem.Importe             = item.Importe;
                    editItem.Porcentaje          = item.Porcentaje;
                    editItem.Total       = item.Total;
                    editItem.Tipocoste   = item.Tipocoste;
                    editItem.Tiporeparto = item.Tiporeparto;
                    editItem.Notas       = item.Notas;

                    Session[sessioncostes] = model;
                }
            }

            return(PartialView("_transformacionescostesadicionales", model));
        }
Ejemplo n.º 2
0
        public ActionResult CostesadicionalesNew([ModelBinder(typeof(DevExpressEditorsBinder))] TransformacionesCostesadicionalesModel item)
        {
            var model = Session[sessioncostes] as List <TransformacionesCostesadicionalesModel>;

            if (ModelState.IsValid)
            {
                var max = model.Any() ? model.Max(f => f.Id) : 0;
                item.Id = max + 1;
                if (item.Tipodocumento == TipoCosteAdicional.Documento &&
                    string.IsNullOrEmpty(item.Referenciadocumento))
                {
                    ModelState.AddModelError("Referenciadocumento", "El campo es obligatorio");
                }
                else
                {
                    if (item.Tipodocumento == TipoCosteAdicional.Importefijo)
                    {
                        item.Referenciadocumento = string.Empty;

                        item.Total = Math.Round((double)(item.Importe * (item.Porcentaje / 100.0)), 2);

                        model.Add(item);
                        Session[sessioncostes] = model;
                    }
                    else
                    //        {
                    //            // xm2 xm3
                    //            item.Referenciadocumento = string.Empty;
                    //            item.Total = 0;
                    //            model.Add(item);
                    //            Session[sessioncostes] = model;
                    //        }
                    //    }
                    //}
                    {
                        item.Referenciadocumento = string.Empty;

                        // Código para calcular el coste adicional cuando tipoDocumento es xm2 o xm3
                        var tipoDocumento   = item.Tipodocumento;
                        var codUnidadMedida = "-1";

                        if (tipoDocumento == TipoCosteAdicional.Costexm2)
                        {
                            codUnidadMedida = "02";
                        }
                        else if (tipoDocumento == TipoCosteAdicional.Costexm3)
                        {
                            codUnidadMedida = "03";
                        }

                        var lineas      = Session[sessionentrada] as List <TransformacionesentradaLinModel>;
                        var totalMetros = 0.0d;
                        foreach (var l in lineas)
                        {
                            var unidadMedida = l.Fkunidades;
                            if (unidadMedida.Equals(codUnidadMedida))
                            {
                                totalMetros += Math.Round((double)l.Metros, 3);
                            }
                        }
                        //item.Total = Math.Round((double)item.Importe * totalMetros, 2);
                        item.Total = Math.Round((double)(item.Importe * (item.Porcentaje / 100.0)), 2);
                        model.Add(item);
                        Session[sessioncostes] = model;
                    }
                }
            }

            return(PartialView("_transformacionescostesadicionales", model));
        }