We had a web application developed in Microsoft .net C#, and would like to move to Django framework.
The existing project is based on ABP boilerplate.
Application has below DB tables:
1, User
2, Role
3, Tenant
4, Company (customers)
5, Orders
6, Customer payments
7, Customer billing
8, Customer support cases
9, Pay to suppliers
10, Projects
11, Bank transactions
12, supplier invoices
13, order tracking
14, Attachment
15, Unauthorized shipments
17, Collection addresses
16, there are few more tables to store necessary information
Login users were grouped:
1, Host
2, Tenant
3, Companies (customers)
Host is most powerful group, all users of host company (our company) can access all data.
Tenant is second level where is referring to our agents, tenant user can access all data of its customer companies. Tenant can not view other tenant’s data.
Companies are Tenant’s customers, Company can not access other company data, even for company under the same tenant.
User access rights are separated as:
1, Host/Host admin – can view all data in system, admin has stronger access right in some tables.
2, Tenant/Tenant admin
3, Company, no admin for this group
Brief explanation for other tables:
Orders - The orders were created by customer company uses, they were shipping label, we currently only had integration with DHL’s myDHL API.
Customer payments – created by staff of our company, to record the payments made by our company customers.
Customer billing – The invoices billed to our customers. Created by system.
Customer support cases – created by customers who need help.
Payment to suppliers – money we paid to our suppliers for unpaid invoices.
Projects – data are project based, in order for system to work out cost/profit according to different project.
Supplier invoices – uploaded by our staff, system will check each shipment in the csv invoices from DHL, and add our profit margin, invoice to our customers.
Bank transactions – the bank transactions were automatically produced by system, for example, we paid supplier, it will add money out transaction in bank account, if customer paid to us, it will add money in transaction in order us to compare all transaction with the bank statement issued by bank.
Order tracking – we use SFTP to connect with DHL’s server and periodically fetch tracking history and add into this table.
Attachment – user can add attachment files to most of record, and this table is to store the attachment files
Unauthorized shipments – if system detects one of the tracking/supplier bill contains shipment not ordered by our system, it will add record here, also it can send email to email we set on the system.
Collection addresses – customer can only send from authorized addresses
The system works on prepay, customers have to pay in advance in order to use our system, if one customer is running out of balance, they won’t be able to make order.
Some other functions are in the system:
1, send/receive email.
2, timer
3,
This project will be developed afterwards, we need to add more and more courier integration like Royalmail/DHL parcel/DPD/MyHemes/FedEx etc, and lots of more functionality need to be added, we are looking for long time partner, but this is for initial work to move c# to python.
We also would like to move UI to Reactjs over typescript. Current UI design is that it is dummy, all configuration data were sent by server and UI will display according to configuration data.
The attachments are some screen shots for existing system.