change_number_util.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # -*- coding: utf-8 -*-
  2. from change_number_helper import NumberHelper, DifferentHelper
  3. def change(_id, change_detail_env, detail2bill_field, not_change_detail, change_detail):
  4. out_helper = _get_out_detail_group(not_change_detail)
  5. order_helper = _get_order_detail_group(change_detail)
  6. _change_order_detail_if_need(_id, change_detail, change_detail_env, detail2bill_field, out_helper, order_helper)
  7. return
  8. def _get_out_detail_group(not_change_detail):
  9. out_helper = NumberHelper()
  10. for d in not_change_detail:
  11. out_helper.add(d.goods_id.id, d.second_unit_number, d.main_unit_number, False)
  12. return out_helper
  13. def _get_order_detail_group(change_detail):
  14. order_helper = NumberHelper()
  15. for d in change_detail:
  16. order_helper.add(d.goods_id.id, d.second_unit_number, d.main_unit_number, d.source_bill_id > 0)
  17. return order_helper
  18. def _change_order_detail_if_need(_id, change_detail, change_detail_env, detail2bill_field, out_helper, order_helper):
  19. helper = DifferentHelper(out_helper, order_helper)
  20. new, add, sub = helper.get()
  21. if new:
  22. for goods_id, data in new.items():
  23. value = {
  24. detail2bill_field: _id,
  25. 'goods_id': goods_id,
  26. 'second_unit_number': data[0],
  27. 'main_unit_number': data[1],
  28. }
  29. change_detail_env.create(value)
  30. if add:
  31. for goods_id, data in add.items():
  32. for d in change_detail:
  33. if not d.source_bill_id and d.goods_id.id == goods_id:
  34. d.second_unit_number += data[0]
  35. d.main_unit_number += data[1]
  36. break
  37. if sub:
  38. for goods_id, data in sub.items():
  39. for d in change_detail:
  40. if not d.source_bill_id and d.goods_id.id == goods_id:
  41. d.second_unit_number -= data[0]
  42. d.main_unit_number -= data[1]
  43. break
  44. return