/// <summary>
 /// Calculates additional fee for the merchant according to the formula:
 /// - Invoice Fee should be included in the fee for first transaction of the month
 /// - If there aren't any transactions that month, Merchant should not be charged Invoice Fee
 /// - If transaction fee is 0 after applying discounts, InvoiceFee should not be added
 /// If merchant has been charged then returns 0.00
 /// </summary>
 /// <param name="transactionObject">Payment transaction object</param>
 /// <returns>Additional fee</returns>
 protected virtual decimal CalculateAdditionalFirstDayFee(TransactionObject transactionObject)
 {
     return(!MerchantHasTransactionsForMonth(transactionObject) && CalculateTransactionFee(transactionObject) > 0 ? InvoiceFixedFee : 0.00m);
 }
        public TransactionObject AddLesson(AddLessonFormData alFormData)
        {
            TransactionObject response = new TransactionObject();

            try
            {
                Education education = educationManager.GetEducation(alFormData.StudentID, alFormData.LessonID);

                Student selectedStudent = studentManager.GetStudent(alFormData.StudentID);
                Lesson  selectedLesson  = lessonManager.GetLesson(alFormData.LessonID);

                if (education != null)
                {
                    Period currentPeriod = periodManager.GetPeriod(selectedLesson.Period.Year, selectedLesson.Period.Semester);


                    Note note = new Note
                    {
                        ResultPoint = alFormData.Result,
                        Description = alFormData.Description,
                        EffectRate  = alFormData.Effect,
                        Education   = education
                    };

                    note.Education = education;
                    education.Notes.Add(note);


                    noteManager.AddNote(note);
                }
                else
                {
                    education         = new Education();
                    education.Student = selectedStudent;
                    selectedStudent.Educations.Add(education);

                    education.Lesson = selectedLesson;
                    selectedLesson.Educations.Add(education);


                    Note note = new Note
                    {
                        ResultPoint = alFormData.Result,
                        Description = alFormData.Description,
                        EffectRate  = alFormData.Effect,
                        Education   = education
                    };

                    education.Notes.Add(note);

                    note.Education = education;

                    noteManager.AddNote(note);
                    educationManager.AddEducation(education);
                }

                double avg = 0;
                education.Notes.ForEach(note => avg += (note.EffectRate / 100) * note.ResultPoint);
                education.Average = avg;

                uow.Save();
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                response.IsSuccess   = false;
                response.Explanation = base.GetExceptionMessage(ex);
            }


            return(response);
        }
Пример #3
0
        public static CharacterTransactionCollection GetCharacterTransactionList(Database db, EveApiId id,
                                                                                 string CharID, string beforeTransId, bool bAutoWalk, bool bUseCache)
        {
            if (!id.IsFullKey())
            {
                return(new CharacterTransactionCollection()); // return empty
            }
            CharacterTransactionCollection journal = null;
            long remainder = 0;
            long lastCount = 0;

            do
            {
                string url = String.Format("{0}{1}?userID={2}&characterID={3}&apiKey={4}&accountKey=1000",
                                           ApiSite, CharWalletTransactions, id.UserId, CharID, id.Key);
                if (null != beforeTransId && 0 < long.Parse(beforeTransId))
                {
                    url += String.Format("&beforeTransID={0}", beforeTransId);
                }

                string str = CheckRequestCache(db, RequestID.CharacterJournal, id.UserId, url);
                if (null == str)
                {
                    str = new StreamReader(openUrl(url)).ReadToEnd();
                    WriteRequestCache(db, RequestID.CharacterJournal, id.UserId, url, str);
                }
                else if (!bUseCache)
                {
                    break; // not allowed to use caching
                }

                XmlDocument xmlDoc = GetXml(new StringReader(str));
                if (null == xmlDoc)
                {
                    break;
                }

                if (null == journal)
                {
                    journal = new CharacterTransactionCollection(CharID, xmlDoc);
                }
                else
                {
                    journal.AppendList(CharID, xmlDoc);
                }

                if (null == journal)
                {
                    remainder = -1;
                }
                else
                {
                    IDBCollectionContents con = (IDBCollectionContents)journal;
                    if (0 == con.Count())
                    {
                        remainder = -1;
                    }
                    else if (lastCount == con.Count())
                    {
                        remainder = -1;
                    }
                    else
                    {
                        lastCount = con.Count();
                        remainder = con.Count() % 1000;
                        if (0 == remainder)
                        {
                            IDBRecord         rec1 = con.GetRecordInterface(con.Count() - 1000);
                            TransactionObject obj1 = (TransactionObject)rec1.GetDataObject();
                            IDBRecord         rec2 = con.GetRecordInterface(con.Count() - 1);
                            TransactionObject obj2 = (TransactionObject)rec2.GetDataObject();
                            beforeTransId = Math.Min(obj1.transID, obj2.transID).ToString();
                            TimeSpan span = (obj2.date > obj1.date) ? obj2.date.Subtract(obj1.date) :
                                            obj1.date.Subtract(obj2.date);

                            if (span.Days >= 7)
                            {
                                remainder = -1; // more than a week, so no more accessable
                            }
                        }
                    }
                }
            } while (0 == remainder && bAutoWalk);

            if (null == journal)
            {
                return(new CharacterTransactionCollection());
            }
            return(journal);
        }
Пример #4
0
        public override void CreateTransaction(Guid voucherId, string code, DateTime issuedDate, double amount, string description)
        {
            UnitOfWork uow = null;

            try
            {
                GeneralJournalBO generalJournalBO = new GeneralJournalBO();
                uow = XpoHelper.GetNewUnitOfWork();
                //Get the origin artifact
                ReceiptVouches receiptVouches = uow.GetObjectByKey <ReceiptVouches>(voucherId);

                //Create new transaction
                ReceiptVouchesTransaction transaction = new ReceiptVouchesTransaction(uow)
                {
                    TransactionId    = Guid.NewGuid(),
                    Amount           = amount,
                    Code             = code,
                    CreateDate       = DateTime.Now,
                    Description      = description,
                    IssueDate        = issuedDate,
                    ReceiptVouchesId = receiptVouches,
                    RowStatus        = Utility.Constant.ROWSTATUS_ACTIVE,
                    UpdateDate       = DateTime.Now
                };
                uow.FlushChanges();
                //Create double entry
                //Create debit jounal
                GeneralJournal debitGeneralJournal = generalJournalBO.CreateGeneralJournal
                                                     (
                    uow,
                    transaction.TransactionId,
                    Account.GetDefault(uow, DefaultAccountEnum.NAAN_DEFAULT).AccountId,
                    Side.DEBIT,
                    amount,
                    description,
                    JounalTypeFlag.ACTUAL
                                                     );
                //Create credit jounal
                GeneralJournal creditGeneralJournal = generalJournalBO.CreateGeneralJournal
                                                      (
                    uow,
                    transaction.TransactionId,
                    Account.GetDefault(uow, DefaultAccountEnum.NAAN_DEFAULT).AccountId,
                    Side.CREDIT,
                    amount,
                    description,
                    JounalTypeFlag.ACTUAL
                                                      );

                ObjectBO objectBO = new ObjectBO();
                //Create CMS object for transaction
                NAS.DAL.CMS.ObjectDocument.Object transactionCMSObject =
                    objectBO.CreateCMSObject(uow,
                                             DAL.CMS.ObjectDocument.ObjectTypeEnum.VOUCHER_RECEIPT);

                TransactionObject transactionObject = new TransactionObject(uow)
                {
                    ObjectId      = transactionCMSObject,
                    TransactionId = transaction
                };

                GeneralJournalObject debitGeneralJournalObject  = null;
                GeneralJournalObject creditGeneralJournalObject = null;
                //Create CMS object for debit jounal
                NAS.DAL.CMS.ObjectDocument.Object debitJounalCMSObject =
                    objectBO.CreateCMSObject(uow,
                                             DAL.CMS.ObjectDocument.ObjectTypeEnum.VOUCHER_RECEIPT);
                debitGeneralJournalObject = new GeneralJournalObject(uow)
                {
                    GeneralJournalId = debitGeneralJournal,
                    ObjectId         = debitJounalCMSObject
                };

                //Create CMS object for debit jounal
                NAS.DAL.CMS.ObjectDocument.Object creditJounalCMSObject =
                    objectBO.CreateCMSObject(uow,
                                             DAL.CMS.ObjectDocument.ObjectTypeEnum.VOUCHER_RECEIPT);
                creditGeneralJournalObject = new GeneralJournalObject(uow)
                {
                    GeneralJournalId = creditGeneralJournal,
                    ObjectId         = creditJounalCMSObject
                };

                uow.FlushChanges();

                //Copy readonly data from original artifact
                //Get origin CMS object
                VoucherObject voucherObject = receiptVouches.VoucherObjects.FirstOrDefault();
                if (voucherObject != null)
                {
                    NAS.DAL.CMS.ObjectDocument.Object CMSVoucherObject = voucherObject.ObjectId;
                    //Copy artifact's data to cms object of transaction
                    objectBO.CopyReadOnlyCustomFieldData(
                        CMSVoucherObject.ObjectId,
                        transactionCMSObject.ObjectId);
                    //Copy artifact's data to cms object of default general journals
                    objectBO.CopyReadOnlyCustomFieldData(
                        CMSVoucherObject.ObjectId,
                        debitJounalCMSObject.ObjectId);

                    objectBO.CopyReadOnlyCustomFieldData(
                        CMSVoucherObject.ObjectId,
                        creditJounalCMSObject.ObjectId);
                }

                uow.CommitChanges();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (uow != null)
                {
                    uow.Dispose();
                }
            }
        }
Пример #5
0
 public override void TransactionInfo(string strTransactionID)
 {
     Reset();
     TransactionId    = strTransactionID;
     m_transactionObj = Client.GetTransactionDetails(GenerateToken(), strTransactionID);
 }
Пример #6
0
        public override bool Save(
            DevExpress.Xpo.Session session,
            Guid billId,
            string billCode,
            DateTime issuedDate,
            DAL.Nomenclature.Organization.Organization sourceOrganizationBill,
            DAL.Nomenclature.Organization.Person targetOrganizationBill)
        {
            try
            {
                //Get bill by ID
                NAS.DAL.Invoice.SalesInvoice bill =
                    session.GetObjectByKey <NAS.DAL.Invoice.SalesInvoice>(billId);
                if (bill == null)
                {
                    throw new Exception("Could not found bill");
                }

                bill.Code                 = billCode;
                bill.IssuedDate           = issuedDate;
                bill.SourceOrganizationId = sourceOrganizationBill;
                bill.TargetOrganizationId = targetOrganizationBill;
                bill.RowStatus            = Utility.Constant.ROWSTATUS_ACTIVE;

                bill.Save();

                //Create default actual transaction
                CriteriaOperator criteria = CriteriaOperator.And(
                    new BinaryOperator("RowStatus", Utility.Constant.ROWSTATUS_ACTIVE, BinaryOperatorType.GreaterOrEqual),
                    CriteriaOperator.Or(
                        new ContainsOperator("GeneralJournals",
                                             new BinaryOperator("JournalType", JounalTypeConstant.ACTUAL)
                                             ),
                        new BinaryOperator(new AggregateOperand("GeneralJournals", Aggregate.Count), 0, BinaryOperatorType.Equal)
                        )
                    );

                var actualSaleInvoiceTransactions = bill.SaleInvoiceTransactions;

                actualSaleInvoiceTransactions.Criteria = criteria;

                if (actualSaleInvoiceTransactions == null ||
                    actualSaleInvoiceTransactions.Count == 0)
                {
                    SaleInvoiceTransaction saleInvoiceTransaction
                        = new SaleInvoiceTransaction(session)
                        {
                        Code           = "BT_" + bill.Code,
                        CreateDate     = DateTime.Now,
                        Description    = "BT_" + bill.Code,
                        IssueDate      = issuedDate,
                        RowStatus      = Utility.Constant.ROWSTATUS_ACTIVE,
                        UpdateDate     = DateTime.Now,
                        SalesInvoiceId = bill
                        };
                    saleInvoiceTransaction.Save();

                    ObjectBO objectBO = new ObjectBO();
                    NAS.DAL.CMS.ObjectDocument.Object cmsObject =
                        objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);

                    TransactionObject transactionObject = new TransactionObject(session)
                    {
                        ObjectId      = cmsObject,
                        TransactionId = saleInvoiceTransaction
                    };

                    transactionObject.Save();
                }

                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #7
0
        private void OnGetAllIdsButtonClick(Object sender
                                            , EventArgs e)
        {
            if (m_RemoteAccessClient == null)
            {
                m_RemoteAccessClient = ScsServiceClientBuilder.CreateClient <IDVDProfilerRemoteAccess>(new ScsTcpEndPoint(IPAddressTextBox.Text, 10083));

                m_RemoteAccessClient.Connect();
            }

            ProfileIdListView.Items.Clear();

            TransactionObject transactionObject = m_RemoteAccessClient.ServiceProxy.BeginTransaction();

            if (m_ChangeNotificationObject == null)
            {
                AccessResult <ChangeNotificationObject> result = m_RemoteAccessClient.ServiceProxy.RegisterForProfileChanges(transactionObject, false);

                m_ChangeNotificationObject = result.Result;

                Timer.Interval = 5000;
                Timer.Tick    += new EventHandler(OnTimer1Tick);
            }

            Timer.Stop();

            try
            {
                AccessResult <List <String> > result = m_RemoteAccessClient.ServiceProxy.GetAllProfileIds(transactionObject, false);

                if (result.Success)
                {
                    if (result.Result != null)
                    {
                        foreach (String profileId in result.Result)
                        {
                            ListViewItem item = new ListViewItem();

                            GetTitle(transactionObject, profileId, item);

                            ProfileIdListView.Items.Add(item);
                        }
                    }

                    m_RemoteAccessClient.ServiceProxy.CommitTransaction(transactionObject);
                }
                else
                {
                    m_RemoteAccessClient.ServiceProxy.AbortTransaction(transactionObject);

                    MessageBox.Show("An error occured", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                Timer.Start();
            }
            catch (Exception ex)
            {
                try
                {
                    m_RemoteAccessClient.ServiceProxy.AbortTransaction(transactionObject);
                }
                catch { }

                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 public new static bool MerchantHasTransactionsForMonth(TransactionObject transactionObject)
 {
     return(TransactionFeeCalculator.MerchantHasTransactionsForMonth(transactionObject));
 }
 public new decimal CalculateTransactionFee(TransactionObject transactionObject)
 {
     return(base.CalculateTransactionFee(transactionObject));
 }
Пример #10
0
        /// <summary>
        /// Tạo dữ liệu cho CMS Object Inventory
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="uow"></param>
        /// <param name="InventoryObjectId"></param>
        /// <param name="CMSObjectType"></param>
        public void PopulateCMSObjecForInventoryObject <T>(
            UnitOfWork uow,
            Guid InventoryObjectId,
            DAL.CMS.ObjectDocument.ObjectTypeEnum CMSObjectType)
        {
            ObjectBO bo = new ObjectBO();

            if (typeof(T).Equals(typeof(NAS.DAL.Inventory.Command.InventoryCommand)))
            {
                NAS.DAL.Inventory.Command.InventoryCommand inventoryObject =
                    uow.GetObjectByKey <NAS.DAL.Inventory.Command.InventoryCommand>(InventoryObjectId);
                NAS.DAL.CMS.ObjectDocument.Object o   = bo.CreateCMSObject(uow, CMSObjectType);
                InventoryCommandObject            ICO = new InventoryCommandObject(uow);
                ICO.ObjectId           = o;
                ICO.InventoryCommandId = (inventoryObject as NAS.DAL.Inventory.Command.InventoryCommand);
                ICO.Save();
                NAS.DAL.CMS.ObjectDocument.ObjectType type =
                    NAS.DAL.CMS.ObjectDocument.ObjectType.GetDefault(uow, CMSObjectType);
                if (type == null)
                {
                    throw new Exception("The ObjectType is not exist in system");
                }

                InventoryCommandCustomType ICCT = new InventoryCommandCustomType(uow);
                ICCT.ObjectTypeId       = type;
                ICCT.InventoryCommandId = (inventoryObject as NAS.DAL.Inventory.Command.InventoryCommand);
                ICCT.Save();
            }
            else if (typeof(T).Equals(typeof(NAS.DAL.Inventory.Command.InventoryCommandItemTransaction)))
            {
                InventoryCommandItemTransaction transactionObject =
                    uow.GetObjectByKey <InventoryCommandItemTransaction>(InventoryObjectId);
                NAS.DAL.CMS.ObjectDocument.Object o   = bo.CreateCMSObject(uow, CMSObjectType);
                InventoryTransactionObject        ITO = new InventoryTransactionObject(uow);
                ITO.ObjectId = o;
                ITO.InventoryTransactionId = (transactionObject as NAS.DAL.Inventory.Journal.InventoryTransaction);
                ITO.Save();

                NAS.DAL.CMS.ObjectDocument.ObjectType type =
                    NAS.DAL.CMS.ObjectDocument.ObjectType.GetDefault(uow, CMSObjectType);
                InventoryTransactionCustomType ITCT = new InventoryTransactionCustomType(uow);
                ITCT.ObjectTypeId           = type;
                ITCT.InventoryTransactionId = (transactionObject as NAS.DAL.Inventory.Journal.InventoryTransaction);
                ITCT.Save();
            }
            else if (typeof(T).Equals(typeof(NAS.DAL.Inventory.Command.InventoryCommandFinancialTransaction)))
            {
                InventoryCommandFinancialTransaction transactionObject =
                    uow.GetObjectByKey <InventoryCommandFinancialTransaction>(InventoryObjectId);
                NAS.DAL.CMS.ObjectDocument.Object o = bo.CreateCMSObject(uow, CMSObjectType);
                TransactionObject TO = new TransactionObject(uow);
                TO.ObjectId      = o;
                TO.TransactionId = (transactionObject as Transaction);
                TO.Save();
            }
            else if (typeof(T).Equals(typeof(NAS.DAL.Accounting.Journal.GeneralJournal)))
            {
                GeneralJournal journalObject =
                    uow.GetObjectByKey <GeneralJournal>(InventoryObjectId);
                NAS.DAL.CMS.ObjectDocument.Object o = bo.CreateCMSObject(uow, CMSObjectType);
                GeneralJournalObject GJO            = new GeneralJournalObject(uow);
                GJO.ObjectId         = o;
                GJO.GeneralJournalId = (journalObject as GeneralJournal);
                GJO.Save();
                NAS.DAL.CMS.ObjectDocument.ObjectType type =
                    NAS.DAL.CMS.ObjectDocument.ObjectType.GetDefault(uow, CMSObjectType);
                GeneralJournalCustomType GJCT = new GeneralJournalCustomType(uow);
                GJCT.ObjectTypeId     = type;
                GJCT.GeneralJournalId = (journalObject as GeneralJournal);
                GJCT.Save();
            }
            else if (typeof(T).Equals(typeof(NAS.DAL.Inventory.Journal.InventoryJournal)))
            {
                InventoryJournal journalObject =
                    uow.GetObjectByKey <InventoryJournal>(InventoryObjectId);
                NAS.DAL.CMS.ObjectDocument.Object o   = bo.CreateCMSObject(uow, CMSObjectType);
                InventoryJournalObject            ITO = new InventoryJournalObject(uow);
                ITO.ObjectId           = o;
                ITO.InventoryJournalId = (journalObject as InventoryJournal);
                ITO.Save();

                NAS.DAL.CMS.ObjectDocument.ObjectType type =
                    NAS.DAL.CMS.ObjectDocument.ObjectType.GetDefault(uow, CMSObjectType);
                InventoryJournalCustomType ITCT = new InventoryJournalCustomType(uow);
                ITCT.ObjectTypeId       = type;
                ITCT.InventoryJournalId = (journalObject as InventoryJournal);
                ITCT.Save();
            }
            uow.FlushChanges();
        }
Пример #11
0
        /// <summary>
        /// Tìm đối tượng CMS object của InventoryJournal
        /// </summary>
        /// <typeparam name="T">is NAS.DAL.Inventory.Command.InventoryCommandFinancialTransaction
        ///         or NAS.DAL.Inventory.Command.InventoryCommandItemTransaction
        /// </typeparam>
        /// <param name="transactionId"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public NAS.DAL.CMS.ObjectDocument.Object GetCMSTransaction <T>(
            Guid transactionId,
            ObjectTypeEnum type)
        {
            if (type != ObjectTypeEnum.INVENTORY_IN && type != ObjectTypeEnum.INVENTORY_MOVE && type != ObjectTypeEnum.INVENTORY_OUT)
            {
                throw new Exception("The Type is invalid");
            }

            if (!typeof(T).Equals(typeof(NAS.DAL.Inventory.Command.InventoryCommandFinancialTransaction)) &&
                !typeof(T).Equals(typeof(NAS.DAL.Inventory.Command.InventoryCommandItemTransaction)))
            {
                throw new Exception("The Generic Type is invalid");
            }

            if (transactionId != null && !transactionId.Equals(Guid.Empty))
            {
                NAS.DAL.CMS.ObjectDocument.Object cmsObject = null;
                using (UnitOfWork uow = XpoHelper.GetNewUnitOfWork())
                {
                    if (typeof(T).Equals(typeof(NAS.DAL.Inventory.Command.InventoryCommandItemTransaction)))
                    {
                        InventoryCommandItemTransaction transaction       = uow.GetObjectByKey <InventoryCommandItemTransaction>(transactionId);
                        InventoryTransactionObject      transactionObject =
                            transaction.InventoryTransactionObjects.FirstOrDefault();
                        if (transactionObject == null)
                        {
                            ObjectBO objectBO = new ObjectBO();
                            cmsObject = objectBO.CreateCMSObject(uow, type);
                            InventoryTransactionObject newTransactionObject = new InventoryTransactionObject(uow)
                            {
                                ObjectId = cmsObject,
                                InventoryTransactionId = transaction
                            };

                            NAS.DAL.CMS.ObjectDocument.ObjectType objectType
                                = uow.FindObject <ObjectType>(new BinaryOperator("Name", Enum.GetName(typeof(ObjectTypeEnum), type)));

                            if (objectType == null)
                            {
                                throw new Exception("The OjectType is not exist in system");
                            }

                            InventoryTransactionCustomType newTransactionCustomType = new InventoryTransactionCustomType(uow)
                            {
                                ObjectTypeId           = objectType,
                                InventoryTransactionId = transaction
                            };

                            newTransactionCustomType.Save();
                            uow.CommitChanges();
                        }
                        else
                        {
                            cmsObject = transactionObject.ObjectId;
                        }
                        return(cmsObject);
                    }
                    else
                    {
                        InventoryCommandFinancialTransaction transaction = uow.GetObjectByKey <InventoryCommandFinancialTransaction>(transactionId);
                        TransactionObject transactionObject =
                            transaction.TransactionObjects.FirstOrDefault();
                        if (transactionObject == null)
                        {
                            ObjectBO objectBO = new ObjectBO();
                            cmsObject = objectBO.CreateCMSObject(uow, type);
                            TransactionObject newTransactionObject = new TransactionObject(uow)
                            {
                                ObjectId      = cmsObject,
                                TransactionId = transaction
                            };
                            uow.CommitChanges();
                        }
                        else
                        {
                            cmsObject = transactionObject.ObjectId;
                        }
                        return(cmsObject);
                    }
                }
            }
            else
            {
                return(null);
            }
        }
Пример #12
0
    private void OrderImpFormHandler(SAPbouiCOM.Form form, SAPbouiCOM.ItemEvent pVal)
    {
        try
        {
            oOrderImpForm = form;
            if (pVal.BeforeAction)
            {
            }
            else
            {
                switch (pVal.EventType)
                {
                case SAPbouiCOM.BoEventTypes.et_CLICK:

                    break;

                case SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED:
                {
                    switch (pVal.ItemUID)
                    {
                    case btnClose:
                        oOrderImpForm.Close();
                        break;

                    case btnImp:
                        try
                        {
                            if (transObjForImport == null)
                            {
                                form.Items.Item(btnFind).Click();
                            }
                            else
                            {
                                string cardcode = getFormItemVal(form, cbCustomerID);
                                if (cardcode == "")
                                {
                                    showMessage("Please select a customer.");
                                }
                                else
                                {
                                    if (transObjForImport == null)
                                    {
                                        form.Items.Item(btnFind).Click();
                                    }
                                    else
                                    {
                                        if (SBO_Application.MessageBox("Import order to " + cardcode + "?", 1, "Yes", "No") == 1)
                                        {
                                            SBO_Application.Menus.Item(MENU_SO).Activate();
                                            SAPbobsCOM.Documents doc = importSalesOrder();

                                            SBO_Application.Menus.Item(MENU_LAST).Activate();
                                            SBO_Application.SetStatusBarMessage(string.Format("Import order {0} added to {1}.", doc.DocNum, cardcode), SAPbouiCOM.BoMessageTime.bmt_Medium, true);
                                        }
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            SBO_Application.SetStatusBarMessage(string.Format("Import order error: {0}.", ex.Message), SAPbouiCOM.BoMessageTime.bmt_Medium, true);
                        }
                        break;

                    case btnFind:
                        try
                        {
                            string transID = getFormItemVal(form, editTransID);
                            if (transID == "")
                            {
                                showMessage("Please enter transaction ID.");
                            }
                            else
                            {
                                SBO_Application.SetStatusBarMessage("Finding transaction please wait...", SAPbouiCOM.BoMessageTime.bmt_Medium, false);

                                SecurityToken token = getToken("");
                                //transObjForImport = ebiz.getTransaction(token, transID);
                                setLabelCaption(form, lbCardHolder, transObjForImport.BillingAddress.FirstName + " " + transObjForImport.BillingAddress.LastName);
                                setLabelCaption(form, lbTAmount, transObjForImport.Details.Amount.ToString());
                                setLabelCaption(form, lbCustID, transObjForImport.CustomerID);
                                setLabelCaption(form, lbTax, transObjForImport.Details.Tax.ToString());
                                setLabelCaption(form, lbShipping, transObjForImport.Details.Shipping.ToString());
                                setLabelCaption(form, lbDiscount, transObjForImport.Details.Discount.ToString());

                                SAPbouiCOM.ComboBox oCB = (SAPbouiCOM.ComboBox)form.Items.Item(cbOrderItem).Specific;
                                try
                                {
                                    while (oCB.ValidValues.Count > 0)
                                    {
                                        oCB.ValidValues.Remove(0, SAPbouiCOM.BoSearchKey.psk_Index);
                                    }
                                }
                                catch (Exception)
                                { }
                                ComboAddItem(oCB, "");
                                string s = "";
                                int    i = 0;
                                foreach (LineItem item in transObjForImport.LineItems)
                                {
                                    i++;
                                    if (item.SKU == null || item.SKU == "")
                                    {
                                        item.SKU = "SKU-" + i.ToString();
                                    }
                                    s = string.Format("{0} - {1} {2}x{3}", item.SKU, item.ProductName, item.Qty, item.UnitPrice);

                                    ComboAddItem(oCB, s);
                                }
                                try
                                {
                                    oCB.Select(s);
                                }
                                catch (Exception) { }
                                SBO_Application.SetStatusBarMessage(string.Format("{0} Order Item(s) ready to import.", oCB.ValidValues.Count - 1), SAPbouiCOM.BoMessageTime.bmt_Medium, false);
                                // form.Items.Item(btnImp).Click();
                            }
                        }
                        catch (Exception ex)
                        {
                            transObjForImport = null;
                            SAPbouiCOM.ComboBox oCB = (SAPbouiCOM.ComboBox)form.Items.Item(cbOrderItem).Specific;
                            try
                            {
                                while (oCB.ValidValues.Count > 0)
                                {
                                    oCB.ValidValues.Remove(0, SAPbouiCOM.BoSearchKey.psk_Index);
                                }
                            }
                            catch (Exception)
                            { }
                            ComboAddItem(oCB, "");
                            oCB.Select("");
                            SBO_Application.SetStatusBarMessage(string.Format("Find transaction error: {0}.", ex.Message), SAPbouiCOM.BoMessageTime.bmt_Medium, true);

                            errorLog(ex);
                        }
                        break;
                    }
                }
                break;
                }
            }
        }
        catch (Exception ex)
        {
            errorLog(ex);
        }
    }
Пример #13
0
        public Guid CreateTransaction(string code, DateTime issuedDate, double amount, string description)
        {
            UnitOfWork uow             = null;
            Guid       m_TransactionId = Guid.NewGuid();

            try
            {
                GeneralJournalBO generalJournalBO = new GeneralJournalBO();
                uow = XpoHelper.GetNewUnitOfWork();

                //Create new transaction
                ManualBookingTransaction transaction = new ManualBookingTransaction(uow)
                {
                    TransactionId = m_TransactionId,
                    Amount        = amount,
                    Code          = code,
                    CreateDate    = DateTime.Now,
                    Description   = description,
                    IssueDate     = issuedDate,
                    RowStatus     = Utility.Constant.ROWSTATUS_ACTIVE,
                    UpdateDate    = DateTime.Now
                };
                uow.FlushChanges();
                //Create double entry
                //Create debit jounal
                GeneralJournal debitGeneralJournal = generalJournalBO.CreateGeneralJournal
                                                     (
                    uow,
                    transaction.TransactionId,
                    Account.GetDefault(uow, DefaultAccountEnum.NAAN_DEFAULT).AccountId,
                    Side.DEBIT,
                    amount,
                    description,
                    JounalTypeFlag.ACTUAL
                                                     );
                //Create credit jounal
                GeneralJournal creditGeneralJournal = generalJournalBO.CreateGeneralJournal
                                                      (
                    uow,
                    transaction.TransactionId,
                    Account.GetDefault(uow, DefaultAccountEnum.NAAN_DEFAULT).AccountId,
                    Side.CREDIT,
                    amount,
                    description,
                    JounalTypeFlag.ACTUAL
                                                      );

                ObjectBO objectBO = new ObjectBO();
                //Create CMS object for transaction
                NAS.DAL.CMS.ObjectDocument.Object transactionCMSObject =
                    objectBO.CreateCMSObject(uow,
                                             DAL.CMS.ObjectDocument.ObjectTypeEnum.MANUAL_BOOKING);

                TransactionObject transactionObject = new TransactionObject(uow)
                {
                    ObjectId      = transactionCMSObject,
                    TransactionId = transaction
                };

                GeneralJournalObject debitGeneralJournalObject  = null;
                GeneralJournalObject creditGeneralJournalObject = null;
                //Create CMS object for debit jounal
                NAS.DAL.CMS.ObjectDocument.Object debitJounalCMSObject =
                    objectBO.CreateCMSObject(uow,
                                             DAL.CMS.ObjectDocument.ObjectTypeEnum.MANUAL_BOOKING);
                debitGeneralJournalObject = new GeneralJournalObject(uow)
                {
                    GeneralJournalId = debitGeneralJournal,
                    ObjectId         = debitJounalCMSObject
                };

                //Create CMS object for debit jounal
                NAS.DAL.CMS.ObjectDocument.Object creditJounalCMSObject =
                    objectBO.CreateCMSObject(uow,
                                             DAL.CMS.ObjectDocument.ObjectTypeEnum.MANUAL_BOOKING);
                creditGeneralJournalObject = new GeneralJournalObject(uow)
                {
                    GeneralJournalId = creditGeneralJournal,
                    ObjectId         = creditJounalCMSObject
                };

                uow.CommitChanges();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (uow != null)
                {
                    uow.Dispose();
                }
            }

            return(m_TransactionId);
        }
Пример #14
0
        static void Main(string[] args)
        {
            Database.InitDatabase();

            Database.VerifyObject <Imovel>();
            Database.VerifyObject <Visitante>();
            Database.VerifyObject <Entrada>();

            Imovel.Truncate();
            Visitante.Truncate();
            Entrada.Truncate();

            using (var _trans = new TransactionObject(false))
            {
                for (int i = 0; i < 20; i++)
                {
                    var _imovel = new Imovel {
                        EnderecoImovel = $"Rua {i}, nº10", Proprietario = $"Proprietário {i}"
                    };
                    _imovel.SaveChanges(transaction: _trans);
                }
                for (int i = 0; i < 20; i++)
                {
                    var _id        = i.ZeroEsquerda(2);
                    var _visitante = new Visitante {
                        Nome = $"Nome {_id}"
                    };
                    _visitante.SaveChanges(transaction: _trans);
                }

                var _action = new Action(() =>
                {
                    var _rnd = new Random(1);
                    for (int i = 0; i < 100; i++)
                    {
                        var _yes     = _rnd.Next(1, 2) == 1;
                        var _entrada = new Entrada
                        {
                            Autorizador     = "Teste",
                            DataHoraEntrada = DateTime.Now,
                            DataHoraSaida   = _yes ? DateTime.Now : default(DateTime),
                            IdImovel        = _rnd.Next(1, 20),
                            IdVisitante     = _rnd.Next(1, 20),
                            MotivoVisita    = MotivoVisita.Pessoal,
                            StatusEntrada   = _yes ? StatusEntrada.Finalizado : StatusEntrada.Entrada
                        };
                        try
                        {
                            _entrada.SaveChanges(transaction: _trans);
                        }
                        catch (Exception ex)
                        {
                            System.Console.WriteLine(ex.Message);
                        }
                        Thread.Sleep(10);
                    }
                });

                var _watch = new Stopwatch();
                _watch.Start();

                for (int _a = 0; _a < 10; _a++)
                {
                    _action.Invoke();
                    Thread.Sleep(500);
                }
                _watch.Stop();

                System.Console.WriteLine($"Tempo do insert sem transação: {_watch.Elapsed.ToString("g")}");
                _trans.Commit();
            }

            var _date1  = DateTime.Now.Date;
            var _date2  = _date1.AddHours(23).AddMinutes(59).AddSeconds(59);
            var _status = new[] { StatusEntrada.Entrada, StatusEntrada.Finalizado, };


            //var _teste_like_1 = Visitante.Load(v => v.Nome.Contains("04"));
            //var _teste_like_2 = Visitante.Load(v => v.Nome.StartsWith("04"));
            //var _teste_like_3 = Visitante.Load(v => v.Nome.EndsWith("04"));

            //var _entradas_1 = DoQuery<Entrada>(e => e.IdImovel == 1);
            //var _entradas_2 = DoQuery<Entrada>(e => e.IdVisitante == _teste_like_3.IdVisitante);
            var _entradas_3 = DoQuery <Entrada>(e => _status.Contains(e.StatusEntrada) && e.DataHoraEntrada >= _date1 && e.DataHoraEntrada <= _date2);

            System.Console.WriteLine("Pressione qualquer tecla para finalizar...");
            System.Console.Read();
        }
 /// <summary>
 /// Returns payment transaction fee with additional charges for the first merchant transaction in month.
 /// </summary>
 /// <param name="transactionObject">Payment transaction object</param>
 /// <returns>1/100 of the transaction amount plus additional charges</returns>
 public virtual decimal CalculateTotalTransactionFee(TransactionObject transactionObject)
 {
     return(CalculateTransactionFee(transactionObject) + CalculateAdditionalFirstDayFee(transactionObject));
 }
 public new decimal CalculateAdditionalFirstDayFee(TransactionObject transactionObject)
 {
     return(base.CalculateAdditionalFirstDayFee(transactionObject));
 }
Пример #17
0
        public void BillTransactionInit(Session session,
                                        Guid BillId,
                                        double TotalAmount,
                                        double DiscountAmount,
                                        double TaxAmount,
                                        double ItemAmount
                                        )
        {
            CriteriaOperator filter  = new BinaryOperator("Code", DefaultAccountEnum.NAAN_DEFAULT.ToString(), BinaryOperatorType.Equal);
            Account          account = session.FindObject <Account>(filter);

            PurchaseInvoiceTransaction saleInvoiceTransaction = new PurchaseInvoiceTransaction(session);

            saleInvoiceTransaction.TransactionId = Guid.NewGuid();
            saleInvoiceTransaction.CreateDate    = saleInvoiceTransaction.IssueDate = DateTime.Now;
            saleInvoiceTransaction.Amount        = TotalAmount;
            saleInvoiceTransaction.RowStatus     = 0;

            saleInvoiceTransaction.Save();

            ObjectBO objectBO = new ObjectBO();

            NAS.DAL.CMS.ObjectDocument.Object transactionCMSObject =
                objectBO.CreateCMSObject(session,
                                         DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);

            TransactionObject transactionObject = new TransactionObject(session)
            {
                ObjectId      = transactionCMSObject,
                TransactionId = saleInvoiceTransaction
            };

            transactionObject.Save();

            // total
            GeneralJournal generalJournal = new GeneralJournal(session);

            generalJournal.GeneralJournalId = Guid.NewGuid();
            generalJournal.TransactionId    = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId);
            generalJournal.RowStatus        = 0;
            generalJournal.JournalType      = 'A';

            generalJournal.AccountId = account;
            generalJournal.Debit     = TotalAmount;
            generalJournal.Save();

            GeneralJournalObject debitGeneralJournalObject = null;

            NAS.DAL.CMS.ObjectDocument.Object debitJounalCMSObject =
                objectBO.CreateCMSObject(session,
                                         DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);
            debitGeneralJournalObject = new GeneralJournalObject(session)
            {
                GeneralJournalId = generalJournal,
                ObjectId         = debitJounalCMSObject
            };

            debitGeneralJournalObject.Save();

            // Discount
            generalJournal = new GeneralJournal(session);
            generalJournal.GeneralJournalId = Guid.NewGuid();
            generalJournal.TransactionId    = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId);
            generalJournal.RowStatus        = 0;
            generalJournal.JournalType      = 'A';

            generalJournal.AccountId = account;
            generalJournal.Credit    = DiscountAmount;
            generalJournal.Save();

            debitJounalCMSObject =
                objectBO.CreateCMSObject(session,
                                         DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);
            debitGeneralJournalObject = new GeneralJournalObject(session)
            {
                GeneralJournalId = generalJournal,
                ObjectId         = debitJounalCMSObject
            };

            debitGeneralJournalObject.Save();

            // Tax

            generalJournal = new GeneralJournal(session);
            generalJournal.GeneralJournalId = Guid.NewGuid();
            generalJournal.TransactionId    = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId);
            generalJournal.RowStatus        = 0;
            generalJournal.JournalType      = 'A';

            generalJournal.AccountId = account;
            generalJournal.Credit    = DiscountAmount;
            generalJournal.Save();

            debitJounalCMSObject =
                objectBO.CreateCMSObject(session,
                                         DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);
            debitGeneralJournalObject = new GeneralJournalObject(session)
            {
                GeneralJournalId = generalJournal,
                ObjectId         = debitJounalCMSObject
            };

            debitGeneralJournalObject.Save();

            // Item
            generalJournal = new GeneralJournal(session);
            generalJournal.GeneralJournalId = Guid.NewGuid();
            generalJournal.TransactionId    = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId);
            generalJournal.RowStatus        = 0;
            generalJournal.JournalType      = 'A';

            generalJournal.AccountId = account;
            generalJournal.Credit    = ItemAmount;
            generalJournal.Save();

            debitJounalCMSObject =
                objectBO.CreateCMSObject(session,
                                         DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);
            debitGeneralJournalObject = new GeneralJournalObject(session)
            {
                GeneralJournalId = generalJournal,
                ObjectId         = debitJounalCMSObject
            };

            debitGeneralJournalObject.Save();
        }
        public TransactionObject CreateAccount(CreateAccountFormData newAccountInfo)
        {
            TransactionObject response = new TransactionObject();

            if (userManager.IsUserExists(newAccountInfo.Username))
            {
                try
                {
                    Period period = prdManager.GetPeriod(newAccountInfo.Year, newAccountInfo.Term);

                    User    newUser    = new User();
                    Student newStudent = new Student();

                    newUser.Username     = newAccountInfo.Username;
                    newUser.CreationDate = DateTime.Now;
                    newUser.Password     = SecurityFolder.Security.GetEncryptedPassword(newAccountInfo.Password);//şifre hashlendi
                    newUser.ProfilePhoto = newAccountInfo.ProfilePhoto;
                    newUser.Email        = newAccountInfo.Email;

                    newStudent.Name     = newAccountInfo.Name;
                    newStudent.Surname  = newAccountInfo.Surname;
                    newStudent.Birthday = new DateTime(1996, 1, 1);
                    newStudent.Period   = period;

                    period.Students.Add(newStudent);

                    newUser.Student = newStudent;
                    newStudent.User = newUser;

                    userManager.AddUser(newUser);
                    stdManager.AddStudent(newStudent);


                    FriendRelationship fr = new FriendRelationship();
                    newUser.FriendRelationship = fr;

                    frManager.AddFriendRelationship(fr);


                    var saveResponse = uow.Save();

                    if (saveResponse.IsSuccess)
                    {
                        response.IsSuccess = true;
                    }
                    else
                    {
                        response.IsSuccess   = false;
                        response.Explanation = saveResponse.Explanation;
                    }
                }
                catch (Exception ex)
                {
                    response.IsSuccess   = false;
                    response.Explanation = base.GetExceptionMessage(ex);
                }
            }
            else
            {
                response.IsSuccess   = false;
                response.Explanation = "This username is exists! Please try valid username...";
            }
            return(response);
        }
Пример #19
0
        protected override void CloneBillTransaction(Session session, Guid billId, ref Bill ret)
        {
            SaleInvoiceTransactionBO invoiceTransactionBO = new SaleInvoiceTransactionBO();
            var      transactions = invoiceTransactionBO.GetTransactions(session, billId);
            ObjectBO objectBO     = new ObjectBO();

            foreach (var invoiceTransaction in transactions)
            {
                SaleInvoiceTransaction sourceSaleInvoiceTransaction =
                    (SaleInvoiceTransaction)invoiceTransaction;
                SaleInvoiceTransaction saleInvoiceTransaction = new SaleInvoiceTransaction(session)
                {
                    Amount         = sourceSaleInvoiceTransaction.Amount,
                    Code           = String.Format("BT_{0}", ret.Code),
                    CreateDate     = DateTime.Now,
                    Description    = String.Format("BT_{0}", ret.Code),
                    IssueDate      = sourceSaleInvoiceTransaction.IssueDate,
                    SalesInvoiceId = (NAS.DAL.Invoice.SalesInvoice)ret,
                    RowStatus      = Utility.Constant.ROWSTATUS_ACTIVE,
                    UpdateDate     = DateTime.Now
                };
                saleInvoiceTransaction.Save();
                //Create CMS Object for Transaction
                NAS.DAL.CMS.ObjectDocument.Object transactionCMSObject =
                    objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);
                TransactionObject transactionObject = new TransactionObject(session)
                {
                    ObjectId      = transactionCMSObject,
                    TransactionId = saleInvoiceTransaction
                };
                transactionObject.Save();
                //Clone GeneralJournal
                var generalJournals = sourceSaleInvoiceTransaction.GeneralJournals
                                      .Where(r => r.RowStatus >= Utility.Constant.ROWSTATUS_ACTIVE);
                foreach (var sourceGeneralJournal in generalJournals)
                {
                    GeneralJournal generalJournal = new GeneralJournal(session)
                    {
                        AccountId     = sourceGeneralJournal.AccountId,
                        CreateDate    = DateTime.Now,
                        Credit        = sourceGeneralJournal.Credit,
                        CurrencyId    = sourceGeneralJournal.CurrencyId,
                        Debit         = sourceGeneralJournal.Debit,
                        Description   = sourceGeneralJournal.Description,
                        JournalType   = sourceGeneralJournal.JournalType,
                        RowStatus     = Utility.Constant.ROWSTATUS_ACTIVE,
                        TransactionId = saleInvoiceTransaction
                    };
                    generalJournal.Save();
                    //Create CMS object for GeneralJournal
                    NAS.DAL.CMS.ObjectDocument.Object generalJournalCMSObject =
                        objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);
                    GeneralJournalObject generalJournalObject = new GeneralJournalObject(session)
                    {
                        GeneralJournalId = generalJournal,
                        ObjectId         = generalJournalCMSObject
                    };
                    generalJournalObject.Save();
                }
            }
        }
Пример #20
0
        public void BillTransactionInit(Session session,
                                        Guid BillId,
                                        double TotalAmount,
                                        double DiscountAmount,
                                        double TaxAmount,
                                        double ItemAmount
                                        )
        {
            CriteriaOperator filter = new GroupOperator(GroupOperatorType.And,
                                                        new BinaryOperator("Code", "", BinaryOperatorType.Equal),
                                                        //new BinaryOperator("SalesInvoiceId", BillId, BinaryOperatorType.Equal),
                                                        new BinaryOperator("SalesInvoiceId", BillId, BinaryOperatorType.Equal));

            SaleInvoiceTransaction saleInvoiceTransaction = session.FindObject <SaleInvoiceTransaction>(filter);

            if (saleInvoiceTransaction != null)
            {
                filter = new BinaryOperator("TransactionId", saleInvoiceTransaction.TransactionId, BinaryOperatorType.Equal);
                TransactionObject transactionO = session.FindObject <TransactionObject>(filter);

                if (transactionO != null)
                {
                    transactionO.Delete();
                    transactionO.Save();
                }

                filter = new BinaryOperator("GeneralJournalId.TransactionId", saleInvoiceTransaction.TransactionId, BinaryOperatorType.Equal);
                XPCollection <GeneralJournalObject> collectGeneralJournalObject = new XPCollection <GeneralJournalObject>(session, filter);

                if (collectGeneralJournalObject.Count > 0)
                {
                    session.Delete(collectGeneralJournalObject);
                    session.Save(collectGeneralJournalObject);
                }

                filter = new BinaryOperator("TransactionId", saleInvoiceTransaction.TransactionId, BinaryOperatorType.Equal);
                XPCollection <GeneralJournal> collectGeneralJournal = new XPCollection <GeneralJournal>(session, filter);
                if (collectGeneralJournal.Count > 0)
                {
                    session.Delete(collectGeneralJournal);
                    session.Save(collectGeneralJournal);
                }

                Transaction transaction = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId);
                if (transaction != null)
                {
                    transaction.Delete();
                    transaction.Save();
                }

                saleInvoiceTransaction.Delete();
                saleInvoiceTransaction.Save();
            }



            saleInvoiceTransaction = new SaleInvoiceTransaction(session);

            saleInvoiceTransaction.Code           = "";
            saleInvoiceTransaction.TransactionId  = Guid.NewGuid();
            saleInvoiceTransaction.CreateDate     = saleInvoiceTransaction.IssueDate = DateTime.Now;
            saleInvoiceTransaction.Amount         = TotalAmount;
            saleInvoiceTransaction.RowStatus      = Utility.Constant.ROWSTATUS_ACTIVE;
            saleInvoiceTransaction.SalesInvoiceId = session.GetObjectByKey <SalesInvoice>(BillId);

            saleInvoiceTransaction.Save();

            ObjectBO objectBO = new ObjectBO();

            NAS.DAL.CMS.ObjectDocument.Object transactionCMSObject =
                objectBO.CreateCMSObject(session,
                                         DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);

            TransactionObject transactionObject = new TransactionObject(session)
            {
                ObjectId      = transactionCMSObject,
                TransactionId = saleInvoiceTransaction
            };

            transactionObject.Save();

            filter = new BinaryOperator("Code", DefaultAccountEnum.NAAN_DEFAULT.ToString(), BinaryOperatorType.Equal);
            Account account = session.FindObject <Account>(filter);

            // total
            GeneralJournal generalJournal = new GeneralJournal(session);

            generalJournal.GeneralJournalId = Guid.NewGuid();
            generalJournal.TransactionId    = saleInvoiceTransaction;
            generalJournal.RowStatus        = Utility.Constant.ROWSTATUS_ACTIVE;
            generalJournal.JournalType      = 'A';

            generalJournal.AccountId = account;
            generalJournal.Debit     = TotalAmount;
            generalJournal.Save();

            GeneralJournalObject debitGeneralJournalObject = null;

            NAS.DAL.CMS.ObjectDocument.Object debitJounalCMSObject =
                objectBO.CreateCMSObject(session,
                                         DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);
            debitGeneralJournalObject = new GeneralJournalObject(session)
            {
                GeneralJournalId = generalJournal,
                ObjectId         = debitJounalCMSObject
            };

            debitGeneralJournalObject.Save();

            // Discount
            generalJournal = new GeneralJournal(session);
            generalJournal.GeneralJournalId = Guid.NewGuid();
            generalJournal.TransactionId    = saleInvoiceTransaction;
            generalJournal.RowStatus        = Utility.Constant.ROWSTATUS_ACTIVE;
            generalJournal.JournalType      = 'A';

            generalJournal.AccountId = account;
            generalJournal.Credit    = DiscountAmount;
            generalJournal.Save();

            debitJounalCMSObject =
                objectBO.CreateCMSObject(session,
                                         DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);
            debitGeneralJournalObject = new GeneralJournalObject(session)
            {
                GeneralJournalId = generalJournal,
                ObjectId         = debitJounalCMSObject
            };

            debitGeneralJournalObject.Save();

            // Tax

            generalJournal = new GeneralJournal(session);
            generalJournal.GeneralJournalId = Guid.NewGuid();
            generalJournal.TransactionId    = saleInvoiceTransaction;
            generalJournal.RowStatus        = Utility.Constant.ROWSTATUS_ACTIVE;
            generalJournal.JournalType      = 'A';

            generalJournal.AccountId = account;
            generalJournal.Credit    = TaxAmount;
            generalJournal.Save();

            debitJounalCMSObject =
                objectBO.CreateCMSObject(session,
                                         DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);
            debitGeneralJournalObject = new GeneralJournalObject(session)
            {
                GeneralJournalId = generalJournal,
                ObjectId         = debitJounalCMSObject
            };

            debitGeneralJournalObject.Save();

            // Item
            generalJournal = new GeneralJournal(session);
            generalJournal.GeneralJournalId = Guid.NewGuid();
            generalJournal.TransactionId    = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId);
            generalJournal.RowStatus        = Utility.Constant.ROWSTATUS_ACTIVE;
            generalJournal.JournalType      = 'A';

            generalJournal.AccountId = account;
            generalJournal.Credit    = ItemAmount;
            generalJournal.Save();

            debitJounalCMSObject =
                objectBO.CreateCMSObject(session,
                                         DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE);
            debitGeneralJournalObject = new GeneralJournalObject(session)
            {
                GeneralJournalId = generalJournal,
                ObjectId         = debitJounalCMSObject
            };

            debitGeneralJournalObject.Save();
        }