Compare commits

..

1 Commits

Author SHA1 Message Date
679cac31b3 Fix: Se eliminan carpetas de instalacion 2024-08-15 11:11:23 -05:00
20 changed files with 213 additions and 511 deletions

401
.gitignore vendored
View File

@ -1,218 +1,229 @@
!*.svg # comment out if you don't need vector files
!.vscode/*.code-snippets
!.vscode/extensions.json
!.vscode/launch.json
!.vscode/settings.json
!.vscode/tasks.json
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# For a library or package, you might want to ignore these files since the code is
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# https://pdm.fming.dev/#use-with-ide
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
# in version control.
# install all needed dependencies.
# intended to run in multiple environments; otherwise, check them in:
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# Usually these files are written by a python script from a template
# and can be added to the global gitignore or merged into this file. For a more nuclear
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# before PyInstaller builds the exe, so as to inject date/other infos into it.
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
# -*- mode: gitignore; -*-
# ---> Emacs
# ---> Java
# ---> Python # ---> Python
# ---> Vim
# ---> VisualStudioCode
# .python-version
# AUCTeX auto folder
# Auto-generated tag files
# BlueJ files
# Built Visual Studio Code Extensions
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
# C extensions __pycache__/
# Celery stuff
# Compiled class file
# Cython debug symbols
# Distribution / packaging
# Django stuff:
# Environments
# Flask stuff:
# Flycheck
IPython
# Installer logs
# Jupyter Notebook
# Local History for Visual Studio Code
# Log file
# Mobile Tools for Java (J2ME)
# Org-mode
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
# Package Files #
# Persistent undo
# PyBuilder
# PyCharm
# PyInstaller
# Pyre type checker
# Rope project settings
# SageMath parsed files
# Scrapy stuff:
# Session
# Sphinx documentation
# Spyder project settings
# Swap
# Temporary
# Translations
# Unit test / coverage reports
# cask packages
# directory configuration
# elpa packages
# eshell files
# flymake-mode
# mkdocs documentation
# mypy
# network security
# pdm
# pipenv
# poetry
# projectiles files
pyenv
# pytype static type analyzer
# reftex files
# server auth directory
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
#.idea/
#Pipfile.lock
#pdm.lock
#poetry.lock
*$py.class
*.class
*.cover
*.ctxt
*.db
*.ear
*.egg
*.egg-info/
*.elc
*.jar
*.log
*.manifest
*.mo
*.nar
*.pot
*.py,cover
*.py[cod] *.py[cod]
*.rar *$py.class
*.rel *.bk
*.sage.py
/.vscode
# C extensions
*.so *.so
*.spec
*.tar.gz # Distribution / packaging
*.vsix
*.war
*.zip
*_archive
*_flymake.*
*~
.Python .Python
.\#* build/
.cache develop-eggs/
.cask/ dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
bin/
include/
wheels/
__pycache__
trytond_miac.egg-info/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script fkrom a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage .coverage
.coverage.* .coverage.*
.dir-locals.el .cache
.dmypy.json nosetests.xml
.eggs/ coverage.xml
.env *.cover
.history/ *.py,cover
.hypothesis/ .hypothesis/
.installed.cfg
.ipynb_checkpoints
.mtj.tmp/
.mypy_cache/
.netrwhist
.nox/
.org-id-locations
.pdm.toml
.projectile
.pybuilder/
.pyre/
.pytest_cache/ .pytest_cache/
.pytype/
.ropeproject # Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy .scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject .spyderproject
.spyproject .spyproject
.tox/
.venv # Rope project settings
.venv/ .ropeproject
.vscode/*
.web # mkdocs documentation
.webassets-cache /site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# ---> Emacs
# -*- mode: gitignore; -*-
*~
.~*
*#
\#*\#
/.emacs.desktop /.emacs.desktop
/.emacs.desktop.lock /.emacs.desktop.lock
/auto/ *.elc
/elpa/ auto-save-list
tramp
.\#*
# Org-mode
.org-id-locations
*_archive
# flymake-mode
*_flymake.*
# eshell files
/eshell/history /eshell/history
/eshell/lastdir /eshell/lastdir
/network-security.data
# elpa packages
/elpa/
# reftex files
*.rel
# AUCTeX auto folder
/auto/
# cask packages
.cask/
dist/
# Flycheck
flycheck_*.el
# server auth directory
/server/ /server/
/site
ENV/ # projectiles files
MANIFEST .projectile
Session.vim
Sessionx.vim # directory configuration
.dir-locals.el
# network security
/network-security.data
# ---> Vim
# Swap
[._]*.s[a-v][a-z] [._]*.s[a-v][a-z]
!*.svg # comment out if you don't need vector files
[._]*.sw[a-p] [._]*.sw[a-p]
[._]*.un~
[._]s[a-rt-v][a-z] [._]s[a-rt-v][a-z]
[._]ss[a-gi-z] [._]ss[a-gi-z]
[._]sw[a-p] [._]sw[a-p]
\#*\#
__pycache__/ # Session
__pypackages__/ Session.vim
auto-save-list Sessionx.vim
build/
celerybeat-schedule # Temporary
celerybeat.pid .netrwhist
cover/ *~
coverage.xml # Auto-generated tag files
cython_debug/ tags
db.sqlite3 # Persistent undo
db.sqlite3-journal [._]*.un~
develop-eggs/
dist/ # ---> VirtualEnv
dmypy.json # Virtualenv
docs/_build/ # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
downloads/ .Python
eggs/ [Bb]in
env.bak/ [Ii]nclude
env/ [Ll]ib
flycheck_*.el [Ll]ib64
hs_err_pid* [Ll]ocal
htmlcov/ [Ss]cripts
instance/ pyvenv.cfg
ipython_config.py .venv
lib/ pip-selfcheck.json
lib64/
local_settings.py .tdd_cache
nosetests.xml app
parts/
pip-delete-this-directory.txt
pip-log.txt
profile_default/
replay_pid*
sdist/
share/python-wheels/
tags
target/
tramp
var/
venv.bak/
wheels/

Binary file not shown.

View File

@ -1,18 +0,0 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool
from . import sale
__all__ = ['register']
def register():
Pool.register(
sale.Sale,
sale.SaleLine,
sale.SaleLineDeleted,
module='sale_line_delete_log', type_='model')
Pool.register(
module='sale_line_delete_log', type_='wizard')
Pool.register(
module='sale_line_delete_log', type_='report')

View File

@ -1,2 +0,0 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

View File

@ -1,185 +0,0 @@
=============================
Sale Line Delete Log Scenario
=============================
Imports::
>>> from decimal import Decimal
>>> from proteus import Model, Wizard
>>> from trytond.tests.tools import activate_modules
>>> from trytond.modules.company.tests.tools import create_company, get_company
>>> from trytond.modules.account.tests.tools import (
... create_chart, create_fiscalyear, create_tax, get_accounts)
>>> from trytond.modules.account_invoice.tests.tools import (
... create_payment_term, set_fiscalyear_invoice_sequences)
>>> import datetime as dt
>>> today = dt.date.today()
>>> from trytond.tests.tools import set_user
>>> from trytond.modules.sale_line_delete_log.sale import SaleLineDeleted
Activate modules::
>>> config = activate_modules('sale_line_delete_log')
Initial data::
>>> User = Model.get('res.user')
>>> Party = Model.get('party.party')
>>> Employee = Model.get('company.employee')
>>> Journal = Model.get('account.journal')
>>> PaymentMethod = Model.get('account.invoice.payment.method')
>>> Party = Model.get('party.party')
>>> ProductUom = Model.get('product.uom')
>>> ProductTemplate = Model.get('product.template')
>>> Sale = Model.get('sale.sale')
>>> SaleLine = Model.get('sale.line')
Create company::
>>> _ = create_company()
>>> company = get_company()
Set employee::
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> user = User(config.user)
>>> user.employees.append(employee)
>>> user.employee = employee
>>> user.save()
>>> set_user(user.id)
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(create_fiscalyear(company, today))
>>> fiscalyear.click('create_period')
Create chart of accounts::
>>> _ = create_chart(company)
>>> accounts = get_accounts(company)
>>> revenue = accounts['revenue']
>>> expense = accounts['expense']
>>> cash = accounts['cash']
>>> cash_journal, = Journal.find([('type', '=', 'cash')])
>>> cash_journal.save()
>>> payment_method = PaymentMethod()
>>> payment_method.name = 'Cash'
>>> payment_method.journal = cash_journal
>>> payment_method.credit_account = cash
>>> payment_method.debit_account = cash
>>> payment_method.save()
Create tax::
>>> tax = create_tax(Decimal('.10'))
>>> tax.save()
Create parties::
>>> supplier = Party(name='Supplier')
>>> supplier.save()
>>> customer = Party(name='Customer')
>>> customer.save()
Create account categories::
>>> ProductCategory = Model.get('product.category')
>>> account_category = ProductCategory(name="Account Category")
>>> account_category.accounting = True
>>> account_category.account_expense = expense
>>> account_category.account_revenue = revenue
>>> account_category.save()
>>> account_category_tax, = account_category.duplicate()
>>> account_category_tax.customer_taxes.append(tax)
>>> account_category_tax.save()
Create product::
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
>>> template = ProductTemplate()
>>> template.name = 'product'
>>> template.default_uom = unit
>>> template.type = 'goods'
>>> template.salable = True
>>> template.list_price = Decimal('10')
>>> template.account_category = account_category_tax
>>> template.save()
>>> product, = template.products
>>> template = ProductTemplate()
>>> template.name = 'service'
>>> template.default_uom = unit
>>> template.type = 'service'
>>> template.salable = True
>>> template.list_price = Decimal('30')
>>> template.account_category = account_category
>>> template.save()
>>> service, = template.products
Create payment term::
>>> payment_term = create_payment_term()
>>> payment_term.save()
Create an Inventory::
>>> Inventory = Model.get('stock.inventory')
>>> Location = Model.get('stock.location')
>>> storage, = Location.find([
... ('code', '=', 'STO'),
... ])
>>> inventory = Inventory()
>>> inventory.location = storage
>>> inventory_line = inventory.lines.new(product=product)
>>> inventory_line.quantity = 100.0
>>> inventory_line.expected_quantity = 0.0
>>> inventory.click('confirm')
>>> inventory.state
'done'
Sale 5 products::
>>> sale = Sale()
>>> sale.party = customer
>>> sale.payment_term = payment_term
>>> sale.invoice_method = 'order'
>>> sale_line = SaleLine()
>>> sale.lines.append(sale_line)
>>> sale_line.product = product
>>> sale_line.quantity = 2.0
>>> sale_line = SaleLine()
>>> sale.lines.append(sale_line)
>>> sale_line.type = 'comment'
>>> sale_line.description = 'Comment'
>>> sale_line = SaleLine()
>>> sale.lines.append(sale_line)
>>> sale_line.product = product
>>> sale_line.quantity = 3.0
>>> sale.save()
>>> len(sale.lines)
3
>>> sale.untaxed_amount, sale.tax_amount, sale.total_amount
(Decimal('50.00'), Decimal('5.00'), Decimal('55.00'))
Delete a sale line::
>>> sale.lines[0].delete()
>>> sale.save()
>>> len(sale.lines)
2
>>> sale.reload()
>>> sale.delete_lines[0]
proteus.Model.get('sale.line_deleted')(1)
>>> assert isinstance(sale.delete_lines[0], Model.get('sale.line_deleted')), "it's not instance SaleLineDeleted"

View File

@ -1,11 +0,0 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import ModuleTestCase
class SaleLineDeleteLogTestCase(ModuleTestCase):
"Test Sale Line Delete Log module"
module = 'sale_line_delete_log'
del ModuleTestCase

View File

@ -1,8 +0,0 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import load_doc_tests
def load_tests(*args, **kwargs):
return load_doc_tests(__name__, __file__, *args, **kwargs)

View File

@ -1,5 +1,6 @@
from trytond.pool import PoolMeta, Pool from trytond.pool import PoolMeta, Pool
from trytond.model import fields, ModelSQL, ModelView from trytond.model import fields, ModelSQL, ModelView
from trytond.pyson import Eval
from trytond.transaction import Transaction from trytond.transaction import Transaction
@ -11,7 +12,7 @@ class Sale(metaclass=PoolMeta):
'sale', 'sale',
"Delete lines", "Delete lines",
states={ states={
'readonly': True 'readonly': Eval('state') != 'draft'
} }
) )

View File

@ -1,11 +1,5 @@
<tryton> <tryton>
<data> <data>
<record model="ir.ui.view" id="sale_view_form">
<field name="model">sale.sale</field>
<field name="inherit" ref="sale.sale_view_form"/>
<field name="name">sale_form</field>
</record>
<record model="ir.ui.view" id="sale_line_deleted_view_form"> <record model="ir.ui.view" id="sale_line_deleted_view_form">
<field name="model">sale.line_deleted</field> <field name="model">sale.line_deleted</field>
<field name="type">form</field> <field name="type">form</field>

View File

@ -1,59 +0,0 @@
Metadata-Version: 2.1
Name: trytondo-sale-line-delete-log
Version: 6.8.0
Home-page: http://www.tryton.org/
Download-URL: http://downloads.tryton.org/6.8/
Author: Tryton
Author-email: foundation@tryton.org
License: GPL-3
Project-URL: Bug Tracker, https://bugs.tryton.org/
Project-URL: Documentation, https://docs.tryton.org/latest/modules-sale-line-delete-log
Project-URL: Forum, https://www.tryton.org/forum
Project-URL: Source Code, https://code.tryton.org/tryton
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Plugins
Classifier: Framework :: Tryton
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Legal Industry
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: Bulgarian
Classifier: Natural Language :: Catalan
Classifier: Natural Language :: Chinese (Simplified)
Classifier: Natural Language :: Czech
Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
Classifier: Natural Language :: Finnish
Classifier: Natural Language :: French
Classifier: Natural Language :: German
Classifier: Natural Language :: Hungarian
Classifier: Natural Language :: Indonesian
Classifier: Natural Language :: Italian
Classifier: Natural Language :: Persian
Classifier: Natural Language :: Polish
Classifier: Natural Language :: Portuguese (Brazilian)
Classifier: Natural Language :: Romanian
Classifier: Natural Language :: Russian
Classifier: Natural Language :: Slovenian
Classifier: Natural Language :: Spanish
Classifier: Natural Language :: Turkish
Classifier: Natural Language :: Ukrainian
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Office/Business
Requires-Python: >=3.8
Provides-Extra: test
License-File: LICENSE
###########################
Sale Line Delete Log Module
###########################
.. to remove, see https://www.tryton.org/develop/guidelines/documentation#index.rst

View File

@ -1,2 +0,0 @@
[trytond.modules]
sale_line_delete_log = trytond.modules.sale_line_delete_log

View File

@ -1,7 +0,0 @@
trytond_account<6.9,>=6.8
trytond_company<6.9,>=6.8
trytond_sale<6.9,>=6.8
trytond<6.9,>=6.8
[test]
proteus<6.9,>=6.8

View File

@ -1 +0,0 @@
trytond

View File

@ -1,8 +0,0 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//field[@name='lines']" position="after">
<field name="delete_lines" colspan="4"/>
</xpath>
</data>

View File

@ -3,10 +3,10 @@
this repository contains the full copyright notices and license terms. --> this repository contains the full copyright notices and license terms. -->
<tree> <tree>
<field name="user"/> <field name="sale"/>
<field name="sale_date"/>
<field name="product"/>
<field name="quantity"/> <field name="quantity"/>
<field name="unit"/> <field name="unit"/>
<field name="sale"/> <field name="product"/>
<field name="sale_date"/>
<field name="user"/>
</tree> </tree>