123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- # -*- coding: utf-8 -*-
- from change_number_helper import NumberHelper, DifferentHelper
- def change(_id, change_detail_env, detail2bill_field, not_change_detail, change_detail):
- out_helper = _get_out_detail_group(not_change_detail)
- order_helper = _get_order_detail_group(change_detail)
- _change_order_detail_if_need(_id, change_detail, change_detail_env, detail2bill_field, out_helper, order_helper)
- return
- def _get_out_detail_group(not_change_detail):
- out_helper = NumberHelper()
- for d in not_change_detail:
- out_helper.add(d.goods_id.id, d.second_unit_number, d.main_unit_number, False)
- return out_helper
- def _get_order_detail_group(change_detail):
- order_helper = NumberHelper()
- for d in change_detail:
- order_helper.add(d.goods_id.id, d.second_unit_number, d.main_unit_number, d.source_bill_id > 0)
- return order_helper
- def _change_order_detail_if_need(_id, change_detail, change_detail_env, detail2bill_field, out_helper, order_helper):
- helper = DifferentHelper(out_helper, order_helper)
- new, add, sub = helper.get()
- if new:
- for goods_id, data in new.items():
- value = {
- detail2bill_field: _id,
- 'goods_id': goods_id,
- 'second_unit_number': data[0],
- 'main_unit_number': data[1],
- }
- change_detail_env.create(value)
- if add:
- for goods_id, data in add.items():
- for d in change_detail:
- if not d.source_bill_id and d.goods_id.id == goods_id:
- d.second_unit_number += data[0]
- d.main_unit_number += data[1]
- break
- if sub:
- for goods_id, data in sub.items():
- for d in change_detail:
- if not d.source_bill_id and d.goods_id.id == goods_id:
- d.second_unit_number -= data[0]
- d.main_unit_number -= data[1]
- break
- return
|