Exemple #1
0
        public ContractInvoiceLine(PXResult <FSContractPeriodDet, FSContractPeriod, FSServiceContract, FSBranchLocation> row)
        {
            FSServiceContract   fsServiceContractRow   = (FSServiceContract)row;
            FSContractPeriodDet fsContractPeriodDetRow = (FSContractPeriodDet)row;
            FSBranchLocation    fsBranchLocationRow    = (FSBranchLocation)row;

            ServiceContractID   = fsServiceContractRow.ServiceContractID;
            ContractType        = fsServiceContractRow.RecordType;
            ContractPeriodID    = fsContractPeriodDetRow.ContractPeriodDetID;
            ContractPeriodDetID = fsContractPeriodDetRow.ContractPeriodID;

            BillingRule   = fsContractPeriodDetRow.BillingRule;
            InventoryID   = fsContractPeriodDetRow.InventoryID;
            UOM           = fsContractPeriodDetRow.UOM;
            SMEquipmentID = fsContractPeriodDetRow.SMEquipmentID;
            CuryUnitPrice = fsContractPeriodDetRow.RecurringUnitPrice;

            ContractRelated = false;
            SubItemID       = fsBranchLocationRow?.DfltSubItemID;
            SiteID          = fsBranchLocationRow?.DfltSiteID;
            SiteLocationID  = null;
            IsBillable      = true;

            if (BillingRule == ID.BillingRule.TIME)
            {
                Qty = decimal.Divide((decimal)(fsContractPeriodDetRow.Time ?? 0), 60);
            }
            else
            {
                Qty = fsContractPeriodDetRow.Qty;
            }

            OverageItemPrice          = fsContractPeriodDetRow.OverageItemPrice;
            AcctID                    = null;
            SubID                     = null;
            EquipmentAction           = ID.Equipment_Action.NONE;
            EquipmentLineRef          = null;
            NewTargetEquipmentLineNbr = null;
            ComponentID               = null;
            LineRef                   = string.Empty;
            SalesPersonID             = fsServiceContractRow.SalesPersonID;
            Commissionable            = fsServiceContractRow.Commissionable;

            TranDescPrefix = string.Empty;

            ProjectTaskID = fsContractPeriodDetRow.ProjectTaskID;
            CostCodeID    = fsContractPeriodDetRow.CostCodeID;

            Processed = false;
        }
Exemple #2
0
        /// <summary>
        /// Gets the price for the item in the contract if it exists.
        /// </summary>
        private static decimal?GetCustomerContractPrice(PXCache cache,
                                                        int?serviceContractID,
                                                        int?billServiceContractID,
                                                        int?billContractPeriodID,
                                                        bool?lineRelatedToContract,
                                                        int?inventoryID)
        {
            if (serviceContractID == null && billServiceContractID == null)
            {
                return(null);
            }

            decimal?salesPrice = null;

            FSServiceContract fsServiceContractRow = PXSelect <FSServiceContract,
                                                               Where <
                                                                   FSServiceContract.serviceContractID, Equal <Required <FSServiceContract.serviceContractID> > > >
                                                     .Select(cache.Graph, serviceContractID);

            if (fsServiceContractRow == null)
            {
                fsServiceContractRow = PXSelect <FSServiceContract,
                                                 Where <
                                                     FSServiceContract.serviceContractID, Equal <Required <FSServiceContract.serviceContractID> > > >
                                       .Select(cache.Graph, billServiceContractID);
            }

            if (fsServiceContractRow != null &&
                fsServiceContractRow.BillingType == ID.Contract_BillingType.AS_PERFORMED_BILLINGS &&
                fsServiceContractRow.SourcePrice == ID.SourcePrice.CONTRACT)
            {
                FSSalesPrice fsSalesPriceRow = PXSelect <FSSalesPrice,
                                                         Where <
                                                             FSSalesPrice.serviceContractID, Equal <Required <FSSalesPrice.serviceContractID> >,
                                                             And <
                                                                 FSSalesPrice.inventoryID, Equal <Required <FSSalesPrice.inventoryID> > > > >
                                               .Select(cache.Graph, serviceContractID, inventoryID);

                if (fsSalesPriceRow != null)
                {
                    salesPrice = fsSalesPriceRow.UnitPrice;
                }
            }
            else if (fsServiceContractRow != null &&
                     fsServiceContractRow.BillingType == ID.Contract_BillingType.STANDARDIZED_BILLINGS &&
                     lineRelatedToContract == true)
            {
                FSContractPeriodDet fsContractPeriodDetRow = PXSelect <FSContractPeriodDet,
                                                                       Where <
                                                                           FSContractPeriodDet.serviceContractID, Equal <Required <FSContractPeriodDet.serviceContractID> >,
                                                                           And <
                                                                               FSContractPeriodDet.contractPeriodID, Equal <Required <FSContractPeriodDet.contractPeriodID> >,
                                                                               And <
                                                                                   FSContractPeriodDet.inventoryID, Equal <Required <FSContractPeriodDet.inventoryID> > > > > >
                                                             .Select(cache.Graph, billServiceContractID, billContractPeriodID, inventoryID);

                if (fsContractPeriodDetRow != null)
                {
                    salesPrice = fsContractPeriodDetRow.RecurringUnitPrice;
                }
            }

            return(salesPrice);
        }