Giter VIP home page Giter VIP logo

rafaelurben / django-kmuhelper Goto Github PK

View Code? Open in Web Editor NEW
14.0 2.0 2.0 5.55 MB

A webapp with Swiss QR-Invoices for Swiss SME // Eine Webapp mit QR-Rechnungen für Schweizer KMU

Home Page: https://www.rafaelurben.ch/django-kmuhelper/

License: GNU General Public License v3.0

Python 81.53% HTML 16.62% CSS 1.50% JavaScript 0.35%
qr-invoice switzerland django django-application webapp python kmu german deutsch django-app

django-kmuhelper's Introduction

KMUHelper

(Click here for an English version.)

PyPI PyPI - Django Version PyPI - Python Version PyPI - License

GitHub code size in bytes GitHub lines of code GitHub issues GitHub pull requests

CodeFactor

Der KMUHelper ist, wie der Name schon sagt, ein Helfer für KMU - hauptsächlich jedoch für Schweizer, da der Hauptgrund für die Entwicklung dieser Djangoapp die neue Schweizer QR-Rechnung ist.

Diverse Infos über den KMUHelper gibt's auf der Webseite sowie in der Dokumentation

Änderungen und Feedback

Die neusten Änderungen können im Änderungsprotokoll angesehen werden.

Geplante Änderungen und aktuelle Programmierfortschritte können im Projekt-Board gefunden werden.

Installation

Siehe hier.

Sprache und Übersetzungen

Der KMUHelper selbst ist aktuell nur in Deutsch verfügbar. Eine übersetzte Version ist in Arbeit.

Die Rechnungen können schon jetzt in Deutsch, Englisch, Französisch und Italienisch erstellt werden.

django-kmuhelper's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar imgbotapp avatar rafaelurben avatar renovate-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

t4d-gmbh crinulix

django-kmuhelper's Issues

[Update] Django 3.2

  • Remove default_app_config
  • Themes (replace old theming)
  • Also update install_requires for major dependencies
  • Fix errors

Redesign & restructure

Custom page designs for the following pages:

  • admin/kmuhelper -> design like home
  • kmuhelper/emails -> design like home

Additional changes:

  • Add settings button to home page
  • App improvements
    • Rename v1 and v2 to mobile/desktop
    • Dark background
    • Remove spinner
    • Rename app models
  • Move some stuff info subfilders

[Paymentimport] Connect orders to payments

Instead of just marking orders as paid, connect them to a PaymentImportEntry. Also set bezahlt_am at the same time.

  • Allow change
  • Add description/title field
  • Automatically assign perfect matches
  • (?) Better interactivity: After the payment has been connected, show it in a separate category on the process page.

[BUG] Wrong date on invoice

  • Date in qr-invoice is NOT the date when the order was shipped! (additional information)
  • Current date in not visible on the invoice!

[Feature] Versendet/Bezahlt mit Datumsangabe

Bestellungen sollten Felder erhalten, um das Versanddatum sowie das Bezahldatum speichern zu können.

Entsprechende Angaben sollten verwendet werden, um bei einem Kunden anzuzeigen, wie lange er gebraucht hat, um vergangene Bestellungen zu bezahlen.

[Feature] Paymentimport: Better Interface

Make the interface INTERACTIVE!

Interface:

  1. Template
    • Breadcrumbs
    • Useful links
      1. Unpaid orders filter
      2. Paid orders filter
    • Format
      • Categorized blocks
      • 2 column layout
  2. Entry grouping
    • Unknown
    • Not found
    • Ready to mark as paid
    • Already marked as paid:
      • Group by customer
      • Also show other unpaid orders from this customer
    • Critical orders:
      • Group by customer
      • Also show other unpaid orders from this customer
  3. Flow
    • Load process.html template
    • AJAX Buttons to mark as paid

[Dependencies] Support Django 5.0

https://docs.djangoproject.com/en/5.0/releases/5.0/#miscellaneous

Possibly important changes:

  • AdminSite.site_header is now rendered in a ´div´ tag instead of ´h1´. Screen reader users rely on heading elements for navigation within a page. Having two ´h1´ elements was confusing and the site header wasn’t helpful as it is repeated on all pages.
  • In order to improve accessibility, the admin’s main content area and header content area are now rendered in a ´main´ and ´header´ tag instead of ´div´.

<h1 id="site-name"> => <div id="site-name">

Update: Seems to work without changing. Might change later when dropping 4.2 support.

[Feature] XML-Upload

Allows to easily compare the bank export to pending invoices.

  1. Parse XML
  2. Check XML version
  3. Create a database entry for upload and M2M references for every entry
  4. Compare entries with orders

camt.054
xml parsing

[WooCommerce] Signature verification & custom page for WooCommerce setup

Security fix

Currently, webhook signature ist not being verified!

Custom WooCommerce settings page

  • Form for URL and webhook secret
  • Connection status
  • Manual
    • Link to /wp-admin/admin.php?page=wc-settings&tab=advanced&section=webhooks
    • Option to copy webhook URL
    • Content from current manual

[Fix] Permissions

Some permissions are not working as they should.

  • "KMUHelper öffnen" buttons should only be displayed if the user has any kind of kmuhelper permissions
  • Overview pages: Only display accessible tiles (-> use has_permission in template)
  • Home page: Only display tiles the currently logged in user has permissions for
  • Check if permissions to view copy to delivery and similar buttons work
  • Check if permissions to view email buttons work as they should
  • Check if permissions to view/change settings work as they should
    • Settings button should not redirect to account page
  • Check permissions required to view some admin inlines
  • Remove permissions for hidden settings

Changes to consider:

  • Custom permission for pdf generation

To investigate:

  • Permissions for proxy models cannot be distinguished in auth.user admin permission selection => remove proxy permissions?

Improve mobile experience

  • Update pagechooser responsive Design
    • icon left instead of on top on mobile
    • use nice flexbox and margins instead of "center" class
  • Set /kmuhelper/ as starting point and extend scope
  • Remove mobile app (too buggy, also use desktop app)

[Feature] E-Mail Improvements

Rewrite the entire E-Mail module

  • Add info to notes field of autogenerated emails
  • Change the title for non-online responses
  • Add a header for every E-Mail (title editable)
  • Fix error for empty data
  • Add error message for invalid templates -> DO NOT RAISE 500
  • Option to add "log" E-Mail -> Auto-add to bcc in every mail sent
  • Info message that attachments may not be very new
  • Add send/resend button

Attachment:

AttachmentManager:

  • Create new attachment via custom Manager

EMail:

TextTemplate:

  • Model with Title, Subject & Text
  • "Use template" page -> option to import email from customer

At the end:

  • Add docs
  • Add template for delivery note + tracking info

[Feature] Modern settings page

  • kmuhelper/settings-> API calls or form for settings available in the admin
  • remove old admin? add link to old admin
  • better/shorter descriptions

Fix and improve updated mobile experience

  • Theme color and manifest link not present on all pages => use a central include file
  • App page still uses old explanation at the bottom of the page => integrate in buttons or at least sort?
  • Theme color showing behind background color
  • Splash screen? here Too much work
  • Overscroll behaviour? Not possible

[Update] Bessere Kosten

Kosten nicht mehr mit Bestellungskosten verbinden und nur als Import-Vorlage verwenden.

  • Model
    • kosten: on_delete=SET_NULL
    • +fehlende Felder
  • Add-Tabellen im Admin
    1. Import von Kosten
    2. Eigene Kosten eintragen
  • View/edit-Tabelle im Admin:
    • Verknüpfung nicht mehr anzeigen
    • Volle Anpassung möglich
      • Titel, Preis, MwSt, Rabatt etc.
  • WC-Import

[Feature] Leere Zahlungskonditionen erlauben

  • Remove general default "0:30"
  • Update corresponding setting, model helptexts
  • Update FAQ documentation
  • Update model field (blank=True)
  • Handle in PDF price table generation
  • Handle in PDF QR Invoice generation

[Feature] Translations & i18n

This issue tracks the progress of translating this app:

  • Use English variable names
  • Enclose strings in translation functions
  • Use English model names
  • Enclose strings in templates in translation tags
  • (?) Change translation base language to English
  • (?) Update quantity description translation and storage (use dropdown and custom field)
  • Generate translation files (python -m django makemessages -l en,de,fr,it)
  • Translate (https://poedit.net/)

Invoice improvemements for personal/club usage

  • Custom unstructured_message -> "Zahlungszweck"
  • Display contact person name if there's no website or no uid
  • (?) Option to change "Bestellungsdatum" to something different
  • PaymentReceiver display modes: Business/Club

[Performance] Optimize SQL queries

  • Use aggregates (for e.g. count), if applicable
  • Make use of list_select_related on ModelAdmins
  • Make use of select_related and prefetch_related in custom querysets`

Double Entry

Simple double entry for basic general accounting principles adherence would be a great feature to add.

[Feature] Better stock management

To do

  • Add "infinite" flag for product stock.
    • Disable email warnings
    • Hide from App_Stock querysets
    • Exclude on stats page

Check how stock is handled in WooCommerce to keep compatibility and prepare for potential future 2-way-connection.


Current general problems

  • Slow calculations
  • Too many emails or admin messages
  • Products have no option to be stock-independent (e.g. services paid by hour/minute)
  • Stock history not reproducible

App bulk save & WC bulk import

In the app, when multiple orders are saved / marked as shipped, the stock is calculated for every order separately, which results in a lot of calculations and multiple times the same message.

In a bulk WC import, the stock is calculated for every import separately, which can result in A LOT of emails.

=> Possible solution: static method accepts queryset => aggregate functions on entire queryset

(in case of WC bulk import: queryset via id_in=[...])

Idea: Better admin display

Maybe use aggregate functions and also show incoming/outgoing?

https://books.agiliq.com/projects/django-admin-cookbook/en/latest/optimize_queries.html

Idea: Stock list

Design with 'details' element, somewhat like payment import processing page.

Categories:

  • Negative (< 0)
  • Warning (>= 0, <soll)
  • Positive (>= soll)

Alternative: Update print stylesheet for app_stock changelist.

Idea: Stock log

Separate model, which stores all changes in incoming/outgoing and current stock.

[Feature] Formular für PDF-Erstellung

Die Erstellung von PDF-Dateien soll besser von der Bestellung selbst getrennt werden, um die Bestellungsseite weniger zu überladen und um Verwirrung zu vermeiden.

Umsetzung

Unter anderem soll der Rechnungstitel sowie der Rechnungstext aus dem Bestellungen-Modell versteckt werden. Sie sollen nur noch dazu dienen, vorherige Eingaben aus dem PDF Generator zu speichern.

Ein Formular zur PDF-Erstellung soll die Eingabe der obigen Daten ermöglichen. Ein Link zum Formular soll das bisherige Dropdown-Menu ergänzen.

Zahlungserinnerung

Im selben Zug soll eine Direktvorlage für Zahlungserinnerungen erstellt werden. (Titel & Text inkl. Übersetzung; mit Erwähnung vom Rechnungsdatum). -> Zahlungskonditionen anpassen.

Geplantes PDF-Menu

  • Rechnung (Digital)
  • Rechnung (Druck)
  • Lieferschein
  • Zahlungserinnerung (Digital)
  • Zahlungserinnerung (Druck)
  • Benutzerdefiniert (Formular)

Formular

  • Rechnungstitel
  • Rechnungstext
  • Druckversion? (ohne Schnittmarker)
  • Overrides für Zahlungskonditionen (& anzeigen/ausblenden) und Rechnungsdatum?

Technisch

Die Daten des Formulars werden via search-Parameter an die PDF-Generationsseite weitergegeben.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.