| /** | 
|  * @file        ADSO-50243 | 
|  * @description Batch edit customer orders | 
|  * @author      Clarence (ccn7@3ds.com) | 
|  * @copyright   Dassault Systèmes | 
|  */ | 
| import { AppMP, StepAppMP } from '../../libmp/appmp'; | 
| import { DataMetalBaseProductName } from '../../libmp/data/data.product'; | 
| import { DataMetalBaseSalesSegmentName } from '../../libmp/data/data.salessegment'; | 
| import { DataMetalStockingPointName } from '../../libmp/data/data.stockingpoint'; | 
| import { DialogBatchEditActionLink, StepDialog } from '../../libappsop/dialogsop'; | 
| import { StepList } from '../../libappsop/listsop'; | 
| import { ListCustomerOrdersColumn, ListCustomerOrdersContextMenuItem } from '../../libmp/forms/form.customerorders'; | 
| import { DialogCustomerOrder, DialogCustomerOrderFields } from '../../libmp/dialogs/dialog.customerorder'; | 
| import { StepActionBarPage } from '../../libappsop/actionbarpagesop'; | 
| import { startOfPlanningYear } from '../../libmp/data/data.period'; | 
|   | 
| describe('ADSO-50243 - Batch edit customer orders', () => { | 
|   const appMP = AppMP.getInstance(); | 
|   const scenarioToSelect = 'ADSO-50251'; | 
|   const listCustomerOrders = appMP.viewCustomerOrders.formCustomerOrders.listCustomerOrders; | 
|   const janSOP = `1-Jan-${startOfPlanningYear}`; | 
|   const febSOP = `1-Feb-${startOfPlanningYear}`; | 
|   const janSOPPlus1 = `1-Jan-${startOfPlanningYear + 1}`; | 
|   let dlgCustomerOrder: DialogCustomerOrder; | 
|   // Edit the one with quantity 999 as the others are used for other tests | 
|   const editRows: ListCustomerOrdersColumn[] = [{'Sales segment': DataMetalBaseSalesSegmentName.AudiA8, Product: DataMetalBaseProductName.BCCBWide, 'Stocking point': DataMetalStockingPointName.Europe, 'Order date': janSOP, Quantity: '999'}, | 
|                                                 {'Sales segment': DataMetalBaseSalesSegmentName.AudiA8, Product: DataMetalBaseProductName.BCCBWide, 'Stocking point': DataMetalStockingPointName.Europe, 'Order date': febSOP, Quantity: '999'}]; | 
|   const verifyDlgBatchEditEnabled: DialogCustomerOrderFields = {SalesSegment: 'false', Product: 'false', StockingPoint: 'false', OrderDate: 'false', Price: 'false', Quantity: 'false', | 
|                                                                 CustomerName: 'false', CustomerID: 'false', OrderID: 'false', OrderLineID: 'false'}; | 
|   const updateDlgBatchValues: DialogCustomerOrderFields = {SalesSegment: DataMetalBaseSalesSegmentName.BMWi3, Product: DataMetalBaseProductName.BCCanBody, Quantity: '9999', OrderDate: janSOPPlus1}; | 
|   const updateDlgBatchValuesOrderRelated: DialogCustomerOrderFields = {OrderID: 'A1', OrderLineID: 'A2', CustomerID: 'A3', CustomerName: 'A4'}; | 
|   const verifyRow1: ListCustomerOrdersColumn = {'Sales segment': DataMetalBaseSalesSegmentName.BMWi3, Product: DataMetalBaseProductName.BCCanBody, 'Stocking point': DataMetalStockingPointName.Europe, 'Order date': janSOPPlus1, Quantity: '9,999'}; | 
|   const verifyRow2: ListCustomerOrdersColumn = {'Sales segment': DataMetalBaseSalesSegmentName.BMWi3, Product: DataMetalBaseProductName.BCCanBody, 'Stocking point': DataMetalStockingPointName.Europe, 'Order date': janSOPPlus1, Quantity: '9,999'}; | 
|   const verifyRow1OrderRelated: ListCustomerOrdersColumn = {...verifyRow1, 'Order ID': 'A1', 'Order line ID': 'A2', 'Customer ID': 'A3', 'Customer name': 'A4'}; | 
|   const verifyRow2OrderRelated: ListCustomerOrdersColumn = {...verifyRow2, 'Order ID': 'A1', 'Order line ID': 'A2', 'Customer ID': 'A3', 'Customer name': 'A4'}; | 
|   | 
|   beforeAll(async () => { | 
|     await appMP.login(); | 
|   }); | 
|   | 
|   afterAll(async () => { | 
|     await appMP.resetActiveView(appMP.viewCustomerOrders); | 
|     await appMP.cleanupAndLogout(); | 
|   }); | 
|   | 
|   afterEach(async () => { | 
|     await appMP.checkToastMessage(); | 
|   }); | 
|   | 
|   it(`Step 1 - ${StepAppMP.selectScenario(scenarioToSelect)}`, async () => { | 
|     await appMP.selectScenario(scenarioToSelect); | 
|   }); | 
|   | 
|   it(`Step 2 - Open view ${appMP.viewCustomerOrders.viewPath}.`, async () => { | 
|     await appMP.viewCustomerOrders.switchTo(); | 
|   }); | 
|   | 
|   it(`Step 3 - ${StepList.selectRowsAndClickMenu(listCustomerOrders.title, editRows, ListCustomerOrdersContextMenuItem.Edit.Label)}`, async () => { | 
|     const rows = await listCustomerOrders.selectListRows(editRows); | 
|   | 
|     [dlgCustomerOrder] = await listCustomerOrders.selectContextMenu(ListCustomerOrdersContextMenuItem.Edit, rows); | 
|   }); | 
|   | 
|   it(`Step 4 - ${StepDialog.verifyBatchEditEnabled(DialogCustomerOrder.title, verifyDlgBatchEditEnabled)}`, async () => { | 
|     await dlgCustomerOrder.verifyBatchEditEnabled(verifyDlgBatchEditEnabled); | 
|   }); | 
|   | 
|   it(`Step 5 - ${StepDialog.clickTab('Advanced')} ${StepDialog.verifyBatchEditEnabled(DialogCustomerOrder.title, {ExcludeFromFulfillmentKPI: 'false', IsEligibleNetting: 'false', IsFirmed: 'false'})}`, async () => { | 
|     await dlgCustomerOrder.pnlAdvanced.clickTab(); | 
|     await dlgCustomerOrder.verifyBatchEditEnabled({ExcludeFromFulfillmentKPI: 'false', IsEligibleNetting: 'false', IsFirmed: 'false'}); | 
|   }); | 
|   | 
|   it(`Step 6 - ${StepDialog.clickTab('General')} ${StepDialog.updateDialogValuesBatchEdit(DialogCustomerOrder.title, DialogBatchEditActionLink.EnableBatchEdit, updateDlgBatchValues)}`, async () => { | 
|     await dlgCustomerOrder.pnlGeneral.clickTab(); | 
|     await dlgCustomerOrder.updateDialogValuesBatchEdit(DialogBatchEditActionLink.EnableBatchEdit, updateDlgBatchValues); | 
|   }); | 
|   | 
|   it(`Step 7 - ${StepDialog.clickOK()}`, async () => { | 
|     await dlgCustomerOrder.clickOK(); | 
|   }); | 
|   | 
|   it(`Step 8 - ${StepList.verifyRowExists(listCustomerOrders.title, verifyRow1)} ${StepList.verifyRowExists(listCustomerOrders.title, verifyRow2)}`, async () => { | 
|     await listCustomerOrders.verifyRowExists(verifyRow1); | 
|     await listCustomerOrders.verifyRowExists(verifyRow2); | 
|   }); | 
|   | 
|   it(`Step 9 - ${StepActionBarPage.clickButton('Edit')}`, async () => { | 
|     const rows = await listCustomerOrders.getRows([verifyRow1, verifyRow2]); | 
|     await listCustomerOrders.clickActionButton(appMP.abpSales.btnEdit, undefined, rows); | 
|   }); | 
|   | 
|   it(`Step 10 - ${StepDialog.updateDialogValuesBatchEdit(DialogCustomerOrder.title, DialogBatchEditActionLink.EnableBatchEdit, updateDlgBatchValuesOrderRelated)} ${StepDialog.clickOK()}`, async () => { | 
|     await dlgCustomerOrder.updateDialogValuesBatchEdit(DialogBatchEditActionLink.EnableBatchEdit, updateDlgBatchValuesOrderRelated); | 
|     await dlgCustomerOrder.clickOK(); | 
|   }); | 
|   | 
|   it(`Step 11 - ${StepList.verifyRowExists(listCustomerOrders.title, verifyRow1OrderRelated)} ${StepList.verifyRowExists(listCustomerOrders.title, verifyRow2OrderRelated)}`, async () => { | 
|     await listCustomerOrders.verifyRowExists(verifyRow1OrderRelated); | 
|     await listCustomerOrders.verifyRowExists(verifyRow2OrderRelated); | 
|   }); | 
| }); |