Routes quotations.prepare POST /quotation-prepare/{id}/{user_id?} quotations.index GET /quotations quotations.pdf GET /quotations/{id}/pdf quotations.show GET /quotations/{id} Tables quotations present quotation_items present Owner: #27 hari@mukesoft.com Product matching ok a code the phrase corroborates 'code' ok and is scored high true ok a code with no corroboration keeps a code match 'code' ok an invented code falls back to the text 'alias' ok and is scored for review true ok no code, but an alias in the words 'alias' ok the disagreement is flagged, not hidden true ok nothing matches NULL ok and it says so 'none' Quotation build ok four lines 4 ok a number was issued true ok the customer came off the mail 'Priya Nair' ok the bulk band was used for 12 units 9000.0 ok line net is 12 x 9,000 108000.0 ok tax at 18% 19440.0 ok line total includes tax 127440.0 ok the price row is recorded for provenance true ok this line needs no review false ok an expired price quotes nothing 0.0 ok and is flagged true ok the unmatched item is kept as a line true ok with the customer's own words '2 industrial widget presses' ok and no product NULL ok and is flagged true ok subtotal is the sum of priced lines 133000.0 ok tax total 23940.0 ok grand total 156940.0 ok the quotation needs review true ok and says how many lines true ok the shared product term appears once 1 ok requirements stay out of the terms false ok but are kept on the quotation true ok the extraction was kept verbatim true Quantity above every price band FAIL the line is priced, not "to be advised" got 0.0, want 100000.0 FAIL the amount follows the quantity got 0.0, want 5000000.0 FAIL tax at 18% on the real net got 0.0, want 900000.0 FAIL line total includes tax got 0.0, want 5900000.0 FAIL the band it was carried from is recorded got false, want true FAIL the grand total is no longer zero got 0.0, want 5900000.0 ok the line is flagged for a human true FAIL and the reason names the quantity got false, want true FAIL and the band that was carried forward got false, want true ok and the reason fits the column true ok the quotation carries the flag up true ok below every floor still quotes nothing 0.0 ok and says so rather than guessing true Snapshot after a price rise ok the quoted price did not move 9000.0 ok the quoted name did not move 'ABC Controller' ok the total did not move 156940.0 Reply draft ok addresses the customer by first name true ok quotes the reference true ok shows the grand total true ok says what is still being checked true ok naming the unmatched item true ok points at the attachment true ok and says the terms are in it true ok no line table in the body false ok acknowledges what else was asked true ok naming it true ok signs off true ok no zero price is presented as a price false Draft is 783 characters. First 240: Dear Priya,Thank you for your enquiry. Please find our quotation attached, reference QT-2026-0001.The attached quotation covers ABC Controller and XYZ Mounting Set and comes to ₹156,940.00 including tax, and holds until 28 Oct 2026.We are... Quotation PDF ok a file was written true ok it is a PDF true ok it is not empty true ok the filename carries the number 'Quotation_QT-2026-0001.pdf' ok a font is embedded true ok DejaVu is the embedded face true ok an unchanged quotation reuses its file 1790592434 Cleanup: quotation, 3 products and the stand-in mail removed 8 CHECK(S) FAILED.