Example #1
0
    def _update_view(self):
        self._update_list_aware_widgets(len(self.results))
        selection = self.results.get_selected_rows()
        can_edit = one_selected = len(selection) == 1
        can_finish = False
        if selection:
            can_send_supplier = all(order.status == PurchaseOrder.ORDER_PENDING
                                    for order in selection)
            can_cancel = all(order_view.purchase.can_cancel()
                             for order_view in selection)
        else:
            can_send_supplier = False
            can_cancel = False

        if one_selected:
            can_edit = (selection[0].status == PurchaseOrder.ORDER_PENDING
                        or selection[0].status == PurchaseOrder.ORDER_QUOTING)
            can_finish = (selection[0].status == PurchaseOrder.ORDER_CONFIRMED
                          and selection[0].received_quantity > 0)

        self.Cancel.set_sensitive(can_cancel)
        self.Edit.set_sensitive(can_edit)
        self.Confirm.set_sensitive(can_send_supplier)
        self.Details.set_sensitive(one_selected)
        self.Finish.set_sensitive(can_finish)
Example #2
0
    def _update_view(self):
        self._update_list_aware_widgets(len(self.results))
        selection = self.results.get_selected_rows()
        can_edit = one_selected = len(selection) == 1
        can_finish = False
        if selection:
            can_send_supplier = all(
                order.status == PurchaseOrder.ORDER_PENDING
                for order in selection)
            can_cancel = all(order_view.purchase.can_cancel()
                             for order_view in selection)
        else:
            can_send_supplier = False
            can_cancel = False

        if one_selected:
            can_edit = (selection[0].status == PurchaseOrder.ORDER_PENDING or
                        selection[0].status == PurchaseOrder.ORDER_QUOTING or
                        selection[0].status == PurchaseOrder.ORDER_CONFIRMED)
            can_finish = (selection[0].status == PurchaseOrder.ORDER_CONFIRMED and
                          selection[0].received_quantity > 0)

        self.Cancel.set_sensitive(can_cancel)
        self.Edit.set_sensitive(can_edit)
        self.Confirm.set_sensitive(can_send_supplier)
        self.Details.set_sensitive(one_selected)
        self.Finish.set_sensitive(can_finish)
Example #3
0
    def _same_sale(self, payable_views):
        """Determines if a list of payable_views are in the same sale"""
        if not payable_views:
            return False

        sale = payable_views[0].sale
        if sale is None:
            return False
        return all(view.sale == sale for view in payable_views)
Example #4
0
    def _same_sale(self, payable_views):
        """Determines if a list of payable_views are in the same sale"""
        if not payable_views:
            return False

        sale = payable_views[0].sale
        if sale is None:
            return False
        return all(view.sale == sale for view in payable_views)
Example #5
0
    def _same_purchase(self, payable_views):
        """Determines if a list of payable_views are in the same purchase"""
        if not payable_views:
            return False

        purchase = payable_views[0].purchase_id
        if purchase is None:
            return False
        return all(view.purchase_id == purchase for view in payable_views)
Example #6
0
    def _same_purchase(self, payable_views):
        """Determines if a list of payable_views are in the same purchase"""
        if not payable_views:
            return False

        purchase = payable_views[0].purchase_id
        if purchase is None:
            return False
        return all(view.purchase_id == purchase for view in payable_views)
Example #7
0
    def _can_edit(self, views):
        """Determines if we can edit the selected payments
        """
        if not views:
            return False
        # Installments of renegotiated payments can not be edited.
        if views[0].group.renegotiation:
            return False

        sale_id = views[0].sale_id
        # Lonely payments are not created as sales, and it's installments
        # are edited differently.
        if not sale_id:
            return False
        can_edit = all(rv.sale_id == sale_id for rv in views)
        return can_edit
Example #8
0
    def _can_edit(self, views):
        """Determines if we can edit the selected payments
        """
        if not views:
            return False
        # Installments of renegotiated payments can not be edited.
        if views[0].group.renegotiation:
            return False

        sale_id = views[0].sale_id
        # Lonely payments are not created as sales, and it's installments
        # are edited differently.
        if not sale_id:
            return False
        can_edit = all(rv.sale_id == sale_id for rv in views)
        return can_edit
Example #9
0
    def _are_paid(self, payable_views, respect_purchase=True):
        """
        Determines if a list of payables_views are paid.
        To do so they must meet the following conditions:
          - Be in the same purchase order.
            (This will be satistied only if respect_purchase is True)
          - The payment status needs to be set to PAID
        """
        if not payable_views:
            return False

        purchase = payable_views[0].purchase_id
        if not purchase and len(payable_views) > 1:
            return False

        return all((view.purchase_id == purchase or not respect_purchase)
                   and view.is_paid() for view in payable_views)
Example #10
0
    def _are_paid(self, payable_views, respect_purchase=True):
        """
        Determines if a list of payables_views are paid.
        To do so they must meet the following conditions:
          - Be in the same purchase order.
            (This will be satistied only if respect_purchase is True)
          - The payment status needs to be set to PAID
        """
        if not payable_views:
            return False

        purchase = payable_views[0].purchase_id
        if not purchase and len(payable_views) > 1:
            return False

        return all((view.purchase_id == purchase or not respect_purchase) and
                   view.is_paid() for view in payable_views)
Example #11
0
    def _can_show_details(self, receivable_views):
        """Determines if we can show the receiving details for a list of
        receivable views.
        To do so they must meet the following conditions:
          - Be in the same sale or
          - One receiving that not belong to any sale
        """
        if not receivable_views:
            return False

        sale = receivable_views[0].sale_id
        if sale is None:
            if len(receivable_views) == 1:
                return True
            else:
                return False

        return all(view.sale_id == sale for view in receivable_views[1:])
Example #12
0
 def _cancel_order(self):
     order_views = self.results.get_selected_rows()
     assert all(ov.purchase.can_cancel() for ov in order_views)
     cancel_label = stoqlib_ngettext(_("Cancel order"),
                                     _("Cancel orders"), len(order_views))
     select_label = stoqlib_ngettext(_('The selected order will be cancelled.'),
                                     _('The selected orders will be cancelled.'),
                                     len(order_views))
     if not yesno(select_label, gtk.RESPONSE_YES,
                  cancel_label, _("Don't cancel")):
         return
     with api.new_store() as store:
         for order_view in order_views:
             order = store.fetch(order_view.purchase)
             order.cancel()
     self._update_totals()
     self.refresh()
     self.select_result(order_views)
Example #13
0
    def _can_show_details(self, receivable_views):
        """Determines if we can show the receiving details for a list of
        receivable views.
        To do so they must meet the following conditions:
          - Be in the same sale or
          - One receiving that not belong to any sale
        """
        if not receivable_views:
            return False

        sale = receivable_views[0].sale_id
        if sale is None:
            if len(receivable_views) == 1:
                return True
            else:
                return False

        return all(view.sale_id == sale for view in receivable_views[1:])
Example #14
0
 def _cancel_order(self):
     order_views = self.results.get_selected_rows()
     assert all(ov.purchase.can_cancel() for ov in order_views)
     cancel_label = stoqlib_ngettext(_("Cancel order"), _("Cancel orders"),
                                     len(order_views))
     select_label = stoqlib_ngettext(
         _('The selected order will be cancelled.'),
         _('The selected orders will be cancelled.'), len(order_views))
     if not yesno(select_label, gtk.RESPONSE_YES, cancel_label,
                  _("Don't cancel")):
         return
     with api.trans() as store:
         for order_view in order_views:
             order = store.fetch(order_view.purchase)
             order.cancel()
     self._update_totals()
     self.refresh()
     self.select_result(order_views)
Example #15
0
    def _can_renegotiate(self, receivable_views):
        """whether or not we can renegotiate this payments

        This do to much queries. Dont call inside _update_widgets to avoid
        unecessary queries. Instead, call before the user actually tries to
        renegotiate.
        """
        if not len(receivable_views):
            return False

        # Parent is a Sale or a PaymentRenegotiation
        parent = receivable_views[0].get_parent()

        if not parent:
            return False

        client = parent.client

        return all(view.get_parent() and view.get_parent().client is client
                   and view.get_parent().can_set_renegotiated()
                   for view in receivable_views)
Example #16
0
    def _can_renegotiate(self, receivable_views):
        """whether or not we can renegotiate this payments

        This do to much queries. Dont call inside _update_widgets to avoid
        unecessary queries. Instead, call before the user actually tries to
        renegotiate.
        """
        if not len(receivable_views):
            return False

        # Parent is a Sale or a PaymentRenegotiation
        parent = receivable_views[0].get_parent()

        if not parent:
            return False

        client = parent.client

        return all(view.get_parent() and
                   view.get_parent().client is client and
                   view.get_parent().can_set_renegotiated()
                   for view in receivable_views)
Example #17
0
    def _can_pay(self, payable_views):
        """
        Determines if a list of payables_views can be paid.
        To do so they must meet the following conditions:
          - Be in the same purchase order
          - The payment status needs to be set to PENDING
        """
        if not payable_views:
            return False

        if not any(view.operation.can_pay(view.payment)
                   for view in payable_views):
            return False

        if len(payable_views) == 1:
            return payable_views[0].status == Payment.STATUS_PENDING

        purchase = payable_views[0].purchase_id
        if purchase is None:
            return False
        return all(view.purchase_id == purchase and
                   view.status == Payment.STATUS_PENDING
                   for view in payable_views)
Example #18
0
    def _can_pay(self, payable_views):
        """
        Determines if a list of payables_views can be paid.
        To do so they must meet the following conditions:
          - Be in the same purchase order
          - The payment status needs to be set to PENDING
        """
        if not payable_views:
            return False

        if not any(view.operation.can_pay(view.payment)
                   for view in payable_views):
            return False

        if len(payable_views) == 1:
            return payable_views[0].status == Payment.STATUS_PENDING

        purchase = payable_views[0].purchase_id
        if purchase is None:
            return False
        return all(view.purchase_id == purchase and
                   view.status == Payment.STATUS_PENDING
                   for view in payable_views)
Example #19
0
    def _can_receive(self, receivable_views):
        """
        Determines if a list of receivable_views can be received.
        To do so they must meet the following conditions:
          - Be in the same sale
          - The payment status needs to be set to PENDING
        """

        if not receivable_views:
            return False

        if not any(view.operation.can_pay(view.payment)
                   for view in receivable_views):
            return False

        if len(receivable_views) == 1:
            return receivable_views[0].status == Payment.STATUS_PENDING

        sale = receivable_views[0].sale
        if sale is None:
            return False
        return all(view.sale == sale and
                   view.status == Payment.STATUS_PENDING
                   for view in receivable_views)
Example #20
0
    def _can_receive(self, receivable_views):
        """
        Determines if a list of receivable_views can be received.
        To do so they must meet the following conditions:
          - Be in the same sale
          - The payment status needs to be set to PENDING
        """

        if not receivable_views:
            return False

        if not any(
                view.operation.can_pay(view.payment)
                for view in receivable_views):
            return False

        if len(receivable_views) == 1:
            return receivable_views[0].status == Payment.STATUS_PENDING

        sale = receivable_views[0].sale
        if sale is None:
            return False
        return all(view.sale == sale and view.status == Payment.STATUS_PENDING
                   for view in receivable_views)
Example #21
0
 def _can_set_not_paid(self, receivable_views):
     return all(view.payment.method.operation.can_set_not_paid(view.payment)
                for view in receivable_views)
Example #22
0
 def _can_set_not_paid(self, payable_views):
     return all(
         view.payment.method.operation.can_set_not_paid(view.payment)
         for view in payable_views)