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; }
/// <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); }