Re: Translation question: "bill" VS "invoice"

Karsten Hilbert <[email protected]> Mon, 25 May 2026 12:22:14 +0200
Newsgroups gmane.comp.gnu.medical.devel
Message-ID <[email protected]>
Am Sun, May 24, 2026 at 05:57:58PM -0300 schrieb Mar=EDa Scappini:

> I need some help distinguishing the usage differences between "bill" and=
 "invoice" on
> GNUmed...

This warrants clarification.

> My main concern is that, in Spanish, one term (bill=3Dcuenta/prefactura)=
 is not a
> fiscally-binding document, and the other (invoice?=3Dfactura) does have =
fiscal value and
> is much more regulated in a lot of aspects (cannot be editable, numberin=
g should be
> unique, etc).

There are similar regulations here.

In GNUmed the intent is this:

invoice:

	A generated document containing all the fiscally
	required data needed for legally telling a payor:
	pay this amount

	exists as a PDF in the document archive, linked to a ...

bill:

	A data structure (bill.bill) aggregating the details
	necessary to properly effect invoice generation.

>    - bill (noun) =3D a detailed account of the items, their number, and
>    total amount.
>=20
>        - It can be edited after generation
>        - Does not hold legal value (?), thus not used to calculate taxes
>        - Does not need to have specific numbering or unique ID

I believe this corresponds to the above.

>    - invoice =3D=A0 the confirmed, final account of items, their number,
>    and total cost of services/sales.
>=20
>        - Cannot (or should not) be edited after generation
>        - Does hold legal, accounting, value, used to calculate taxes
>        - Is specifically numbered and identified, cannot be generated
>        twice with the same number.

Yes, so we do.

bill.bill.invoice_id holds the unique (enforced by the
database) ID which is generated by

	DEFAULT_INVOICE_ID_TEMPLATE =3D 'GM%(pk_pat)s / %(date)s / %(time)s'

	client/business/gmBilling::generate_invoice_id(...)

		No template given -> generate old style fixed format invoice ID.

		Placeholders:
			%(pk_pat)s
			%(date)s
			%(time)s
				if included, $counter$ is not *needed* (but still possible)
			%(firstname)s
			%(lastname)s
			%(dob)s

			#counter#
				will be replaced by a counter, counting up from 1 until the invoice id=
 is unique, max 999999

That allows us to be quite sure we've generated a unique
identifier (c'mon, 1 million attempts ?)

> Do these definitions match with the ones intended for GNUmed's UI?

Yes.

> Or is usage of these terms not as rigid, used interchangeably on purpose=
?

No, they shouldn't be.

> Here below some examples of 'bill' and 'invoice' usage on the Billing pl=
ugin:
>=20
>    Trying the 'Invoice selected items' button,

Here, "to invoice" is a verb ;-)

>    two things happen simultaneously:
>=20
>         =A0 =A0 - pop-up dialog appears, title "GMd: Editing bill | pati=
ent
>        | [user]".

Yep, the bill (used to *generate* an invoice) is edited.

>         =A0 =A0 - the selected items disappear from the charge list in t=
he
>        billing plugin's UI

After an invoice has been generated, the items included in
the invoice are not invoicable anymore and thusly are not
shown in the charge list any further.

>        The pop-up dialog's contents show: invoice ID, close date,
>        address, if VAT is applicable, etc. Clicking 'OK', GNUmed tries
>        to generate an invoice pdf, and the dialog closes.
>=20
>        My translation concern: The dialog title mentions 'bill',
>        however the UI button and content mention 'invoice'.

I understand the possibility for confusion. I do think it is
technically correct but I agree other wording may create
less confusion even if not quite correct :-)

After all, the invoice is (should) not be editable ;-)=20
(and, in fact, it isn't as it only ever exists as a PDF in
the archive).

Maybe the workflow warrants improvement ?

>    Now back on the Billing plugin's tab, trying the 'Bills' button:
>=20
>        Another pop-up dialog appears, title 'GMd: Showing bills. |
>        patient | [user]'.
>=20
>        However, this dialog is listing *invoices* by close date and ID,

Ah, no, it lists "closed" bills :-)  Not quite the same ...

>        also lets one 'unbill' items part of an invoice, delete whole
>        invoices (and lets you 'unbill' their items if you'd like), and

If one unbills items it will not change the invoice (a PDF
in the archive) in any way, shape, or form. It'll edit the
"bill" structure previously used to generate that invoice.

>        access PDF files for said invoices and generate the PDFs if they
>        are not found.

Point in case: not "PDF file *for* said invoices" but rather
"invoice PDFs for said bills". Yeah, it's tricky. Now, there
seems to be a loophole (and there *is* a shortcoming as I
now realize): One might create an invoice (an invoice ID
will be generated), unbill its items, delete the invoice
PDF, add/remove items *to/from* the *bill*, and regenerate
the invoice PDF which now:

- contains different charge items
- contains the very same invoice ID

That may cause hiccups under some legislations. All is not
lost, however, because bill.bill is audited, and thusly
audit.log_bill still contains a record of the previous
invoice_id.

We need to change this, probably be unsetting invoice_id
when the link to the invoice PDF (bill.bill.fk_doc) is
unset.

We may also need to consider restricting deletion of invoice
PDFs to the database admin or some such.

Any other things the *really* need to be changed ?

Marc ?

>        My translation concern here: the button in the main plugin tab
>        mentions 'bills', however the dialog's content lists 'invoices'
>        and lets you manage them instead. (In latin america, altering
>        invoices is illegal, even.)

See, that's why we are editing bills ;-)

We don't want to get nicked off to the States at the whim of
whoever so wills.

Regards,
Karsten
=2D-=20
GPG  40BE 5B0E C98E 1713 AFA6  5BC0 3BEA AC80 7D4F C89B