コード例 #1
0
 public ActivityHistoryModel(Transaction_Subtransaction sub, SIEBUEntities db = null)
 {
     if (db == null) db = new SIEBUEntities();
     value = sub.total.Value;
     date = (DateTime)sub.Transaction.dateprocessed;
     invoice = sub.Transaction.invoice;
     transaction = sub.st_id;
     is_purchase = false;
 }
コード例 #2
0
        /// <summary>
        /// Create all the subtransactions associated with the transaction ID and shopping cart
        /// </summary>
        /// <param name="cart">the shopping cart</param>
        /// <param name="transactionId">the transaction id</param>
        private Dictionary<int, int> createSubTransaction(ShoppingCartModel cart, int transactionId, int status)
        {
            List<CartStore> stores = cart.getStoreItems();
            int numberOfVendors = stores.Count;
            Dictionary<int, int> subtransactionIds = new Dictionary<int, int>();
            foreach (CartStore store in stores)
            {
                Transaction_Subtransaction subTransaction = new Transaction_Subtransaction();

                //create the invoice
                List<Transaction_Subtransaction> subTransactionList = db.Transaction_Subtransaction.Where(o => o.store_id == store.storeId).ToList();
                int subOrderCount = 0;
                foreach (Transaction_Subtransaction sub in subTransactionList)
                {
                    if (sub.invoice.Contains(DateTime.Now.ToString("yyyyMMdd")))
                        subOrderCount++;
                }
                subTransaction.invoice = "INV" + store.storeId + "D" + DateTime.Now.ToString("yyyyMMdd") + "N" + subOrderCount + "S";
                subTransaction.transaction_id = transactionId;
                subTransaction.store_id = store.storeId;
                subTransaction.commission = store.commission;
                subTransaction.shipping_fees = store.shipping;
                subTransaction.subtotal = store.subtotal;
                if (status == paymentProcessed)
                {
                    subTransaction.processing_fees = 0; //Processing fee should be zero if items were bought in store.
                    subTransaction.siebu_processing_fees = 0;
                    subTransaction.siebu_revenue = store.commission;
                }
                else
                {
                    subTransaction.processing_fees = Math.Round(decimal.Multiply(store.subtotal, processingFeePercent), 2) +
                        Math.Round(decimal.Divide(processingFeeOffset, numberOfVendors), 2); //2.9% of the subtotal + $0.30/#of vendors
                    subTransaction.siebu_processing_fees = Math.Round(decimal.Multiply(store.subtotal, processingFeePercent), 2) +
                        processingFeeOffset; //2.9% of the subtotal + $0.30
                    subTransaction.siebu_revenue = subTransaction.commission + subTransaction.siebu_processing_fees - subTransaction.processing_fees;
                }
                db.Transaction_Subtransaction.Add(subTransaction);
                subTransaction.total = store.subtotal + store.shipping - store.commission - subTransaction.siebu_processing_fees;

                //EARNINGS: Give earnings to the vendor in the user table. After the item has been shipping (transaction status = 1)
                if (status == paymentProcessed)
                {
                    Store vendor = db.Stores.Where(st => st.s_id == store.storeId).FirstOrDefault();
                    vendor.credit = (vendor.credit != null) ? vendor.credit + subTransaction.total : subTransaction.total;
                }
                db.SaveChanges();

                Store theStore = db.Stores.Where(s => s.s_id == store.storeId).FirstOrDefault();
                subtransactionIds.Add(theStore.creator_id, subTransaction.st_id);

                //create individual transaction items
                for (int i = 0; i < store.cartItems.Count; i++)
                {
                    this.createTransactionItem(transactionId, subTransaction.st_id, store.cartItems[i], status);
                }

                db.SaveChanges();
            }
            return subtransactionIds;
        }