Пример #1
0
        public dynamic GetInfoDetail(int Id)
        {
            DeliveryOrderDetail model = new DeliveryOrderDetail();

            try
            {
                model = _deliveryOrderDetailService.GetObjectById(Id);
            }
            catch (Exception ex)
            {
                LOG.Error("GetInfo", ex);
                model.Errors.Add("Generic", "Error : " + ex);
            }

            return(Json(new
            {
                model.Id,
                model.Code,
                model.SalesOrderDetailId,
                SalesOrderDetail = _salesOrderDetailService.GetObjectById(model.SalesOrderDetailId).Code,
                model.ItemId,
                Item = _itemService.GetObjectById(model.ItemId).Name,
                model.Quantity,
                model.Errors
            }, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        public ActionResult SetItemProductName(int id, string value)
        {
            var    entity = DeliveryOrderDetail.Find(id);
            string val    = (value ?? string.Empty).Trim();

            if (entity.DeliveryOrder.IsCompleted || entity.DeliveryOrder.IsCancelled)
            {
                Response.StatusCode = 400;
                return(Content(Resources.ItemAlreadyCompletedOrCancelled));
            }

            if (val.Length == 0)
            {
                entity.ProductName = entity.Product.Name;
            }
            else
            {
                entity.ProductName = val;
            }

            using (var scope = new TransactionScope()) {
                entity.UpdateAndFlush();
            }

            return(Json(new {
                id = entity.Id,
                value = entity.ProductName
            }));
        }
Пример #3
0
        public dynamic DeleteDetail(DeliveryOrderDetail model)
        {
            try
            {
                if (!AuthenticationModel.IsAllowed("Edit", Core.Constants.Constant.MenuName.DeliveryOrder, Core.Constants.Constant.MenuGroupName.Transaction))
                {
                    Dictionary <string, string> Errors = new Dictionary <string, string>();
                    Errors.Add("Generic", "You are Not Allowed to Edit record");

                    return(Json(new
                    {
                        Errors
                    }, JsonRequestBehavior.AllowGet));
                }

                var data = _deliveryOrderDetailService.GetObjectById(model.Id);
                model = _deliveryOrderDetailService.SoftDeleteObject(data);
            }
            catch (Exception ex)
            {
                LOG.Error("Delete Failed", ex);
                Dictionary <string, string> Errors = new Dictionary <string, string>();
                Errors.Add("Generic", "Error " + ex);

                return(Json(new
                {
                    Errors
                }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new
            {
                model.Errors
            }));
        }
 public bool ValidUpdateObject(DeliveryOrderDetail deliveryOrderDetail, IDeliveryOrderDetailService _deliveryOrderDetailService,
                               IDeliveryOrderService _deliveryOrderService, ISalesOrderDetailService _salesOrderDetailService, IItemService _itemService)
 {
     deliveryOrderDetail.Errors.Clear();
     VUpdateObject(deliveryOrderDetail, _deliveryOrderDetailService, _deliveryOrderService, _salesOrderDetailService, _itemService);
     return(isValid(deliveryOrderDetail));
 }
        public DeliveryOrderDetail ConfirmObject(DeliveryOrderDetail deliveryOrderDetail, DateTime ConfirmationDate, IDeliveryOrderService _deliveryOrderService, ISalesOrderDetailService _salesOrderDetailService,
                                                 IStockMutationService _stockMutationService, IItemService _itemService, IBarringService _barringService, IWarehouseItemService _warehouseItemService)
        {
            deliveryOrderDetail.ConfirmationDate = ConfirmationDate;
            if (_validator.ValidConfirmObject(deliveryOrderDetail, _deliveryOrderService, this, _salesOrderDetailService, _itemService, _warehouseItemService))
            {
                deliveryOrderDetail = _repository.ConfirmObject(deliveryOrderDetail);

                DeliveryOrder         deliveryOrder  = _deliveryOrderService.GetObjectById(deliveryOrderDetail.DeliveryOrderId);
                WarehouseItem         warehouseItem  = _warehouseItemService.FindOrCreateObject(deliveryOrder.WarehouseId, deliveryOrderDetail.ItemId);
                Item                  item           = _itemService.GetObjectById(deliveryOrderDetail.ItemId);
                IList <StockMutation> stockMutations = _stockMutationService.CreateStockMutationForDeliveryOrder(deliveryOrderDetail, warehouseItem);
                foreach (var stockMutation in stockMutations)
                {
                    //item.PendingDelivery -= deliveryOrderDetail.Quantity;
                    //item.Quantity -= deliveryOrderDetail.Quantity;
                    _stockMutationService.StockMutateObject(stockMutation, _itemService, _barringService, _warehouseItemService);
                }

                SalesOrderDetail salesOrderDetail = _salesOrderDetailService.GetObjectById(deliveryOrderDetail.SalesOrderDetailId);
                _salesOrderDetailService.SetDeliveryComplete(salesOrderDetail, deliveryOrderDetail.Quantity);
            }
            return(deliveryOrderDetail);

            ;
        }
Пример #6
0
        public dynamic InsertDetail(DeliveryOrderDetail model)
        {
            try
            {
                if (!AuthenticationModel.IsAllowed("Edit", Core.Constants.Constant.MenuName.DeliveryOrder, Core.Constants.Constant.MenuGroupName.Transaction))
                {
                    Dictionary <string, string> Errors = new Dictionary <string, string>();
                    Errors.Add("Generic", "You are Not Allowed to Edit record");

                    return(Json(new
                    {
                        Errors
                    }, JsonRequestBehavior.AllowGet));
                }

                model = _deliveryOrderDetailService.CreateObject(model, _deliveryOrderService, _salesOrderDetailService, _salesOrderService, _itemService);
            }
            catch (Exception ex)
            {
                LOG.Error("Insert Failed", ex);
                Dictionary <string, string> Errors = new Dictionary <string, string>();
                Errors.Add("Generic", "Error " + ex);

                return(Json(new
                {
                    Errors
                }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new
            {
                model.Errors
            }));
        }
Пример #7
0
        public ActionResult SetItemQuantity(int id, decimal value)
        {
            var entity = DeliveryOrderDetail.Find(id);

            var product = entity.Product;

            if (entity.DeliveryOrder.IsCompleted || entity.DeliveryOrder.IsCancelled)
            {
                Response.StatusCode = 400;
                return(Content(Resources.ItemAlreadyCompletedOrCancelled));
            }

            if (value >= 0 && value <= GetRemainQuantityBySalesOrderDetail(entity.OrderDetail))
            {
                entity.Quantity = value;
            }
            else
            {
                entity.Quantity = GetRemainQuantityBySalesOrderDetail(entity.OrderDetail);
            }

            using (var scope = new TransactionScope()) {
                entity.UpdateAndFlush();
            }

            return(Json(new {
                id = entity.Id,
                value = entity.FormattedValueFor(x => x.Quantity)
            }));
        }
 public DeliveryOrderDetail VHasConfirmationDate(DeliveryOrderDetail obj)
 {
     if (obj.ConfirmationDate == null)
     {
         obj.Errors.Add("ConfirmationDate", "Tidak boleh kosong");
     }
     return(obj);
 }
 public DeliveryOrderDetail VHasNotBeenConfirmed(DeliveryOrderDetail deliveryOrderDetail)
 {
     if (deliveryOrderDetail.IsConfirmed)
     {
         deliveryOrderDetail.Errors.Add("Generic", "Tidak boleh sudah dikonfirmasi.");
     }
     return(deliveryOrderDetail);
 }
 public DeliveryOrderDetail VNonNegativeQuantity(DeliveryOrderDetail deliveryOrderDetail)
 {
     if (deliveryOrderDetail.Quantity <= 0)
     {
         deliveryOrderDetail.Errors.Add("Quantity", "Tidak boleh negatif");
     }
     return(deliveryOrderDetail);
 }
 public bool ValidConfirmObject(DeliveryOrderDetail deliveryOrderDetail, IDeliveryOrderService _deliveryOrderService,
                                IDeliveryOrderDetailService _deliveryOrderDetailService, ISalesOrderDetailService _salesOrderDetailService,
                                IItemService _itemService, IWarehouseItemService _warehouseItemService)
 {
     deliveryOrderDetail.Errors.Clear();
     VConfirmObject(deliveryOrderDetail, _deliveryOrderService, _deliveryOrderDetailService, _salesOrderDetailService, _itemService, _warehouseItemService);
     return(isValid(deliveryOrderDetail));
 }
        public DeliveryOrderDetail VHasItem(DeliveryOrderDetail deliveryOrderDetail, IItemService _itemService)
        {
            Item item = _itemService.GetObjectById(deliveryOrderDetail.ItemId);

            if (item == null)
            {
                deliveryOrderDetail.Errors.Add("Item", "Tidak boleh tidak ada");
            }
            return(deliveryOrderDetail);
        }
        public DeliveryOrderDetail VHasNoSalesInvoiceDetail(DeliveryOrderDetail deliveryOrderDetail, ISalesInvoiceDetailService _salesInvoiceDetailService)
        {
            IList <SalesInvoiceDetail> salesInvoiceDetails = _salesInvoiceDetailService.GetObjectsByDeliveryOrderDetailId(deliveryOrderDetail.Id);

            if (salesInvoiceDetails.Any())
            {
                deliveryOrderDetail.Errors.Add("Generic", "Sudah memiliki sales invoice detail");
            }
            return(deliveryOrderDetail);
        }
        public DeliveryOrderDetail VHasDeliveryOrder(DeliveryOrderDetail deliveryOrderDetail, IDeliveryOrderService _purchaseReceivalService)
        {
            DeliveryOrder deliveryOrder = _purchaseReceivalService.GetObjectById(deliveryOrderDetail.DeliveryOrderId);

            if (deliveryOrder == null)
            {
                deliveryOrderDetail.Errors.Add("DeliveryOrder", "Tidak boleh tidak ada");
            }
            return(deliveryOrderDetail);
        }
Пример #15
0
        public IList <StockMutation> SoftDeleteStockMutationForDeliveryOrder(DeliveryOrderDetail deliveryOrderDetail, WarehouseItem warehouseItem)
        {
            IList <StockMutation> stockMutations = _repository.GetObjectsBySourceDocumentDetailForWarehouseItem(warehouseItem.Id, Constant.SourceDocumentDetailType.DeliveryOrderDetail, deliveryOrderDetail.Id);

            foreach (var stockMutation in stockMutations)
            {
                _repository.Delete(stockMutation);
            }
            return(stockMutations);
        }
Пример #16
0
        public SalesInvoiceDetail VHasDeliveryOrderDetail(SalesInvoiceDetail salesInvoiceDetail, IDeliveryOrderDetailService _deliveryOrderDetailService)
        {
            DeliveryOrderDetail deliveryOrderDetail = _deliveryOrderDetailService.GetObjectById(salesInvoiceDetail.DeliveryOrderDetailId);

            if (deliveryOrderDetail == null)
            {
                salesInvoiceDetail.Errors.Add("DeliveryOrderDetailId", "Tidak boleh tidak ada");
            }
            return(salesInvoiceDetail);
        }
Пример #17
0
        public SalesInvoiceDetail VQuantityIsLessThanOrEqualPendingInvoiceQuantity(SalesInvoiceDetail salesInvoiceDetail, IDeliveryOrderDetailService _deliveryOrderDetailService)
        {
            DeliveryOrderDetail deliveryOrderDetail = _deliveryOrderDetailService.GetObjectById(salesInvoiceDetail.DeliveryOrderDetailId);

            if (salesInvoiceDetail.Quantity > deliveryOrderDetail.PendingInvoicedQuantity)
            {
                salesInvoiceDetail.Errors.Add("Generic", "Quantity harus kurang dari atau sama dengan pending invoice quantity");
            }
            return(salesInvoiceDetail);
        }
        public DeliveryOrderDetail VHasSalesOrderDetail(DeliveryOrderDetail deliveryOrderDetail, ISalesOrderDetailService _salesOrderDetailService)
        {
            SalesOrderDetail salesOrderDetail = _salesOrderDetailService.GetObjectById(deliveryOrderDetail.SalesOrderDetailId);

            if (salesOrderDetail == null)
            {
                deliveryOrderDetail.Errors.Add("SalesOrderDetail", "Tidak boleh tidak ada");
            }
            return(deliveryOrderDetail);
        }
        public DeliveryOrderDetail VSalesOrderDetailHasBeenConfirmed(DeliveryOrderDetail deliveryOrderDetail, ISalesOrderDetailService _salesOrderDetailService)
        {
            SalesOrderDetail salesOrderDetail = _salesOrderDetailService.GetObjectById(deliveryOrderDetail.SalesOrderDetailId);

            if (!salesOrderDetail.IsConfirmed)
            {
                deliveryOrderDetail.Errors.Add("Generic", "Sales Order Detail belum dikonfirmasi");
            }
            return(deliveryOrderDetail);
        }
Пример #20
0
 public DeliveryOrderDetail CreateObject(DeliveryOrderDetail deliveryOrderDetail, IDeliveryOrderService _deliveryOrderService,
                                         ISalesOrderDetailService _salesOrderDetailService, ISalesOrderService _salesOrderService, IItemService _itemService)
 {
     deliveryOrderDetail.Errors = new Dictionary <String, String>();
     if (_validator.ValidCreateObject(deliveryOrderDetail, this, _deliveryOrderService, _salesOrderDetailService, _itemService))
     {
         _repository.CreateObject(deliveryOrderDetail);
     }
     return(deliveryOrderDetail);
 }
Пример #21
0
 public DeliveryOrderDetail InvoiceObject(DeliveryOrderDetail deliveryOrderDetail, int Quantity)
 {
     deliveryOrderDetail.PendingInvoicedQuantity -= Quantity;
     if (deliveryOrderDetail.PendingInvoicedQuantity == 0)
     {
         deliveryOrderDetail.IsAllInvoiced = true;
     }
     _repository.UpdateObject(deliveryOrderDetail);
     return(deliveryOrderDetail);
 }
Пример #22
0
        public DeliveryOrderDetail UndoInvoiceObject(DeliveryOrderDetail deliveryOrderDetail, int Quantity, IDeliveryOrderService _deliveryOrderService)
        {
            DeliveryOrder deliveryOrder = _deliveryOrderService.GetObjectById(deliveryOrderDetail.DeliveryOrderId);

            _deliveryOrderService.UnsetInvoiceComplete(deliveryOrder);

            deliveryOrderDetail.IsAllInvoiced            = false;
            deliveryOrderDetail.PendingInvoicedQuantity += Quantity;
            _repository.UpdateObject(deliveryOrderDetail);
            return(deliveryOrderDetail);
        }
 public DeliveryOrderDetail VUpdateObject(DeliveryOrderDetail deliveryOrderDetail, IDeliveryOrderDetailService _deliveryOrderDetailService,
                                          IDeliveryOrderService _deliveryOrderService, ISalesOrderDetailService _salesOrderDetailService, IItemService _itemService)
 {
     VHasNotBeenConfirmed(deliveryOrderDetail);
     if (!isValid(deliveryOrderDetail))
     {
         return(deliveryOrderDetail);
     }
     VCreateObject(deliveryOrderDetail, _deliveryOrderDetailService, _deliveryOrderService, _salesOrderDetailService, _itemService);
     return(deliveryOrderDetail);
 }
Пример #24
0
        public SalesInvoiceDetail VDeliveryOrderDetailAndSalesInvoiceMustHaveTheSameDeliveryOrder(SalesInvoiceDetail salesInvoiceDetail,
                                                                                                  IDeliveryOrderDetailService _deliveryOrderDetailService, ISalesInvoiceService _salesInvoiceService)
        {
            DeliveryOrderDetail deliveryOrderDetail = _deliveryOrderDetailService.GetObjectById(salesInvoiceDetail.DeliveryOrderDetailId);
            SalesInvoice        salesInvoice        = _salesInvoiceService.GetObjectById(salesInvoiceDetail.SalesInvoiceId);

            if (deliveryOrderDetail.DeliveryOrderId != salesInvoice.DeliveryOrderId)
            {
                deliveryOrderDetail.Errors.Add("Generic", "Delivery order detail dan sales invoice memiliki delivery order berbeda");
            }
            return(salesInvoiceDetail);
        }
Пример #25
0
 public SalesInvoiceDetail UnconfirmObject(SalesInvoiceDetail salesInvoiceDetail, IDeliveryOrderService _deliveryOrderService,
                                           IDeliveryOrderDetailService _deliveryOrderDetailService)
 {
     if (_validator.ValidUnconfirmObject(salesInvoiceDetail))
     {
         salesInvoiceDetail = _repository.UnconfirmObject(salesInvoiceDetail);
         // reverse sales receival detail PendingInvoiceQuantity
         DeliveryOrderDetail deliveryOrderDetail = _deliveryOrderDetailService.GetObjectById(salesInvoiceDetail.DeliveryOrderDetailId);
         _deliveryOrderDetailService.UndoInvoiceObject(deliveryOrderDetail, salesInvoiceDetail.Quantity, _deliveryOrderService);
     }
     return(salesInvoiceDetail);
 }
Пример #26
0
 public SalesInvoiceDetail ConfirmObject(SalesInvoiceDetail salesInvoiceDetail, DateTime ConfirmationDate, IDeliveryOrderDetailService _deliveryOrderDetailService)
 {
     salesInvoiceDetail.ConfirmationDate = ConfirmationDate;
     if (_validator.ValidConfirmObject(salesInvoiceDetail, this, _deliveryOrderDetailService))
     {
         salesInvoiceDetail = _repository.ConfirmObject(salesInvoiceDetail);
         // update sales receival detail PendingInvoiceQuantity
         DeliveryOrderDetail deliveryOrderDetail = _deliveryOrderDetailService.GetObjectById(salesInvoiceDetail.DeliveryOrderDetailId);
         _deliveryOrderDetailService.InvoiceObject(deliveryOrderDetail, salesInvoiceDetail.Quantity);
     }
     return(salesInvoiceDetail);
 }
        public string PrintError(DeliveryOrderDetail obj)
        {
            string erroroutput = "";
            KeyValuePair <string, string> first = obj.Errors.ElementAt(0);

            erroroutput += first.Key + "," + first.Value;
            foreach (KeyValuePair <string, string> pair in obj.Errors.Skip(1))
            {
                erroroutput += Environment.NewLine;
                erroroutput += pair.Key + "," + pair.Value;
            }
            return(erroroutput);
        }
        public static SellingResult Save(DeliveryOrderHeaderViewModel models)
        {
            SellingResult result = new SellingResult();

            try
            {
                using (var db = new BuahSayurContext())
                {
                    string newRef = GetNewReference();
                    result.Reference = newRef;

                    DeliveryOrder deliveryOrder = new DeliveryOrder
                    {
                        Id = 1,
                        Customer_Username = models.Customer_Username,
                        Reference = newRef,
                        SellingDate = models.SellingDate,
                        IsSent = false,
                        IsReturned = false
                    };
                    db.DeliveryOrders.Add(deliveryOrder);

                    foreach (var item in models.DeliveryDetails)
                    {
                        DeliveryOrderDetail deliveryDetail = new DeliveryOrderDetail
                        {
                            DeliveryOrder_Id = deliveryOrder.Id,
                            Item_Code = item.Item_Code,
                            Quantity = item.Quantity,
                            Price = item.Price,
                            Total = item.Quantity * item.Price
                        };
                        result.Total += (item.Quantity * item.Price);
                        db.DeliveryOrderDetails.Add(deliveryDetail);
                        // Update Stock
                        Item Stock = db.Items.Where(x => x.Code == item.Item_Code).FirstOrDefault();
                        if (Stock != null)
                        {
                            Stock.Stock = Stock.Stock - item.Quantity;
                        }
                    }
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                result.Success = false;
                Message = ex.Message;
            }
            return result;
        }
        public StockMovement SaveStockMovement(DeliveryOrderDetail deliveryOrderDetail)
        {
            StockMovement sm = new StockMovement();

            sm.DeliveryOrderDetail         = deliveryOrderDetail;
            sm.DeliveryOrderNo             = deliveryOrderDetail.DeliveryOrderNo;
            sm.DeliveryOrderDetailItemCode = deliveryOrderDetail.ItemCode;
            sm.Item             = deliveryOrderDetail.Item;
            sm.OriginalQuantity = inventoryRepository.FindById(deliveryOrderDetail.ItemCode).Quantity;
            sm.AfterQuantity    = sm.OriginalQuantity + deliveryOrderDetail.ActualQuantity;
            sm.CreatedDateTime  = DateTime.Now;
            sm.StockMovementId  = IdService.GetNewStockMovementId(context);
            return(stockMovementRepository.Save(sm));
        }
Пример #30
0
        public DeliveryOrderDetail CreateObject(int deliveryOrderId, int itemId, int quantity, int salesOrderDetailId,
                                                IDeliveryOrderService _deliveryOrderService, ISalesOrderDetailService _salesOrderDetailService,
                                                ISalesOrderService _salesOrderService, IItemService _itemService)
        {
            DeliveryOrderDetail deliveryOrderDetail = new DeliveryOrderDetail
            {
                DeliveryOrderId    = deliveryOrderId,
                ItemId             = itemId,
                Quantity           = quantity,
                SalesOrderDetailId = salesOrderDetailId
            };

            return(this.CreateObject(deliveryOrderDetail, _deliveryOrderService, _salesOrderDetailService, _salesOrderService, _itemService));
        }
Пример #31
0
        public ActionResult AddItem(int id, int product)
        {
            var p = Product.Find (product);
            var entity = DeliveryOrder.Find (id);

            if (entity.IsCompleted || entity.IsCancelled) {
                Response.StatusCode = 400;
                return Content (Resources.ItemAlreadyCompletedOrCancelled);
            }

            var item = new DeliveryOrderDetail {
                DeliveryOrder = DeliveryOrder.Find (id),
                Product = p,
                ProductCode = p.Code,
                ProductName = p.Name,
                Quantity = 1,
            };

            using (var scope = new TransactionScope ()) {
                item.CreateAndFlush ();
            }

            return Json (new { id = item.Id });
        }
Пример #32
0
        public ActionResult AddItems(int id, string value)
        {
            var entity = DeliveryOrder.Find (id);
            SalesOrder sales_order = null;
            int sales_order_id = 0;
            int count = 0;

            if (entity.IsCompleted || entity.IsCancelled) {
                Response.StatusCode = 400;
                return Content (Resources.ItemAlreadyCompletedOrCancelled);
            }

            if (int.TryParse (value, out sales_order_id)) {
                sales_order = SalesOrder.TryFind (sales_order_id);
            }

            if (sales_order == null) {
                Response.StatusCode = 400;
                return Content (Resources.SalesOrderNotFound);
            }

            using (var scope = new TransactionScope ()) {
                foreach (var x in sales_order.Details) {
                    var item = new DeliveryOrderDetail {
                        DeliveryOrder = entity,
                        Product = x.Product,
                        OrderDetail = x,
                        ProductCode = x.ProductCode,
                        ProductName = x.ProductName,
                        Quantity = x.Quantity
                    };

                    item.Create ();
                    count++;
                }
            }

            if (count == 0) {
                Response.StatusCode = 400;
                return Content (Resources.InvoiceableItemsNotFound);
            }

            return Json (new { id = id, value = string.Empty, itemsChanged = count });
        }