예제 #1
0
        /*Payment for Invoice*/
        public void Transfer_Internal(decimal amount)
        {
            if (INV.Equals(null))
                throw new Exception("No invocie set.pleae laod or create new Invoice");

            using (var ctx = new accountingEntities())
            using (var ts = new TransactionScope())
            {
                //create new Internal Payment
                InternalTransfer iPayment = new InternalTransfer();
                iPayment.New((int)INV.order.receiverEntityID, (int)INV.order.issuerEntityID, amount, (int)INV.currencyID);

                /*Record New Invoice Payment*/
                var NewInvTransfer= new invoiceTransfer()
                {
                    invoiceID = INV.ID,
                    transferID = iPayment.TRANSFER.ID
                };
                ctx.invoiceTransfers.AddObject(NewInvTransfer);
                ctx.SaveChanges();

                //Record related transctions [for invoice payment]
                List<transaction> transactions = new List<transaction>();

                account acc_W = Account.getAccount((int)INV.order.issuerEntityID, (int)projectEnums.catType.W, (int)INV.currencyID);
                var t1 = new Transaction(-1 * (decimal)amount, acc_W);
                transactions.Add(t1.TXN);

                account acc_AP = Account.getAccount((int)INV.order.receiverEntityID, (int)projectEnums.catType.AP, (int)INV.currencyID);
                var t2 = new Transaction(+1 * (decimal)amount, acc_AP);
                transactions.Add(t2.TXN);

                account acc_W2 = Account.getAccount((int)INV.order.receiverEntityID, (int)projectEnums.catType.W, (int)INV.currencyID);
                var t3 = new Transaction(+1 * (decimal)amount, acc_W2);
                transactions.Add(t3.TXN);

                account acc_AR = Account.getAccount((int)INV.order.issuerEntityID, (int)projectEnums.catType.AR, (int)INV.currencyID);
                var t4 = new Transaction(-1 * (decimal)amount, acc_AR);
                transactions.Add(t4.TXN);

                /*Record Invoice Payment transactions*/
                this.RecordInvoiceTransferTransactions(transactions, (int)iPayment.TRANSFER.ID, projectEnums.transferStatus.PaidApproved);

                /*Record Invoice Transaction*/
                this.RecordInvoiceTransaction(transactions, projectEnums.invoiceStatus.internalTransfer);

                ts.Complete();
            }
        }
 /// <summary>
 /// Create a new invoiceTransfer object.
 /// </summary>
 /// <param name="id">Initial value of the ID property.</param>
 public static invoiceTransfer CreateinvoiceTransfer(global::System.Int32 id)
 {
     invoiceTransfer invoiceTransfer = new invoiceTransfer();
     invoiceTransfer.ID = id;
     return invoiceTransfer;
 }
예제 #3
0
        public void Transfer_Ext_Credit(decimal amount, int cardID, projectEnums.ccCardType ccCardType)
        {
            if (INV.Equals(null))
                throw new Exception("No invocie set.pleae laod or create new Invoice");

            using (var ctx = new accountingEntities())
            using (var ts = new TransactionScope())
            {
                //create new Internal Payment
                CreditTransfer ccPayment = new CreditTransfer();
                ccPayment.New((int)INV.order.receiverEntityID, (int)INV.order.issuerEntityID, amount, (int)INV.currencyID);

                /*Record New Invoice Payment*/
                var NewInvTransfer = new invoiceTransfer()
                {
                    invoiceID = INV.ID,
                    transferID = ccPayment.TRANSFER.ID
                };
                ctx.invoiceTransfers.AddObject(NewInvTransfer);
                ctx.SaveChanges();

                //Record related transctions [for invoice Transfer]
                var FEE = 1;
                List<transaction> transactions = new List<transaction>();

                account acc_CCCASH = Account.getAccount((int)INV.order.receiverEntityID, (int)projectEnums.catType.CCCASH, (int)INV.currencyID);
                var t1 = new Transaction(-1 * (decimal)amount, acc_CCCASH);
                transactions.Add(t1.TXN);

                account acc_AP = Account.getAccount((int)INV.order.receiverEntityID, (int)projectEnums.catType.AP, (int)INV.currencyID);
                var t2 = new Transaction(+1 * (decimal)amount, acc_AP);
                transactions.Add(t2.TXN);

                account acc_W = Account.getAccount((int)INV.order.issuerEntityID, (int)projectEnums.catType.W, (int)INV.currencyID);
                var t3 = new Transaction(+1 * (decimal)amount  -  FEE, acc_W);
                transactions.Add(t3.TXN);

                account acc_AR = Account.getAccount((int)INV.order.issuerEntityID, (int)projectEnums.catType.AR, (int)INV.currencyID);
                var t4 = new Transaction(-1 * (decimal)amount, acc_AR);
                transactions.Add(t4.TXN);

                account acc_EXP = Account.getAccount((int)INV.order.issuerEntityID, (int)projectEnums.catType.AR, (int)INV.currencyID);
                var t5 = new Transaction(FEE, acc_EXP);
                transactions.Add(t5.TXN);

                /*Record Invoice Payment transactions*/
                this.RecordInvoiceTransferTransactions(transactions, ccPayment.TRANSFER.ID, projectEnums.transferStatus.PaidApproved);

                /*Record Invoice Transaction*/
                projectEnums.invoiceStatus? invoicestat = null;
                switch (ccCardType)
                {
                    case projectEnums.ccCardType.MASTERCARD:
                        invoicestat = projectEnums.invoiceStatus.masterCardTransfer;
                        break;
                    case projectEnums.ccCardType.VISACARD:
                        invoicestat = projectEnums.invoiceStatus.visaCardTransfer;
                        break;
                }

                this.RecordInvoiceTransaction(transactions, (projectEnums.invoiceStatus)invoicestat);

                ts.Complete();
            }
        }
 /// <summary>
 /// Deprecated Method for adding a new object to the invoiceTransfers EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToinvoiceTransfers(invoiceTransfer invoiceTransfer)
 {
     base.AddObject("invoiceTransfers", invoiceTransfer);
 }