Ejemplo n.º 1
0
        public Result PostMaterialPurchase([FromBody] MaterialPurchase materialPurchase)
        {
            var cnt =
                ServerConfig.ApiDb.Query <int>("SELECT COUNT(1) FROM `material_purchase` WHERE Purchase = @Purchase AND MarkedDelete = 0;",
                                               new { materialPurchase.Purchase }).FirstOrDefault();

            if (cnt > 0)
            {
                return(Result.GenError <Result>(Error.MaterialPurchaseIsExist));
            }
            materialPurchase.CreateUserId   = Request.GetIdentityInformation();
            materialPurchase.MarkedDateTime = DateTime.Now;
            MaterialPurchaseHelper.Instance.Add(materialPurchase);

            return(Result.GenError <Result>(Error.Success));
        }
Ejemplo n.º 2
0
        public Result QuoteMaterialPurchase([FromBody] MaterialPurchase materialPurchase)
        {
            if (materialPurchase.Id == 0)
            {
                return(Result.GenError <Result>(Error.MaterialPurchaseNotExist));
            }
            var purchaseId = materialPurchase.Id;
            var cnt        = MaterialPurchaseHelper.Instance.GetCountById(purchaseId);

            if (cnt <= 0)
            {
                return(Result.GenError <DataResult>(Error.MaterialPurchaseNotExist));
            }

            var materialPurchaseQuote = materialPurchase.Items;

            if (materialPurchaseQuote == null || !materialPurchaseQuote.Any())
            {
                ServerConfig.ApiDb.Execute(
                    "UPDATE `material_purchase_quote` SET `MarkedDateTime` = NOW(), `MarkedDelete` = true WHERE `PurchaseId` = @Id;", new { materialPurchase.Id });
                return(Result.GenError <Result>(Error.Success));
            }
            if (materialPurchaseQuote.Any(x => x.Illegal()))
            {
                return(Result.GenError <Result>(Error.MaterialPurchaseQuoteNotEmpty));
            }

            var oldMaterialPurchaseQuote = ServerConfig.ApiDb.Query <MaterialPurchaseQuote>("SELECT * FROM `material_purchase_quote` WHERE `MarkedDelete` = 0 AND `PurchaseId` = @PurchaseId;",
                                                                                            new { purchaseId });

            var materialPurchaseItems = ServerConfig.ApiDb.Query <MaterialPurchaseQuote>("SELECT * FROM `material_purchase_item` WHERE `MarkedDelete` = 0 AND `PurchaseId` = @PurchaseId;",
                                                                                         new { purchaseId });
            var markedDateTime = DateTime.Now;
            var delQuote       = oldMaterialPurchaseQuote.Where(x => materialPurchaseQuote.All(y => y.Id != x.Id));

            if (delQuote.Any())
            {
                foreach (var quote in delQuote)
                {
                    quote.MarkedDateTime = markedDateTime;
                    quote.MarkedDelete   = true;
                }

                ServerConfig.ApiDb.Execute(
                    "UPDATE `material_purchase_quote` SET `MarkedDateTime` = @MarkedDateTime, `MarkedDelete` = @MarkedDelete WHERE `Id` = @Id;", delQuote);
            }

            var oldQuote = materialPurchaseQuote.Where(x => x.Id != 0);

            if (oldQuote.Any())
            {
                foreach (var quote in oldQuote)
                {
                    quote.MarkedDateTime = markedDateTime;
                }

                ServerConfig.ApiDb.Execute(
                    "UPDATE `material_purchase_quote` SET `MarkedDateTime` = @MarkedDateTime, `Purchase` = @Purchase, `Time` = @Time, `ItemId` = @ItemId, `PurchaseId` = @PurchaseId, " +
                    "`Code` = @Code, `Class` = @Class, `Category` = @Category, `Name` = @Name, `Supplier` = @Supplier, `Specification` = @Specification, `Number` = @Number, `Unit` = @Unit, " +
                    "`Price` = @Price, `TaxPrice` = @TaxPrice, `TaxAmount` = @TaxAmount, `TaxRate` = @TaxRate, `Order` = @Order, `Purchaser` = @Purchaser, `PurchasingCompany` = @PurchasingCompany WHERE `Id` = @Id;", oldQuote);
            }
            var newQuote = materialPurchaseQuote.Where(x => x.Id == 0);

            if (newQuote.Any())
            {
                var createUserId = Request.GetIdentityInformation();
                foreach (var quote in newQuote)
                {
                    var item = materialPurchaseItems.FirstOrDefault(x => x.Id == quote.ItemId);
                    quote.CreateUserId      = createUserId;
                    quote.PurchaseId        = purchaseId;
                    quote.Class             = quote.Class.IsNullOrEmpty() ? item?.Class ?? "" : quote.Class;
                    quote.Category          = quote.Category.IsNullOrEmpty() ? item?.Category ?? "" : quote.Category;
                    quote.Supplier          = quote.Supplier.IsNullOrEmpty() ? item?.Supplier ?? "" : quote.Supplier;
                    quote.Order             = quote.Order.IsNullOrEmpty() ? item?.Order ?? "" : quote.Order;
                    quote.Purchaser         = quote.Purchaser.IsNullOrEmpty() ? item?.Purchaser ?? "" : quote.Purchaser;
                    quote.PurchasingCompany = quote.PurchasingCompany.IsNullOrEmpty() ? item?.PurchasingCompany ?? "" : quote.PurchasingCompany;
                }

                ServerConfig.ApiDb.Execute(
                    "INSERT INTO `material_purchase_quote` (`CreateUserId`, `Purchase`, `Time`, `ItemId`, `PurchaseId`, `Code`, `Class`, `Category`, `Name`, `Supplier`, `Specification`, `Number`, `Unit`, `Price`, `TaxPrice`, `TaxAmount`, `TaxRate`, `Order`, `Purchaser`, `PurchasingCompany`) " +
                    "VALUES (@CreateUserId, @Purchase, @Time, @ItemId, @PurchaseId, @Code, @Class, @Category, @Name, @Supplier, @Specification, @Number, @Unit, @Price, @TaxPrice, @TaxAmount, @TaxRate, @Order, @Purchaser, @PurchasingCompany);", newQuote);
            }
            ServerConfig.ApiDb.Execute(
                "UPDATE `material_purchase` SET `MarkedDateTime` = now(), `IsQuote` = @IsQuote WHERE Id = @purchaseId;", new { IsQuote = true, purchaseId });

            return(Result.GenError <Result>(Error.Success));
        }