def post_save(self, obj, data, create_new=False): super(AcceptanceCanon, self).post_save(obj, data, create_new) if create_new is False: if obj.type == MAIL: items = data["items"] if "items" in data else [] AcceptanceService.update_fact_count(obj, items) elif obj.type == NEW and obj.status == IN_PROG: items = data["new_items"] if "new_items" in data else [] AcceptanceService.update_fact_count_custom(obj, items)
def get_items_acceptance(cls, acc_id, remain=True): from applications.point_sale.service import PointSaleService from applications.acceptance.service import AcceptanceService from applications.waybill.service import WayBillService acceptance = AcceptanceService.get_by_id(acc_id) pointsale = acceptance.pointsale def get_count_remain(remain, item, pointsale_id): if remain: return PointSaleService.item_to_pointsale_good( pointsale.id, item.good_id).count \ if PointSaleService.item_to_pointsale_good( pointsale.id, item.good_id) else "" else: return item.count if acceptance.invoice: return [{ "id": item.id, "full_name": item.full_name, "good_id": item.good_id, "price_without_NDS": item.price_without_NDS, "price_with_NDS": item.price_with_NDS, "price_retail": GoodService.get_price( item.good_id).price_retail if GoodService.get_price( item.good_id) else "", "price_gross": GoodService.get_price( item.good_id).price_gross if GoodService.get_price( item.good_id) else "", "count": get_count_remain(remain, item, pointsale.id), "fact_count": item.fact_count } for item in cls.get_items(invoice_id=acceptance.invoice_id)] elif acceptance.waybill_crud: return [{ "id": item.id, "full_name": item.good.full_name, "good_id": item.good_id, "price_retail": GoodService.get_price( item.good_id).price_retail if GoodService.get_price( item.good_id) else "", "price_gross": GoodService.get_price( item.good_id).price_gross if GoodService.get_price( item.good_id) else "", "count": get_count_remain(remain, item, pointsale.id), } for item in WayBillService.get_items(acceptance.waybill_id)]
def pre_save(self, acceptance, data): acceptance = super(AcceptanceCanon, self).pre_save(acceptance, data) try: acceptance = AcceptanceService.prepared_acceptance( acceptance=acceptance, date=data.get("date", None), pointsale_id=data.get("pointsale_id", None), type=data.get("type", None), provider_id=data.get("provider_id", None), invoices=map(lambda x: x["id"], data.get("invoices", [])), ) except AcceptanceException as exc: raise BaseCanoniseResource.CanonException(unicode(exc)) return acceptance
def get_item_to_acceptance(cls, invoice_id, acceptance_id): from applications.point_sale.service import PointSaleService from applications.acceptance.service import AcceptanceService acceptance = AcceptanceService.get_by_id(acceptance_id) pointsale = acceptance.pointsale return [{ "id": item.id, "full_name": item.full_name, "good_id": item.good_id, "price_retail": GoodService.get_price( item.good_id).price_retail if GoodService.get_price( item.good_id) else "", "price_gross": GoodService.get_price( item.good_id).price_gross if GoodService.get_price( item.good_id) else "", "count": PointSaleService.item_to_pointsale_good( pointsale.id, item.good_id).count if PointSaleService.item_to_pointsale_good( pointsale.id, item.good_id) else "", } for item in cls.get_items(invoice_id=invoice_id)]
def acceptance_id(self): from applications.acceptance.service import AcceptanceService acc = AcceptanceService.get_by_invoice_id(self.id) return acc.id
def is_acceptance(self): from applications.acceptance.service import AcceptanceService acc = AcceptanceService.get_by_invoice_id(self.id) return True if acc else False