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
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()
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
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
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
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())
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())
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
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()
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()
def create_delivery(self): from stoqlib.domain.sale import Delivery return Delivery(store=self.store)