public static bool ValidItemForOnDemand(PXGraph graph, ContractDetail detail, out string itemCD) { ContractItem item = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractDetail.contractItemID> > > > .Select(graph, detail.ContractItemID); bool isInvalid = item?.RecurringItemID != null && item.DepositItemID == null && detail.Qty > 0m; itemCD = isInvalid ? item.ContractItemCD : null; return(!isInvalid); }
protected virtual void ContractDetail_Qty_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e) { ContractDetail row = (ContractDetail)e.Row; ContractItem item = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractDetail.contractItemID> > > > .Select(this, row.ContractItemID); if (item != null && (item.MaxQty < (decimal?)e.NewValue || item.MinQty > (decimal?)e.NewValue)) { throw new PXSetPropertyException(Messages.QtyErrorWithParameters, PXDBQuantityAttribute.Round(item.MinQty ?? 0m), PXDBQuantityAttribute.Round(item.MaxQty ?? 0m)); } }
protected virtual void ContractDetail_ContractItemID_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e) { ContractDetail detail = (ContractDetail)e.Row; ContractItem item = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractDetail.contractItemID> > > > .Select(this, e.NewValue); ContractTemplate template = PXSelect <ContractTemplate, Where <ContractTemplate.contractID, Equal <Required <ContractDetail.contractID> > > > .Select(this, detail.ContractID); if (item != null && template != null && item.CuryID != template.CuryID) { e.NewValue = item.ContractItemCD; throw new PXSetPropertyException(Messages.ItemHasAnotherCuryID, item.ContractItemCD, item.CuryID, template.CuryID, PXUIFieldAttribute.GetItemName(CurrentTemplate.Cache)); } }
protected virtual void ContractDetail_ContractItemID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e) { ContractDetail row = e.Row as ContractDetail; ContractItem item = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractItem.contractItemID> > > > .Select(this, row.ContractItemID); if (item != null && row != null) { row.Description = item.Descr; PXDBLocalizableStringAttribute.CopyTranslations <ContractItem.descr, ContractDetail.description> (Caches[typeof(ContractItem)], item, Caches[typeof(ContractDetail)], row); row.Qty = item.DefaultQty; } }
public static bool ValidItemForOnDemand(PXGraph graph, ContractDetail detail, out string itemCD) { ContractItem item = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractDetail.contractItemID> > > > .Select(graph, detail.ContractItemID); if (item != null && item.RecurringItemID != null && item.DepositItemID == null) { itemCD = item.ContractItemCD; return(false); } else { itemCD = null; return(true); } }
protected virtual void ContractDetail_RowSelected(PXCache sender, PXRowSelectedEventArgs e) { ContractDetail row = e.Row as ContractDetail; if (row != null) { ContractItem item = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractDetail.contractItemID> > > > .Select(this, row.ContractItemID); if (item != null) { if (!ContractItemMaint.IsValidItemPrice(this, item)) { PXUIFieldAttribute.SetWarning <ContractDetail.contractItemID>(sender, row, Messages.ItemNotPrice); } } } }
protected virtual void ContractDetail_RowInserting(PXCache sender, PXRowInsertingEventArgs e) { ContractDetail row = e.Row as ContractDetail; if (row != null) { row.ContractID = CurrentTemplate.Current.ContractID; ValidateUniqueness(sender, row, e); ContractItem contractItem = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractDetail.contractItemID> > > > .Select(this, row.ContractItemID); if (contractItem != null) { row.Qty = contractItem.DefaultQty; } } }
protected virtual void ContractDetail_ContractItemID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e) { ContractDetail row = e.Row as ContractDetail; ContractItem item = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractItem.contractItemID> > > > .Select(this, row.ContractItemID); if (item != null && row != null) { InventoryItem nonstock = PXSelect <InventoryItem, Where <InventoryItem.inventoryID, Equal <Required <InventoryItem.inventoryID> > > > .Select(this, item.BaseItemID ?? item.RecurringItemID); if (nonstock != null) { row.Description = item.Descr; row.Qty = item.DefaultQty; } } }
private void ValidateUniqueness(PXCache sender, ContractDetail row, System.ComponentModel.CancelEventArgs e) { if (row.ContractItemID.HasValue) { PXSelectBase <ContractDetail> s = new PXSelect <ContractDetail, Where <ContractDetail.contractItemID, Equal <Required <ContractDetail.contractItemID> >, And <ContractDetail.contractID, Equal <Current <ContractTemplate.contractID> >, And <ContractDetail.contractDetailID, NotEqual <Required <ContractDetail.contractDetailID> > > > > >(this); ContractDetail item = s.SelectWindowed(0, 1, row.ContractItemID, row.ContractDetailID); if (item != null) { ContractItem cirow = (ContractItem)PXSelectorAttribute.Select <ContractDetail.contractItemID>(sender, row); sender.RaiseExceptionHandling <ContractDetail.contractItemID>(row, cirow.ContractItemCD, new PXException(Messages.ItemNotUnique)); e.Cancel = true; } } }
protected virtual void ContractDetail_RowInserted(PXCache sender, PXRowInsertedEventArgs e) { if (!IsImport) { ContractDetail row = e.Row as ContractDetail; if (row != null) { ContractItem contractItem = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractDetail.contractItemID> > > > .Select(this, row.ContractItemID); if (contractItem != null && contractItem.Deposit == false && contractItem.DepositItemID != null) { ContractItem depositItem = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractDetail.contractItemID> > > > .Select(this, contractItem.DepositItemID); ContractDetail newDetail = new ContractDetail(); sender.SetValueExt <ContractDetail.contractItemID>(newDetail, depositItem.ContractItemID); ContractDetails.Insert(newDetail); ContractDetails.View.RequestRefresh(); } } } }
protected virtual void ContractItem_RowSelected(PXCache sender, PXRowSelectedEventArgs e) { ContractItem row = e.Row as ContractItem; if (row == null) { return; } PXUIFieldAttribute.SetVisible <ContractItem.basePriceOption>(sender, row, row.BaseItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.basePrice>(sender, row, row.BaseItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.basePriceVal>(sender, row, row.BaseItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.basePriceOption>(Items.Cache, null, row.BaseItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.basePrice>(Items.Cache, null, row.BaseItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.basePriceVal>(Items.Cache, null, row.BaseItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.renewalPriceOption>(sender, row, row.RenewalItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.renewalPrice>(sender, row, row.RenewalItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.renewalPriceVal>(sender, row, row.RenewalItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.renewalPriceOption>(Items.Cache, null, row.RenewalItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.renewalPrice>(Items.Cache, null, row.RenewalItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.renewalPriceVal>(Items.Cache, null, row.RenewalItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.fixedRecurringPriceOption>(sender, row, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.fixedRecurringPrice>(sender, row, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.fixedRecurringPriceVal>(sender, row, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.fixedRecurringPriceOption>(Items.Cache, null, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.fixedRecurringPrice>(Items.Cache, null, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.fixedRecurringPriceVal>(Items.Cache, null, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.usagePriceOption>(sender, row, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.usagePrice>(sender, row, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractItem.usagePriceVal>(sender, row, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.usagePriceOption>(Items.Cache, null, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.usagePrice>(Items.Cache, null, row.RecurringItemID != null); PXUIFieldAttribute.SetVisible <ContractDetail.usagePriceVal>(Items.Cache, null, row.RecurringItemID != null); }
public virtual decimal GetItemPrice(PXCache sender, string curyID, int?customerID, int?locationID, string contractStatus, int?contractItemID, int?itemID, string itemType, string priceOption, decimal?fixedPrice, decimal?setupPrice, decimal?qty, DateTime?date) { decimal itemPrice = 0m; ContractItem item = PXSelect <ContractItem, Where <ContractItem.contractItemID, Equal <Required <ContractItem.contractItemID> > > > .Select(sender.Graph, contractItemID); if (item != null) { IN.InventoryItem nonstock = PXSelect <IN.InventoryItem, Where <IN.InventoryItem.inventoryID, Equal <Required <IN.InventoryItem.inventoryID> > > > .Select(sender.Graph, itemID); CR.Location customerLocation = PXSelect < CR.Location, Where < CR.Location.bAccountID, Equal <Required <Contract.customerID> >, And <CR.Location.locationID, Equal <Required <Contract.locationID> > > > > .Select(sender.Graph, customerID, locationID); string customerPriceClass = string.IsNullOrEmpty(customerLocation?.CPriceClassID) ? ARPriceClass.EmptyPriceClass : customerLocation.CPriceClassID; if (priceOption == null) { switch (itemType) { case ContractDetailType.Setup: priceOption = item.BasePriceOption; break; case ContractDetailType.Renewal: priceOption = item.RenewalPriceOption; break; case ContractDetailType.Billing: priceOption = item.FixedRecurringPriceOption; break; case ContractDetailType.UsagePrice: priceOption = item.UsagePriceOption; break; } } CM.CurrencyInfo currencyInfo = new CM.CurrencyInfo(); currencyInfo.BaseCuryID = new PXSetup <Company>(sender.Graph).Current.BaseCuryID; currencyInfo.CuryID = curyID; Customer customer = PXSelect <Customer, Where <Customer.bAccountID, Equal <Required <Customer.bAccountID> > > > .Select(sender.Graph, customerID); if (customer != null && customer.CuryRateTypeID != null) { currencyInfo.CuryRateTypeID = customer.CuryRateTypeID; } currencyInfo.SetCuryEffDate(sender.Graph.Caches[typeof(CM.CurrencyInfo)], date); if (nonstock != null && currencyInfo != null) { switch (priceOption) { case PriceOption.ItemPrice: itemPrice = ARSalesPriceMaint.CalculateSalesPrice(sender, customerPriceClass, customerID, itemID, currencyInfo, qty, nonstock.BaseUnit, date ?? DateTime.Now, false) ?? 0m; break; case PriceOption.ItemPercent: itemPrice = ((ARSalesPriceMaint.CalculateSalesPrice(sender, customerPriceClass, customerID, itemID, currencyInfo, qty, nonstock.BaseUnit, date ?? DateTime.Now, false) ?? 0m) / 100m * (fixedPrice ?? 0m)); break; case PriceOption.BasePercent: itemPrice = (setupPrice ?? 0m) / 100m * (fixedPrice ?? 0m); break; case PriceOption.Manually: itemPrice = fixedPrice ?? 0m; break; } } } return(itemPrice); }
protected virtual IEnumerable items() { ContractItem ci = SelectedContractItem.Select(); PXSelectBase <ContractDetail> select = new PXSelectJoin <ContractDetail, InnerJoin <Contract, On <Contract.contractID, Equal <ContractDetail.contractID> > >, Where <ContractDetail.contractItemID, Equal <Current <ContractFilter.contractItemID> > > >(this); List <PXResult <ContractDetail, Contract> > result = new List <PXResult <ContractDetail, Contract> >(); foreach (PXResult <ContractDetail, Contract> res in select.Select()) { ContractDetail item = res; bool isOutdated = false; ContractDetail copy = PXCache <ContractDetail> .CreateCopy(item); copy.ContractDetailID = -1; //Just to be safe that formulas on the following fields do not modify the original record. Items.Cache.SetDefaultExt <ContractDetail.basePriceOption>(copy); Items.Cache.SetDefaultExt <ContractDetail.basePrice>(copy); Items.Cache.SetDefaultExt <ContractDetail.renewalPriceOption>(copy); Items.Cache.SetDefaultExt <ContractDetail.renewalPrice>(copy); Items.Cache.SetDefaultExt <ContractDetail.fixedRecurringPriceOption>(copy); Items.Cache.SetDefaultExt <ContractDetail.fixedRecurringPrice>(copy); Items.Cache.SetDefaultExt <ContractDetail.usagePriceOption>(copy); Items.Cache.SetDefaultExt <ContractDetail.usagePrice>(copy); if (ci.BaseItemID != null) { if (ci.BasePriceOption != item.BasePriceOption || ci.BasePrice != item.BasePrice || copy.BasePriceVal != item.BasePriceVal) { isOutdated = true; } } if (ci.RenewalItemID != null) { if (ci.RenewalPriceOption != item.RenewalPriceOption || ci.RenewalPrice != item.RenewalPrice || copy.RenewalPriceVal != item.RenewalPriceVal) { isOutdated = true; } } if (ci.RecurringItemID != null) { if (ci.FixedRecurringPriceOption != item.FixedRecurringPriceOption || ci.FixedRecurringPrice != item.FixedRecurringPrice || copy.FixedRecurringPriceVal != item.FixedRecurringPriceVal) { isOutdated = true; } if (ci.UsagePriceOption != item.UsagePriceOption || ci.UsagePrice != item.UsagePrice || copy.UsagePriceVal != item.UsagePriceVal) { isOutdated = true; } } if (isOutdated) { result.Add(res); } } return(result); }