|
@ -0,0 +1,47 @@ |
|
|
|
|
|
# Copyright 2019 Coop IT Easy SCRL fs |
|
|
|
|
|
# Robin Keunen <robin@coopiteasy.be> |
|
|
|
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). |
|
|
|
|
|
|
|
|
|
|
|
from openerp import models, fields, api |
|
|
|
|
|
import logging |
|
|
|
|
|
_logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProcurementOrder(models.Model): |
|
|
|
|
|
_inherit = "procurement.order" |
|
|
|
|
|
|
|
|
|
|
|
@api.model |
|
|
|
|
|
def cron_cleanup_procurement_order(self): |
|
|
|
|
|
running_procurement = self.env["procurement.order"].search( |
|
|
|
|
|
[("state", "=", "running")] |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
# checks if procurement order is done |
|
|
|
|
|
# -> if all moves are 'done' or 'cancel' |
|
|
|
|
|
_logger.info("check procurements in running state.") |
|
|
|
|
|
running_procurement.check() |
|
|
|
|
|
|
|
|
|
|
|
# in remaining procurement, cancel those with no procurement order |
|
|
|
|
|
unlinked_procurement = self.env["procurement.order"].search( |
|
|
|
|
|
[("state", "=", "running"), |
|
|
|
|
|
("purchase_line_id", "=", False)] |
|
|
|
|
|
) |
|
|
|
|
|
_logger.info("cancelling %s procurement unlinked from PO." % len(unlinked_procurement)) |
|
|
|
|
|
unlinked_procurement.cancel() |
|
|
|
|
|
|
|
|
|
|
|
# in remaining procurement, delete those from 'done' purchase order |
|
|
|
|
|
procurement_linked_to_done_PO = self.env["procurement.order"].search( |
|
|
|
|
|
[("state", "=", "running"), |
|
|
|
|
|
("purchase_line_id", "!=", False), |
|
|
|
|
|
("purchase_line_id.order_id.state", "=", "done")] |
|
|
|
|
|
) |
|
|
|
|
|
_logger.info("set %s procurement to done (linked to done PO)" % len(procurement_linked_to_done_PO)) |
|
|
|
|
|
procurement_linked_to_done_PO.write({"state": "done"}) |
|
|
|
|
|
|
|
|
|
|
|
# cancel procurement order from exceptions |
|
|
|
|
|
exception_procurement = self.env["procurement.order"].search( |
|
|
|
|
|
[("state", "=", "exception"), |
|
|
|
|
|
("purchase_line_id", "=", False)] |
|
|
|
|
|
) |
|
|
|
|
|
_logger.info("cancelling %s procurement in exception" % len(exception_procurement)) |
|
|
|
|
|
exception_procurement.cancel() |