Esempio n. 1
0
        internal static DAL.Datamodel.SYS_DOC_Header New(UnitOfWork uow, DAL.Datamodel.SEC_User sec_user, DAL.Datamodel.SYS_Tracking sysTracking, PORT.Document document)
        {
            DAL.Datamodel.SYS_DOC_Header doc_header = new DAL.Datamodel.SYS_DOC_Header(uow)
            {
                TrackId = sysTracking
                ,
                CreatedBy = sec_user.PersonId
                ,
                TypeId = (DAL.Enums.SYS_DOC_Type)document.documentheader.documentType
            };

            List <DAL.Datamodel.SYS_DOC_Line> lines = new List <DAL.Datamodel.SYS_DOC_Line>();

            foreach (PORT.DocumentLines line in document.documentheader.documentLines)
            {
                lines.Add(new DAL.Datamodel.SYS_DOC_Line(uow)
                {
                    Amount = line.amount, CreatedBy = sec_user.PersonId, Description = line.description, LineOrder = line.lineOrder, Quantity = line.quantity, Total = line.total - line.totalVat, TotalTax = line.totalVat, ItemId = uow.Query <DAL.Datamodel.SYS_Entity>().Where(i => i.Id == line.itemId).FirstOrDefault()
                });
            }

            doc_header.SYS_DOC_Lines.AddRange(lines);

            return(doc_header);
        }
Esempio n. 2
0
        /// <summary>
        /// Saves all the parts of a Document from Portable document created online - ORG_TRX_Header, SYS_DOC_Header, SYS_DOC_Line, GLX_Header, GLX_Line and all movement and history
        /// </summary>
        /// <param name="connectionString">Connection string for the XPO datasource</param>
        /// <param name="userName">Username that created the document</param>
        /// <param name="jsonDoc">Portable document sent from web to be saved</param>
        /// <returns>Returns true if saved successfully.</returns>
        public static bool SaveDocument(string connectionString, string userName, string jsonDoc)
        {
            using (UnitOfWork uow = new UnitOfWork())
            {
                uow.ConnectionString = connectionString;
                uow.Connect();

                // Starts an explicit transaction.
                uow.ExplicitBeginTransaction();
                try
                {
                    PORT.Document document = (PORT.Document)JsonConvert.DeserializeObject(jsonDoc, typeof(PORT.Document));
                    document.documentheader.documentType = (byte)DAL.Enums.SYS_DOC_Type.SalesOrder;
                    DAL.Datamodel.SEC_User sec_user = uow.Query <DAL.Datamodel.SEC_User>().Where(u => u.Username == userName).FirstOrDefault();

                    DAL.Datamodel.SYS_Tracking sysTracking = Core.SYS.SYS_TrackingProvider.New(uow, "WEB");
                    uow.CommitChanges();

                    DAL.Datamodel.ORG_TRX_Header orgHeader = Web.ORG.ORG_TRX_HeaderProvider.Create(uow, sec_user, sysTracking, document.documentheader.documentType, document);

                    orgHeader.HeaderId = Web.SYS.SYS_DOC_HeaderProvider.New(uow, sec_user, sysTracking, document);

                    uow.CommitChanges();
                    orgHeader.HeaderId.DocumentNumber = uow.Query <DAL.Datamodel.SYS_DOC_Header>().Where(d => d.TypeId == (DAL.Enums.SYS_DOC_Type)document.documentheader.documentType).Max(d => d.DocumentNumber) + 1;
                    sysTracking.Initiator             = String.Format("WEB - {0} {1}", "Sales Order", orgHeader.HeaderId.DocumentNumber.ToString());
                    uow.CommitChanges();

                    //CREATE TAX INVOICE FROM SALES ORDER
                    //////////////////////////////////////////////////
                    document.documentheader.documentType = (byte)DAL.Enums.SYS_DOC_Type.TAXInvoice;
                    DAL.Datamodel.ORG_TRX_Header orgHeaderInvoice = Web.ORG.ORG_TRX_HeaderProvider.Create(uow, sec_user, sysTracking, document.documentheader.documentType, document);

                    orgHeaderInvoice.HeaderId = Web.SYS.SYS_DOC_HeaderProvider.New(uow, sec_user, sysTracking, document);

                    uow.CommitChanges();
                    orgHeaderInvoice.HeaderId.DocumentNumber = uow.Query <DAL.Datamodel.SYS_DOC_Header>().Where(d => d.TypeId == (DAL.Enums.SYS_DOC_Type)document.documentheader.documentType).Max(d => d.DocumentNumber) + 1;
                    uow.CommitChanges();
                    //////////////////////////////////////////////////

                    Core.ORG.ORG_CompanyProvider.UpdateCompanyHistory(uow, orgHeaderInvoice.CompanyId.Id, orgHeaderInvoice.HeaderId.SYS_DOC_Lines.Sum(l => l.Total));

                    DAL.Datamodel.GLX_Header glx_Header = Core.GLX.GLX_HeaderProvider.NewInvoice(uow, orgHeaderInvoice);

                    Core.GLX.GLX_HeaderProvider.UpdateLedgerAccountBalance(uow, glx_Header);

                    uow.CommitChanges();

                    uow.ExplicitCommitTransaction();
                }
                catch
                {
                    uow.ExplicitRollbackTransaction();
                    throw;
                }
            }
            return(true);
        }
Esempio n. 3
0
        /// <summary>
        /// Creates a new ORG_TRX_Header from a Portable Document created online.
        /// </summary>
        /// <param name="uow">Unit of Work to create the Header on</param>
        /// <param name="createdBy">The user that created the Document</param>
        /// <param name="sysTracking">The tracking number for the Header</param>
        /// <param name="documentType">The Document type you want to create a header for</param>
        /// <param name="document">The Portable document to create the header from</param>
        /// <returns>A new ORG_TRX_Header created from a Portable document</returns>
        internal static DAL.Datamodel.ORG_TRX_Header Create(UnitOfWork uow, DAL.Datamodel.SEC_User createdBy, DAL.Datamodel.SYS_Tracking sysTracking, byte documentType, PORT.Document document)
        {
            DAL.Datamodel.ORG_TRX_Header org_trx_header = new DAL.Datamodel.ORG_TRX_Header(uow);

            org_trx_header.BillingAddressLine1 = document.billingAddressLine1;
            org_trx_header.BillingAddressLine2 = document.billingAddressLine2;
            org_trx_header.BillingAddressLine3 = document.billingAddressLine3;
            org_trx_header.BillingAddressLine4 = document.billingAddressLine4;
            org_trx_header.BillingAddressCode = document.billingAddressCode;
            org_trx_header.DatePosted = document.datePosted;
            org_trx_header.ReferenceShort1 = document.referenceShort1;
            org_trx_header.ReferenceShort2 = document.referenceShort2;
            org_trx_header.ReferenceShort3 = document.referenceShort3;
            org_trx_header.ShippingTypeId = DAL.Enums.ORG_TRX_ShippingType.Normal;
            org_trx_header.CompanyId = uow.Query<DAL.Datamodel.ORG_Company>().Where(c => c.EntityId.EntityId.Id == document.companyId).FirstOrDefault();
            org_trx_header.CreatedBy = createdBy.PersonId;

            return org_trx_header;
        }