DID YOU KNOW?
According to NAC-DGERCGC14-00157 resolution from our local IRS, the obligatory nature of electronic receipts issuance is established for businesses and public entities, based on the corresponding calendar (issued withe the referred resolution). These regulation's objectives are to gain exhaustive control in taxes through a unique therefore unified nation wide database.
The electronic invoicing solution herein introduced, referred as "FE12" (Meaning 12 Factors Electronic Invoicing in English) will allow the issuer tax in agile manner and have an on-line unique repository of their issued and received digital receipts, backed by top-notch technological stack (as a result of the quality the 12 factors implicitly brings for software development).
DOES THIS SCENARIO RING A BELL TO YOU?
If your answer is affirmative, unfortunately you have a low quality product.
It's the technological tool that will allow you to issue electronic receipts to your clients (and any regulatory agency) in a trusted and optimal manner.
Based on high performance technical principles and backed up by a body of knowledge developed among the IT industry and matured through time, we have built FE12, an electronic invoicing system created from the ground up with best practices in mind.
FE 12 Keywords:
This is the basic flow that our product describes and shows how it integrates with third party systems via adapters.
- Cloud Ready infrastructure
- Developed with well positioned frameworks: Java and PHP
- Queue and messaging with AMQP
- Virtualization based on containers (Docker 1.7+)
- Database: PostgreSQL/MariaDB/Cubrid
- Table partitioning for high volumes of information
- Uses open source and free frameworks for your security and economy
- Attachable to monitoring, orchestration and workflow management systems
- Point of Sales
- Users and Roles
- Creation of customer's receipts in XML format
- Digitally sign receipts
- Electronic signatures expiry alert
- Reception acknowledgement by regulatory agency
- Authorization by regulatory agency
- Email notifications to the client and system administrators
- Creation of receipt's PDF representation
- Web Portal for receipt's search and generation (with mobile support)
- Multi company support
HIGH LEVEL ARCHITECTURE
WHY 12 FACTORS?
The methodology describes a set of interrelated lineaments to follow in order to create reactive and modern applications.
There are 12 recommendations that can be partially or totally followed. Some of them are "obligatory" if you wish to take advantage of the benefits this principles bring. Companies like Netflix and Heroku are currently supporting this movement.
We are evangelists of new tendencies, best practices in Software Engineering and "Infrastructure as code"
According to the 12 Factors manifesto, FE12 has the following characteristics that describes it as “12 factor compliant”:
- Versioning: Source code versioned with GIT
- Dependencies: All the system's dependencies are included through sourcing services like Vagrant and Docker
- Configurations: Everything is parametrized and read in execution time. Note how this information can be public without compromising sensitive data
- Backing services: Are services FE12 consumes like messaging, database and libraries. They are attached resources that can be changed as required. e.g: Migrate from PostgreSQL to MySQL or Cubrid
- Build, release and run: We have clearly organized the system's layers. Build tasks are meant to generate the binaries, scripts and some other assets required by FE12. Release tasks are meant to send the package previously created by the build to the server and finally the code is executed in an environment as the "run" part.
- Processes: We use stateless processes in that way we're able to scale easily and have independent threads in our system thus a fault tolerant system. We also ensure capacities for millions of transactions a month
- Concurrency: FE12 is concurrent. This allows us to provide customers with excellent response times vs multiple parallel transactions
- Availability and Shutdown: Auto startup enables the system to get back on it's feet (quickly) upon external failures with no human intervention.
- Parity among dev and prod environments: Through provision we have replicas of the different environments (development, production, testing and QA)
- Log management: From the most elemental to the most critical level (configurable) are stored and consolidated for your revision
- Admin processes: The idea here is to maintain identical environments as production in order to perform administrative tasks eg: data debug. No task must be perform directly in the database
WHY FE12 AS A 12 FACTOR PROJECT?
- Electronic invoicing in Ecuador will have an incremental approach but obligatory. This fact allow us to introduce the product iteratively and in different scale
- Electronic invoicing is not the most critical process in a business therefor, we are able to introduce this new culture of programming in a critically controlled environment
- Some companies see this product as a satellite system so we are able to test the adaptability and couple/decouple of FE12 and their components
- Given the need to interact with client's internal data (given by ERP's) and some external providers (SMTP, regulatory agency's web services) this constitutes the perfect test scenario for component based systems
- There are cases where clients have large volume of receipts per month this fact allow us to showcase the horizontal growth capabilities of our product and load balance hot spot components the system may have
- Because we want to serve society with high quality standards. And because we can!
- Personal taxes declaration system
- Automatic resend receipts (subject to third party source systems)
- Receipt's reception with approval workflow
- New regulatory agency specifications