Project

General

Profile

Actions

Task #18325

closed

Task #18453: Ocean Sprint Planning for 01/07/2025 - 11/07/2025

Invoicing in Foreign Currency

Added by Redmine Admin 6 months ago. Updated about 3 hours ago.

Status:
Closed
Priority:
High
Assignee:
-
Start date:
06/12/2025
Due date:
07/11/2025
% Done:

100%

Estimated time:
64:00 h
Spent time:
GitLab ID:
2776
GitLab Milestone:
GitLab Ticket Number:
645
GitLab Time Logged:
212400
Lock Timeline Date:
No
gitlab project trace:
Ocean Sprint Planning for 01/07/2025 - 11/07/2025

Description

Acceptance Criteria:

Trigger on Save Invoice:

  • When the user clicks the "Save" button on any invoice type screen (Draft, Proforma, or Standard), a modal dialog (popup) MUST appear.

Popup Fields:

  1. Currency Selection Dropdown:
    • Data Source: Populated with values from the "Additional Currencies for Invoices" configuration list.
    • Behavior: This field MUST be mandatory. The invoice currency defaults to the default currency currency if not changed by the user.
  2. Bank Account Dropdown:
    • Default Selection Logic:
      • Upon selection of a currency from the "Currency Selection Dropdown," the system MUST attempt to auto-select a default bank account if one is explicitly configured and linked to the selected currency.
    • User Override: The user MUST be able to override the auto-selected default bank account by choosing another available bank from the dropdown.
    • No Linked Bank Scenario:
      • If no bank account is explicitly linked to the selected currency in the system, the dropdown should display all available bank accounts.
      • The system should prompt the user with a warning message: "No specific bank account found for this currency. Please select an appropriate bank account."
  3. Exchange Rate (FC Rate) Field:
    • Default Rate Population Logic:
      • Scenario 1: Charges in selected foreign currency exist (e.g., USD charges on HBL/MBL/Clearing, invoicing in USD).
        • The field MUST auto-populate with the specific saved exchange rate from the relevant MBL/HBL/Clearing charges that are in the selected foreign currency.
        • Example 1:* If HBL001 has 2 USD charges and 1 MUR charge, and the user selects USD for the invoice, the system MUST retrieve and display the pre-existing exchange rate from the USD charges on HBL001.
      • Scenario 2: No charges exist in the selected foreign currency (e.g., all charges in MUR, invoicing in USD).
        • The field MUST auto-populate with the system's current default exchange rate for the selected foreign currency.
        • Example 2:* If HBL001 has 3 MUR charges, and the user selects USD for the invoice, the system MUST retrieve and display the most current exchange rate between MUR and USD from the system's global exchange rate configuration.
      • Scenario 3: Invoice generated in Default System Currency (MUR).
        • The FC Rate field MUST display "1" (and be read-only/non-editable).
    • User Editability: The user MUST be able to manually edit the populated exchange rate in the FC Rate field, unless the invoice is in the default currency.
    • Impact on Charges: All invoice charges, regardless of their original currency, MUST be recalculated and displayed based on the final exchange rate entered or selected in this field.

Validation Rules (during popup interaction and on final save):

  • Currency Not Selected: If the "Currency Selection Dropdown" is empty or not selected, a mandatory validation error message MUST be displayed, preventing further action until a currency is chosen.
  • Bank Account Not Available/Selected: If the "Bank Account Dropdown" is empty or not selected (and the system didn't auto-select one or the user hasn't chosen), a mandatory validation error message MUST be displayed, preventing further action until a bank account is chosen.
  • Exchange Rate Empty/Invalid: If the "Exchange Rate (FC Rate) Field" is empty (and not auto-populated) or contains an invalid value, a mandatory validation error message MUST be displayed, prompting the user to enter a valid rate.

Invoice PDF Output: The final generated PDF invoice MUST clearly and prominently display:

  • The selected Foreign Currency (e.g., "USD").
  • The applicable FC Rate used for calculation.
  • The Bank Details corresponding to the chosen bank account (Account Name, Account Number, SWIFT/BIC, Bank Name, Bank Address).

Audit Trail:

  • The system MUST capture and store the following details as part of the finalized invoice record for auditing and reporting purposes:
    • Selected Foreign Currency
    • Selected Bank Account ID/Name
    • Applicable FC Rate used for calculations

GitLab Sync Log

[{"id": "25097", "author": "Nihaal Ramfoll", "hours": 40.0, "created": "2025-06-16T11:03:35.577Z", "log_date": "2025-06-16", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-06-16T11:03:35.577Z: 1w-(40.0)h spend at: 2025-06-16", "status": "deleted", "deleted_by": "25098", "redmine_entry_id": 9647}, {"id": "25235", "author": "Nihaal Ramfoll", "hours": 2.0, "created": "2025-06-18T10:18:46.761Z", "log_date": "2025-06-16", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-06-18T10:18:46.761Z: 2h-(2.0)h spend at: 2025-06-16", "status": "active", "deleted_by": "", "redmine_entry_id": 9679}, {"id": "25764", "author": "Nihaal Ramfoll", "hours": 5.0, "created": "2025-06-25T10:13:12.756Z", "log_date": "2025-06-22", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-06-25T10:13:12.756Z: 5h-(5.0)h spend at: 2025-06-22", "status": "active", "deleted_by": "", "redmine_entry_id": 9754}, {"id": "25763", "author": "Nihaal Ramfoll", "hours": 5.0, "created": "2025-06-25T10:13:01.876Z", "log_date": "2025-06-25", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-06-25T10:13:01.876Z: 5h-(5.0)h spend at: 2025-06-25", "status": "active", "deleted_by": "", "redmine_entry_id": 9755}, {"id": "26000", "author": "Nihaal Ramfoll", "hours": 4.0, "created": "2025-07-01T06:24:42.083Z", "log_date": "2025-06-23", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-01T06:24:42.083Z: 4h-(4.0)h spend at: 2025-06-23", "status": "active", "deleted_by": "", "redmine_entry_id": 9817}, {"id": "26331", "author": "Nihaal Ramfoll", "hours": 3.0, "created": "2025-07-04T11:01:18.457Z", "log_date": "2025-06-29", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-04T11:01:18.457Z: 3h-(3.0)h spend at: 2025-06-29", "status": "active", "deleted_by": "", "redmine_entry_id": 9863}, {"id": "26329", "author": "Nihaal Ramfoll", "hours": 3.0, "created": "2025-07-04T11:01:10.041Z", "log_date": "2025-07-02", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-04T11:01:10.041Z: 3h-(3.0)h spend at: 2025-07-02", "status": "active", "deleted_by": "", "redmine_entry_id": 9864}, {"id": "26466", "author": "Nihaal Ramfoll", "hours": 5.0, "created": "2025-07-08T10:49:16.206Z", "log_date": "2025-07-08", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-08T10:49:16.206Z: 5h-(5.0)h spend at: 2025-07-08", "status": "deleted", "deleted_by": "26465", "redmine_entry_id": 9889}, {"id": "26464", "author": "Nihaal Ramfoll", "hours": 5.0, "created": "2025-07-08T10:48:51.086Z", "log_date": "2025-07-08", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-08T10:48:51.086Z: 5h-(5.0)h spend at: 2025-07-08", "status": "active", "deleted_by": "", "redmine_entry_id": 9890}, {"id": "26463", "author": "Nihaal Ramfoll", "hours": 5.0, "created": "2025-07-08T10:48:13.769Z", "log_date": "2025-07-01", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-08T10:48:13.769Z: 5h-(5.0)h spend at: 2025-07-01", "status": "active", "deleted_by": "", "redmine_entry_id": 9891}, {"id": "26462", "author": "Nihaal Ramfoll", "hours": 4.0, "created": "2025-07-08T10:47:48.678Z", "log_date": "2025-07-03", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-08T10:47:48.678Z: 4h-(4.0)h spend at: 2025-07-03", "status": "active", "deleted_by": "", "redmine_entry_id": 9892}, {"id": "26457", "author": "Nihaal Ramfoll", "hours": 5.0, "created": "2025-07-08T10:44:36.998Z", "log_date": "2025-07-06", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-08T10:44:36.998Z: 5h-(5.0)h spend at: 2025-07-06", "status": "active", "deleted_by": "", "redmine_entry_id": 9893}, {"id": "26562", "author": "Nihaal Ramfoll", "hours": 5.0, "created": "2025-07-11T05:30:52.376Z", "log_date": "2025-07-09", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-11T05:30:52.376Z: 5h-(5.0)h spend at: 2025-07-09", "status": "active", "deleted_by": "", "redmine_entry_id": 9916}, {"id": "26561", "author": "Nihaal Ramfoll", "hours": 5.0, "created": "2025-07-11T05:30:44.008Z", "log_date": "2025-07-08", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-11T05:30:44.008Z: 5h-(5.0)h spend at: 2025-07-08", "status": "active", "deleted_by": "", "redmine_entry_id": 9917}, {"id": "26683", "author": "Nihaal Ramfoll", "hours": 4.0, "created": "2025-07-14T11:35:35.980Z", "log_date": "2025-07-10", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-14T11:35:35.980Z: 4h-(4.0)h spend at: 2025-07-10", "status": "active", "deleted_by": "", "redmine_entry_id": 9932}, {"id": "27163", "author": "Nihaal Ramfoll", "hours": 3.0, "created": "2025-07-24T10:41:50.292Z", "log_date": "2025-07-21", "comment": "Imported from GitLab by @Nihaal Ramfoll on 2025-07-24T10:41:50.292Z: 3h-(3.0)h spend at: 2025-07-21", "status": "active", "deleted_by": "", "redmine_entry_id": 9987}, {"id": "27731", "author": "Yashvee Seetul", "hours": 1.0, "created": "2025-08-05T09:47:14.977Z", "log_date": "2025-08-04", "comment": "Imported from GitLab by @Yashvee Seetul on 2025-08-05T09:47:14.977Z: 1h-(1.0)h spend at: 2025-08-04", "status": "active", "deleted_by": "", "redmine_entry_id": 10053}]

Actions #1

Updated by Redmine Admin 6 months ago

  • GitLab Sync Log updated (diff)
Actions #2

Updated by Redmine Admin 6 months ago

  • Description updated (diff)
Actions #3

Updated by Redmine Admin 6 months ago

  • Due date changed from 06/12/2025 to 06/27/2025
  • Estimated time changed from 0:00 h to 40:00 h
  • Parent task changed from #18123 to #18351
  • gitlab project trace changed from Ocean Sprint Planning for 04/06/2025 - 13/06/2025 to Ocean Sprint Planning for 16/06/2025 - 27/06/2025
Actions #4

Updated by Redmine Admin 6 months ago

  • GitLab Sync Log updated (diff)
Actions #5

Updated by Redmine Admin 6 months ago

  • % Done changed from 0 to 5
  • GitLab Time Logged changed from 0 to 7200
Actions #6

Updated by Redmine Admin 6 months ago

  • GitLab Sync Log updated (diff)
Actions #7

Updated by Redmine Admin 6 months ago

  • % Done changed from 5 to 30
  • GitLab Time Logged changed from 7200 to 43200
Actions #8

Updated by Redmine Admin 6 months ago

  • GitLab Sync Log updated (diff)
Actions #9

Updated by Redmine Admin 5 months ago

  • Parent task changed from #18351 to #18451
  • gitlab project trace changed from Ocean Sprint Planning for 16/06/2025 - 27/06/2025 to Ocean Sprint Planning for 16/06/2025 - 30/06/2025
Actions #10

Updated by Redmine Admin 5 months ago

  • Due date changed from 06/27/2025 to 07/11/2025
  • % Done changed from 30 to 40
  • Parent task changed from #18451 to #18453
  • GitLab Time Logged changed from 43200 to 57600
  • gitlab project trace changed from Ocean Sprint Planning for 16/06/2025 - 30/06/2025 to Ocean Sprint Planning for 01/07/2025 - 11/07/2025
Actions #11

Updated by Redmine Admin 5 months ago

  • GitLab Sync Log updated (diff)
Actions #12

Updated by Redmine Admin 5 months ago

  • % Done changed from 40 to 55
  • GitLab Time Logged changed from 57600 to 79200
Actions #13

Updated by Redmine Admin 5 months ago

  • GitLab Sync Log updated (diff)
Actions #14

Updated by Redmine Admin 5 months ago

  • % Done changed from 55 to 64
  • Estimated time changed from 40:00 h to 64:00 h
  • GitLab Time Logged changed from 79200 to 147600
Actions #15

Updated by Redmine Admin 5 months ago

  • GitLab Sync Log updated (diff)
Actions #16

Updated by Redmine Admin 5 months ago

  • Status changed from New to Development Done
  • % Done changed from 64 to 79
  • GitLab Time Logged changed from 147600 to 183600
Actions #17

Updated by Redmine Admin 5 months ago

  • GitLab Sync Log updated (diff)
Actions #18

Updated by Redmine Admin 5 months ago

  • % Done changed from 79 to 85
  • GitLab Time Logged changed from 183600 to 198000
Actions #19

Updated by Redmine Admin 5 months ago

  • GitLab Sync Log updated (diff)
Actions #20

Updated by Redmine Admin 5 months ago

  • Status changed from Development Done to New
Actions #21

Updated by Redmine Admin 5 months ago

  • % Done changed from 85 to 90
  • GitLab Time Logged changed from 198000 to 208800
Actions #22

Updated by Redmine Admin 5 months ago

  • GitLab Sync Log updated (diff)
Actions #23

Updated by Redmine Admin 4 months ago

  • Status changed from New to Closed
  • % Done changed from 90 to 100
  • GitLab Time Logged changed from 208800 to 212400
Actions #24

Updated by Redmine Admin 4 months ago

  • GitLab Sync Log updated (diff)
Actions

Also available in: Atom PDF