Пример #1
0
    def _create_domain(self):
        address = self.create_address()
        service_item = self.create_sale_item()
        service_item.sale.identifier = 10
        service_item.sale.status = Sale.STATUS_CONFIRMED
        transporter = self.create_transporter(name=u'Hall')
        delivery = Delivery(transporter=transporter,
                            address=address,
                            invoice=service_item.sale.invoice,
                            open_date=localdate(2012, 1, 1).date(),
                            store=self.store)
        delivery.tracking_code = u'45'

        service_item = self.create_sale_item()
        service_item.sale.identifier = 20
        service_item.sale.status = Sale.STATUS_CONFIRMED
        transporter = self.create_transporter(name=u'Torvalds')
        delivery = Delivery(transporter=transporter,
                            address=address,
                            invoice=service_item.sale.invoice,
                            open_date=localdate(2012, 2, 2).date(),
                            send_date=localdate(2012, 3, 3).date(),
                            receive_date=localdate(2012, 4, 4).date(),
                            store=self.store)
        delivery.tracking_code = u'78'
        delivery.status = Delivery.STATUS_RECEIVED
Пример #2
0
    def validate_step(self):
        delivery = self._find_delivery()
        if self._delivery is not None and delivery is None:
            self.model.transporter_id = self._delivery.transporter_id
            delivery = Delivery(
                store=self.store,
                transporter=self.model.transporter,
                invoice=self.model.invoice,
                address=self._delivery.address,
                freight_type=self._delivery.freight_type,
                volumes_kind=self._delivery.volumes_kind,
                volumes_quantity=self._delivery.volumes_quantity,
                volumes_gross_weight=self._delivery.volumes_gross_weight,
                volumes_net_weight=self._delivery.volumes_net_weight,
                vehicle_license_plate=self._delivery.vehicle_license_plate,
                vehicle_state=self._delivery.vehicle_state,
                vehicle_registration=self._delivery.vehicle_registration,
            )
        elif self._delivery is None and delivery is not None:
            # No need to remove the service_item. It was already removed
            # by the AdditionListSlave
            self.store.remove(delivery)
            delivery = None

        for item in self.slave.klist:
            item.delivery = delivery if getattr(item, 'deliver',
                                                False) else None

        return super(SaleQuoteItemStep, self).validate_step()
Пример #3
0
    def delivery_adaptor(self):
        """Get the delivery whose service item is self, if exists"""
        from stoqlib.domain.sale import Delivery
        delivery_item = self.stock_decrease.get_delivery_item()
        if delivery_item:
            return Delivery.get_by_service_item(self.store, self)

        return None
Пример #4
0
    def delivery_adaptor(self):
        """Get the delivery whose service item is self, if exists"""
        from stoqlib.domain.sale import Delivery
        delivery_item = self.stock_decrease.get_delivery_item()
        if delivery_item:
            return Delivery.get_by_service_item(self.store, self)

        return None
Пример #5
0
    def _create_domain(self):
        address = self.create_address()
        service_item = self.create_sale_item()
        service_item.sale.identifier = 10
        service_item.sale.status = Sale.STATUS_CONFIRMED
        transporter = self.create_transporter(name=u'Hall')
        delivery = Delivery(transporter=transporter,
                            address=address,
                            invoice=service_item.sale.invoice,
                            open_date=localdate(2012, 1, 1).date(),
                            store=self.store)
        delivery.tracking_code = u'45'

        service_item = self.create_sale_item()
        service_item.sale.identifier = 20
        service_item.sale.status = Sale.STATUS_CONFIRMED
        transporter = self.create_transporter(name=u'Torvalds')
        delivery = Delivery(transporter=transporter,
                            address=address,
                            invoice=service_item.sale.invoice,
                            open_date=localdate(2012, 2, 2).date(),
                            send_date=localdate(2012, 3, 3).date(),
                            receive_date=localdate(2012, 4, 4).date(),
                            store=self.store)
        delivery.tracking_code = u'78'
        delivery.status = Delivery.STATUS_RECEIVED
Пример #6
0
    def _create_sale(self, store):
        user = api.get_current_user(store)
        branch = api.get_current_branch(store)
        salesperson = user.person.salesperson
        cfop_id = api.sysparam.get_object_id('DEFAULT_SALES_CFOP')
        nature = api.sysparam.get_string('DEFAULT_OPERATION_NATURE')
        group = PaymentGroup(store=store)
        sale = Sale(
            store=store,
            branch=branch,
            salesperson=salesperson,
            group=group,
            cfop_id=cfop_id,
            coupon_id=None,
            operation_nature=nature)

        if self._delivery:
            sale.client = store.fetch(self._delivery.client)
            sale.storeporter = store.fetch(self._delivery.transporter)
            delivery = Delivery(
                store=store,
                address=store.fetch(self._delivery.address),
                transporter=store.fetch(self._delivery.transporter),
            )
        else:
            delivery = None
            sale.client = self._suggested_client

        for fake_sale_item in self.sale_items:
            sale_item = sale.add_sellable(
                store.fetch(fake_sale_item.sellable),
                price=fake_sale_item.price,
                quantity=fake_sale_item.quantity,
                quantity_decreased=fake_sale_item.quantity_decreased,
                batch=store.fetch(fake_sale_item.batch))
            sale_item.notes = fake_sale_item.notes
            sale_item.estimated_fix_date = fake_sale_item.estimated_fix_date

            if delivery and fake_sale_item.deliver:
                delivery.add_item(sale_item)
            elif delivery and fake_sale_item == self._delivery_item:
                delivery.service_item = sale_item

        return sale
Пример #7
0
    def _create_sale(self, store):
        user = api.get_current_user(store)
        branch = api.get_current_branch(store)
        salesperson = user.person.salesperson
        cfop = api.sysparam(store).DEFAULT_SALES_CFOP
        group = PaymentGroup(store=store)
        sale = Sale(
            store=store,
            branch=branch,
            salesperson=salesperson,
            group=group,
            cfop=cfop,
            coupon_id=None,
            operation_nature=api.sysparam(store).DEFAULT_OPERATION_NATURE)

        if self._delivery:
            sale.client = store.fetch(self._delivery.client)
            sale.storeporter = store.fetch(self._delivery.transporter)
            delivery = Delivery(
                store=store,
                address=store.fetch(self._delivery.address),
                transporter=store.fetch(self._delivery.transporter),
            )
        else:
            delivery = None
            sale.client = self._suggested_client

        for fake_sale_item in self.sale_items:
            sale_item = sale.add_sellable(
                store.fetch(fake_sale_item.sellable),
                price=fake_sale_item.price,
                quantity=fake_sale_item.quantity,
                quantity_decreased=fake_sale_item.quantity_decreased,
                batch=store.fetch(fake_sale_item.batch))
            sale_item.notes = fake_sale_item.notes
            sale_item.estimated_fix_date = fake_sale_item.estimated_fix_date

            if delivery and fake_sale_item.deliver:
                delivery.add_item(sale_item)
            elif delivery and fake_sale_item == self._delivery_item:
                delivery.service_item = sale_item

        return sale
Пример #8
0
    def test_add_item(self):
        sale = self.create_sale()
        delivery = Delivery(store=self.store)
        delivery.invoice = sale.invoice

        service = self.create_service()
        service_item = sale.add_sellable(service.sellable, quantity=1, price=10)
        self.assertFalse(service_item in list(delivery.delivery_items))
        self.assertFalse(service_item in delivery.get_items())
        delivery.add_item(service_item)
        self.assertTrue(service_item in list(delivery.delivery_items))
        self.assertTrue(service_item in delivery.get_items())

        product = self.create_product()
        product_item = sale.add_sellable(product.sellable, quantity=1, price=10)
        self.assertFalse(product_item in list(delivery.delivery_items))
        self.assertFalse(product_item in delivery.get_items())
        delivery.add_item(product_item)
        self.assertTrue(product_item in list(delivery.delivery_items))
        self.assertTrue(product_item in delivery.get_items())
Пример #9
0
    def test_add_item(self):
        sale = self.create_sale()
        delivery = Delivery(store=self.store)

        service = self.create_service()
        service_item = sale.add_sellable(service.sellable,
                                         quantity=1,
                                         price=10)
        self.assertFalse(service_item in list(delivery.delivery_items))
        self.assertFalse(service_item in delivery.get_items())
        delivery.add_item(service_item)
        self.assertTrue(service_item in list(delivery.delivery_items))
        self.assertTrue(service_item in delivery.get_items())

        product = self.create_product()
        product_item = sale.add_sellable(product.sellable,
                                         quantity=1,
                                         price=10)
        self.assertFalse(product_item in list(delivery.delivery_items))
        self.assertFalse(product_item in delivery.get_items())
        delivery.add_item(product_item)
        self.assertTrue(product_item in list(delivery.delivery_items))
        self.assertTrue(product_item in delivery.get_items())
Пример #10
0
    def _create_domain(self):
        address = self.create_address()
        service_item = self.create_sale_item()
        service_item.sale.identifier = 10
        transporter = self.create_transporter(name=u'Hall')
        delivery = Delivery(transporter=transporter,
                            address=address,
                            service_item=service_item,
                            open_date=datetime.date(2012, 1, 1),
                            store=self.store)
        delivery.tracking_code = u'45'

        service_item = self.create_sale_item()
        service_item.sale.identifier = 20
        transporter = self.create_transporter(name=u'Torvalds')
        delivery = Delivery(transporter=transporter,
                            address=address,
                            service_item=service_item,
                            open_date=datetime.date(2012, 2, 2),
                            deliver_date=datetime.date(2012, 3, 3),
                            receive_date=datetime.date(2012, 4, 4),
                            store=self.store)
        delivery.tracking_code = u'78'
        delivery.status = Delivery.STATUS_RECEIVED
Пример #11
0
    def validate_step(self):
        delivery = self._find_delivery()
        if self._delivery is not None and delivery is None:
            delivery = Delivery(store=self.store,
                                transporter=self._delivery.transporter,
                                address=self._delivery.address,
                                service_item=self._delivery_item)
        elif self._delivery is None and delivery is not None:
            # No need to remove the service_item. It was already removed
            # by the AdditionListSlave
            self.store.remove(delivery)
            delivery = None

        for item in self.slave.klist:
            item.delivery = delivery if getattr(item, 'deliver',
                                                False) else None

        return super(SaleQuoteItemStep, self).validate_step()
Пример #12
0
    def validate_step(self):
        if self._delivery is not None:
            delivery = Delivery(
                store=self.store,
                transporter_id=self._delivery.transporter_id,
                invoice=self.model.invoice,
                address=self._delivery.address,
                freight_type=self._delivery.freight_type,
                volumes_kind=self._delivery.volumes_kind,
                volumes_quantity=self._delivery.volumes_quantity,
                volumes_gross_weight=self._delivery.volumes_gross_weight,
                volumes_net_weight=self._delivery.volumes_net_weight,
                vehicle_license_plate=self._delivery.vehicle_license_plate,
                vehicle_state=self._delivery.vehicle_state,
                vehicle_registration=self._delivery.vehicle_registration,
            )
        else:
            delivery = None

        for item in self.slave.klist:
            item.delivery = delivery if getattr(item, 'deliver',
                                                False) else None

        return super(DecreaseItemStep, self).validate_step()
Пример #13
0
 def create_delivery(self):
     from stoqlib.domain.sale import Delivery
     return Delivery(store=self.store)