public Error InsertOrUpdatePurchaseOrderHeaderTemp(PurchaseOrderHeaderTempModel poht, UserModel user, string lockGuid)
        {
            var error = validateModel(poht);

            if (!error.IsError)
            {
                // Check that the lock is still current
                if (!db.IsLockStillValid(typeof(PurchaseOrderHeaderTemp).ToString(), poht.Id, lockGuid))
                {
                    error.SetError(EvolutionResources.errRecordChangedByAnotherUser, "OrderNumber");
                }
                else
                {
                    PurchaseOrderHeaderTemp temp = null;
                    if (poht.Id != 0)
                    {
                        temp = db.FindPurchaseOrderHeaderTemp(poht.Id);
                    }
                    if (temp == null)
                    {
                        temp = new PurchaseOrderHeaderTemp();
                    }

                    Mapper.Map <PurchaseOrderHeaderTempModel, PurchaseOrderHeaderTemp>(poht, temp);

                    db.InsertOrUpdatePurchaseOrderHeaderTemp(temp);
                    poht.Id = temp.Id;
                }
            }
            return(error);
        }
Esempio n. 2
0
        public PurchaseOrderHeaderTempModel CopyPurchaseOrderToTemp(CompanyModel company,
                                                                    PurchaseOrderHeaderModel purchaseOrderHeader,
                                                                    UserModel user)
        {
            PurchaseOrderHeaderTempModel result = new PurchaseOrderHeaderTempModel();
            PurchaseOrderHeaderTemp      poht   = new PurchaseOrderHeaderTemp();

            // Clean the temp tables
            if (purchaseOrderHeader.Id > 0)
            {
                // Editing an existing order
                var poh = db.FindPurchaseOrderHeader(purchaseOrderHeader.Id);
                if (poh != null)
                {
                    // Copy the header
                    poht = db.FindPurchaseOrderHeaderTemps(company.Id)
                           .Where(p => p.UserId == user.Id &&
                                  p.OriginalRowId == purchaseOrderHeader.Id)
                           .FirstOrDefault();
                    if (poht != null)
                    {
                        // Already exists in the temp tables so update it with the latest data
                        int tempId = poht.Id;
                        Mapper.Map <PurchaseOrderHeader, PurchaseOrderHeaderTemp>(poh, poht);
                        poht.Id            = tempId;
                        poht.OriginalRowId = purchaseOrderHeader.Id;
                        poht.UserId        = user.Id;

                        db.InsertOrUpdatePurchaseOrderHeaderTemp(poht);
                        result = mapToModel(poht);
                    }
                    else
                    {
                        // Doesn't exist, so copy
                        poht               = Mapper.Map <PurchaseOrderHeader, PurchaseOrderHeaderTemp>(poh);
                        poht.Id            = 0;
                        poht.OriginalRowId = purchaseOrderHeader.Id;
                        poht.UserId        = user.Id;

                        db.InsertOrUpdatePurchaseOrderHeaderTemp(poht);
                        result = mapToModel(poht);
                    }

                    // Now copy/merge the details
                    db.CopyPurchaseOrderToTemp(company.Id, user.Id, purchaseOrderHeader.Id, poht.Id);

                    result.Splitable = db.FindPurchaseOrderDetailTemps(company.Id, poht.Id).Count() > 0;
                }
            }
            else
            {
                // New purchase
                poht.CompanyId       = company.Id;
                poht.UserId          = user.Id;
                poht.OrderNumber     = purchaseOrderHeader.OrderNumber;
                poht.OrderDate       = purchaseOrderHeader.OrderDate;
                poht.SalespersonId   = purchaseOrderHeader.SalespersonId;
                poht.BrandCategoryId = purchaseOrderHeader.BrandCategoryId;
                poht.LocationId      = purchaseOrderHeader.LocationId;
                poht.CancelMessage   = purchaseOrderHeader.CancelMessage;

                db.InsertOrUpdatePurchaseOrderHeaderTemp(poht);
                result = mapToModel(poht);
            }

            return(result);
        }