private int?GetAcct(PXGraph graph, IFSSODetBase fsSODetBase, FSAppointmentDet fsAppointmentInventoryItem, FSServiceOrder fsServiceOrderRow, FSSrvOrdType fsSrvOrdTypeRow) { int?acctID = null; if (fsSODetBase != null) { if (fsSODetBase.AcctID != null) { acctID = fsSODetBase.AcctID; } else { acctID = ServiceOrderCore.Get_TranAcctID_DefaultValue(graph, fsSrvOrdTypeRow.SalesAcctSource, fsSODetBase.InventoryID, fsSODetBase.SiteID, fsServiceOrderRow); } } else if (fsAppointmentInventoryItem != null) { acctID = ServiceOrderCore.Get_TranAcctID_DefaultValue(graph, fsSrvOrdTypeRow.SalesAcctSource, fsAppointmentInventoryItem.InventoryID, fsAppointmentInventoryItem.SiteID, fsServiceOrderRow); } return(acctID); }
public static void X_UOM_FieldDefaulting <DAC>(PXCache cache, PXFieldDefaultingEventArgs e) where DAC : class, IBqlTable, IFSSODetBase, new() { if (e.Row == null) { return; } IFSSODetBase fsSODetBaseRow = (IFSSODetBase)e.Row; string returnUOM = ((CommonSetup)PXSelect <CommonSetup> .Select(cache.Graph))?.WeightUOM; if (fsSODetBaseRow.InventoryID != null) { returnUOM = ((InventoryItem) PXSelect <InventoryItem, Where <InventoryItem.inventoryID, Equal <Required <FSSODet.inventoryID> > > > .Select(cache.Graph, fsSODetBaseRow.InventoryID))?.SalesUnit; } e.NewValue = returnUOM; }
protected virtual void VerifyIsAlreadyPosted <Field>(PXCache cache, FSAppointmentDet fsAppointmentDetRow, FSAppointmentInventoryItem fsAppointmentInventoryItemRow, FSBillingCycle billingCycleRow) where Field : class, IBqlField { if ((fsAppointmentDetRow == null && fsAppointmentInventoryItemRow == null) || ServiceOrderRelated.Current == null || billingCycleRow == null) { return; } IFSSODetBase row = null; int? pivot = -1; if (fsAppointmentDetRow != null) { row = fsAppointmentDetRow; pivot = fsAppointmentDetRow.SODetID; } else if (fsAppointmentInventoryItemRow != null) { row = fsAppointmentInventoryItemRow; pivot = fsAppointmentInventoryItemRow.AppDetID > 0 ? fsAppointmentInventoryItemRow.AppDetID : null; } PXEntryStatus status = ServiceOrderRelated.Cache.GetStatus(ServiceOrderRelated.Current); bool needsVerify = status == PXEntryStatus.Updated || status == PXEntryStatus.Notchanged; bool isSOAlreadyPosted = ServiceOrderPostedIn.Select().Count > 0; if (needsVerify == true && pivot == null && IsInstructionOrComment(row) == false && billingCycleRow.BillingBy == ID.Billing_By.SERVICE_ORDER && isSOAlreadyPosted == true) { cache.RaiseExceptionHandling <Field>(row, row.InventoryID, new PXSetPropertyException( PXMessages.LocalizeFormat(TX.Error.CANNOT_ADD_INVENTORY_TYPE_LINES_BECAUSE_SO_POSTED, GetLineType(row.LineType)), PXErrorLevel.RowError)); } }
public static bool CheckReplaceComponentLines <TPartLine, TComponentLineRef>(PXCache cache, PXResultset <TPartLine> rows, IFSSODetBase currentRow) where TPartLine : class, IBqlTable, IFSSODetBase, new() where TComponentLineRef : IBqlField { if (currentRow == null) { return(true); } if (currentRow.EquipmentAction != ID.Equipment_Action.REPLACING_COMPONENT || currentRow.SMEquipmentID == null || currentRow.EquipmentLineRef == null) { return(true); } bool noErrors = true; foreach (TPartLine row in rows.RowCast <TPartLine>().Where(x => x.IsInventoryItem == true)) { if (row.LineID != currentRow.LineID && row.EquipmentAction == currentRow.EquipmentAction && row.SMEquipmentID == currentRow.SMEquipmentID && row.EquipmentLineRef == currentRow.EquipmentLineRef) { string componentLineRef = (string)PXSelectorAttribute.GetField(cache, currentRow, typeof(TComponentLineRef).Name, currentRow.EquipmentLineRef, typeof(FSEquipmentComponent.lineRef).Name); cache.RaiseExceptionHandling <TComponentLineRef>(currentRow, componentLineRef, new PXSetPropertyException(TX.Error.SELECTED_COMPONENT_HAS_ALREADY_BEEN_CHOSEN_FOR_REPLACEMENT, PXErrorLevel.Error)); noErrors = false; } } return(noErrors); }