Changes 2019 in Lino XL

2019-05-07

Released Lino XL 19.5.0 to PyPI.

Removed the changed handler for lino_xl.lib.cal.Event.end_time because it was irritating.

Released Lino XL 19.5.1 to PyPI.

Minor changes in lino_xl.lib.cal: The new calendar views are now visible for all applications (no longer only presto). The required_roles for the new calendar views were not yet set as it should. In general you must be lino_xl.lib.office.OfficeUser or lino_xl.lib.office.OfficeOperator (or both). Note that avanti overrides the required_roles of lino_xl.lib.cal.CalendarView because they have different rules: only users who may see client names may see the calendar. The default calendar view is now monthly instead of weekly. Restored Event.__str__() from previous version. Renamed some classes (e.g. “CalView” became “CalendarView”).

2019-05-06

New field invoicing.Plan.min_date can be used to specify a start date.

lino_xl.lib.invoicing now injects two fields invoicing_min_date and invoicing_max_date to the voucher_model. These are set for every generated invoice to those specified in the invoicing plan. They can be printed on the invoice so the customer sees the invoiced period.

Fixed a bug in VoucherTypes.get_for_model which caused it to simply return the first possible candidate. But it is possible to have two voucher types which use the same model. It is now an error to call VoucherTypes.get_for_model (or VoucherTypes.get_for_table) with a model (or a table) for which we don’t have a unique voucher type.

2019-05-03

The new calendar view seems ready for a first presentation. Congratulations to Tonis and Hamza who implemented this mostly without any assistance by Luc.

Quite some changes in the lino_xl.lib.healthcare plugin. This plugin is in proof-of-concept phase and not yet used in any production site.

2019-05-02

  • Lino now handles topics with an empty reference more elegantly lino_xl.lib.topics.Topic with empty ref field.

  • Orders are now printable.

2019-05-01

Changes in lino_xl.lib.invoicing: Added a new model Area to be configured by the site admin via Configure ‣ Sales ‣ Invoicing areas. New field Plan.area. Removed field Plan.journal (which is replaced by Area.journal). Removed the StartInvoicingForJournal action which anyway wasn’t used by anybody.

The detail_layout of lino_xl.lib.ledger.Journals is now specified as a string. Used by lino_presto.lib.ledger which overrides the class.

2019-04-22

lino_xl.lib.orders no longer stores the room per order but expects a field room per journal. Order items and Workers of an order are now deleted in cascade with the order.

2019-04-17

Fixed order of the lino_xl.lib.cal.Events table. (#2969) :

A few modifications for Lino Noi lino_xl.lib.tickets: Renamed state “Started” to “Working”. lino_xl.lib.tickets had ‘lino_noi.lib.noi’ in needed_plugins. Bullshit. Removed. Renamed TicketsNeedingFeedback to TicketsNeedingMyFeedback. And the labels of the two feedback tables are now more similar to the internal $

2019-04-15

The new lino_xl.lib.cal.DailyView table shows a basic calendar navigator. Looks promising, though there is more to do. For example we also need a WeeklyView and a MonthlyView. They will share the same navigator. This change requires the newest version of Lino as well. The table is currently visible only in Lino Presto.

2019-04-11

Override the visible text for the lino_xl.lib.vat.VatAccountInvoice.your_ref field for the purchase invoice. And add this field to the grid panel.

Released Lino XL 19.4.0 to PyPI.

2019-04-10

The lino_xl.lib.orders.Order.room field is no longer nullable.

When adding the workers of an order as guests of a calendar entry, Lino no longer sorts them by name. This behaviour came from lino_xl.lib.courses where it is useful, but the workers of an order should remain in their natural order.

2019-04-09

New property lino_xl.lib.vat.VatRegime.needs_vat_id. The chooser for lino_xl.lib.contacts.Partner.vat_regime now also depends on whether the partner has a VAT id or not. The choicelist of the vat_regime field of a voucher wasn’t yet filtered. New function lino_xl.lib.vat.get_vat_regime_choices() used by both choosers. The lino_xl.lib.vat.VatRegimes table now shows all these properties.

Changes in lino_xl.lib.eevat : removed regime “Private person (reduced)”. The regime “Private person” can now be used for any area. Selling to private persons in other countries was not yet allowed.

In lino_xl.lib.vat I changed declaration_plugins to declaration_plugin because I realized that you can have only one declaration plugin.

New config setting eu_country_codes, and the list is now complete (at least at the moment of writing this).

lino_xl.lib.sepa.Payable now gives a more comprehensible warning “No trade type for {}” when the trade type for the voucher is undefined.

I reviewed the demo fixture of lino_xl.lib.contacts. It has become more readable. It no longer creates cities which don’t exist (and instead omits partners in these cities). I removed München and Kelmis because these are difficult to lookup because their name varies with the languages used on the site. Each contact now has at least a city.

The demo fixture for lino_xl.lib.vat now sets fictive VAT numbers for each company.

Minor changes in the ordering of menu commands.

New property lino_xl.lib.vat.VatColumn.common_account and a new data checker to verify that every VAT column has an account configured if it requires one.

2019-04-03

Invoice generators have a new attribute default_invoiceable_qty whose default value is 1 (as it was until now, but now we can change the hard-coded default value per application).

New field lino_xl.lib.cal.EventType.default_duration per calendar entry type. If a calendar entry has a type (event_type) and if that type has a default duration, Lino will change the end_time of an entry when the start_date is changed (and the start_time when the end_date)

New field lino_xl.lib.cal.EventType.default_duration. If a calendar entry has a type (event_type) and if that type has a default duration (EventTypedefault_duration), Lino will change the end_time of an entry when the start_date is changed.

The lino_xl.lib.products plugin adds one menu entry per product type (lino_xl.lib.products.ProductTypes). When doing this, until now, it used the label of the lino_xl.lib.products.ProductType.table_name, now it uses the lino_xl.lib.products.ProductType.text.

The (description) of an order item is now a single-line CharField (not a multi-line RichTextField)

2019-03-28

Limit the choices of Partner.vat_regime depending on the Partner.country and the available lino_xl.lib.vat.VatRules. (#2924)

Changes in lino_xl.lib.orders and lino_xl.lib.cal for #2776:

  • lino_xl.lib.orders.Order.project and lino_xl.lib.orders.Order.invoice_recipient were missing in OrderDetail.

  • lino_xl.lib.orders.Order.update_all_guests caused a UNIQUE error because the workers were being suggested twice.

  • Optimized the layout of lino_xl.lib.cal.EventDetail

  • When a user manually creates an event on a controller (lino.modlib.gfks.Controllable), then Lino now also calls lino_xl.lib.cal.RecurrenceSet.before_auto_event_save() and lino_xl.lib.cal.EventGenerator.auto_cal_event_type() (if the controller is an instance of these)

  • The Explorer menu now shows the lino_xl.lib.products.PriceFactors.

2019-03-27 (v19.3.3 and v19.3.4)

Minor changes in lino_xl.lib.eevat: VAT rate 20% (not 21%). Removed regime “Delay in collection”.

Released Lino XL 19.3.3 and 19.3.4 to PyPI. In 19.3.3 lino_xl.lib.eevat failed.

2019-03-19

Released Lino XL 19.3.2 to PyPI.

2019-03-18

  • New config setting lino_xl.lib.vat.Plugin.declaration_plugins.

2019-03-17

  • Added a new plugin lino_xl.lib.eevat. This is a quickly adapted copy of bevat where we just removed the regimes that make no sense in Estonia. The declaration itself will need more work.

2019-03-16

2019-03-15

2019-03-11 (v 19.3.1)

Moved read_card_data_from_file() out of load_card_data(). This is just an internal change used for writing test cases.

Released XL 19.3.1 to PyPI.

2019-03-07 (v 19.3.0)

Released XL 19.3.0 to PyPI.

2019-03-04

Add new action lino_xl.lib.ledger.Voucher.changing_state() to the lino_xl.lib.ledger.Voucher. This action changes the invoice between the two Registered and Draft states. This action can be trigger using the Ctrl+X keyboard shortcut. It is defined in the lino_xl.lib.ledger.ui.Vouchers.get_actions_hotkeys() .

2019-02-27

Courses with a Course.max_date before today are now longer available as choices when creating a new enrolment. As it was already before for Course.enrolments_until

2019-02-25

Fixed #2811 (UnicodeError when re-reading a beid card where the diff contained non-ascii chars).

2019-02-20

It is now possible to easily redefine the detail layout for lino_xl.lib.cal.Rooms by overriding lino_xl.lib.cal.RoomDetail

2019-02-13

lino_xl.lib.ledger.Voucher.get_wanted_movements() now has a default implementation which returns no movements.

2019-02-12

More changes in the lino_xl.lib.orders plugin which is still work in progress for Lino Presto.

2019-02-09

Released Lino XL 19.2.0 to PyPI.

2019-02-08

Changes in lino_xl.lib.vat and lino_xl.lib.ledger to use the new “volumes” feature (library uploads). For #2826.

Concretely:

  • The detail of a lino_xl.lib.vat.VatAccountInvoice now shows the UploadsByController slave table.

    But what if an application wants to use lino_xl.lib.vat without lino.modlib.uploads? e.g. Lino Tera. Quick fix : add plugins also to these applications.

    And lino_xl.lib.vat.VatAccountInvoice should implement this method by asking the journal. New field lino_xl.lib.ledger.Journal.uploads_volume.

  • Every voucher is now potentially an upload controller: ledger.Voucher inherits from UploadController.

    Added a new field lino_xl.lib.ledger.Journal.uploads_volume, and the UploadController.get_uploads_volume() for a voucher returns this.

2019-02-03

In lino_xl.lib.beid we moved some functionality from BeIdCardHolder into a separate new mixin SSIN which can be used also when the plugin is not installed. Existing applications don’t need to adapt. Converted docstrings to prosa docs.

More changes in the lino_xl.lib.orders plugin which is still work in progress.

2019-01-31

In lino_xl.lib.products we now have a new model PriceRule and a new choicelist PriceFactors (taken from lino_tera.lib.courses). For Lino Tera this means a minor data migration: change “courses.PriceRule” to “products.PriceRule” in the restore.py field.

We have a new plugin lino_xl.lib.orders that is being developed for Lino Presto. Not yet stable.

2019-01-24

The field lino_xl.lib.contacts.Role.type had a verbose name “Role” which was useless and irritating because “Function” is clear enough and the same word as in Configure ‣ Contacts ‣ Functions.

Optimized the detail layout of lino_xl.lib.ledger.Journal and the library base class for partner details (lino_xl.lib.contacts.PartnerDetail).

Fixed #2813 (the summary of lino_xl.lib.blogs.LatestEntries inserted an additional line break when rendering links to database objects using a memo command. Also the German translation did not correctly show date and author of a blog entry in this summary.

2019-01-22

Fixed a little bug in lino_xl.lib.vat : when you created an invoice in a journal with edit_totals and leave the total field empty, Lino said “TypeError: unsupported operand type(s) for -: ‘NoneType’ and ‘Decimal’”

Added intersphinx_urls, srcref_url and doc_trees settings to the main module so that other doctrees can link to the docs.

Released version 19.1.1

2019-01-21

The change notes for Lino XL docs are now separated from those of Lino core docs.

New plugin attribute lino_xl.lib.tim2lino.Plugin.timloader_kwargs to be used e.g. as follows:

def setup_plugins(self):
    self.plugins.tim2lino.configure(
        languages='de fr',
        timloader_kwargs=dict(etat_registered="C"))
    super(Site, self).setup_plugins()

This new feature is not tested because the reason was just a missing “u” prefix.

2019-01-18

The categories (lino_xl.lib.products.ProductCat) now have a field product_type (i.e. all applications that depend on it need to migrate). This is because I realized that categories are not useless. The difference between the “category” and the “type” of a product is that end-users can edit the former while the latter are to be provided by the application developer.

I fixed a subtle bug in the lino_xl.lib.ledger.Plugin.setup_main_menu() method: the Accounting menu came before the Sales menu because a menu for “ledger” was being created before looping over the journal groups. I removed an unused plugin attribute intrusive_menu (whether a journal group is “intrusive” or not now depends on its menu_group).

2019-01-17

The ref_max_length for lino_xl.lib.ledger.Journal is now 5 instead of the default 40.

Printing invoices was broken (since we changed the default build method from appy to weasy). It said “No template found for sales/VatProductInvoice/default.weasy.html, excerpts/default.weasy.html”. We created a new template sales/VatProductInvoice/default.weasy.html (in the config directory of lino_xl.lib.sales).

2019-01-04

We released XL 19.1.0

The fields addr2 and prefix are now mostly hidden in forms. We consider them obsolete. lino_xl.lib.contacts.