Esempio n. 1
0
        internal void CopyValues(PrecioTrayectoInfo source)
        {
            if (source == null)
            {
                return;
            }

            _record.CopyValues(source._base.Record);
        }
        public virtual void UpdateGastos(bool estimated = true)
        {
            if (Gastos == null)
            {
                return;
            }

            _base.GastosGenerales        = 0;
            _base.OtrosGastos            = 0;
            _base.Record.GProvTotal      = 0;
            _base.Record.GNavTotal       = 0;
            _base.Record.GDespTotal      = 0;
            _base.Record.GTransDestTotal = 0;
            _base.Record.GTransTotal     = 0;

            _base.Record.GProvTotal = Gastos.Where(x => x.ECategoriaGasto == ECategoriaGasto.Stock).Sum(x => x.Total);

            _base.Record.GNavTotal = Gastos.Where(x =>
                                                  x.ECategoriaGasto == ECategoriaGasto.GeneralesExpediente &&
                                                  x.ETipoAcreedor == ETipoAcreedor.Naviera
                                                  ).Sum(x => x.Total);

            _base.Record.GDespTotal = Gastos.Where(x =>
                                                   x.ECategoriaGasto == ECategoriaGasto.GeneralesExpediente &&
                                                   x.ETipoAcreedor == ETipoAcreedor.Despachante
                                                   ).Sum(x => x.Total);

            _base.Record.GTransDestTotal = Gastos.Where(x =>
                                                        x.ECategoriaGasto == ECategoriaGasto.GeneralesExpediente &&
                                                        x.ETipoAcreedor == ETipoAcreedor.TransportistaDestino
                                                        ).Sum(x => x.Total);

            _base.Record.GTransTotal = Gastos.Where(x =>
                                                    x.ECategoriaGasto == ECategoriaGasto.GeneralesExpediente &&
                                                    x.ETipoAcreedor == ETipoAcreedor.TransportistaOrigen
                                                    ).Sum(x => x.Total);

            _base.OtrosGastos += Gastos.Where(x =>
                                              !new List <ECategoriaGasto> {
                ECategoriaGasto.Stock, ECategoriaGasto.GeneralesExpediente
            }.Contains(x.ECategoriaGasto) &&
                                              x.OidFactura == 0
                                              ).Sum(x => x.Total);

            _base.OtrosGastosFacturas += Gastos.Where(x =>
                                                      !new List <ECategoriaGasto> {
                ECategoriaGasto.Stock, ECategoriaGasto.GeneralesExpediente
            }.Contains(x.ECategoriaGasto) &&
                                                      x.OidFactura != 0
                                                      ).Sum(x => x.Total);

            //Gastos por tipo de acreedor

            /*foreach (GastoInfo item in Gastos)
             * {
             *      switch (item.ECategoriaGasto)
             *      {
             *              case ECategoriaGasto.Stock:
             * _base.Record.GProvTotal += item.Total;
             *                      break;
             *
             *              case ECategoriaGasto.GeneralesExpediente:
             *
             *                      switch (item.ETipoAcreedor)
             *                      {
             *                              case ETipoAcreedor.Naviera:
             *      _base.Record.GNavTotal += item.Total;
             *                                      break;
             *
             *                              case ETipoAcreedor.Despachante:
             *      _base.Record.GDespTotal += item.Total;
             *                                      break;
             *
             *                              case ETipoAcreedor.TransportistaDestino:
             *      _base.Record.GTransTotal += item.Total;
             *                                      break;
             *
             *                              case ETipoAcreedor.TransportistaOrigen:
             *      _base.Record.GTransDestTotal += item.Total;
             *                                      break;
             *                      }
             *
             *                      break;
             *
             *              default:
             *                      _base.OtrosGastos += item.Total;
             *                      break;
             *      }
             * }*/

            //Gasto Estimado Naviera
            if (GNavTotal == 0 && estimated)
            {
                NavieraInfo nav = NavieraInfo.Get(OidNaviera, true);
                if (nav != null)
                {
                    PrecioTrayectoInfo precio = nav.PrecioTrayectos.GetByPorts(PuertoOrigen, PuertoDestino);
                    _base.Record.GNavTotal = (precio != null) ? precio.Precio : 0;
                    _base.Record.GNavFac   = Resources.Defaults.ESTIMADO;
                }
            }

            //Gasto Estimado Tranporte Origen
            if (GTransTotal == 0 && estimated)
            {
                TransporterInfo tr = TransporterInfo.Get(OidTransOrigen, ETipoAcreedor.TransportistaOrigen, true);
                if (tr != null)
                {
                    PrecioOrigenInfo precio = tr.PrecioOrigenes.GetByProvAndPort(OidProveedor, PuertoOrigen);
                    _base.Record.GTransTotal = (precio != null) ? precio.Precio : 0;
                    _base.Record.GTransFac   = Resources.Defaults.ESTIMADO;
                }
            }

            //Gasto Estimado Despachante
            if (GDespTotal == 0 && estimated)
            {
                DespachanteInfo des = DespachanteInfo.Get(OidDespachante, false);
                if (des != null)
                {
                    //PrecioTrayectoInfo precio = nav.PrecioTrayectos.GetByPorts(PuertoOrigen, PuertoDestino);
                    _base.Record.GDespTotal = 50; //(precio != null) ? precio.Precio : 0;
                    _base.Record.GDespFac   = Resources.Defaults.ESTIMADO;
                }
            }

            //Gasto Estimado Transporte Destino
            if (GTransDestTotal == 0 && estimated)
            {
                TransporterInfo tr = TransporterInfo.Get(OidTransDestino, ETipoAcreedor.TransportistaDestino, true);
                if (tr != null)
                {
                    PrecioDestinoInfo precio = tr.PrecioDestinos.GetByPort(PuertoDestino);
                    _base.Record.GTransDestTotal = (precio != null) ? precio.Precio : 0;
                    _base.Record.GTransDestFac   = Resources.Defaults.ESTIMADO;
                }
            }

            _base.GastosGenerales += GNavTotal + GDespTotal + GTransDestTotal + GTransTotal;
        }