Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Value.amount description to suggest/recommend tax-free amounts #817

Closed
jpmckinney opened this issue Mar 1, 2019 · 10 comments · Fixed by #1519
Closed

Update Value.amount description to suggest/recommend tax-free amounts #817

jpmckinney opened this issue Mar 1, 2019 · 10 comments · Fixed by #1519
Assignees
Labels
Semantics Relating to field and code descriptions
Milestone

Comments

@jpmckinney
Copy link
Member

jpmckinney commented Mar 1, 2019

Following discussion from #383 (comment) and following comments.

@jpmckinney jpmckinney added the Schema Relating to other changes in the JSON Schema (renamed fields, schema properties, etc.) label Mar 1, 2019
@jpmckinney jpmckinney added this to the 1.2 milestone Mar 1, 2019
@jpmckinney
Copy link
Member Author

jpmckinney commented Oct 15, 2019

In CRM-5172, we discussed the possibility of a publisher/aggregator having a tax-inclusive amount and not being able to determine the tax-free amount. The options would be:

  1. Put the value after tax in amountGross, and don't set amount. This will produce a combined dataset in which either amount or amountGross is set depending on whether tax is included or not. Not every value will have an amount (tools or analyses that are unaware of amountGross, and that don't warn or error when amount is missing, will have incomplete data), but at least every field will have consistent semantics, independent of the values of other fields.
  2. Use the boolean valueAddedTaxIncluded from this extension, and put the value after tax in amount. This will produce a combined dataset in which amount is either with or without tax depending on valueAddedTaxIncluded. This will make amounts harder to compare (tools or analyses that are unaware of valueAddedTaxIncluded will get incorrect answers), but at least every value will have an amount.

The first option is preferred, because inconsistent semantics (second option) seems very bad. And it is easier for a tool/analysis to error/warn if an expected field is missing, than for it to somehow know that another field is changing the semantics of amount.

@jpmckinney
Copy link
Member Author

jpmckinney commented Oct 15, 2019

We should determine whether any publishers are in a scenario where they either (1) don't know which amounts are tax-free or (2) can't calculate the tax-free amount.

If so, we can clarify that amount is for the amount as stated on the tender notice / award notice / contract document. We would then recommend that, wherever possible, both amountNet and amountGross fields are filled in. That way, if a dataset has amountNet and amountGross, then users can have access to fields with consistent semantics; if the dataset lacks the fields, then users can know the caveats around amount.

@jpmckinney jpmckinney added Semantics Relating to field and code descriptions and removed Schema Relating to other changes in the JSON Schema (renamed fields, schema properties, etc.) labels Jul 17, 2020
@jpmckinney jpmckinney changed the title Update definition of Value to suggest/recommend tax-free amounts Update Value.amount description to suggest/recommend tax-free amounts Jul 17, 2020
@fmatzdorf
Copy link

Our scenario as a publisher is mentioned in #817 (comment). We have a dataset that is compiled from many different sources, all of them relating to contracts published by different agencies in the Mexican government. We know that some of the datasets have taxes included in the amount and some don't, but the exact percentage of tax has been impossible to determine.

On all of our datasets the exact percentage of tax varies from contract to contract, whether the amount provided includes tax or not. We have filed many requests for information to determine exact tax percentages by contract, but the responses have not helped us solve this, since they only include the possible values for tax percentage but not which contracts are associated with each tax value. So the best we can do is to express whether or not the amount includes taxes or not.

We agree with the last comment. The best solution would be to have all 3 fields present in the compiled dataset. This way all contracts provide at least one amount (in the amount field) and in the cases where we do know whether or not tax is included we can fill in either amountGross or amountNet.

@jpmckinney
Copy link
Member Author

Thank you, @fmatzdorf, for sharing evidence supporting that option!

@JachymHercher
Copy link
Contributor

If so, we can clarify that amount is for the amount as stated on the tender notice / award notice / contract document. We would then recommend that, wherever possible, both amountNet and amountGross fields are filled in. That way, if a dataset has amountNet and amountGross, then users can have access to fields with consistent semantics; if the dataset lacks the fields, then users can know the caveats around amount.

I quite like the approach above, but I have two doubts:

  • Do I understand it correctly that the two new fields are either including / excluding all taxes, not just VAT? If yes, good. Knowing the exact values/percentages for different types of taxes is unnecessary for most users, I think.
  • In Clarify Contract description #896 (comment), we mention distinguishing value and maximumValue (for a framework agreement) as well as potentially an estimatedValue (for a framework agreement). Combining it with the three tax-related fields, we have nine value fields (applicable in Tender, Award and Contract), which is a bit longwinded.
    • Perhaps that's not a problem.

    • Perhaps that's something we can live with in OCDS 1.2 and then we can do a backwards-incompatible change in OCDS 2.0 of adding a layer into Value, so that Value contains the nine values, each of which then contains an amount and currency.

    • Perhaps we should change Value into an array and add something like tax within, which can contain 'gross', 'net' and 'unknown' (and probably clarifies that empty means 'unknown' as well); as well as adding something like type into Value, which can contain 'maximum', 'estimated', 'actual/real/awarded/signed'. This would make it more compact (and probably more flexible for the future, e.g. for adding detailed tax information), but the meaning of one field would influence another. On the other hand, that's always been the case for Value, so I'm wondering whether it's a serious problem. Assuming that changing a normal field to an array is a backwards incompatible change, in OCDS 1.2, we could only add the classifying fields, but not change Value to an array, that would have to wait for OCDS 2.0.

      I find the third option slightly preferable.

@jpmckinney
Copy link
Member Author

Do I understand it correctly that the two new fields are either including / excluding all taxes, not just VAT? If yes, good. Knowing the exact values/percentages for different types of taxes is unnecessary for most users, I think.

Yes, amountNet should be defined to exclude all taxes.

For the rest, I think we need a separate issue, as it's about changing the structure of the Value object, rather than adding/updating its fields. I created #1143

@ColinMaudry
Copy link
Member

Does this issue (expanding the description of Value.amount) depend on the fate of #1143?

@jpmckinney
Copy link
Member Author

#1143 is abandoned. This issue can proceed.

@odscjen
Copy link
Contributor

odscjen commented May 17, 2022

Checking if this issue can move to PR and if so clarifying that what's required is 2 new fields value.amountNet and value.amountGross and an update to the description of value.amount to make clear it's the amount as stated in the tender/award/contract documentation?

@jpmckinney
Copy link
Member Author

Yes, there seems to be consensus around #817 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Semantics Relating to field and code descriptions
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

6 participants