Exemplo n.º 1
0
        public ActionResult UploadInvoiceFile(UploadInvoiceModel model, int id = 0)
        {
            int? historyActionId = null;

            if (!Authorized(RoleType.SystemManager)) return Error(Loc.Dic.error_no_permission);

            if (!ModelState.IsValid)
            {
                ViewBag.OrderID = id;
                return View(model);
            }

            Order order;
            bool isModelValid = true;

            using (OrdersHistoryRepository ordersHistoryRep = new OrdersHistoryRepository(CurrentUser.CompanyId, CurrentUser.UserId, id))
            using (OrderToAllocationRepository orderAlloRep = new OrderToAllocationRepository())
            using (OrdersRepository ordersRep = new OrdersRepository(CurrentUser.CompanyId))
            {
                order = ordersRep.GetEntity(id, "Budget", "Orders_OrderToAllocation");

                if (order == null) return Error(Loc.Dic.error_order_get_error);

                if (order.StatusId < (int)StatusType.ApprovedPendingInvoice) return Error(Loc.Dic.error_order_not_approved);
                DateTime minValueDate = new DateTime(order.Budget.Year, order.Orders_OrderToAllocation.Max(x => x.MonthId), FIRST_DAY_OF_MONTH);
                if (model.ValueDate < minValueDate)
                {
                    isModelValid = false;
                    ModelState.AddModelError("ValueDate", Loc.Dic.error_ValueDateHaveToBeLaterThenLatestAllocationDate);
                }
                if (!model.File.FileName.Contains('.'))
                {
                    isModelValid = false;
                    ModelState.AddModelError("File", Loc.Dic.validation_FileNameIsInvalid);
                }

                if (!isModelValid)
                {
                    ViewBag.OrderID = id;
                    return View(model);
                }

                if (!model.isUpdate)
                {
                    order.StatusId = (int)StatusType.InvoiceScannedPendingOrderCreator;
                    order.LastStatusChangeDate = DateTime.Now;
                }
                order.InvoiceNumber = model.InvoiceNumber;
                order.InvoiceDate = model.InvoiceDate;
                order.ValueDate = model.ValueDate;
                if (ordersRep.Update(order) == null) return Error(Loc.Dic.error_database_error);

                historyActionId = (int)HistoryActions.InvoiceScanned;
                Orders_History orderHistory = new Orders_History();
                if (historyActionId.HasValue) ordersHistoryRep.Create(orderHistory, historyActionId.Value);

                SaveUniqueFile(model.File, INVOICE_FOLDER_NAME, id);

                //EmailMethods emailMethods = new EmailMethods("*****@*****.**", Loc.Dic.OrdersSystem, "noreply50100200");
                //emailMethods.sendGoogleEmail(order.User.Email, order.User.FirstName, Loc.Dic.OrderStatusUpdateEvent, Loc.Dic.OrderStatusOf + " " + order.OrderNumber + " " + Loc.Dic.OrderStatusChangedTo + Translation.Status((StatusType)order.StatusId) + "\n" + Url.Action("MyOrders", "Orders", null, "http"));

                SendNotifications.OrderStatusChanged(order, CurrentUser, Url);

                return RedirectToAction("Index");
            }
        }
Exemplo n.º 2
0
        public ActionResult UploadInvoiceFile(int id = 0)
        {
            if (!Authorized(RoleType.SystemManager)) return Error(Loc.Dic.error_no_permission);

            Order order;
            using (OrdersRepository ordersRep = new OrdersRepository(CurrentUser.CompanyId))
            {
                order = ordersRep.GetEntity(id);
            }

            if (order == null) return Error(Loc.Dic.error_order_not_found);
            if (order.StatusId < (int)StatusType.ApprovedPendingInvoice) return Error(Loc.Dic.error_order_not_approved);

            ViewBag.OrderID = id;
            if (order.StatusId > (int)StatusType.ApprovedPendingInvoice)
            {
                UploadInvoiceModel model = new UploadInvoiceModel();
                model.InvoiceNumber = order.InvoiceNumber;
                model.InvoiceDate = order.InvoiceDate.Value;
                model.ValueDate = order.ValueDate.Value;
                model.isUpdate = true;

                return View(model);
            }
            else
            {
                return View();
            }
        }