- 09 Feb, 2021 21 commits
-
-
Cédric Le Ninivin authored
-
Arnaud Fontaine authored
erp5_mrp: Copy price_currency to Manufacturing Execution and Production Packing List (PSA specific?). In PSA for ME: Problem Report is created from a ME which then build a Returned IPL from scratch copying properties from the ME. After this Returned IPL is root-expanded, Real Time Inventory Accounting Rule is expanded too and requires price_currency.
-
Arnaud Fontaine authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
As a matter of fact immediateReindexObject doesn't call reindexObject on the object
-
Cédric Le Ninivin authored
buidler: Add tmp fix/workaround on movement order builder: Use periodicity to determinate start date builder mixin: Take into account supply date range before create movement builder: Hackish immediate reindex of order to work for parallel build builder: use dedicated script to evaluate min stock builder: autoPlan only if possible builder: Reference of order line is reference of resource line builder: include order delay and effective date builder: fixup add missing part for effective date builder: Tweak and fix supply builder builder: Fixup supply builder builder: immediate reindex delivery on creation builder: use _edit on delivery to only reindex modification builder: Supply builder work with period builder: Supply builder improved builder: use flow unit for min stock calculation builder: Supply Builder Fix future inventory for parts not activated yet builder: Supply builder do not create movement for resources that won't be consumed in the future
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
SimulationTool: getNextAlertInventoryDate can look for the lowest invetory inferior to the reference quantity
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Vincent Pelletier authored
The query planner does not seem to notice that we are trying to know if any row exists matching a set of dependency values, and it keeps scanning multiple row for each value - which is unproductive. So split dependency queries from (pseudo-code) WHERE <column{,s}> IN <values{, pairs}> to unions of WHERE <column{,s}> = <value{, pair}> LIMIT 1 which produces query plans which do stop immediately when finding a candidate row. On a serialization_tag query with 40 values and real-world indexations, this reduces the number of rows scanned by mariadb from 500 (<10% efficiency) to 40 (100% efficiency). The produced SQL is significantly larger (~3x, around 500kB on real-world sample data, but may vary a lot depending on value length), but if this has any effect is is more than compensated by the improved query plan efficiency.
-
- 08 Feb, 2021 3 commits
-
-
Jérome Perrin authored
See merge request !1355
-
Jérome Perrin authored
For test components, we don't use getBusinessTemplateList but define the business templates to be installed as (test) dependencies of the business template containing the test.
-
Jérome Perrin authored
update test after c3eb0b30 , because non editable editor now render HTML
-
- 05 Feb, 2021 3 commits
-
-
Julien Muchembled authored
See merge request nexedi/erp5!957
-
Georgios Dagkakis authored
See merge request nexedi/erp5!1353
-
Georgios Dagkakis authored
currently with a test that tests document_connection
-
- 04 Feb, 2021 6 commits
-
-
Romain Courteaud authored
Ensure float/integer field can align right on the listbox See nexedi/erp5@cfbc621b
-
Georgios Dagkakis authored
This was removed from products in previous commits
-
Jérome Perrin authored
Nowadays instead of creating many portal types, we use `use` category to separate different types of movements, so it makes sense to filter by use, the same way that we already were able to filter by portal type.
-
Jérome Perrin authored
Let's be consistent and use the default size.
-
Jérome Perrin authored
-
Jérome Perrin authored
When `Form.proxifyField` is used to make a proxy field from a field which has only a TALES and no value, it creates a proxy field with inconsistent internal data structures where `has_value` method does not work as expected. As a consequence, proxy fields to list fields are often broken in the ods/odt rendering. Here is a scenario to reproduce the problem: * add `Base_viewDummyFieldLibrary` ERP5 Form * add a `LinesField`, with id `your_test_base_field`. Change `size` to 1 (not really required but I did this in screenshots here) * add another `LinesField`, with id `your_test_field` and in this field: * set a `default` (`2`) in values, it's only needed to visualise the problem in ods style: ![set default and no items](/uploads/0cb9e229b0ca6761bb15f3d8845ea3f8/image.png) * set `items` in TALES (`python: [('one', '1'), ('two', '2')]`) , this will be the problem ![set items in TALES](/uploads/93d90f57e15afdcca60324675b59086a/image.png) * So far, when this is rendered as ODS, everything is fine: ![ODS before](/uploads/ce387cd7a5146585104470bf099f890b/image.png) this is also what we see in html style view: ![html before](/uploads/650330951ed286576f8366bbd5c44139/image.png) * use the proxify action, to make `your_test_field` be a proxy field to `your_test_base_field` ![proxify action](/uploads/9ff7b29141ce7f170f340c842fd76830/image.png) * result of proxify action looks good, both for values: ![values after proxify](/uploads/a9f7df3cd2d0af1e036aeff352624760/image.png) and for TALES: ![TALES after proxify](/uploads/aeaaa45cc9e91e9327781d85ec1efd57/image.png) * but after this rendering the form with ODS becomes broken: ![ODS after proxify](/uploads/d4e7be3251c596de35333526d4f6277a/image.png) even though it looks fine with html views. `erp5_ods_style` knows how to render list fields and it uses the "display" (two) and not the "value" (2), this is done [here](https://lab.nexedi.com/nexedi/erp5/blob/451ce4137dc1d006bc2cd155535523d51a928150/bt5/erp5_ods_style/SkinTemplateItem/portal_skins/erp5_ods_style/field_ods_macro.zpt#L60) with a check depending on `field.has_value("items")`. `has_value` is implemented like [this](https://lab.nexedi.com/nexedi/erp5/blob/451ce4137dc1d006bc2cd155535523d51a928150/product/ERP5Form/ProxyField.py#L598-611) for proxy fields: ```python def has_value(self, id): """ Return true if the field defines such a value. """ result = None if (id in self.widget.property_names) or \ (not self.is_delegated(id)): result = ZMIField.has_value(self, id) else: proxy_field = self.getTemplateField() if proxy_field is not None: result = proxy_field.has_value(id) return result ``` and like [this](https://lab.nexedi.com/nexedi/erp5/blob/451ce4137dc1d006bc2cd155535523d51a928150/product/Formulator/Field.py#L80-86) for traditional fields: ```python def has_value(self, id): """Return true if the field defines such a value. """ if self.values.has_key(id) or self.form.has_field(id): return 1 else: return 0 ``` when the value is defined on the proxy field and not delegated to template field, the condition is `self.values.has_key(id)`. But `Form.proxifyField` when transforming a traditional field in a proxy field does not keep the `id` in `self.values` if it's only needed in `self.tales`. This is the root cause of this problem, if we inspect the field, it is something like this: ``` (Pdb) self <ProxyField at /erp5/portal_skins/custom/Base_viewDummyFieldLibrary/your_test_field> (Pdb) pp self.tales {'field_id': '', 'form_id': '', 'items': <Products.Formulator.TALESField.TALESMethod object at 0x7ffa705c7450 oid 0x572626 in <Connection at 7ffa42c1a610>>} (Pdb) pp self.values {'default': '2', 'field_id': 'your_test_base_field', 'form_id': 'Base_viewDummyFieldLibrary', 'title': 'Test Field'} (Pdb) self.has_value('items') 0 (Pdb) ``` If we edit the proxy field, it will repair itself, because the proxy field edit method maintain `self.tales` and `self.values` consistent, but this is not the case with`Form.proxifyField`, which mutate directly `.tales` and `.values` and can make them have different keys - which is not supposed to happen. The problem is that most of the proxy fields we have have been generated by `Form.proxifyField`, so for most of our fields the XML data of business template has this inconsistency. We could have took the easy way and make change `ProxyField.has_value` to understand this case, but it's probably better to fix the data. `erp5_hal_json` also uses `field.has_value` in some places, so it's better to fix at field level and not to address this in `erp5_ods_style` and `erp5_odt_style`. These changes: - add a little more test coverage for `ProxyField.has_value` ( at first I thought the problem was only in `has_value`) - Fix `Form.proxifyField` - add a `ProxyField.checkConsistency` to check that `.values` and `.tales` are in sync - or more exactly that all entries from `.tales` are also in `.values`, because this is what cause the problem with `has_value`. - re-export all proxy fields after cleaning up their `.values` and `.tales`, using `checkConsistency(fixit=True)` on all proxy fields. See merge request nexedi/erp5!1352
-
- 03 Feb, 2021 2 commits
-
-
Kazuhiko Shiozaki authored
-
Romain Courteaud authored
Try to support displaying web js site from google cache, which can not access original gadget, due to cross origin ajax query forbidden. Display original content instead and load the default CSS in such case.
-
- 02 Feb, 2021 5 commits
-
-
Romain Courteaud authored
-
Romain Courteaud authored
-
Romain Courteaud authored
Most ERP5 web sites use a global form wrapping the content. Modify the html viewer to not drop this content.
-
Julien Muchembled authored
-
Aurel authored
See commit 12e4cc8b. File._setFile does not support that 'data' is a bytes object: it crashes if there are already data stored on the object. test_PUT_on_web_page (erp5_dms:testWebDavSupport) is changed to cover this case and the caller of File._edit is fixed to make that 'file' is always a file-like object. File._setFile is also optimized to avoid reading data for nothing if the document has no data.
-