예제 #1
0
        public Order Add(int clientId, int vendorId, int?accountId, int approverId, DateTime neededDate, bool oversized, int shippingMethodId, string notes, bool attention)
        {
            /*
             * INSERT INTO dbo.PurchaseOrder (ClientID, AccountID, VendorID, CreatedDate, NeededDate, ApproverID, Oversized, ShippingMethodID, Notes, Attention, StatusID)
             * VALUES (@ClientID, @AccountID, @VendorID, @CreatedDate, @NeededDate, @ApproverID, @Oversized, @ShippingMethodID, @Notes, @Attention, 1)
             *
             * 1 = Status.Draft
             */

            var po = new Ordering.PurchaseOrder()
            {
                Client         = Require <Data.Client>(x => x.ClientID, clientId),
                AccountID      = accountId,
                Vendor         = Require <Ordering.Vendor>(x => x.VendorID, vendorId),
                CreatedDate    = DateTime.Now,
                NeededDate     = neededDate,
                Approver       = Require <Data.Client>(x => x.ClientID, approverId),
                Oversized      = oversized,
                ShippingMethod = Require <Ordering.ShippingMethod>(x => x.ShippingMethodID, shippingMethodId),
                Notes          = notes,
                Attention      = attention,
                Status         = GetStatus(OrderStatus.Draft),
                Details        = new List <Ordering.PurchaseOrderDetail>()
            };

            DataSession.Insert(po);

            Tracking.Track(TrackingCheckpoints.DraftCreated, po.CreateModel <IPurchaseOrder>(), clientId, new { VendorID = vendorId, AccountID = accountId, ApproverID = approverId });

            return(CreateOrder(po));
        }
예제 #2
0
        public Order Copy(int poid, int?accountId = null)
        {
            //INSERT INTO dbo.PurchaseOrder (ClientID, AccountID, VendorID, CreatedDate, NeededDate, ApproverID, Oversized, ShippingMethodID, Notes, Attention, StatusID)
            //SELECT ClientID, AccountID, VendorID, GETDATE(), DATEADD(DAY, 7, GETDATE()), ApproverID, Oversized, ShippingMethodID, Notes, Attention, 1

            // get the po to be copied
            var po = Require <Ordering.PurchaseOrder>(x => x.POID, poid);

            // po may be for a different user than current, this will get the correct vendor and approver - making copies if necessary
            var vendor   = GetVendorForCopy(po);
            var approver = GetApproverForCopy(po);

            var copy = new Ordering.PurchaseOrder()
            {
                Client         = Require <Data.Client>(x => x.ClientID, Context.CurrentUser.ClientID),
                AccountID      = accountId ?? po.AccountID,
                Vendor         = vendor,
                CreatedDate    = DateTime.Now,
                NeededDate     = DateTime.Now.AddDays(7),
                Approver       = approver,
                Oversized      = po.Oversized,
                ShippingMethod = po.ShippingMethod,
                Notes          = po.Notes,
                Attention      = po.Attention,
                Status         = GetStatus(OrderStatus.Draft)
            };

            DataSession.Insert(copy);

            // po may be for a different user than current, this will get the correct details - making item copies if necessary
            var details = GetDetailsForCopy(po, copy, vendor);

            DataSession.Insert(details);

            copy.Details = details;

            Tracking.Track(TrackingCheckpoints.DraftCreated, copy.CreateModel <IPurchaseOrder>(), Context.CurrentUser.ClientID);

            return(CreateOrder(copy));
        }