public DocAtions GetActions(int AD_Table_ID, int Record_ID, string docStatus, bool processing, string orderType, bool isSOTrx, string docAction, string tableName, List <string> _values, List <string> _names) { DocAtions action = new DocAtions(); string[] options = null; int index = 0; string defaultV = ""; action.DocStatus = docStatus; VLogger.Get().Fine("DocStatus=" + docStatus + ", DocAction=" + docAction + ", OrderType=" + orderType + ", IsSOTrx=" + isSOTrx + ", Processing=" + processing + ", AD_Table_ID=" + AD_Table_ID + ", Record_ID=" + Record_ID); options = new String[_values.Count()]; String wfStatus = MWFActivity.GetActiveInfo(ctx, AD_Table_ID, Record_ID); if (wfStatus != null) { VLogger.Get().SaveError("WFActiveForRecord", wfStatus); action.Error = "WFActiveForRecord"; return(action); } // Status Change if (!CheckStatus(tableName, Record_ID, docStatus)) { VLogger.Get().SaveError("DocumentStatusChanged", ""); action.Error = "DocumentStatusChanged"; return(action); } // if (processing != null) { bool locked = "Y".Equals(processing); if (!locked && processing.GetType() == typeof(Boolean)) { locked = ((Boolean)processing); } // do not show Unlock action on Production execution if (locked && !(AD_Table_ID == ViennaAdvantage.Model.X_VAMFG_M_WrkOdrTransaction.Table_ID)) { options[index++] = DocumentEngine.ACTION_UNLOCK; } } // Approval required .. NA if (docStatus.Equals(DocumentEngine.STATUS_NOTAPPROVED)) { options[index++] = DocumentEngine.ACTION_PREPARE; options[index++] = DocumentEngine.ACTION_VOID; } // Draft/Invalid .. DR/IN else if (docStatus.Equals(DocumentEngine.STATUS_DRAFTED) || docStatus.Equals(DocumentEngine.STATUS_INVALID)) { options[index++] = DocumentEngine.ACTION_COMPLETE; // options[index++] = DocumentEngine.ACTION_Prepare; options[index++] = DocumentEngine.ACTION_VOID; } // In Process .. IP else if (docStatus.Equals(DocumentEngine.STATUS_INPROGRESS) || docStatus.Equals(DocumentEngine.STATUS_APPROVED)) { options[index++] = DocumentEngine.ACTION_COMPLETE; options[index++] = DocumentEngine.ACTION_VOID; } // Complete .. CO else if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_CLOSE; } // Waiting Payment else if (docStatus.Equals(DocumentEngine.STATUS_WAITINGPAYMENT) || docStatus.Equals(DocumentEngine.STATUS_WAITINGCONFIRMATION)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_PREPARE; } // Closed, Voided, REversed .. CL/VO/RE else if (docStatus.Equals(DocumentEngine.STATUS_CLOSED) || docStatus.Equals(DocumentEngine.STATUS_VOIDED) || docStatus.Equals(DocumentEngine.STATUS_REVERSED)) { return(action); } int refIndex = index; bool indexFromModule = true; GetActionFromModuleClass(AD_Table_ID, docStatus, out index, options); if (index == 0) { index = refIndex; indexFromModule = false; } /******************** * Order */ if (AD_Table_ID == MOrder.Table_ID) { // Draft .. DR/IP/IN if (docStatus.Equals(DocumentEngine.STATUS_DRAFTED) || docStatus.Equals(DocumentEngine.STATUS_INPROGRESS) || docStatus.Equals(DocumentEngine.STATUS_INVALID)) { options[index++] = DocumentEngine.ACTION_PREPARE; options[index++] = DocumentEngine.ACTION_CLOSE; // Draft Sales Order Quote/Proposal - Process if (isSOTrx && ("OB".Equals(orderType) || "ON".Equals(orderType))) { docAction = DocumentEngine.ACTION_PREPARE; } } // Complete .. CO else if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REACTIVATE; } else if (docStatus.Equals(DocumentEngine.STATUS_WAITINGPAYMENT)) { options[index++] = DocumentEngine.ACTION_REACTIVATE; options[index++] = DocumentEngine.ACTION_CLOSE; } } /******************** * Shipment */ else if (AD_Table_ID == MInOut.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; } } /******************** * Invoice */ else if (AD_Table_ID == MInvoice.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; } } /******************** * Payment */ else if (AD_Table_ID == MPayment.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; } } /******************** * GL Journal */ //else if (AD_Table_ID == MJournal.Table_ID || AD_Table_ID == MJournalBatch.Table_ID) //{ // // Complete .. CO // if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) // { // options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; // options[index++] = DocumentEngine.ACTION_REVERSE_ACCRUAL; // } //} /******************** * Allocation */ else if (AD_Table_ID == MAllocationHdr.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; } } /******************** * Bank Statement */ else if (AD_Table_ID == MBankStatement.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; } } /******************** * Inventory Movement, Physical Inventory */ else if (AD_Table_ID == MMovement.Table_ID || AD_Table_ID == MInventory.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { // SI_0622 : not to show VOID and REVERSE_CORRECT action on Physical Inventory bool isPhysicalInventory = false; if (AD_Table_ID == MInventory.Table_ID) { MInventory inventory = MInventory.Get(ctx, Record_ID); isPhysicalInventory = !inventory.IsInternalUse(); } if (!isPhysicalInventory) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; } } } // Added By Arpit else if (AD_Table_ID == MMovementConfirm.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { // SI_0630 : System should not allow to void the Move confirmation after its completion //options[index++] = DocumentEngine.ACTION_VOID; } } //End // /******************** //* Warehouse Task New Add by raghu 11 april,2011 //*/ // else if (AD_Table_ID == X_M_WarehouseTask.Table_ID // || AD_Table_ID == X_M_TaskList.Table_ID) // { // // Draft .. DR/IP/IN // if (docStatus.Equals(DocActionVariables.STATUS_DRAFTED) // || docStatus.Equals(DocActionVariables.STATUS_INPROGRESS) // || docStatus.Equals(DocActionVariables.STATUS_INVALID)) // { // options[index++] = DocActionVariables.ACTION_PREPARE; // } // // Complete .. CO // else if (docStatus.Equals(DocActionVariables.STATUS_COMPLETED)) // { // options[index++] = DocActionVariables.ACTION_VOID; // options[index++] = DocActionVariables.ACTION_REVERSE_CORRECT; // } // } /******************** * Work Order New Add by raghu 11 april,2011 */ else if (AD_Table_ID == ViennaAdvantage.Model.X_VAMFG_M_WorkOrder.Table_ID) { // Draft .. DR/IP/IN if (docStatus.Equals(DocActionVariables.STATUS_DRAFTED) || docStatus.Equals(DocActionVariables.STATUS_INPROGRESS) || docStatus.Equals(DocActionVariables.STATUS_INVALID)) { options[index++] = DocActionVariables.ACTION_PREPARE; } // Complete .. CO else if (docStatus.Equals(DocActionVariables.STATUS_COMPLETED)) { options[index++] = DocActionVariables.ACTION_VOID; options[index++] = DocActionVariables.ACTION_REACTIVATE; } } /******************** * Work Order Transaction New Add by raghu 11 april,2011 */ else if (AD_Table_ID == ViennaAdvantage.Model.X_VAMFG_M_WrkOdrTransaction.Table_ID) { // Draft .. DR/IP/IN if (docStatus.Equals(DocActionVariables.STATUS_DRAFTED) || docStatus.Equals(DocActionVariables.STATUS_INPROGRESS) || docStatus.Equals(DocActionVariables.STATUS_INVALID)) { options[index++] = DocActionVariables.ACTION_PREPARE; } // Complete .. CO else if (docStatus.Equals(DocActionVariables.STATUS_COMPLETED)) { options[index++] = DocActionVariables.ACTION_VOID; options[index++] = DocActionVariables.ACTION_REVERSE_CORRECT; } } /* Obsolete Inventory New add by Amit 24-May-2016 */ //else if (tableName == "VA024_ObsoleteInventory") //{ // // DR/IN // if (docStatus.Equals(DocumentEngine.STATUS_DRAFTED) // || docStatus.Equals(DocumentEngine.STATUS_INVALID)) // { // options[index++] = DocumentEngine.ACTION_COMPLETE; // options[index++] = DocumentEngine.ACTION_VOID; // } // // Complete // else if (docStatus.Equals(DocActionVariables.STATUS_COMPLETED)) // { // options[index++] = DocActionVariables.ACTION_VOID; // options[index++] = DocActionVariables.ACTION_REVERSE_CORRECT; // } //} /***For Primary thread***/ ///** // * Fill actionCombo // */ //for (int i = 0; i < index; i++) //{ // // Serach for option and add it // bool added = false; // for (int j = 0; j < _values.Length && !added; j++) // if (options[i].Equals(_values[j])) // { // //actionCombo.addItem(_names[j]); // vcmbAction.Items.Add(_names[j]); // added = true; // } //} // setDefault if (docAction.Equals("--")) // If None, suggest closing { docAction = DocumentEngine.ACTION_CLOSE; } //if (C_DocType_ID == 0) //{ // C_DocType_ID = C_DocTypeTarget_ID; //} //if (C_DocType_ID != null && C_DocType_ID > 0) //{ // String[] docActionHolder = new String[] { docAction }; // MTable table = MTable.Get(ctx, AD_Table_ID); // PO po = table.GetPO(ctx, Record_ID, null); // if (po is DocOptions) // index = ((DocOptions)po).customizeValidActions(docStatus, processing, orderType, isSOTrx ? "Y" : "N", // AD_Table_ID, docActionHolder, options, index); // // options = DocumentEngine.checkActionAccess(ctx, ctx.GetAD_Client_ID(), ctx.GetAD_Role_ID(), C_DocType_ID, options, ref index); //} for (int i = 0; i < _values.Count() && defaultV.Equals(""); i++) { if (docAction.Equals(_values[i])) { defaultV = _names[i]; } } action.Options = options.ToList(); if (indexFromModule) { action.Index = index + 1; } else { action.Index = index; } action.DefaultV = defaultV; return(action); /***For Primary thread***/ //if (!defaultV.Equals("")) //{ // //vcmbAction.SelectedValue = defaultV; // vcmbAction.SelectedItem = defaultV; //} }
public DocAtions GetActions(int AD_Table_ID, int Record_ID, string docStatus, bool processing, string orderType, bool isSOTrx, string docAction, string tableName, List <string> _values, List <string> _names) { DocAtions action = new DocAtions(); string[] options = null; int index = 0; string defaultV = ""; action.DocStatus = docStatus; VLogger.Get().Fine("DocStatus=" + docStatus + ", DocAction=" + docAction + ", OrderType=" + orderType + ", IsSOTrx=" + isSOTrx + ", Processing=" + processing + ", AD_Table_ID=" + AD_Table_ID + ", Record_ID=" + Record_ID); options = new String[_values.Count()]; String wfStatus = MWFActivity.GetActiveInfo(ctx, AD_Table_ID, Record_ID); if (wfStatus != null) { VLogger.Get().SaveError("WFActiveForRecord", wfStatus); action.Error = "WFActiveForRecord"; return(action); } // Status Change if (!CheckStatus(tableName, Record_ID, docStatus)) { VLogger.Get().SaveError("DocumentStatusChanged", ""); action.Error = "DocumentStatusChanged"; return(action); } // if (processing != null) { bool locked = "Y".Equals(processing); if (!locked && processing.GetType() == typeof(Boolean)) { locked = ((Boolean)processing); } if (locked) { options[index++] = DocumentEngine.ACTION_UNLOCK; } } // Approval required .. NA if (docStatus.Equals(DocumentEngine.STATUS_NOTAPPROVED)) { options[index++] = DocumentEngine.ACTION_PREPARE; options[index++] = DocumentEngine.ACTION_VOID; } // Draft/Invalid .. DR/IN else if (docStatus.Equals(DocumentEngine.STATUS_DRAFTED) || docStatus.Equals(DocumentEngine.STATUS_INVALID)) { options[index++] = DocumentEngine.ACTION_COMPLETE; // options[index++] = DocumentEngine.ACTION_Prepare; options[index++] = DocumentEngine.ACTION_VOID; } // In Process .. IP else if (docStatus.Equals(DocumentEngine.STATUS_INPROGRESS) || docStatus.Equals(DocumentEngine.STATUS_APPROVED)) { options[index++] = DocumentEngine.ACTION_COMPLETE; options[index++] = DocumentEngine.ACTION_VOID; } // Complete .. CO else if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_CLOSE; } // Waiting Payment else if (docStatus.Equals(DocumentEngine.STATUS_WAITINGPAYMENT) || docStatus.Equals(DocumentEngine.STATUS_WAITINGCONFIRMATION)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_PREPARE; } // Closed, Voided, REversed .. CL/VO/RE else if (docStatus.Equals(DocumentEngine.STATUS_CLOSED) || docStatus.Equals(DocumentEngine.STATUS_VOIDED) || docStatus.Equals(DocumentEngine.STATUS_REVERSED)) { return(action); } GetActionFromModuleClass(AD_Table_ID, docStatus, index, options); /******************** * Order */ if (AD_Table_ID == MOrder.Table_ID) { // Draft .. DR/IP/IN if (docStatus.Equals(DocumentEngine.STATUS_DRAFTED) || docStatus.Equals(DocumentEngine.STATUS_INPROGRESS) || docStatus.Equals(DocumentEngine.STATUS_INVALID)) { options[index++] = DocumentEngine.ACTION_PREPARE; options[index++] = DocumentEngine.ACTION_CLOSE; // Draft Sales Order Quote/Proposal - Process if (isSOTrx && ("OB".Equals(orderType) || "ON".Equals(orderType))) { docAction = DocumentEngine.ACTION_PREPARE; } } // Complete .. CO else if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REACTIVATE; } else if (docStatus.Equals(DocumentEngine.STATUS_WAITINGPAYMENT)) { options[index++] = DocumentEngine.ACTION_REACTIVATE; options[index++] = DocumentEngine.ACTION_CLOSE; } } /******************** * Shipment */ else if (AD_Table_ID == MInOut.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; } } /******************** * Invoice */ else if (AD_Table_ID == MInvoice.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; } } /******************** * Payment */ else if (AD_Table_ID == MPayment.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; } } /******************** * GL Journal */ //else if (AD_Table_ID == MJournal.Table_ID || AD_Table_ID == MJournalBatch.Table_ID) //{ // // Complete .. CO // if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) // { // options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; // options[index++] = DocumentEngine.ACTION_REVERSE_ACCRUAL; // } //} /******************** * Allocation */ else if (AD_Table_ID == MAllocationHdr.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; } } /******************** * Bank Statement */ else if (AD_Table_ID == MBankStatement.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; } } /******************** * Inventory Movement, Physical Inventory */ else if (AD_Table_ID == MMovement.Table_ID || AD_Table_ID == MInventory.Table_ID) { // Complete .. CO if (docStatus.Equals(DocumentEngine.STATUS_COMPLETED)) { options[index++] = DocumentEngine.ACTION_VOID; options[index++] = DocumentEngine.ACTION_REVERSE_CORRECT; } } // /******************** //* Warehouse Task New Add by raghu 11 april,2011 //*/ // else if (AD_Table_ID == X_M_WarehouseTask.Table_ID // || AD_Table_ID == X_M_TaskList.Table_ID) // { // // Draft .. DR/IP/IN // if (docStatus.Equals(DocActionVariables.STATUS_DRAFTED) // || docStatus.Equals(DocActionVariables.STATUS_INPROGRESS) // || docStatus.Equals(DocActionVariables.STATUS_INVALID)) // { // options[index++] = DocActionVariables.ACTION_PREPARE; // } // // Complete .. CO // else if (docStatus.Equals(DocActionVariables.STATUS_COMPLETED)) // { // options[index++] = DocActionVariables.ACTION_VOID; // options[index++] = DocActionVariables.ACTION_REVERSE_CORRECT; // } // } /******************** * Work Order New Add by raghu 11 april,2011 */ else if (AD_Table_ID == ViennaAdvantage.Model.X_VAMFG_M_WorkOrder.Table_ID) { // Draft .. DR/IP/IN if (docStatus.Equals(DocActionVariables.STATUS_DRAFTED) || docStatus.Equals(DocActionVariables.STATUS_INPROGRESS) || docStatus.Equals(DocActionVariables.STATUS_INVALID)) { options[index++] = DocActionVariables.ACTION_PREPARE; } // Complete .. CO else if (docStatus.Equals(DocActionVariables.STATUS_COMPLETED)) { options[index++] = DocActionVariables.ACTION_VOID; options[index++] = DocActionVariables.ACTION_REACTIVATE; } } /******************** * Work Order Transaction New Add by raghu 11 april,2011 */ else if (AD_Table_ID == ViennaAdvantage.Model.X_VAMFG_M_WrkOdrTransaction.Table_ID) { // Draft .. DR/IP/IN if (docStatus.Equals(DocActionVariables.STATUS_DRAFTED) || docStatus.Equals(DocActionVariables.STATUS_INPROGRESS) || docStatus.Equals(DocActionVariables.STATUS_INVALID)) { options[index++] = DocActionVariables.ACTION_PREPARE; } // Complete .. CO else if (docStatus.Equals(DocActionVariables.STATUS_COMPLETED)) { options[index++] = DocActionVariables.ACTION_VOID; options[index++] = DocActionVariables.ACTION_REVERSE_CORRECT; } } /***For Primary thread***/ ///** // * Fill actionCombo // */ //for (int i = 0; i < index; i++) //{ // // Serach for option and add it // bool added = false; // for (int j = 0; j < _values.Length && !added; j++) // if (options[i].Equals(_values[j])) // { // //actionCombo.addItem(_names[j]); // vcmbAction.Items.Add(_names[j]); // added = true; // } //} // setDefault if (docAction.Equals("--")) // If None, suggest closing { docAction = DocumentEngine.ACTION_CLOSE; } for (int i = 0; i < _values.Count() && defaultV.Equals(""); i++) { if (docAction.Equals(_values[i])) { defaultV = _names[i]; } } action.Options = options.ToList(); action.Index = index; action.DefaultV = defaultV; return(action); /***For Primary thread***/ //if (!defaultV.Equals("")) //{ // //vcmbAction.SelectedValue = defaultV; // vcmbAction.SelectedItem = defaultV; //} }