Hi Groza,
Happy to know that you have a new child, congratulations.
Take your time,
All the best

On Tue, Oct 1, 2024 at 9:37 PM Groza Danut <grozadanu...@gmail.com> wrote:

> Hi Omar,
>
> Thank you for your interest.
>
> You said downloading invoices is not supported in SA. Does that mean you
> only use the registry for reporting purposes, and you need to send the
> invoice to both the registry and to the customer(say via email for
> example)?
>
> Having our second child born a few days ago, I will not be able to work on
> this implementation for a while. However I thought about the architectural
> design a bit, and there are quite a lot of details to be able to produce a
> design upfront.
> That's why my suggestion is to work on the implementation incrementally.
>
> I will create a new Confluence page when I get some time in the following
> days, where we could coordinate our requirements, planning and
> implementation efforts.
> Groza Danut
>
> On Tue, 1 Oct 2024, 14:10 Omar Abdullwahhab, <omar.abdullwah...@gmail.com>
> wrote:
>
> > Hello Groza,
> > I am still following up with your suggestions,
> > I have reviewed your message.
> > And my notes are as follows
> > The common and difficult things are.
> > 1. Authentication.
> > 2. Boarding
> > 3. Reporting
> > All other things still little easy to manage
> > So what do you suggest  about these three things ?
> >
> > You mentioned ( Downloading received invoices ),
> > Currently in SA it is not yet implemented.
> > but I am sure it will be,
> > sooner or later.
> > Regards
> >
> >
> > On Sun, Sep 8, 2024 at 11:20 AM Jacques Le Roux <
> > jacques.le.r...@les7arts.com> wrote:
> >
> > > Hi Groza,
> > >
> > > I have given you the right access. You can now add yourself at the
> bottom
> > > of the list at
> > >
> >
> https://cwiki.apache.org/confluence/display/OFBIZ/Apache+OFBiz+Contributors
> > >
> > > You may ask for an ICLA but as long as it's only Confluence it's not
> > > mandatory.
> > >
> > > AFAIK, the PMC has not defined yet if an ICLA is required for GH PRs.
> > >
> > > Welcome :)
> > >
> > > Jacques
> > >
> > > Le 07/09/2024 à 20:27, Groza Danut a écrit :
> > > > Hi Jacques,
> > > >
> > > > Requested a Confluence account just now. Waiting for approval.
> > > >
> > > > The registered username is: danut
> > > > The registered email is this one: grozadanu...@gmail.com
> > > >
> > > > Thank you!
> > > > Groza Danut
> > > >
> > > > On Sat, 7 Sep 2024, 20:14 Jacques Le Roux, <
> > jacques.le.r...@les7arts.com
> > > >
> > > > wrote:
> > > >
> > > >> Hi Groza,
> > > >>
> > > >> You need a Confluence write access. Have you created a Confluence
> > > account?
> > > >> If you did, what is your Confluence username?
> > > >>
> > > >> HTH
> > > >>
> > > >> Jacques
> > > >>
> > > >> Le 07/09/2024 à 19:05, Groza Danut a écrit :
> > > >>> I propose we move the requirement planning and architectural design
> > > draft
> > > >>> in a new temporary page on Confluence.
> > > >>>
> > > >>> I'm not very familiar with Confluence. Do I need approval to
> create a
> > > new
> > > >>> page, or do I just need to sign up for a contributor account on
> > > >> Confluence
> > > >>> and fill an ICLA?
> > > >>> Groza Danut
> > > >>>
> > > >>> On Sat, 31 Aug 2024, 15:22 Omar Abdullwahhab, <
> > > >> omar.abdullwah...@gmail.com>
> > > >>> wrote:
> > > >>>
> > > >>>> Hi Groza,
> > > >>>> That is really fantastic  let me review that and understand it
> well,
> > > >>>> And will get back to you, as soon as possible.
> > > >>>> Regards
> > > >>>>
> > > >>>> On Sat, Aug 31, 2024 at 10:27 AM Groza Danut <
> > grozadanu...@gmail.com>
> > > >>>> wrote:
> > > >>>>
> > > >>>>> Tech stack proposals:
> > > >>>>>
> > > >>>>> 1. Data mapping
> > > >>>>> The proposal is to use AtlasMap for this. See
> > > >>>>>
> > > https://dzone.com/articles/implementing-low-code-data-mapping-in-java
> > > >>>>> This would allow us to have dynamic data mappings at runtime
> based
> > on
> > > >>>>> different countries, suppliers etc...
> > > >>>>>
> > > >>>>> 2. Authorization
> > > >>>>> 2.1 OAuth2
> > > >>>>> Passport plugin provides authentication using OAuth2
> > > >> credentials(Github,
> > > >>>>> linkedin etc..) to the web stores. The implemented flow currently
> > is
> > > >> only
> > > >>>>> Authorization Code Flow. We could use code from here, but I still
> > > have
> > > >> a
> > > >>>>> problem writing code for functionality that is standardized,
> > instead
> > > of
> > > >>>>> using a library for it, especially for security libraries. My
> > > proposal
> > > >> is
> > > >>>>> to use a ready made library for this, for example this one:
> > > >>>>> https://github.com/dmfs/oauth2-essentials or this one:
> > > >>>>> https://github.com/scribejava/scribejava and only write the
> > > >> integration
> > > >>>>> code specific to Ofbiz(here we can use the passport plugin as a
> > > >>>> reference).
> > > >>>>> 2.2 x509 certificates
> > > >>>>> Didn't research much on this topic, but as I see there is some
> > > >>>>> functionality for certificates implemented in Ofbiz already, so
> > maybe
> > > >>>> this
> > > >>>>> one can be used.
> > > >>>>>
> > > >>>>> 3. Workflow
> > > >>>>> I think the best choice here is Apache Camel. We could then have
> a
> > > >>>>> different route for each country, or even reuse parts of routes
> > > between
> > > >>>>> countries, if they are the same.
> > > >>>>>
> > > >>>>> The overall picture
> > > >>>>>
> > > >>>>> 1. Entity layer
> > > >>>>> - configurations
> > > >>>>> - reporting statuses
> > > >>>>> - Invoice xml(for example save received Invoice xml for archiving
> > > >>>> purposes)
> > > >>>>> 2. Service layer
> > > >>>>> Have a standard set of apis for the base operations:
> > > >>>>> - upload invoice(report invoice)
> > > >>>>> - check status(for reported invoices)
> > > >>>>> - check received messages(for new received invoices)
> > > >>>>> - download invoice(for received invoices)
> > > >>>>> - reject invoice(for received invoices)
> > > >>>>>
> > > >>>>> This would be the layer that the clients of the plugin will
> > interact
> > > >>>> with.
> > > >>>>> They will use these apis for reporting purposes.
> > > >>>>>
> > > >>>>> 3. Workflow layer
> > > >>>>> This is the core part of the reporting engine. This layer would
> do
> > > the
> > > >>>>> following:
> > > >>>>> - route the api call to the correct implementation based on
> > different
> > > >>>>> criteria: configurations, invoice recipient, country etc...
> > > >>>>> - perform required data mappings
> > > >>>>> - perform required authorization steps
> > > >>>>>
> > > >>>>> Basically administrators would use the workflow layer to perform
> > the
> > > >>>>> required setup for each country, and then the sales
> representatives
> > > or
> > > >>>>> other low level employees would use the service layer for actual
> > > >> invoice
> > > >>>>> reporting.
> > > >>>>>
> > > >>>>>
> > > >>>>> On Sat, Aug 31, 2024 at 9:27 AM Groza Danut <
> > grozadanu...@gmail.com>
> > > >>>>> wrote:
> > > >>>>>
> > > >>>>>> Hi Omar,
> > > >>>>>>
> > > >>>>>> Thank you for your feedback. The eInvoicing for Romania has a
> > > >> different
> > > >>>>>> workflow:
> > > >>>>>> A. Boarding stage: ANAF uses OAuth to generate a token so the
> flow
> > > is:
> > > >>>>>> 1. Ofbiz sends a request to ANAF authorization server using
> OAuth2
> > > >>>>>> Authorization Code Flow
> > > >>>>>> 2. The user is redirected to the ANAF login page, where he needs
> > to
> > > >>>>>> present his digital signature(yes, each end user need his own
> > > digital
> > > >>>>>> signature)
> > > >>>>>> 3. Upon successful authentication Ofbiz gets a JWT access and
> > > refresh
> > > >>>>>> token from ANAF.
> > > >>>>>>
> > > >>>>>> B. Reporting stage.
> > > >>>>>> 1. Ofbiz converts the Invoice to the accepted format(UBL, CN,
> CII
> > > sau
> > > >>>>> RASP)
> > > >>>>>> 2. Ofbiz sends the Invoice xml to the upload api using the JWT
> > > access
> > > >>>>>> token for authentication. Note: there are 2 upload apis: one is
> > the
> > > >>>>> testing
> > > >>>>>> environment, and one is the production environment, but you
> still
> > > need
> > > >>>>>> valid credentials for testing.
> > > >>>>>> 3. Ofbiz sends a request to the ANAF status api and gets the
> > > response
> > > >>>>>> whether the Invoice was accepted, or rejected and the reason for
> > > >>>>> rejection.
> > > >>>>>> Upon fixing the rejection issue, we need to resend the invoice.
> > > >>>>>>
> > > >>>>>> Based on these 2 cases, I think Ofbiz should have the following
> > > >>>>>> requirements:
> > > >>>>>> 1. Configurable Invoice data mapping for each country(and even
> > > >>>> different
> > > >>>>>> data mapping within the same country, for instance different
> data
> > > >>>>> mappings
> > > >>>>>> for different suppliers)
> > > >>>>>> 2. Configurable workflow for each registry. I think this would
> be
> > > the
> > > >>>>> hard
> > > >>>>>> part. Since one country might use Oauth and JWT tokens, another
> > uses
> > > >>>> X509
> > > >>>>>> for signing Invoices, so each has a different workflow.
> > > >>>>>> 3. Status tracking, so we know if the Invoice was already
> > reported,
> > > if
> > > >>>> it
> > > >>>>>> was accepted or rejected after reporting. We already have
> Invoice
> > > >>>>> statuses
> > > >>>>>> in Ofbiz, we could use those.
> > > >>>>>>
> > > >>>>>> On Fri, Aug 30, 2024 at 10:57 PM Omar Abdullwahhab <
> > > >>>>>> omar.abdullwah...@gmail.com> wrote:
> > > >>>>>>
> > > >>>>>>> You are welcome Groza
> > > >>>>>>> first ZATCA uses x509 certificates, and the procedures has to
> be
> > > done
> > > >>>> in
> > > >>>>>>> two stages.
> > > >>>>>>> A. The boarding stage
> > > >>>>>>> 1. the reporting software ( ofbiz for example ) will generate
> a
> > > CSR
> > > >> (
> > > >>>>>>> Certificate signing request )
> > > >>>>>>> 2. The reporting software will send this CSR to ZATCA via rest
> > api.
> > > >>>>>>> 3. ZATCA will respond with (CSID) X509 temporary certificate
> > along
> > > >>>> with
> > > >>>>> a
> > > >>>>>>> secret -basic auth for further requests - ( for pre-production
> or
> > > for
> > > >>>>>>> proving that the software reports the invoices correctly).
> > > >>>>>>> 4. the reporting software will use this certificate to simulate
> > the
> > > >>>>>>> reporting of different invoice types ( Simplified invoice,
> > Standard
> > > >>>>>>> invoice, Credit Note, Debit note ...etc).
> > > >>>>>>> 5. After successful reporting, the software will send a request
> > to
> > > >>>> ZATCA
> > > >>>>>>> API to get the production CSID ( X509).
> > > >>>>>>>
> > > >>>>>>> B. Reporting stage.
> > > >>>>>>> 1. After getting the production (CSID) X509 from the boarding
> > > stage ,
> > > >>>>>>>    The software now is ready for reporting real financial
> > > >> transactions.
> > > >>>>>>> 2. The reported invoices has to be signed by the reporting
> > software
> > > >>>> and
> > > >>>>> it
> > > >>>>>>> have to be in compliance with UBL 2.1
> > > >>>>>>>
> > > >>>>>>> C. Ofbiz and ZATCA
> > > >>>>>>> 1. Of course the transactions and tables of ofbiz has to be
> > changed
> > > >> to
> > > >>>>> fit
> > > >>>>>>> for additional fields.
> > > >>>>>>> 2. Ofbiz transactions ( Sales Invoices, Purchase invoices
> ..etc)
> > > will
> > > >>>> be
> > > >>>>>>> converted to UBL Xml Invoices.
> > > >>>>>>> 3. The XML Invoices after signing it and generating QR code for
> > it,
> > > >> it
> > > >>>>> is
> > > >>>>>>> saved in a local disk file / database table or whatever is
> > > >> applicable.
> > > >>>>>>> 4. Then the software will make  a json request for the XML
> > invoice
> > > >> and
> > > >>>>>>> send
> > > >>>>>>> it to the ZATCA api.
> > > >>>>>>> 5. ZATCA will responed with the status of reporting ( Reported,
> > not
> > > >>>>>>> reported ).
> > > >>>>>>>
> > > >>>>>>> For further information here is the useful link
> > > >>>>>>>
> > > >>>>>>>
> > > >>
> > >
> https://zatca.gov.sa/en/E-Invoicing/SystemsDevelopers/Pages/default.aspx
> > > >>>>>>> Regards
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>> On Fri, Aug 30, 2024 at 10:14 PM Groza Danut <
> > > grozadanu...@gmail.com
> > > >>>>>>> wrote:
> > > >>>>>>>
> > > >>>>>>>> Thank you Omar!
> > > >>>>>>>>
> > > >>>>>>>> Could you share the implementation you did for Saudi Arabia?
> Not
> > > the
> > > >>>>>>> code,
> > > >>>>>>>> just the general structure, the workflow and the steps you do
> to
> > > >>>>> report
> > > >>>>>>> the
> > > >>>>>>>> invoices?
> > > >>>>>>>> Groza Danut
> > > >>>>>>>>
> > > >>>>>>>> On Fri, 30 Aug 2024, 17:51 Omar Abdullwahhab, <
> > > >>>>>>> omar.abdullwah...@gmail.com
> > > >>>>>>>> wrote:
> > > >>>>>>>>
> > > >>>>>>>>> Ok that is good,
> > > >>>>>>>>> And after finishing it would be good if you create a new
> ofbiz
> > > >>>>> plugin
> > > >>>>>>> and
> > > >>>>>>>>> make the repo available at github,
> > > >>>>>>>>> So that everyone and I can also share.
> > > >>>>>>>>> So it can be a useful plugin even if its not part of the
> > official
> > > >>>>>>>>> ofbiz-plugin repository.
> > > >>>>>>>>> And I am ready also to contribute
> > > >>>>>>>>>
> > > >>>>>>>>>
> > > >>>>>>>>>
> > > >>>>>>>>> On Fri, Aug 30, 2024 at 3:29 PM Groza Danut <
> > > >>>> grozadanu...@gmail.com
> > > >>>>>>>>> wrote:
> > > >>>>>>>>>
> > > >>>>>>>>>> Hi Omar,
> > > >>>>>>>>>>
> > > >>>>>>>>>> Yea I also agree that an eInvoicing plugin would be the best
> > > >>>>> choice
> > > >>>>>>> to
> > > >>>>>>>>>> implement. This plugin should be configurable separately for
> > > >>>> each
> > > >>>>>>>>> country,
> > > >>>>>>>>>> since each country will have specific requirements.
> > > >>>>>>>>>>
> > > >>>>>>>>>> Going further:
> > > >>>>>>>>>> 1. For the mapping, the library you mention is also the one
> I
> > > >>>> used
> > > >>>>>>> in
> > > >>>>>>>> my
> > > >>>>>>>>>> implementation, so I agree we should use it.
> > > >>>>>>>>>> 2. OAUTH client library
> > > >>>>>>>>>>
> > > >>>>>>>>>> Currently the Romanian registry uses OAUTH2 with a JWT token
> > for
> > > >>>>>>>>>> authentication with the api. Probably other countries as
> well.
> > > >>>> So
> > > >>>>> is
> > > >>>>>>>>> there
> > > >>>>>>>>>> an OAUTH2 client in Ofbiz that we can use? I will
> investigate
> > > >>>> the
> > > >>>>>>>>> passport
> > > >>>>>>>>>> plugin to see if we can use the code in there.
> > > >>>>>>>>>>
> > > >>>>>>>>>> On Fri, Aug 30, 2024 at 2:54 PM Omar Abdullwahhab <
> > > >>>>>>>>>> omar.abdullwah...@gmail.com> wrote:
> > > >>>>>>>>>>
> > > >>>>>>>>>>> Hello Groza
> > > >>>>>>>>>>> Sorry this is another detailed Email,
> > > >>>>>>>>>>> Regarding e-invoicing or e-factura.
> > > >>>>>>>>>>> Yes this will be very helpful, because it is already
> adapted
> > > >>>> by
> > > >>>>>>> many
> > > >>>>>>>>>>> countries,
> > > >>>>>>>>>>> And soon will be widely used.
> > > >>>>>>>>>>> The main good thing that can be of help is
> > > >>>>>>>>>>> 1. Mapping the ofbiz Invoices to XML Invoice.
> > > >>>>>>>>>>> 2. Making the connector as configurable as possible,
> because
> > > >>>> it
> > > >>>>>>> will
> > > >>>>>>>> be
> > > >>>>>>>>>>> different for each Authority of Country.
> > > >>>>>>>>>>> 3. It will be nice if the information about e-invoicing
> > > >>>>> collected
> > > >>>>>>>> from
> > > >>>>>>>>>>> different countries.
> > > >>>>>>>>>>> 4. also many new IT companies have little knowledge about
> the
> > > >>>>>>>>> e-invoicing
> > > >>>>>>>>>>> and it will consume time to understand it,
> > > >>>>>>>>>>>      So if ofbiz will offer that for them it will be nicer.
> > > >>>>>>>>>>>
> > > >>>>>>>>>>> Regards.
> > > >>>>>>>>>>>
> > > >>>>>>>>>>>
> > > >>>>>>>>>>> On Wed, Aug 28, 2024 at 4:47 PM Groza Danut <
> > > >>>>>>> grozadanu...@gmail.com>
> > > >>>>>>>>>>> wrote:
> > > >>>>>>>>>>>
> > > >>>>>>>>>>>> Hello devs,
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> I need to consult with the community in regard to a new
> > > >>>> plugin
> > > >>>>>>>>>>>> contribution.
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> Currently the Romanian law states that all B2B and B2G
> > > >>>>> invoices
> > > >>>>>>>>>> operated
> > > >>>>>>>>>>>> inside Romania must be reported to a national registry,
> > > >>>> called
> > > >>>>>>>>>>>> eFactura(eInvoice) operated by the romanian fiscal
> > > >>>>>>> authority(called
> > > >>>>>>>>>>> ANAF).
> > > >>>>>>>>>>>> *The workflow is:*
> > > >>>>>>>>>>>> 1. Supplier sends the Invoice to the national registry.
> > > >>>>>>>>>>>> 2. Invoice Recipient downloads the Invoice from the
> national
> > > >>>>>>>> registry
> > > >>>>>>>>>> and
> > > >>>>>>>>>>>> registers it.
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> *Notes:*
> > > >>>>>>>>>>>> - printed or emailed Invoices are NOT considered valid,
> only
> > > >>>>>>> those
> > > >>>>>>>>> sent
> > > >>>>>>>>>>>> through this registry
> > > >>>>>>>>>>>> - the Invoices are uploaded and downloaded from the
> registry
> > > >>>>> in
> > > >>>>>>> xml
> > > >>>>>>>>>>> format
> > > >>>>>>>>>>>> (UBL)
> > > >>>>>>>>>>>> - the registry has a REST api with OAUTH2 authentication
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> I have the following ideas for this plugin contribution:
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> *1. New plugin called eFactura*
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> This will focus on specific reporting of Invoices for
> > > >>>>> businesses
> > > >>>>>>>> that
> > > >>>>>>>>>>>> operate within Romanian boundaries. This will be very
> > > >>>>> specific,
> > > >>>>>>> but
> > > >>>>>>>>>>>> probably not used outside of Romania. Are there any known
> > > >>>>>>> Romanian
> > > >>>>>>>>>>>> developers or businesses here?
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> *2. New plugin called eInvoice*
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> More generic plugin that allows for generic reporting of
> > > >>>>>>> Invoices
> > > >>>>>>>>> based
> > > >>>>>>>>>>> on
> > > >>>>>>>>>>>> configurations. This would allow using the plugin for
> other
> > > >>>>>>>> countries
> > > >>>>>>>>>>> where
> > > >>>>>>>>>>>> Invoice reporting is mandatory. For example Bulgaria has a
> > > >>>>>>> similar
> > > >>>>>>>>>>> registry
> > > >>>>>>>>>>>> called eFaktura, as far as I know.
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> *3. New plugin called InvoiceConnector(or some other
> name)*
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> This would be the most generic plugin that has extended
> > > >>>>>>>> configuration
> > > >>>>>>>>>>>> capabilities. Basically, this would allow you to specify
> in
> > > >>>>> what
> > > >>>>>>>>> format
> > > >>>>>>>>>>> you
> > > >>>>>>>>>>>> want to export or import invoices(for example UBL2.1), and
> > > >>>> the
> > > >>>>>>>> method
> > > >>>>>>>>>> of
> > > >>>>>>>>>>>> exporting/importing(example: from/to file, REST api,
> > > >>>> etc...).
> > > >>>>>>> This
> > > >>>>>>>>>> would
> > > >>>>>>>>>>>> basically be similar to a data mapping tool plus a REST
> > > >>>>>>>> integration.
> > > >>>>>>>>> I
> > > >>>>>>>>>>>> haven't yet seen any possibility in Ofbiz to export or
> > > >>>> import
> > > >>>>>>>>> Invoices
> > > >>>>>>>>>>> in a
> > > >>>>>>>>>>>> format other than the standard entity xml format, is there
> > > >>>>>>> some??
> > > >>>>>>>>>>>> *Do you think any of these contributions would be of any
> > > >>>> help
> > > >>>>> to
> > > >>>>>>>> the
> > > >>>>>>>>>>>> community?*
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> Of course I will be maintaining the code for the eFactura
> > > >>>>>>> connector
> > > >>>>>>>>>> part,
> > > >>>>>>>>>>>> since we will be actively using this in our companies.
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> --
> > > >>>>>>>>>>>> Groza Dănuț
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>> --
> > > >>>>>>>>>>> Omar Abu-Arab
> > > >>>>>>>>>>> Java Engineer
> > > >>>>>>>>>>>
> > > >>>>>>>>>> --
> > > >>>>>>>>>> Groza Dănuț
> > > >>>>>>>>>>
> > > >>>>>>>>> --
> > > >>>>>>>>> Omar Abu-Arab
> > > >>>>>>>>> Java Engineer
> > > >>>>>>>>>
> > > >>>>>>> --
> > > >>>>>>> Omar Abu-Arab
> > > >>>>>>> Java Engineer
> > > >>>>>>>
> > > >>>>>> --
> > > >>>>>> Groza Dănuț
> > > >>>>>>
> > > >>>>> --
> > > >>>>> Groza Dănuț
> > > >>>>>
> > > >>>> --
> > > >>>> Omar Abu-Arab
> > > >>>> Java Engineer
> > > >>>>
> > >
> >
> >
> > --
> > Omar Abu-Arab
> > Java Engineer
> >
>


-- 
Omar Abu-Arab
Java Engineer

Reply via email to