Table of Contents |
---|
...
Code Block | ||
---|---|---|
| ||
<div data-ex-bind="field" data-ex-fieldid="DriverNotes"> <h3>Notes</h3> <textarea data-ex-attribute="value" style="width: 100%; height: 50px; resize: none;"></textarea> <button class="btn btn-primary">Save</button> </div> |
Return Manifest
Return Manifest application is opposite to Manifest application. In Manifest, passengers were picked up from hotels but in Return Manifest passengers are dropped off back to their places.
...
Menu
Menu app is used for Meal selections. Who would be supplier? How many guests are there? What are the selections of menu items? What is the estimated time of arrival?
To build Menu page, we need to see traffic debug and XML request to identify activity name and style.
Code Block | ||
---|---|---|
| ||
<div class="row" data-ex-bind="activity" data-ex-activityname="ERP.TourRun" data-ex-activitystyle="ReturnManifestMealMenu"> </div> |
Please note that Return Manifest Menu app is still in-progress. But still we will explain the fields that are displayed in Return Manifest Menu app. We will explain how these data fields are bound.
To get list of drop-off locationsfetch data for all menu items, we need to fetch data using bindings as follows build request and bind fields and display data in table .as follows:
Code Block | ||
---|---|---|
| ||
<div class="table-responsive"> <div> <table class="table" id="finalDropoffListmealMenuSelections" data-ex-bind="data" data-ex-populatemethod="listFinalDropoffslistMenuSelections"></table> </div> |
To hide drop-off location, we can add checkbox Hide Dropped Off so user can hide or show drop-off location.
...
fetch data for only work meal menu items, we need to build request and bind fields and display data in table as follows:
Code Block | ||
---|---|---|
| ||
<div data-ex-bind="field" data-ex-fieldid="HideCompletedChildren"> <input id="vehicleCheckComplete" type="checkbox<div> <table class="table mealMenuSelectionSummary" id="mealMenuSelectionSummary" data-ex-contextobject="WorkMealMenu" data-ex-attributebind="value" /> <label for="vehicleCheckComplete" class="form-control" data" data-ex-attributepopulatemethod="labelpublishSelectionsSummary">Hide Dropped Off</label>> </table> </div> |
Then driver can finish day by pressing button Finished for day and entering ODO meter readingTo add Notes field to Menu app, use data-ex-bind="field" data-ex-fieldid="WorkMealMenu.Notes".
Code Block | ||
---|---|---|
| ||
<div<di data-ex-bind="field" data-ex-fieldid="HideCompletedChildrenWorkMealMenu.Notes"> <h3>Notes</h3> <input<textarea idstyle="vehicleCheckComplete" type="checkboxwidth: 100%; height: 50px;" data-ex-attribute="value"></textarea> /> <label for="vehicleCheckComplete" class="form-control" </di> |
To add ETA field to Menu app, use data-ex-bind="field" data-ex-
...
fieldid="
...
WorkMealMenu.ETA".
Code Block | ||
---|---|---|
| ||
<div data-ex-bind="field" data-ex-fieldid="ODOWorkMealMenu.FinishETA"> <span>ETA</span> <span data-ex-attribute<input id="labelmealMenuEta" classtabindex="input-group-addon"></span> <input 1" data-ex-attribute="value" type="number" class="form-control" min="0"/> </div> |
Confirm Manifest
As Manifest application is used to maintain passenger data in which driver on his vehicle pass on to some hotels and is supposed to pick passengers from that hotels. Passenger personal information is also maintained who take ride. In Return Manifest passengers are dropped off back to their places.
Confirm Manifest is just used to confirm once correct information is made, otherwise Manifest will be rejected. All other fields are same.
Code Block | ||
---|---|---|
| ||
<div>
<a href="#" id="confirmManifest" data-ex-bind="method" data-ex-method="confirmManifestAndAvailability">
Confirm Manifest
</a>
<a href="#" data-ex-bind="method" data-ex-method="rejectManifestAndAvailability">
Reject Manifest
</a>
</div> |
Menu
Menu app is used for Meal selections. Who would be supplier? How many guests are there? What are the selections of menu items? What is the estimated time of arrival?
To build Menu page, we need to see traffic debug and XML request to identify activity name and style.
To add Send Email button to Menu app, specify type="button" data-ex-bind="method" data-ex-method="sendSelectionsEmail".
Code Block | ||
---|---|---|
| ||
<button id="passengerNoShowButton" type="button" data-ex-bind="method" data-ex-method="sendSelectionsEmail" class="btn btn-lg btn-primary">
Send Email
</button> |
Return Manifest
Return Manifest application is opposite to Manifest application. In Manifest, passengers were picked up from hotels but in Return Manifest passengers are dropped off back to their places.
To build Return Manifest page, we need to see traffic debug and XML request to identify activity name and style.
Code Block | ||
---|---|---|
| ||
<div class="row" data-ex-bind="activity" data-ex-activityname="ERP.TourRun" data-ex-activitystyle="ReturnManifest">
</div> |
Please note that Return Manifest app is still in-progress. But still we will explain the fields that are displayed in Return Manifest app. We will explain how these data fields are bound.
To get list of drop-off locations, we need to fetch data using bindings as follows and display data in table.
Code Block | ||
---|---|---|
| ||
<div class="table-responsive">
<table class="table" id="finalDropoffList" data-ex-bind="data" data-ex-populatemethod="listFinalDropoffs"></table>
</div> |
To hide drop-off location, we can add checkbox Hide Dropped Off so user can hide or show drop-off location.
Code Block | ||
---|---|---|
| ||
<div data-ex-bind="field" data-ex-fieldid="HideCompletedChildren">
<input id="vehicleCheckComplete" type="checkbox" data-ex-attribute="value" />
<label for="vehicleCheckComplete" class="form-control" data-ex-attribute="label">Hide Dropped Off</label>
</div> |
Then driver can finish day by pressing button Finished for day and entering ODO meter reading.
Code Block | ||
---|---|---|
| ||
<div class="row" data-ex-bind="activityfield" data-ex-activityname="ERP.TourRunfieldid="HideCompletedChildren"> <input id="vehicleCheckComplete" type="checkbox" data-ex-activitystyleattribute="MealMenuvalue"> </div> |
Please note that Menu app is still in-progress. But still we will explain the fields that are displayed in Menu app. We will explain how these data fields are bound.
To fetch data for all menu items, we need to build request and bind fields and display data in table as follows:
Code Block | ||
---|---|---|
| ||
<div> <table class="table" id="mealMenuSelections" /> <label for="vehicleCheckComplete" class="form-control" data-ex-attribute="label">Hide Dropped Off</label> </div> <div data-ex-bind="datafield" data-ex-populatemethodfieldid="listMenuSelections"></table> </div> |
...
Code Block | ||
---|---|---|
| ||
<div>
<table class="table mealMenuSelectionSummary" id="mealMenuSelectionSummary" data-ex-contextobject="WorkMealMenu" data-ex-bind="data" data-ex-populatemethod="publishSelectionsSummary">
</table>
</div> |
...
ODO.Finish">
<span data-ex-attribute="label" class="input-group-addon"></span>
<input data-ex-attribute="value" type="number" class="form-control" min="0">
</div> |
Roster
Roster application shows a list of drivers in order they have to perform duties for specific date range.
To build Roster page, we need to see traffic debug and XML request to identify activity name and style.
Code Block | ||
---|---|---|
| ||
<di<ESA> data-ex-bind="field" data-ex-fieldid="WorkMealMenu.Notes"> <h3>Notes</h3> <textarea style="width: 100%; height: 50px;" data-ex-attribute="value"></textarea> </di> |
To add ETA field to Menu app, use data-ex-bind="field" data-ex-fieldid="WorkMealMenu.ETA".
Code Block | ||
---|---|---|
| ||
<div data-ex-bind="field" data-ex-fieldid="WorkMealMenu.ETA">
<span>ETA</span>
<input id="mealMenuEta" tabindex="1" data-ex-attribute="value" type="number" class="form-control" />
</div> |
...
<CreateActivity name="ERP.Person" style="PortalRoster" suppressFields="1">
<Field id="CurrentBranchId" masked="0" />
<Field id="QueryDateRange.From" masked="0" />
<Field id="QueryDateRange.To" masked="0" />
<DataPublication autoPopulate="0" id="driverroster" populateMethod="listDriverRoster" />
<DataPublication autoPopulate="once" id="CurrentBranchComboBox" populateMethod="listBranches" queryMode="single" />
</CreateActivity>
</ESA> |
Code Block | ||
---|---|---|
| ||
<button<div idclass="passengerNoShowButtonrow" type="button" data-ex-bind="methodactivity" data-ex-methodactivityname="sendSelectionsEmailERP.TourRun" classdata-ex-activitystyle="btn btn-lg btn-primaryPortalRoster"> Send Email </button> |
Roster
Roster application shows a list of drivers in order they have to perform duties for specific date range.
...
div> |
In Roster app, we simply need two fields; From Date and To Date to enter From and End date respectively. We also need to have List Roster button so when user press it, all drivers will be listed for specified date range.
To pass From and To date to service, we need to bind these fields.
From date is bound to field "QueryDateRange.From" while To date is bound to "QueryDateRange.To". And "datepicker" adapter is used to show calendar to select date.
Code Block | ||
---|---|---|
| ||
<ESA> <CreateActivity name="ERP.Person" style="PortalRoster" suppressFields="1"> <Field id="CurrentBranchId" masked="0" /> <Field id="QueryDateRange.From" masked="0" /> <Field id="QueryDateRange.To" masked="0" /> <DataPublication autoPopulate="0" id="driverroster" populateMethod="listDriverRoster" /> <DataPublication autoPopulate="once" id="CurrentBranchComboBox" populateMethod="listBranches" queryMode="single" /> </CreateActivity> </ESA><div data-ex-bind="field" data-ex-fieldid="QueryDateRange.From"> <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i> From</span> <input type="text" data-ex-attribute="value" data-ex-adapter="datepicker" class="form-control"> </div> <div data-ex-bind="field" data-ex-fieldid="QueryDateRange.To"> <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i> To</span> <input type="text" data-ex-attribute="value" data-ex-adapter="datepicker" class="form-control"> </div> |
To get data from service we added button List Roster when pressed request is made to service so we would have all drivers available.
Code Block | ||
---|---|---|
| ||
<div<button classid="rowlistDriverRoster" data-ex-bindtype="activitybutton" data-ex-activitynamebind="ERP.TourRunmethod" data-ex-activitystylemethod="PortalRosterlistDriverRoster"> List Roster </div> |
...
button> |
To display data returned from service, we simply need two fields; From Date and To Date to enter From and End date respectively. We also need to have List Roster button so when user press it, all drivers will be listed for specified date range.
To pass From and To date to service, we need to bind these fields.
From date is bound to field "QueryDateRange.From" while To date is bound to "QueryDateRange.To". And "datepicker" adapter is used to show calendar to select dateto display in table.
Code Block | ||
---|---|---|
| ||
<table id="portalRoster" data-ex-bind="data" data-ex-populatemethod="listDriverRoster"></table> |
Cash Count
Cash Count application is used to collect and count cash for Journal batches, find the discrepancy if exist, and reconcile cash based on cash collected and spent.
To build Cash Count page, we need to see traffic debug and XML request to identify activity name and style.
Code Block | ||
---|---|---|
| ||
<div data-ex-bind="field" data-ex-fieldid="QueryDateRange.From">
<span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i> From</span>
<input type="text" data-ex-attribute="value" data-ex-adapter="datepicker" class="form-control">
</div>
<div data-ex-bind="field" data-ex-fieldid="QueryDateRange.To">
<span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i> To</span>
<input type="text" data-ex-attribute="value" data-ex-adapter="datepicker" class="form-control">
</div> |
To get data from service we added button List Roster when pressed request is made to service so we would have all drivers available.
Code Block | ||
---|---|---|
| ||
<button id="listDriverRoster" type="button" data-ex-bind="method" data-ex-method="listDriverRoster">
List Roster
</button> |
...
<ESA>
<CreateActivity name="ERP.JournalBatch" style="Driver" suppressFields="1">
<Field id="CreatorId" masked="0" />
<Field id="JournalFilter" masked="0" />
<Field id="CurrentBranchId" masked="0" />
<Field id="Status" masked="0" />
</CreateActivity>
</ESA> |
Code Block | ||
---|---|---|
| ||
<div class="row" data-ex-bind="activity" data-ex-activityname="ERP.JournalBatch" data-ex-activitystyle="Driver">
</div> |
Now, we need to get list of journal batches, so user can select any batch and reconcile. We can get data using method "listMyBatchesToReconcile" using data field "PersistentId".
When list of batches are available, then user can select any batch using drop-down list that can be added as follows:
Code Block | ||
---|---|---|
| ||
<table id<div data-ex-bind="portalRosterdatafield" data-ex-bindfieldid="dataPersistentId" data-ex-populatemethod="listDriverRoster"></table> |
Cash Count
Cash Count application is used to collect and count cash for Journal batches, find the discrepancy if exist, and reconcile cash based on cash collected and spent.
To build Cash Count page, we need to see traffic debug and XML request to identify activity name and style.
Code Block | ||
---|---|---|
| ||
<ESA> <CreateActivity name="ERP.JournalBatch" style="Driver" suppressFields="1"> <Field id="CreatorId" masked="0" /> <Field id="JournalFilter" masked="0" /> <Field id="CurrentBranchId" masked="0" /> <Field id="Status" masked="0" /> </CreateActivity> </ESA>listMyBatchesToReconcile"> <label for="PersistentIdField">Run:</label> <select id="PersistentIdField" class="form-control"></select> </div> |
Once you select batch from Journal batches list then can see its status. If Journal batches have different Statuses. A cash batch may be counted for example.
We can display status fields and batch status as follows:
Code Block | ||
---|---|---|
| ||
<div id="statusField" data-ex-bind="field" data-fieldid="Status">
<label data-ex-attribute="label"></label>
<p data-ex-attribute="text"></p>
</div> |
We can also see cash discrepancy using data-fieldid="CashDiscrepancy".
Code Block | ||
---|---|---|
| ||
<div classid="rowcashDiscrepancyField" data-ex-bind="field" data-fieldid="activityCashDiscrepancy"> <label data-ex-activitynameattribute="ERP.JournalBatch" label"></label> <p data-ex-activitystyle="Driver"> attribute="value" class="form-control-static pull-right"></p> </div> |
Now, we need to get list of journal batches, so user can select any batch and reconcile. We can get data using method "listMyBatchesToReconcile" using data field "PersistentId".
When list of batches are available, then user can select any batch using drop-down list that can be added as follows:
count of each bill of $100, $50, $20, $10, $5, $1.
Code Block | ||
---|---|---|
| ||
<div data-ex-bind="datafieldfield" data-ex-fieldid="PersistentId" data-ex-populatemethod="listMyBatchesToReconcile-fieldid="BillCount100.Plan"> <label for="PersistentIdFieldcount100Field">Run:<>$100</label> <select<input id="PersistentIdFieldcount100Field" classtabindex="form-control"></select> </div> |
...
Once you select batch from Journal batches list then can see its status. If Journal batches have different Statuses. A cash batch may be counted for example.
We can display status fields and batch status as follows:
Code Block | ||
---|---|---|
| ||
<div id="statusField" 4" data-ex-attribute="value" type="number" class="form-control" /> </div> <div data-ex-bind="field" data-fieldid="StatusBillCount50.Plan"> <label data-ex-attributefor="labelcount50Field"><>$50</label> <p<input id="count50Field" tabindex="4" data-ex-attribute="textvalue"></p> </div> |
...
We can also see cash discrepancy using data-fieldid="CashDiscrepancy".
Code Block | ||
---|---|---|
| ||
<div id="cashDiscrepancyField" type="number" class="form-control" /> </div> <div data-ex-bind="field" data-fieldid="CashDiscrepancyBillCount20.Plan"> <label data-ex-attributefor="labelcount20Field"><>$20</label> <p<input id="count20Field" tabindex="4" data-ex-attribute="value" type="number" class="form-control-static pull-right"></p> </div> |
...
Now, we need to get count of each bill of $100, $50, $20, $10, $5, $1.
Code Block | ||
---|---|---|
| ||
" /> </div> <div data-ex-bind="field" data-fieldid="BillCount100BillCount10.Plan"> <label for="count100Fieldcount10Field">$100<>$10</label> <input id="count100Fieldcount10Field" tabindex="4" data-ex-attribute="value" type="number" class="form-control" /> </div> <div data-ex-bind="field" data-fieldid="BillCount50BillCount5.Plan"> <label for="count50Fieldcount5Field">$50<>$5</label> <input id="count50Fieldcount5Field" tabindex="4" data-ex-attribute="value" type="number" class="form-control" /> </div> <div data-ex-bind="field" data-fieldid="BillCount20CoinCount200.Plan"> <label for="count20Fieldcount2Field">$20<>$2</label> <input id="count20Fieldcount2Field" tabindex="4" data-ex-attribute="value" type="number" class="form-control" /> </div> <div data-ex-bind="field" data-fieldid="BillCount10CoinCount100.Plan"> <label for="count10Fieldcount1Field">$10<>$1</label> <input id="count10Fieldcount1Field" tabindex="4" data-ex-attribute="value" type="number" class="form-control" /> </div> </div> |
Here is the Total field which is calculated automatically based on number count of $100, $50, $20, $10, $5, $1.
Code Block | ||
---|---|---|
| ||
<div data-ex-bind="field" data-fieldid="BillCount5TotalBillsAndCoins.Plan"> <label for="count5FieldtotalBillsAndCoinsField">$5<>Total:</label> <input id="count5FieldtotalBillsAndCoinsField" tabindex="4" data-ex-attribute="value" type="number" class="form-control" text"/> </div> |
Now we need to reconcile batches based on cash collected and spent.
Code Block | ||
---|---|---|
| ||
<div data-ex-bind="field" data-fieldid="CoinCount200.PlanTotalCash"> <label for="count2Field">$2<totalCashField">Cash Collected:</label> <input id="count2FieldtotalCashField" tabindex="4" data-ex-attribute="value" type="number" class="form-controltext" /> </div> <div data-ex-bind="field" data-fieldid="CoinCount100.PlanTotalSpent"> <label for="count1Field">$1<totalSpentField">Cash Spent:</label> <input id="count1FieldtotalSpentField" tabindex="4" data-ex-attribute="value" type="numbertext" class="form-control" /> </div> |
Here is the Total field which is calculated automatically based on number count of $100, $50, $20, $10, $5, $1.
...
language | xml |
---|
...
Once reconciliation is done, user can mark it by pressing Save button.
Code Block | ||
---|---|---|
| ||
<button id="saveButton" tabindex="8" data-ex-bind="fieldmethod" data-ex-fieldidmethod="TotalBillsAndCoins.PlanMarkCounted"> <label for="totalBillsAndCoinsField">Total:</label> <input id="totalBillsAndCoinsField" data-ex-attribute="value" type="text"/> </div> |
Now we need to reconcile batches based on cash collected and spent.
Code Block | ||
---|---|---|
| ||
<div data-ex-bind="field" data-fieldid="TotalCash"> <label for="totalCashField">Cash Collected:</label> <input id="totalCashField" data-ex-attribute="value" type="text"/> </div> <div data-ex-bind="field" data-fieldid="TotalSpent"> <label for="totalSpentField">Cash Spent:</label> <input id="totalSpentFieldSave </button> |
Confirm Tomorrow
As Manifest application is used to maintain passenger data in which driver on his vehicle pass on to some hotels and is supposed to pick passengers from that hotels. Passenger personal information is also maintained who take ride. In Return Manifest passengers are dropped off back to their places.
Confirm Tomorrow is just used to confirm once correct information is made, otherwise Manifest will be rejected. All other fields are same.
Code Block | ||
---|---|---|
| ||
<div> <a href="#" id="confirmManifest" data-ex-bind="method" data-ex-attributemethod="valueconfirmManifestAndAvailability" type="text" /> </div> |
Once reconciliation is done, user can mark it by pressing Save button.
Code Block | ||
---|---|---|
| ||
<button id="saveButton" tabindex="8> Confirm Manifest </a> <a href="#" data-ex-bind="method" data-ex-method="MarkCountedrejectManifestAndAvailability"> Save </button> |
...
Reject Manifest
</a>
</div> |
Banking
To be added to Portal.
Assets
To be added to Portal.
Chart of Accounts
When user clicks new menu “Chart of Accounts”, program must display similar structure as displayed below containing tree-view and respective fields. For this project, only “Name” field was required to be displayed. So when user double clicks any leaf-node, program must raise a request to get data of that node from service, and then name of the clicked node must be displayed in “Name” field, then user can make any change to the field, and then changes must be saved so user can view that changes in WPF application.
...
You can see data changed in Name field was saved and can be viewed in WPF application.
Find/browse Journal
To be added to Portal.
General Journals
To be added to Portal.
Expense Claim
To be added to Portal.
Journal Batches
To be added to Portal.
Journal Templates
To be added to Portal.
Standard Reports
To be added to Portal.
GST Explorer
To be added to Portal.
Advanced
To be added to Portal.