GMS

From UG

(Difference between revisions)
Jump to: navigation, search
(GMS status)
(Run GM Split and Generate Internal Invoices)
Line 273: Line 273:
  Need to run script that will set  '''n/a: closed before 2012'''  for all CTs that have OC status "closed before 2012".
  Need to run script that will set  '''n/a: closed before 2012'''  for all CTs that have OC status "closed before 2012".
-
=== Run GM Split and Generate Internal Invoices ===
+
=== GMS Splitter Process ===
-
System has to generate internal invoices between offices to re-distribute profit.
+
This process runs periodically for example once a day.  
-
System would Run GM Split and Generate Internal Invoices periodically for example once a day.  
+
Exact schedule would be defined here: [[#Schedule for GM Split calculation]].
-
Exact schedule would be defined here: [[#Schedule]].
+
==== Steps for GMS Splitter ====
-
One invoice would cover many CTs.
+
* Look at all CTs with GMS status = "pending"
-
==== Algorithm for scheduled GM Split Run triggered by Scheduler ====
+
* See if CT info is complete/correct:
 +
** OO is defined
 +
** OO/IO/EO/TO combination falls under cases defined in GMS Admin
-
0) Identify CTs that are subject to GMS calculation this time (CTs with GMS status = "pending GMS" )
+
* If info is complete/correct then:
 +
** calculate GM Split
 +
** issue invoices
 +
** post results into DB
-
1) For every CT in the pool above  calculate GM Split and post results into DB
+
* Else set GMS status = "error"
-
 
+
-
2) after #1 is completed set GMS status = "GMS completed" or "error" for these CTs
+
-
 
+
-
3) create global internal interoffice invoices for above CTs that has become "GMS completed"
+
-
 
+
-
4) update Gen, Inv, P/L tabs to reflect that info
+
-
 
+
-
5) send e-mail (or post into Dashboard) simple report of CTs that have "GMS status"= error
+
=== Invoices generated by GM Split Runner ===
=== Invoices generated by GM Split Runner ===

Revision as of 04:00, 14 March 2012


Contents

Info

Mantis

  • 0003321 [Profit Sharing Module]

Scope

Covers this one module - Profit Sharing Module.

Glossary

Business Requirements 1

See GM Split Requirements.

OC Functionality

OC status

At some point in the life of a shipment record it will not be updated anymore. Moreover some updates would become harmful. Therefore, certain types of functionality should be blocked for "old/mature" records. This would prevent undesirable situations such as:

  • altering shipment weight after invoices has been issued
  • issuing invoice before all PI/SI are in
  • etc

Record that have limited functionality as far as updates/etc is called "closed" and should have status "closed". Otherwise it is "open".

We call this status "OC status" - (Open/Closed) status.

Closing Time Frame

We need a table in the system that defines how many days shipment should stay open since it was created.

For every MOT this number is different.

Typical values:

Air - 35 days
FCL - 60 days
LCL - 70 days
Truck (all 3 sub-modes) - 35 days

Number of days is editable field.

Set default as 1000.

Add this to User Access table.

OC Status Values

  • n/a
for CTs closed before 2012
  • open
for new CTs or manually re-opened CTs
  • manually open
for CTs that were manually opened by user
  • closed but not delivered
CTs closed by user or system (satisfy #Closed CT condition) but do NOT satisfy "delivered CT" condition - see List_CTs#DELIVERED
  • closed and delivered
CTs closed by user or system (satisfy #Closed CT condition) and that do satisfy "delivered condition" - see List_CTs#DELIVERED

There are three ways to set this status: automatically, manually and by script.

Setting OC status automatically

When new shipment is created its status is automatically "open".

Closed CT condition
When the number of days between Actual Date Of Departure and today's day becomes equal to 
#Closing Time Frame CT is said to satisfy "closed" condition.
OC process
  • OC Process is a process that runs periodically and updates "OC status" and "GMS status":
    • it checks on all "open" CTs to see if they can be set as "closed but not delivered" or "closed and delivered"
    • it checks on all "closed but not delivered" and see if now they can be set as "closed and delivered"
    • also if it is changing CT status to "closed and delivered" then it will also set GMS status to "pending" from "not ready"
  • Currently it is defined to run once a day (maybe defined in Admin)


Setting OC status manually

We need to provide functionality to manually:

  • set status to "closed" on open and manually open CTs
  • set status to "mannually open" on closed CTs (user who opened CT manually must close CT manually)

This is subject to user access permissions.

Suggested implementation: add "Close/Open file" button to P/L Tab.

OC status change trigger GMS status change

See #GMS status.

Closed CT have different permissions

CT (file) that has "closed" status should limit what operators can do with record.

See #Viewer for CT, Master and Group

Setting OC status by script

All CTs that would close prior to Jan 1, 2012 (if this functionality would be available since the beginning) should have status "n/a" or "closed before 2012".

All CTs that would close from Jan 1, 2012 to Release day (if this functionality would be available since the beginning) should have status "closed before 2012" should have status "closed".

Tech Note
--------
To achieve above we need to write and run appropriate scripts prior Release !

Display OC status on Gen Tab

Opening and Closing shipments when Groups and Masters are involved

In general, we want to have Master or Group to be consistent in terms of open/close status. It means:

Master/Group has open status if and only if 
       every CT inside of that Master/Group has open status.
Master/Group has closed status if and only if 
       every CT inside of that Master/Group has closed status.

Closing

CT that is a part of a Group or/and of the Master can be closed only when ALL CTs in that Group or Master can be closed based on the individual time frames.

In case of automatic closing System would have to wait for all CTs to "mature" in terms of timeframes.

In case of manual closing System should give a warning to the user that all CTs (in related M/GRP) are going to be closed.

Opening

In case of manual opening System should give a warning to the user that all CTs (in related M/GRP) would be opened.

Viewer for CT, Master and Group

  • should mimic look and feel/layout for editors
  • block all functionality that would affect GM Split (editing records, adding CTs to Master, etc)

Interface to manually "open" and "close" CTs

  • "Open/close" button on P/L tab
  • This is subject to access table
  • Log who/when opened/closed

Block altering of the "closed" CT/Master/Group

For users who have no ability to open manually system should display error explaining why edit is not possible and suggest "view" instead.


DR report to show all manually opened CTs in the system

  • Lev 1: counter - how many CTs have status "manually" open
  • Lev 2: xls (if no extra time); sortable HTML with xls option (if enough time); Columns:
    • CT# (hyperlink)
    • Client
    • who manually opened
    • when manually opened

GMS functionality

Prerequisites for GMS calculations

In order to calculate GMS Split we need the following to be defined for the record:

  • OO
  • EO
  • IO
  • TO
  • GMS ratio
  • GMS schedule

Owners Office

Owners Office (OO) is a field (attribute) that identify what Jaguar office is the OO for particular Client Company - see Client Companies.

Relationship is one to one.

Add this to "Part A." section on UI.

Make sure changes are posted into Log.

Import, Export and Third Offices

EO, IO, TO are properties of CT and set on Gen Tab.


Add GM Split section to Admin

Add number of configuration options - see below.

Add under Acc > GM Split.

GM Split Rules

See table below.

%-ages must be stored in the system.

Need a view of current %s.

User could edit %s.

One table is for default values and one for Client Company specific are required.

Add this as a property into User Access table.

Add changes to log.

File:Prfit split cases.JPG

GM ratio

More than one "GM ratio" (“percentage model”) could be applicable - more than one table as in Fig above could be defined.

Each case should have a name (optional, need textbox for that) and id generated by the system.

We should have one default "GM ratio", and then a number of alternative "GM ratio" (same scenarios, just different percentages). By default a Client Company would be subject to the ‘default’ model.

It means that "GM ratio" is a new property for Client Company entity.

Make sure changes are posted into Log.

Schedule for GM Split calculation

For example it would be possible to say that GM Split calculation will happen once a day at 17:00 EST

Credit to the office

Per Karen this is no longer needed

Limitations on pending GMS and closed files

Not required at least for this release

Log for GMS Admin Changes

Post all changes into Log.

Access Rights

Have only one item in User Access Rights table regulating GM Split Admin (all tabs).

GMS status

GMS (Global Marging Split) Statuses:

  • n/a
-GMS status for CTs that have OC status "closed before 2012". Need script - see below.
  • not ready
- default status for all new CTs
  • pending
- these CTs will be included into the next run of GM Splitter
- this status is set by #OC Process
  • completed
- after system runs Global Margin Splitter on this CT system successfully must change status to "completed"
- set by GM Splitter
  • error
- after system runs Global Margin Splitter on this CT system unsuccessfully (example: CT does not fall under any of GMS case)
-set by GM Splitter
Tech Note
---------
Need to run script that will set  n/a: closed before 2012  for all CTs that have OC status "closed before 2012".

GMS Splitter Process

This process runs periodically for example once a day.

Exact schedule would be defined here: #Schedule for GM Split calculation.

Steps for GMS Splitter

  • Look at all CTs with GMS status = "pending"
  • See if CT info is complete/correct:
    • OO is defined
    • OO/IO/EO/TO combination falls under cases defined in GMS Admin
  • If info is complete/correct then:
    • calculate GM Split
    • issue invoices
    • post results into DB
  • Else set GMS status = "error"

Invoices generated by GM Split Runner

Number of invoices

There should be limited number of invoices issued each time Runner runs. It corresponds to num of unique pairs from the list of offices. In 2012 it would be:

  • NY/HK
  • NY/Lon
  • NY/Par
  • HK/Lon
  • HK/Par
  • Lon/Par

So every time it runs between 0 and 6 Consolidated Invoices would be generated.

Two types of Internal Invoices

System would continue registering and generating old types of Individual Internal Invoices (per CT or Group).

They would be generated automatically by the System.

Layout would stay the same.

Old functionality related to these invoices would be preserved (Inv Tab, P/L Tab, SearchInvoices, etc).

At the same time new Consolidated Invoices will be generated as well (by GMS Splitter).

Invoice numbering

New consolidated invoice should follow "old" sequence (as defined in Acc_CT_Tabs_Sales_or_Internal )

Individual Internal Invoices (per CT or Group) would follow this pattern:

<Related Consolidated Invoice>"-"<CT#>

Consolidated Invoices pattern:

"IIGMS"<office code><sequence>

Example:

Assume GM Splitter discovered only 2 CTs that are pending GMS.

  • for CT#555 office NY owes 10USD to office HK and
  • for CT#888 office HK owes 20USD to office NY

System would register:

  • one Consolidated Invoice IIGMSNY12345 from NY to HK for 10USD.
  • and two Individual Invoices:
    • IIGMSHK12345-555 from HK to NY for 10USD
    • IIGMSNY12345-888 from NY to HK for 20USD

Timing

Both Individual and consolidated invoices will be generated at the same time.

Layout

See mock up below.

GMS Example 1 (Non groupped CTs)

Let's look at the simple case.

Assume that GM Split Run found only one CT with GMS Status = pending.

Assume that this CT is CT#325563, AIR, JACKEL COSMETICS (HK) LTD from live site.

Gen Tab

Inv Tab

P n L Tab

Pdf mock up

GMS Example 2 (Groupped CTs)

Acc Reports

We are changing the way we handle Internal Invoices. This could affect or even break some of the existing reports such as PnL Report for Multiple CTs (summary and detailed view).

List of Internal Invoices or Search Inv Report

We need some kind of way to see all Internal invoices generated by the System.

One option would be to re-use Search Internal Invoices report. See Mock up below with possible new layout.

This solution implies that you would be able to use various existing filters such as Issued from, etc.

Alternatively you could simply provide a list of invoices with paging sortable by Inv#, Issuing date. Ideally with fiber by Issuing office.

First release of this component could have simplest design possible (fastest to code) because of time pressure.

P n L for Multiple CTs

See screenshots below.

Major difference as far as structure of invoice/values that could affect how data is represented in DB and how reports are affected:

  • invoice issued by = System (not operator)
  • one invoice corresponds not just one CT or CT group but to any collection of CTs and groups (any mode, any Client)

Additional DB structure analysis required to answer that. Sasha/Kostya/Alex will discuss that.

GMS Misc

Display OO, EO, IO, GMS Status, GMS Case on Gen Tab

See mock up below, Red Box B.

UC: How to apply new GMS split rules to GMS completed CTs

'!!! Spec changed !!!

This is the case when we want to change GM Split %ages and apply them not only in the future GMS runs but also recalculate for CTs that have GMS status completed.

This can be achieved by changing OC status for such group of CTs from closed to open to closed. This will force GMS status to be "pending" and next time GMS Runner runs it will re-adjust GMS for these CTs.

This can be done just by user - no programming required.

Create DR report to identify all new shipments without an Owner Office

0003490: [GM Split ] Create DR report to identify all new shipments without an Owner Office

Info for E0 estimate

Core need: To identify early CTs that have Client Companies that do not have Owners Office set

  • Level one: counter
  • Level two: xls with 2 columns - CT#(with link) and Client Company
Personal tools