Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

Code Block
languagexml
<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.

Image RemovedImage Added

Code Block
languagexml
<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.

Image RemovedImage Added


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
languagexml
<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
languagexml
<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
languagexml
<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
languagexml
<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.

Image Removed

Code Block
languagexml
<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.

Image Removed


To add Send Email button to Menu app, specify type="button" data-ex-bind="method" data-ex-method="sendSelectionsEmail".

Code Block
languagexml
<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.

Image Added

Code Block
languagexml
<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.

Image Added


To get list of drop-off locations, we need to fetch data using bindings as follows and display data in table.

Code Block
languagexml
<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
languagexml
<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
languagexml
<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.

Image Removed

To fetch data for all menu items, we need to build request and bind fields and display data in table as follows:

Code Block
languagexml
<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
languagexml
<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
languagexml
<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
languagexml
<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
languagexml
<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.

Image Added


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
languagexml
<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
languagexml
<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.

Image Removed

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
languagexml
<table id="portalRoster" data-ex-bind="data" data-ex-populatemethod="listDriverRoster"></table>


Image Added

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
languagexml
<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
languagexml
<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
languagexml
<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
languagexml
<table id<div data-ex-bind="portalRosterdatafield" data-ex-bindfieldid="dataPersistentId" data-ex-populatemethod="listDriverRoster"></table>

Image Removed

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
languagexml
<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>


Image Added


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
languagexml
<div id="statusField" data-ex-bind="field" data-fieldid="Status">
	<label data-ex-attribute="label"></label>
	<p data-ex-attribute="text"></p>
</div>


Image Added


We can also see cash discrepancy using data-fieldid="CashDiscrepancy".

Code Block
languagexml
<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>


Image Added


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
languagexml
<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
languagexml
<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
languagexml
<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
languagexml
" />
</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>


Image Added


Here is the Total field which is calculated automatically based on number count of $100, $50, $20, $10, $5, $1.

Image Added

Code Block
languagexml
<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.

Image Added

Code Block
languagexml
<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>

Image Removed

Here is the Total field which is calculated automatically based on number count of $100, $50, $20, $10, $5, $1.

Image Removed

...

languagexml


...

Once reconciliation is done, user can mark it by pressing Save button.

Code Block
languagexml
<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.

Image Removed

Code Block
languagexml
<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>

Image Added

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.


Image Added


Code Block
languagexml
<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
languagexml
<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.