FormsRefresh

CareWell clinic / billing-unsaved

billing-unsaved

Leave an invoice with an unsaved payment. Moving to another invoice fires ON-CLEAR-DETAILS: CLEAR_ALL_MASTER_DETAILS finds the changed PAYMENTS block below the master and clears it with ASK_COMMIT; Forms asks whether to save, answered No, and the next invoice's details are queried.

0defects
293values match
92tolerated by policy
8waived
0unmapped

Three runs from a fresh database gave byte-identical diffs. Behaviour that looks odd in the migrated app but is the original's: faithful to the original and waivers. Files: scenario, golden record, target record, diff (JSON).

Scenario steps

Items are addressed by their Forms name (BLOCK.ITEM[row]), the same name in the original and, through the mapping, in the migrated app.

#StepActionChecked on the original
0Open form cw_login
1Type CTL.USERNAME = ADMIN
2sign inClick CTL.SIGN_IN
3invoicesClick HOME.INVOICES
4open invoiceClick INVOICES.INVOICE_ID[1]
5Type PAYMENTS.AMOUNT[0] = 10
6other invoiceClick INVOICES.INVOICE_ID[2]
7do not saveAnswer the alert No

Screens, step by step

Left: the original Oracle Forms application, recorded on a virtual display. Right: the migrated application in headless Chromium. Screenshots are evidence only; the comparison works on the recorded values.

No step screenshots of the original were kept for this app; the comparison uses the recorded values, which are in the golden record below.

Step 0: open cw_login

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 00-open
Migrated (.NET, PostgreSQL)

Step 1: type

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 01-type
Migrated (.NET, PostgreSQL)

Step 2: sign in

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 02-sign-in
Migrated (.NET, PostgreSQL)

Step 3: invoices

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 03-invoices
Migrated (.NET, PostgreSQL)

Step 4: open invoice

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 04-open-invoice
Migrated (.NET, PostgreSQL)

Step 5: type

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 05-type
Migrated (.NET, PostgreSQL)

Step 6: other invoice

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 06-other-invoice
Migrated (.NET, PostgreSQL)

Step 7: do not save

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 07-do-not-save
Migrated (.NET, PostgreSQL)

Golden record of the original

After each step: the focus, the displayed values that changed, the message line and any alert. The full record (every item of every step, windows, lists of values) is in the JSON file.

#StepAction (by name)Focus afterDisplayed values that changedMessage lineAlertExpect
0Open form cw_loginCTL.USERNAME[0]
1Type CTL.USERNAME = ADMINCTL.USERNAME[0]CTL.USERNAME[0] = ADMIN
2sign inClick CTL.SIGN_INHOME.SCHEDULE[0]HOME.CHECKED_IN[0] = <any>
HOME.OPEN_AMOUNT[0] = 15,015
HOME.OPEN_INVOICES[0] = 180
HOME.TODAY_TOTAL[0] = <any>
HOME.WELCOME[0] = Welcome, Clinic Administrator
3invoicesClick HOME.INVOICESINVOICES.INVOICE_ID[0]CTL.SHOWING[0] = Invoices to be paid
INVOICES.INVOICE_DATE[0] = 24-SEP-2026
INVOICES.INVOICE_DATE[1] = 23-SEP-2026
INVOICES.INVOICE_DATE[2] = 18-SEP-2026
INVOICES.INVOICE_DATE[3] = 17-SEP-2026
INVOICES.INVOICE_DATE[4] = 17-SEP-2026
INVOICES.INVOICE_ID[0] = 3852
INVOICES.INVOICE_ID[1] = 3850
INVOICES.INVOICE_ID[2] = 3835
INVOICES.INVOICE_ID[3] = 3832
INVOICES.INVOICE_ID[4] = 3831
INVOICES.PAID[0] = 42.50
INVOICES.PAID[1] = 0.00
INVOICES.PAID[2] = 40.00
INVOICES.PAID[3] = 0.00
INVOICES.PAID[4] = 0.00
INVOICES.PATIENT_NAME[0] = Yusuf Banerjee
INVOICES.PATIENT_NAME[1] = Maya DSouza
INVOICES.PATIENT_NAME[2] = Omar Patel
INVOICES.PATIENT_NAME[3] = Aisha Mathew
INVOICES.PATIENT_NAME[4] = Fatima Verma
INVOICES.STATUS[0] = PARTIAL
INVOICES.STATUS[1] = OPEN
INVOICES.STATUS[2] = PARTIAL
INVOICES.STATUS[3] = OPEN
INVOICES.STATUS[4] = OPEN
INVOICES.TOTAL_AMOUNT[0] = 85.00
INVOICES.TOTAL_AMOUNT[1] = 75.00
INVOICES.TOTAL_AMOUNT[2] = 80.00
INVOICES.TOTAL_AMOUNT[3] = 70.00
INVOICES.TOTAL_AMOUNT[4] = 80.00
INVOICE_LINES.DESCRIPTION[0] = Consultation - Dr. Maya Wilson
INVOICE_LINES.LINE_NO[0] = 1
INVOICE_LINES.QUANTITY[0] = 1
INVOICE_LINES.UNIT_PRICE[0] = 85.00
PAYMENTS.AMOUNT[0] = 42.50
PAYMENTS.METHOD[0] = Cash
PAYMENTS.PAID_ON[0] = 24-SEP-2026
4open invoiceClick INVOICES.INVOICE_ID[1]INVOICES.INVOICE_ID[1]INVOICE_LINES.DESCRIPTION[0] = Consultation - Dr. Isha Saxena
INVOICE_LINES.DESCRIPTION[1] = Injection charge
INVOICE_LINES.LINE_NO[1] = 2
INVOICE_LINES.QUANTITY[1] = 1
INVOICE_LINES.UNIT_PRICE[0] = 45.00
INVOICE_LINES.UNIT_PRICE[1] = 30.00
PAYMENTS.PAID_ON[0] = <date>
5Type PAYMENTS.AMOUNT[0] = 10PAYMENTS.AMOUNT[0]PAYMENTS.AMOUNT[0] = 10
6other invoiceClick INVOICES.INVOICE_ID[2]FWindow/PushButton:YesPAYMENTS.AMOUNT[0] = 10.00Press Tab to move between choices, Return to select.Do you want to save the changes you have made?
7do not saveAnswer the alert NoINVOICES.INVOICE_ID[2]INVOICE_LINES.DESCRIPTION[0] = Consultation - Dr. Arjun DSouza
INVOICE_LINES.UNIT_PRICE[0] = 80.00
PAYMENTS.AMOUNT[0] = 40.00
PAYMENTS.METHOD[0] = UPI
PAYMENTS.PAID_ON[0] = 19-SEP-2026

Database effects

None: the scenario changes no row and draws no sequence value.

Classified diff against the migrated app

Diff: billing-unsaved
counts: match 293, tolerated 92, waived 8, defect 0, unmapped 0, harness 0
generated-id pairs (source -> target): none

waivers:
  C1 [proposed] Oracle's frame title before sign-in: applied to 2 value(s)
  C2 [proposed] The home page's collected-today gauge reads empty: applied to 6 value(s)
  C3 [proposed] Help > About names nobody: applied to 0 value(s)
  C4 [proposed] The home page forgets the user after File > Exit of a module: applied to 0 value(s)
  C5 [proposed] No item has the focus after a fetched record is refused: applied to 0 value(s)
  C6 [proposed] The second payment of billing-pay is lost: applied to 0 value(s)

[tolerated] ui.values.HOME.CHECKED_IN  rule=mask:today-counts  x6
[tolerated] ui.values.HOME.OPEN_AMOUNT  rule=text  x6
[tolerated] ui.values.HOME.TODAY_TOTAL  rule=mask:today-counts  x6
[tolerated] ui.values.INVOICES.PAID  rule=text  x25
[tolerated] ui.values.INVOICES.TOTAL_AMOUNT  rule=text  x25
[tolerated] ui.values.INVOICE_LINES.UNIT_PRICE  rule=text  x8
[tolerated] ui.values.PAYMENTS.AMOUNT  rule=text  x3
[tolerated] ui.values.PAYMENTS.METHOD  rule=text  x10
[tolerated] ui.values.PAYMENTS.PAID_ON  rule=mask:payment-date  x3
[waived] ui.values.HOME.COLLECTED  rule=waiver:C2  x6
    step02.values.HOME.COLLECTED[0]: source '' | target '83'
    step03.values.HOME.COLLECTED[0]: source '' | target '83'
    step04.values.HOME.COLLECTED[0]: source '' | target '83'
    step05.values.HOME.COLLECTED[0]: source '' | target '83'
    step06.values.HOME.COLLECTED[0]: source '' | target '83'
    step07.values.HOME.COLLECTED[0]: source '' | target '83'
[waived] ui.windows  rule=waiver:C1  x2
    step00.windows: source [["FRAME", "Oracle Fusion Middleware Forms Services"], ["MAIN_WIN",... | target [["FRAME", "CareWell Clinic"], ["MAIN_WIN", "CareWell Clinic - Sign...
    step01.windows: source [["FRAME", "Oracle Fusion Middleware Forms Services"], ["MAIN_WIN",... | target [["FRAME", "CareWell Clinic"], ["MAIN_WIN", "CareWell Clinic - Sign...

Waivers

IdWaiverValuesReason
C1Oracle's frame title before sign-in2Until CW_NAV.START_FORM sets the MDI title, the Forms frame shows the runtime's own title "Oracle Fusion Middleware Forms Services". The target's frame reads "CareWell Clinic" from the start: the web page is the clinic's application, not Oracle's runtime. From sign-in on, both show the same title.
C2The home page's collected-today gauge reads empty6HOME.COLLECTED is a display item drawn as a half gauge on the original canvas; the Forms client's component tree exposes no text for it, so the source records '' at every step. The target shows the amount REFRESH_HOME computes (the same query as the source), as a number with a bar.