Versions Compared

Key

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

...

...

...

...

...

Table of Contents

Input Physical Trades Data

...

Please refer to Stock Management Function for the user guide.

The system will follow this order of priority : Settlement Qty > Contract Actual Qty > Qty to calculate data.

Once stock data has been input, the following columns for each trade in the New Physical Trade table will be reflected automatically.

e. Input Payment Data in PS Ledger

If this step is not required yet, please proceed to the next step and return to complete this step when necessary.

This section displays the details of your purchase and sale ledgers for all physical trades.

...

To access this section, click on 'Trade', following by 'New Physical Trades' from the navigation sidebar on the left. Click on the 'PS LEDGERS' tab at the top of the page to access this section.

The Start Date is 1 month before today's date by default. Please feel free to change the Start Date and End Date (can be any date beyond today's date) accordingly. The dates will remain according to your settings until you log out.

All unassigned items (to Contract No.) are displayed in the table by default. You may select from the Unassigned/Assigned drop down list to viewed the unassigned or assigned trades accordingly. If you add or edit in the table and switch to another page without saving, you will be prompted that any unsaved data will be lost.

Final Calculation Logic:

  1. when we do portfolio P/L calculation, we use phy_trade actual qty (otherwise qty) and actual_price (otherwise ested_price) in phy_pricing table, which means in settlement tables controlled by risk department

  2. for contract_amt, psl, invoice, we use contract_actual_qty (qty) and contract_actual_price (provisional_price) to calculate.

    1. BE in dropdown list in psl, invoice

    2. FE un_inc_amt, un_payment_amt in psl, invoice table

    3. FE contract_amt … in phy_trade table

The right logic should be: for each trade, once they key the price and qty but not yet record PSL or INVOICE for this contract, PSL AMT, INV QTY, INV AMT should be 0 and BAL AMT , UN INV QTY , UN INV AMT should not be null.

Initial BAL AMT, UN INV QTY, UN INV AMT formulas have no change

...

A pop up message reminder will appear for user to save data when change page, will apply when user switches between assigned and unassigned page as well as to all conditions when users switch to other page in system or refresh the page

You can choose to upload your PS ledger/bank/payment statements or add ledger items by clicking '+ Add Row' button located above the table. Input the details (cells highlighted in red are compulsory fields) in the row and click 'Save' once done.

If you want to select from “Contract No..” to auto fill details in the row according to the contract’s details in the dropdown list (if data is available), you must select Company first and the corresponding contract numbers will be available in the Contract No. drop down list for selection. You can then fill in the Ledger Type (Paid/Received) and Amount first, followed by the other fields. The dropdown list will be auto sorted by the latest contract date (Date in Trades tab) at the top of the list.

  • Contract No.

  • Main Contract No.

  • Phy Trade ID

  • Trade Date

  • Company

  • Counterparty

  • Quantity  [settlement qty>contract actual qty>qty]

  • Price [Price will be autofilled according to this, in order of priority settlement price>estimated price>contract actual price>provisional price] 

  • Un Payment Amount: Will be autofilled with Contract Amount if Contract No. is selected from drop down list by default

    • 1、Un Invoice Amount(未开票金额) - In Invoice tab

      2、Un Payment Amount 未收/付款 - PSL

      • Un Invoice Amount = Contract Amount - Invoice Amount

        Un Payment Amount = CONTRACT AMT - Payment/PSL Amount

  • Contract Amount (Contract Actual Qty * Contract Actual Price, calculated in Trades tab)

CONTRACT NO: Key column linked to “PHYSICAL TRADE STATUS” 现货合同状态 app to monitor payment and invoice record.

  • If Contract No. has not been selected yet aka these fields are empty, they will be auto-filled: Company, Counterparty and Unpayment Amt, if “Contract No.” is selected

  • If Contract No. has been selected previously aka these fields are already filled, only Company, Counterparty and Unpayment Amt will change according to the Contract No. So you will need to adjust the rest of the fields manually

  • Main Contract No. column has been added, you may input as necessary

Here are some of the conditions:

  • COUNTERPARTY and AMOUNT should not be editable after saving (they can only edit these when split)

  • When COUNTERPARTY ≠ THIRD PARTY, COUNTERPARTY will be highlighted in green

Please refer to below for more information on how to input the fields. Cells highlighted in red in the table are compulsory fields and are thus necessary to input.

  • PSL ID: Auto generated by system

  • Date: Date when invoice or payment is made, compulsory field

  • PSL TYPE: 账类别: Will be PAYMENT by default

a. PAYMENT 款项: Payment transaction, the amount will be used for “SETTLED AMT” 已收货款 and “SETTLED QTY” 已交重量 calculation in “PHYSICAL TRADE STATUS” 现货合同状态 app.

b. INVOICE 发票: Invoice for the payment, the amount is used for “INV AMT” 票额 and “INV QTY” 票量 calculation in “PHYSICAL TRADE STATUS” 现货合同状态 app.

  • Contract No.: In order for contract numbers to be available for selection, you must select Company first and the corresponding contract numbers will be available in the Contract No. drop down list for selection. You can then fill in the Ledger Type (Paid/Received) and Amount first, followed by the other fields.Every purchase and sale contract should have its own contract number. You may select Contract No. from the dropdown list but you will need be prompted to input Ledger Type and Amount first; and other relevant fields such as Main Contract No., Company, Counterparty, Quantity, Unit, Price, Ratio [default is 100], and Amount [Price * Quantity] will be auto-filled according to the physical trade data input. Otherwise, you may leave it empty. Any contract number with 0 or close to 0 for Un Invoice Amount (un_inv_amt) or Un Payment Amount (un_payment_amt) will not appear in the drop down list as the contract has been fully settled
  • 1、UN INV AMT (未开票金额) - invoice

    2、未收/付款 - PSL

    • un_inv = CONTRACT AMT - inv_amt

      un_payment = CONTRACT AMT - payment_amt

  • Contract No.: Select from the dropdown list to select the Contract Number (must input contract actual price in trade for contract no to appear in ps ledger), and the corresponding data input in Trades tab will be auto-filled here (Main Contract No., Company, Unit, Qty, Un Inv Amt and Counterparty if data is available). These items will be displayed in the drop down list:

  • Contract No.

  • Main Contract No.

  • Phy Trade ID

  • Company

  • Counterparty

  • Product

  • Qty: Contract Actual Quantity or

    Quantity

    input in Trades tab
  • Price: Contract Actual Price in Trades tab

  • Un Inv Amt: Refers to invoice amount that has not been accounted for (not saved in Invoice table), will be Contract Amt by default once Contract No. is selected. Once you input values in Amount column to account for the invoice amount, the Un Inv Amt will be recalculated

  • Contract Amt: Contract Actual Qty * Contract Actual Price eeeeeeeee

  • Main Contract No.: Main contract number of individual contract number, you may input as necessary. Input is not required as it will be auto-filled if you select Contract No. from the dropdown list

  • Company: Entity of contract, Name of your company (can be input in Settings>Company>Company Profile page). Input is not required as it will be auto-filled if you select Contract No. from the dropdown list, or you may manually input; this is a compulsory field

  • Bank: Name of beneficiary bank, MUST be set up in Accounting>Bank Details page Accounting Guide before you can select the bank name. Please note that the Company, Bank and Currency must be the same as those saved in the Accounting>Bank Details page, otherwise, Bank column will be reflected in red

  • Counterparty: Name of counterparty. Input is not required as it will be auto-filled if you select Contract No. from the dropdown list; or you may input manually. Please note that if Counterparty and Third Party are different, Counterparty will be highlighted in green.

  • Third Party: If the payment is directed towards a party different from the counterparty listed, you may input the name of third party here. Please note that if Counterparty and Third Party are different, Counterparty will be highlighted in green.

  • Ledger Type: Payment paid to counterparty or payment received from counterparty; this is a compulsory field

  1. RECEIVED 收款: It means the payment is received from your counterparty, it is also applied to “INVOICE” 发票 type row.

  2. PAID 付款: It means the payment is paid to your counterparties, it is also applied to “INVOICE” 发票 type row.

  3. AMOUNT 总额: Always positive number which is used for amount calculations in “PHYSICAL TRADE STATUS” 现货合同状态 app.

There are 2 methods:

  1. Method 1:

Select RECEIVED if amount is received from counterparty

Select PAID if amount is paid to counterparty

Amount will always be positive value (+)

2. Method 2:

  • If “PSL Type” is “Payment”:

...

  • =

...

  • If “PSL Type” is “Invoice”: If the invoice is paid, “Ledger Type” will be PAID

  • DES: Description

  • QTY: Quantity of the contract. Once you select an existing Contract No. from the drop-down list, Quantity will be auto-filled based on your records for your convenience, you are free to adjust the quantity to balance the stock in and stock out quantity. Input is not required as it will be auto - filled if you select Contract No. from the dropdown list. Quantity will follow this order of priority when calculating P/L, PS Ledger and Stock Management: Settlement Qty > Contract Actual Qty > Qty.

  • UNIT: Unit of stock in/stock out transaction. Input is not required as it will be auto-filled if you select Contract No. from the dropdown list. Input is not required as it will be auto-filled if you select Contract No. from the dropdown list

  • PRICE: Input is not required as it will be auto-filled if you select Contract No. from the dropdown list . Order of priority: Actual Price > Estimated Price > Contract Actual Price > Provisional Price

  • PRICE UNIT: Price unit will be auto filled according to PRICE/UNIT

  • RATIO: 100% (1) by default, you may edit as necessary

  • AMOUNT: If user selects from Contract No. column, the Amount will be auto-filled with Un Payment Amount if available. This is a compulsory field, negative amount is supported.

    • 1、UN INV AMT (未开票金额) - invoice

      2、未收/付款 - PSL

    • un_inv = CONTRACT AMT - inv_amt

      un_payment = CONTRACT AMT - payment_amt

    • If you input manually, if the amount is negative, Ledger Type will automatically become PAID. If the amount is positive, Ledger Type will automatically become RECEIVED.

  • PSL Amount: Payment amount received/paid, opposite from Amount

The system will perform auto calculations for AMOUNT if QTY, PRICE and RATIO are filled:

Formula = AMOUNT = QTY * PRICE * RATIO for most of the cases, but there is a special case where the unit is US CENT etc but CCY is USD, so AMOUNT = QTY * PRICE / 100

Ratio is in the form of % eg 100%, 5% and the system will do calculation accordingly.

  • CCY: Currency of PS Ledger item; this is a compulsory field

  • REMARKS: Remarks

Note:

  • Validation - If any row in PS Ledger is linked to deleted trade execution, an error will be raised as trade Execution cannot be deleted until its corresponding PS Ledger item is deleted

  • Validation date column cannot be bigger than today

Updates:

  • After selecting Contract No., certain fields will be auto filled accordingly. If Actual Qty has been input, Quantity will be auto filled with Actual Qty, otherwise Contract Qty will be filled instead

  • After selecting Contract No., certain fields will be auto filled accordingly. If Actual Price has been input, Price will be auto filled with Actual Price otherwise it will be empty instead

  • In Contract No. dropdown list, add these 2 items:

    • Qty: map to qty

    • Price: map to price

  • When add new row, Ratio will be 100 by default

  • After selecting Contract No., Counterparty should not be in red bug fixed

  • Price decimal point will follow user’s setting bug fixed

  • Filter will remain in cache until user logs out or click on Reset Filter

Once PS Ledger data has been input, the following columns for each trade in the New Physical Trade table will be reflected automatically.

  • PSL Amt: PS Ledger amount with PSL Type: Payment recorded in PS Ledger will be automatically reflected here

  • PSL Date: PS Ledger date with PSL Type: Payment recorded in PS Ledger will be automatically reflected here

  • Bal Amount: Balance Amount = Trade value - PS Ledger Amount will be automatically reflected here

  • Inv Qty: Invoice quantity with PSL Type: Invoice recorded in PS Ledger will be automatically reflected here

  • Inv Amt: Invoice amount with PSL Type: Invoice recorded in PS Ledger will be automatically reflected here

  • Un Inv Qty: Un-Invoiced Quantity = Quantity - Invoice Quantity will be automatically reflected here

  • Un Inv Amt: Un-Invoiced Amount = Trade Value - Invoice Amount will be automatically reflected here

Logic for PSL/Invoice:

  • any insert or update in PSL or Invoice table, will update inv_amt or payment_amt in phy_trade table

  • sign is important for purchase/sale of contract and credit/debit of payment and invoice (purchase = paid = negative sign; sale = receive = positive sign)

  • FE need to keep un_inv_amt or un_payment_amt updated if any contract is selected before saving.

  • Un payment amt should = contract AMT if payment_amt is empty, as un_payment_amt = contract_amt - payment_amt

  • contract_amt should be contract qty x price, which should be calculated in BE when selected

  • In 5 conditions FE should change the un payment in dropdown list of contract (before save):

    1: Assign contract no to PSL

    2: change the contract no (from A to B )

    3: Delete the contract no

    4: delete row with contract no

    5: change PSL amt with contract no

  • The dropdown list in Contract No. is sorted by the latest contract date(DATE in TRADES tab) at the top of the list

  • When select Contract No., Amount will be auto filled with un_payment_amt calculated by BE in contract dropdown list in PSL when they choose the contract

  • In invoice table and PSL table, inv_amt and psl_amt in Database should be always positive

    • Ledger type is used to control whether the amt should be positive or negative; if split PSL into negative, ledger type will be PAID (negative), RECEIVED (positive).

  • 1、dropdown list, when users choose the “Assigned(已分配) ”,table will show all PSL or invoice with contract no. When users choose “Unassigned(未分配)”, table will show all PSL or invoice without contract no.

    2、default:Unassigned,show all PSL or invoice without contract no

  • Hide MAIN CONTRACT NO. , QTY, PRICE, UNIT, PRICE UNIT, RATIO columns

  • COUNTERPARTY and AMOUNT should not be editable after saving (they can only edit these when split)
    Change chinese translation for Third party: 第三方 to 收/付款

  • Counterparty should not be compulsory

  • When COUNTERPARTY ≠ THIRD PARTY, highlight COUNTERPARTY green

  • When filter Trade tab in new physical trades by product, add new row will appear in the table automatically

...

Group Function - User Access Management

Group-level(ops) personnel are not allowed to modify or delete PSL and invoicing information imported under company-level accounts. They can only assign under the contract number or split(allocate) the records.

Non-creator should only be allowed to edit following columns:

ps ledgers:

CONTRACT NO.

REMARKS

invoice:

INVOICE ID

CONTRACT NO.

logic in FE

  1. this is only apply to update manually in table and user is not creator

    1. if there is psl_id, then only allow to update columns above

    2. if there is no psl_id, it means new insert data, then all columns are allowed to edit

  2. only creator is able to delete rows manually in table (select row and press delete button)

f. Invoice

If this step is not required yet, please proceed to the next step and return to complete this step when necessary.

This section displays the details of your invoice for all physical trades.

...

1. To access this section, click on ‘Trade', following by 'New Physical Trades' from the navigation sidebar on the left. Click on the 'RECEIVE' tab to access the received invoice (contract is buy so need to make payment so will receive invoice from counterparty) page or 'ISSUE’ to access the issue invoice page (.

2. Click on the drop-down list to display RECEIVED/PAID invoices and the corresponding tables will be reflected accordingly.

The Start Date is 1 month before today's date by default. Please feel free to change the Start Date and End Date (can be any date beyond today's date) accordingly. The dates will remain according to your settings until you log out.

To delete a row, tick the checkbox of the row and click on the 'Delete Row' button located above the table. You may also select multiple rows to delete. 

Several functions are available to assist in the selection of data: 

  • Search bar: Search for keywords in the search bar for relevant data to be displayed

  • Table Headers: 'Sort' and 'Filter' data using the functions in the table headers (Please refer to Table Settings for table functionalities).

A pop up message reminder will appear for user to save data when change page, will apply when user switches between assigned and unassigned page as well as to all conditions when users switch to other page in system or refresh the page

Final Calculation Logic:

  1. when we do portfolio P/L calculation, we use phy_trade actual qty (otherwise qty) and actual_price (otherwise ested_price) in phy_pricing table, which means in settlement tables controlled by risk department

  2. for contract_amt, psl, invoice, we use contract_actual_qty (qty) and contract_actual_price (provisional_price) to calculate.

    1. BE in dropdown list in psl, invoice

    2. FE un_inc_amt, un_payment_amt in psl, invoice table

    3. FE contract_amt … in phy_trade table

The right logic should be: for each trade, once they key the price and qty but not yet record PSL or INVOICE for this contract, PSL AMT, INV QTY, INV AMT should be 0 and BAL AMT , UN INV QTY , UN INV AMT should not be null.

Initial BAL AMT, UN INV QTY, UN INV AMT formulas have no change

Steps:

1、When users generate invoices, they first add a new row and select the contract no.

The setting for the contract no should be similar to that for receiving invoices, with a dropdown list displaying the UN INV QTY AND UN INV AMT. Users can manually enter the Counterparty to filter the range of contracts.

2、After selecting the contract no, the system will autofill related columns(MAIN CONTRACT NO, SPECIFICATION, UNIT, COUNTERPARTY, QTY, PRICE), as well as match the corresponding ITEMS (inv_product) in the company data with the product. The system will return a dropdown list for the user to select ITEMS.

3、After selecting the ITEMS, If this ITEM corresponds to only one INVOICE NO, the system will automatically fill in the INVOICE NO and the corresponding tax rate.

4、They need to export the invoicing information, and the template is attached. It should be considered whether to export directly or design a new UI if necessary.

3. RECEIVED INVOICE:

Please select from the Unassigned/Assigned drop-down list to select

  • Unassigned - will show all invoices without Contract No.

  • Assigned - will show all invoices with Contract No

Upload Invoice

You are highly recommended to upload your invoice into the system (the units will be captured automatically 吨— Metric Ton; KG— kilogram), instead of manually inputting the data (click '+ Add Row' button located above the table). Depending on the data in your invoice, once you upload your invoice, the following fields should be filled:

  • Date

  • PSL Type

  • Ledger Type

  • Invoice Prod

  • Unit

  • Qty

  • Amount

  • Total Price & Tax

  • Counterparty

...

the new template delete the TOTAL PRICE & TAX column, now when uploading, system will first upload AMOUNT and TAX AMT, then fill this column ( AMOUNT + TAX AMT)

new aggregate rule:

After uploading the file, system should aggregate all the rows with same “开票日,商品名称(货物或应税劳务名称 in template),规格型号,单位,税率,销方名称, 税收分类编码“ and recalculate the sum of “数量,金额,税额,价税合计(金额+税额)”

You will then be required to input Company and Ccy (Currency) before saving the data. Once saved, the invoice item will remain in the Unassigned table until you are ready to assign the contract number.

Once you are ready to assign contract number to the invoice, you may enter the Unassigned table and select from the Contract No. drop down list to assign the contract number, and the relevant data (Contract No., Main Contract No., Un Inv Amt) will be updated accordingly. Click Save to save the data and the invoice item will be shifted to the Assigned table. The same steps will be repeated until the invoice item is fully assigned and Un Inv Amt will be 0.

  • Un Inv Amt = Contract Amount (viewable in Contract No. dropdown list) - Invoice Amount (Amount)

    • Will be updated immediately in Contract No. drop down list before saving once Invoice Amount (Amount) is input

Manual Input

If you choose to add row to input manually, if you want to select from Contract No. to auto fill details in the row according to the contract’s details in the dropdown list (if data is available), you must fill in Amount first. Contract No. of trades input in New Physical Trade table can be selected to auto fill details in the row according to the contract’s details (Company, Unit, Qty, Un Inv Amt and Counterparty if data is available). Otherwise, you may manually input the compulsory fields highlighted in red.

...

CONTRACT NO 合同编号: Key column linked to “PHYSICAL TRADE STATUS” 现货合同状态 app to monitor payment and invoice record.

  • If Contract No. has not been selected yet aka these fields are empty, they will be auto-filled: Main Contract No., Company, Unit, Qty, Un Inv Amt and Counterparty, if “Contract No.” is selected

  • If Contract No. has been selected previously aka these fields are already filled, only Company, Un Inv Amt, Counterparty will change according to the Contract No. So you will need to adjust the rest of the fields manually

Please refer to below for more information on how to input the fields. Cells highlighted in red in the table are compulsory fields and are thus necessary to input:

  • Invoice ID.: Invoice number, if applicable

  • Date: Date invoice is issued

  • PSL Type: Will be INVOICE by default

  • Ledger Type:Determine if it is a paid or received invoice, it is RECEIVED by default if the invoice dropdown list selected is RECEIVED; amount will always be positive

    • Paid: Amount paid to counterparty

    • Received: Amount received from counterparty

  • Invoice Prod: Name of product listed in invoice

  • Invoice Spec: Specification of product listed in invoice

  • Contract No.: Select from the dropdown list to select the Contract Number, and the corresponding data input in Trades tab will be auto-filled here (Main Contract No., Company, Unit, Qty, Un Inv Amt and Counterparty if data is available). These items will be displayed in the drop down list:

    • Contract No.

    • Main Contract No.

    • Phy Trade ID

    • Company

    • Counterparty

    • Product

    • Qty: Contract Actual Quantity or Quantity input in Trades tab

    • Price: Contract Actual Price in Trades tab

    • Un Inv Amt: Refers to invoice amount that has not been accounted for (not saved in Invoice table), you will be required to input Amount before you select Contract No., otherwise it will be Contract Amt by default once Contract No. is selected. Once you input values in Amount column to account for the invoice amount, the Un Inv Amt will be recalculated

      • Un Inv Amt = Contract Amount (viewable in Contract No. dropdown list) - Invoice Amount (Amount)

    • Contract Amt: Contract Actual Qty * Contract Actual Price

  • Main Contract No.: Main contract number, if applicable

  • Company: Name of company

  • Unit: Unit of product listed in invoice

  • Qty: Quantity of product listed in invoice

  • Amount: Input the amount to account for the invoice. Once you input values in Amount column to account for the invoice amount, the Un Inv Amt will be recalculated. For example, if the uninvoice amount is 1000, if you input 900 in the Amount column, the Un Inv Amt will be 100. This means that the invoice amount of 100 has not been issued yet. You may repeat the same step to make Un Inv Amt 0 which means that the invoice for the trades has been completely settled.

  • Un Inv Amt: Refers to invoice amount that has not been accounted for/settled. Once the invoice amount has been input in Invoice tab, the uninvoiced amount will be recalculated. For example, if the uninvoice amount is 1000, if you input 900 in the Amount column, the Un Inv Amt will be 100. This means that the invoice amount of 100 has not been issued yet. You may repeat the same step to make Un Inv Amt 0 which means that the invoice for the trades has been completely settled.

  • Tax Amt: AMOUNT * TAX RATE change to psl_amt_tax - psl_amt

  • Total Price & Tax: AMOUNT + TAX AMT

  • Ccy: Invoice currency

  • Counterparty: Name of counterparty

Split Function

To split your invoice amount, tick a row and click on Split. You can only split 1 invoice at any one time. The row you have selected will be reflected in the table on the left. 3 split rows on the right are selected by default, you may click on Add Row to add more rows or tick the row and click on Delete Row to delete the rows. If the split amount is negative, the ledger type will be Paid; if the split amount is positive, the ledger type will be Received.

Once you have determined the number of split rows on the right, only Total Price & Tax column must be input in order to save successfully (you may keep the first row empty and input the other rows first, and once other rows are input, the first row will be auto calculated)

You may manually input or change the columns according to your requirements:

  • Invoice No.

  • PSL Type: INVOICE/PAYMENT

  • Contract No. (once selected, corresponding Main Contract No. and Company will be autofilled accordingly)

  • Total Price & Tax: Input this column and Qty and Amount will be auto calculated by proportion and auto-filled. (you may keep the first row empty and input the other rows first, and once other rows are input, the first row will be auto calculated)

Once done, click on Submit at the bottom left corner of the page to save the data.

Image Removed

The row on the left will thus be deleted, and the newly created rows on the right will be displayed in the Invoice table.

You may repeat the same steps to split the invoice amounts.

Recalculate Function

PAID INVOICE

Please select from the Unassigned/Assigned drop-down list to select

  • Unissued - will show all invoices without Contract No.

  • Issued - will show all invoices with Contract No.

Please refer to below for more information on how to input the fields. Cells highlighted in red in the table are compulsory fields and are thus necessary to input:

  • Invoice ID.: Invoice number, if applicable

  • Date: Date invoice is issued

  • Contract No.: Select from the dropdown list to select the Contract Number, and the corresponding data input in Trades tab will be auto-filled here (Main Contract No., Company, Unit, Qty, Un Inv Amt and Counterparty if data is available). When choose contract no, if there is only one 开票品名 and one 税收分类编码, tax rate should also auto fill, also check if the 税收分类编码 is right

    • Contract No.

    • Main Contract No.

    • Phy Trade ID

    • Company

    • Counterparty

    • Product

    • Qty: Contract Actual Quantity or Quantity input in Trades tab

    • Price: Contract Actual Price in Trades tab

    • Un Inv Amt: Refers to invoice amount that has not been accounted for (not saved in Invoice table), will be Contract Amt by default once Contract No. is selected. Once you input values in Amount column to account for the invoice amount, the Un Inv Amt will be recalculated

    • Contract Amt: Contract Actual Qty * Contract Actual Price

  • Main Contract No.: Main contract number, if applicable

  • Product: Name of product

  • Specification: Specification of product (not compulsory)

  • Company: Name of company

  • Unit: Unit of product listed in invoice (if invoice is chinese, system can capture unit like kilogram 千克 and metric ton 吨

  • Items:

  • Counterparty: Name of counterparty

  • Qty: Quantity of product listed in invoice; Priority:CONTRACT ACTUAL QTY > QTY

  • Price: Price listed in invoice; Priority:CONTRACT ACTUAL PRICE > PROVISIONAL PRICE

  • Amt: QTY * PRICE

  • Amt before Tax: AMT - AMT BEFORE TAX

  • Tax Amt:

  • Currency: Auto fill by CONTRACT CCY (when user chooses Contract No.)

  • Remarks

  • Invoice No.

  • If Tax Incentive: if inv_tax_rate = 0 : 1; else : 0

  • Tax Incentive Content: if inv_tax_rate = 0 : zero tax (免税); else : null

  • Zero Tax Indicator: if inv_tax_rate = 0 : 1; else : null

  • Invoice Type: if inv_tax_rate = 0 : General(普票); else : Special(专票)

  • Tax Rate: Invoice tax rate

Logic:

  • In 5 conditions FE should change the un payment in dropdown list of contract (before save):

1: Assign contract no to PSL

2: Change the contract no (from A to B)

3: Delete the contract no

4: Delete row with contract no

5: Change psl amt with contract no

  • 1、UN INV AMT (未开票金额) - invoice

    2、未收/付款 - PSL

    • un_inv = CONTRACT AMT - inv_amt

      un_payment = CONTRACT AMT - payment_amt

  • in invoice table and psl table, inv_amt and psl_amt in Database should be always positive.

  • we use ledger type to control the amt should be positive or negative.

  • if split in psl into negative, I suggest we update ledger type to PAID (negative), RECEIVED (positive).

  • When users choose the “Assigned(已分配)” in drop down list,table will show all PSL or invoice with contract no.; when users choose “Unassigned(未分配)”, table will show all PSL or invoice without contract no.

...

Group Function - User Access Management

Group-level(ops) personnel are not allowed to modify or delete PSL and invoicing information imported under company-level accounts. They can only assign under the contract number or split(allocate) the records.

Non-creator should only be allowed to edit following columns:

ps ledgers:

CONTRACT NO.

REMARKS

invoice:

INVOICE ID

CONTRACT NO.

logic in FE

  1. this is only apply to update manually in table and user is not creator

    1. if there is psl_id, then only allow to update columns above

    2. if there is no psl_id, it means new insert data, then all columns are allowed to edit

  2. only creator is able to delete rows manually in table (select row and press delete button)

g. Deals

This section displays the details of your deals and associated trades to allow you to monitor your outstanding and completed deals efficiently.

Once a trade has been created, it will automatically generate a deal in the 'DEALS' tab.

To access this section, click on 'Trade', following by 'New Physical Trades' from the navigation sidebar on the left. Click on the 'DEALS' tab at the top of the page to access this section.

...

You will be able to view the outstanding quantity ('Outstanding Qty') of your cargo and the associated profit and loss ('Realised P/L', 'Unrealised P/L' and 'Total P/L') to allow you to make informed decisions accordingly. You may refer to the 'Physical Trades Table' at the bottom of the page as reference.

Several functions are available to assist in the selection of data: 

  • Search bar: Search for keywords in the search bar for relevant data to be displayed

  • Table Headers: 'Sort' and 'Filter' data using the functions in the table headers (Please refer to Table Settings for table functionalities).

Open/Closed Deals: Contract Quantity will be used to determine if the trades have been closed (purchase and sale transactions close each other off), and if closed, the 'Outstanding Qty' in "DEALS" tab will be displayed as "0".

Calculations: Actual Quantity (input in trade execution page) will be used for the calculations in the table, but if Actual Quantity is not input yet, the Contract Quantity will be used instead.

OPEN column: TRUE/FALSE

TRUE: Deal is not closed yet, still have open positions.

FALSE: Deal is closed with no open positions.

To determine if the position is still open, you can go to portfolio page to see if there are any trades in the OPEN POSITIONS table.

If Outstanding Qty is 0.0 but OPEN column is TRUE, it means that the buy and sell trades are already closed, but still have open positions as title transfer date, actual price and actual quantity of the trade are not filled yet. Negative value = Sales quantity, positive value = Purchase quantity

If Outstanding Qty is 0, it should not be highlighted in red. Only <0 or >0 will be highlighted in red.

Update MTM Pricing Directly

You will be able to update your MTM pricing here or edit directly in the physical trade page. You will be required to pre-fill your pricing code in the Physical Pricing Setting tab (select POTENTIAL under TRADE TYPE). Once done, you can select the pricing code under "MTM Pricing Code" for each deal number. Tick the row and click on "MTM Update" at the top right corner of the table.

The MTM pricing index for your deal will be updated accordingly.

Note: 

  • MTM Update of premium for existing trade’s premium will only work if pricing mode of existing premium is FIXED. Otherwise, error message will appear.

  • Tax rate in pricing code in Physical Premium Setting fixed - tax rate will auto appear in the corresponding physical trade.

  • If the existing trade’s trade mode is “Offshore”, using a pricing code with tax rate for MTM update will not be allowed.

  • If unit of pricing code in Physical Pricing Setting is different from the physical trade’s unit, error message will appear.

  • If pricing code in Physical Pricing Setting table is deleted, the existing pricing index details will remain in the physical trade page.

  • Can use MTM Update for original trade with different pricing currency (eg original is USD; MTM Update product can be CNY)

  • Cannot use MTM update for original trade with different units (eg original is Metric Ton, MTM Update product cannot be Barrels)

For Paper/Physical Trade - If product is used in paper/physical trade, cannot delete the product in Product Data table. Will have to remove the product from the paper/physical trade before deleting

...

Check Outstanding Quantity

  1. Click on the 'DEALS' tab at the top left corner of the page to view the details of your deal trades.

For example, in this case, 4,500 units ('OUTSTANDING QTY') have been purchased ("PURCHASE") and are outstanding as they have yet to be sold.

...

2. To close the trade, follow Step 9 & 10. In this case, the 'Purchase/Sale' field will be "SALE" and 'Quantity' will be "2,000" to reflect the sale position of the trade. Follow through the steps and click 'Submit' to save your trade.

...

3. Click on the 'DEALS' tab at the top left corner of the page to view the details of your deal trades.

Following the same example in Step 1 & 2, 2,000 units have been closed/sold and the 'OUTSTANDING QTY' will reflect the remaining outstanding quantity (4,500 purchased quantity - 2,000 sold quantity).

...

4. Follow through the same steps until all quantity are purchased/sold to close the term contract and 

'OUTSTANDING QTY' will become "0".

Please refer to List of Definitions: Trades for the definitions of the fields.

h. Physical Pricing Setting

This section allows you to set up your physical trade pricing index (Benchmark & MTM - pricing mode = Float/Ave, WMA & Spot) here, which will be required if you want to do bulk trade upload for your physical trades. The pricing index allows you to use a product and benchmark its price against the purchase or sale pricing of the contract so as to better calculate the positions and P/L before the contract is complete (have actual price and quantity). You will thus be able to decide which contract (without actual price yet) should be matched to which particular product's pricing in order to price the contract and calculate the P/L more accurately. If your contract has fixed or actual price, there is no need to create a pricing index, you may just input the fixed price accordingly.

Every physical trade contract will have its own Benchmark and MTM (Potential) pricing index.

Benchmark pricing: Used to price your purchase or sale contract, if fixed price is not available yet. You may input the actual price once you receive it.

Potential pricing: Used to price/mark-to-market the corresponding contract (sale or purchase), if fixed price is not available yet. This allows you to have an idea of the calculations of the positions and P/L before the contract is complete.

Every trade with the same deal number will have the same Potential Pricing index.

So the system will be able to handle the following cases for the Benchmark and MTM (Potential) pricing index:

a. Floating price is available only (no fixed or actual price yet): If your contract has no fixed or actual price, you can record the floating price by choosing pricing mode “Float/Average”, “Whole Month Average(WMA) or ”Spot“. Once you receive the actual or fixed price, you may input for your trade, more details to be provided below. For instance, for a contract (import/export), if you only have floating price, you can use LME product for Benchmark pricing and SHFE product for MTM, which will result in a difference in P/L. Once you input the actual price and actually quantity, the positions and P/L of the contract will be calculated more accurately.

b. Fixed price is available: If your contract has fixed or actual price, you may input the price into the "Fixed Price" column in the bulk trade upload file, more details to be provided below.

In summary, all paper and physical trades pricing logic is as follows:

To determine which Pricing Mode to use, you may double click on the MAF Product ID/Product field to determine the "Product Type" (forward/futures/spot/forex):

  1. If Product Type is FORWARD, please select FLOAT/AVE and input the Pricing Start and Pricing End Date only. For instance, LME 3M contract is specific to a certain date. Some examples include LEAD 3M, ZINC 3M etc.

  2. If Product Type is Futures, please select WMA and input the Month and Year only. Some examples include LEAD, ZINC etc.

  3. If Product Type is Forex or Spot, please select Spot and you do not need to input month, year or date. Some examples include LEAD 3M Rolling, ZINC CASH etc.

Please click on Add Row to add a new row and input the details accordingly. Once this setting is configured, you will be able to input the Pricing Code in the Benchmark Pricing and MTM Pricing columns in the Bulk Trade Upload file. Once upload, your contracts' pricing will be matched directly to the product you have matched them with. Cells in red are compulsory fields.

...

To access this section, click on 'Trade', following by 'Physical Trades' from the navigation sidebar on the left. Click on the 'PHYSICAL PRICING SETTING' tab at the top of the page to access this section.

To add a new pricing index, click on 'Add Row' and fill in all the details as necessary (cells in red are compulsory fields.)

Pricing Code: Unique name to identify the pricing index, you may come up with the names as you wish

MAF Product ID: Product to use as a pricing index, these products are obtained from various Exchanges sources and have been added into the system for your usage

Pricing Mode: Types of pricing mode, namely; Float/Ave, WMA and Spot

To determine which Pricing Mode to use, you may double click on the MAF Product ID cell and look at the "Product Type" (forward/futures/spot/forex):

a. If Product Type is Forward, please select FLOAT/AVE and input the Pricing Start and Pricing End Date

...

b. If Product Type is Futures, please select WMA and input the Month and Year

Image Removed

c. If Product Type is Forex or Spot, please select Spot 

Image Removed

Trade Type: Financial instrument(s) used as an index to benchmark the pricing of your trades (Benchmark or Potential (MTM)

Premium: Premium to your benchmark index/MTM

Pricing Start: Start date of pricing, applicable for forward products

Pricing End: End date of pricing, applicable for forward products

Month: Contract month of pricing, applicable for futures products

Year: Contract year of pricing, applicable for futures products

Tax Rate: Tax rate applicable to the pricing of the index

Once done, please click 'Save' and the Pricing Code will be available for you to input in the 'Benchmark Pricing' or 'MTM Pricing' fields in the bulk trade upload

Please note that this section is equivalent to the pricing index setting as shown in the screenshot when manually creating your physical trade.

Image Removed

3. Create/Manage Quantitative Models & Reports

Dashboard - Individual

...

You must first input paper trades and physical trades data to generate the following figures:

1. Positions and P/L data: Positions and P/L data (including any commission, expense and income and other costs, etc.) are calculated after paper trades and physical trades data are input.

  • Input data such as positions, price and commission etc in Paper Trades and Physical Trades

  • Input data such as expense and income items and other costs etc in General Ledger . When selecting Type in the table, please choose EXP/INC and input:

    • Expense/Costs: Negative value eg -100

    • Income: Positive value eg 100

Please assign the trade/item to tag them to the corresponding portfolio before saving the data. The system will then automatically calculate the positions and P/L according to your data and display in the model/report accordingly.

 

2. Initial Fund, Fund In/Out data: If necessary, you may input as follows:

  • Paper Trades: Please upload or manually enter data in Portfolio>General Ledger>FCM Statement

    • Please select FCM under FCM TYPE column, and then enter data such as margin, total equity, collateral etc.

  • Physical Trades: Please upload or manually enter data in Portfolio>General Ledger

    • Initial Fund: In General Ledger page, please select INIT FUND under TYPE column and enter the data accordingly

    • Fund In/Fund Out: In General Ledger page, please select FUND IN/OUT under TYPE column and enter the data accordingly

Please assign the trade/item to tag them to the corresponding portfolio before saving the data. The system will then automatically calculate the positions and P/L according to your data and display in the model/report accordingly.

 

a. After allocating paper trades (and physical trades) into the portfolio, you may create quantitative models and reports to determine the performance of your portfolios/trades. Please click on Dashboard>Individual from the navigation sidebar on the left to access the Dashboard page.

...

 

b. Various quantitative models/reports can be created and displayed in the dashboard. If you need to customise any models/reports, please notify us at support@mafint.com. You can select a model/report in the drop-down list and click 'Create' to create a new model/report.

The model/report you have just created will be displayed as empty at the beginning, which requires you to set up the details by clicking on the Settings (gear icon) button at the top right corner of the app.

...

 

...

 

c. Most Dashboard Models/Reports have similar steps. You may choose to select individual or multiple portfolios to be calculated and displayed. Please confirm other details in the Settings page before clicking Submit to proceed. You may edit the details anytime as necessary.

You may filter, arrange and categorise the rows, columns and groups according to your preferences, and may also enlarge the window accordingly.

...

Public/Proprietary:

PUB (PUBLIC) MARKET PRICE: If selected, the system will use the public market/settlement price obtained from various Exchange sources to perform calculations

PTY (PRIVATE/PROPRIETARY) MARKET PRICE: If selected, the system will use the proprietary market/settlement price that you have input/uploaded in Proprietary Market Data

 

Auto-Update:

Tick: Resets the dates to default once you leave the ‘Dashboard’ page.

Untick: Dates according to your settings remain unchanged once you leave the ‘Dashboard’ page.

 Historical GPPL (related to Historical Group P/L app):

The Historical check box in Settings page is used to determine if you want the Compare Date to use Existing Calculated Data or Historical Saved Data for P/L comparison. This means that if you have saved the historical data for the specific End Date, you may:

  • tick the Historical check box to compare End Date data against Compare Date (use historical saved data) - Compare with historical Group P/L data - Historical Group P/L data will be stored in database on a daily basis and once stored, it will not be updated. (MAF will only update for yesterday data so once user reload the Group P/L app, MAF will insert or update data if the end date is yesterday).

  • untick the Historical check box to compare End Date data against Compare Date (use existing calculated data) - Compare with Group P/L from open position calculation - Daily change of open position result will always use the latest position data to do calculations

  • If historical data is not available (no data is saved for the specific End Date), the respective CHG will remain as empty or 0 or the app will display a message (NO VALID OPEN POSITIONS).

 

For more information, please refer to Guide to Dashboard.

Physical Trades App/Reports Lists

 

Physical Trade Inventory App/Reports Lists

...