示例#1
0
        public async Task <ActionResult> SearchAsync(TransferSearch search)
        {
            var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true);

            try
            {
                var result = await InventoryTransfers.GetSearchViewAsync(this.Tenant, meta.OfficeId, search).ConfigureAwait(true);

                return(this.Ok(result));
            }
            catch (Exception ex)
            {
                return(this.Failed(ex.Message, HttpStatusCode.InternalServerError));
            }
        }
示例#2
0
        public async Task <ActionResult> PostAsync(InventoryTransfer model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.InvalidModelState(this.ModelState));
            }

            var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true);

            model.OfficeId = meta.OfficeId;
            model.UserId   = meta.UserId;
            model.LoginId  = meta.LoginId;

            foreach (var item in model.Details)
            {
                if (item.TransferTypeEnum == TransferTypeEnum.Cr)
                {
                    decimal existingQuantity = await Items.CountItemsByItemCodeAsync(this.Tenant, item.ItemCode,
                                                                                     item.UnitName, item.StoreName).ConfigureAwait(true);

                    if (existingQuantity < item.Quantity)
                    {
                        return(this.Failed($"We only have {existingQuantity} {item.UnitName} in inventory",
                                           HttpStatusCode.InternalServerError));
                    }
                }
            }

            try
            {
                long id = await InventoryTransfers.AddAsync(this.Tenant, model).ConfigureAwait(true);

                return(this.Ok(id));
            }
            catch (Exception ex)
            {
                return(this.Failed(ex.Message, HttpStatusCode.InternalServerError));
            }
        }