resources.py 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  1. # -*- coding: utf-8 -*-
  2. from __future__ import absolute_import
  3. from import_export import resources
  4. from import_export.fields import Field
  5. from apps.base import ExcelImporter
  6. from apps.base import Formater
  7. class PurchasePlanResource(resources.Resource):
  8. def __init__(self):
  9. super(PurchasePlanResource, self).__init__()
  10. self.fields['no'] = Field(attribute='no')
  11. self.fields['name'] = Field(attribute='name')
  12. self.fields['total_count'] = Field(attribute='total_count')
  13. self.fields['create_time'] = Field(attribute='create_time')
  14. self.fields['create_user_text'] = Field(attribute='create_user_text')
  15. self.fields['demend_user_text'] = Field(attribute='demend_user_text')
  16. self.fields['status_text'] = Field(attribute='status_text')
  17. self.fields['check_user_text'] = Field(attribute='check_user_text')
  18. self.fields['check_time'] = Field(attribute='check_time')
  19. self.fields['notes'] = Field(attribute='notes')
  20. self.fields['purchase_users'] = Field(attribute='purchase_users')
  21. def get_export_headers(self):
  22. return [u'单号', u'名称', u'合计数量', u'需求人', u'创建时间', u'创建人', u'审核状态', u'审核时间',u'审核人', u'采购员', u'备注']
  23. class Meta:
  24. fields = ('no', 'name','total_count', 'demend_user_text', 'create_time', 'create_user_text', 'status_text','check_time', 'check_user_text',
  25. 'purchase_users','notes')
  26. export_order = fields
  27. class PurchasePlanDetailResource(resources.Resource):
  28. def __init__(self):
  29. super(PurchasePlanDetailResource, self).__init__()
  30. self.fields['name'] = Field(attribute='name')
  31. self.fields['model'] = Field(attribute='model')
  32. self.fields['quality_request_text'] = Field(attribute='quality_request_text')
  33. self.fields['purchase_count'] = Field(attribute='purchase_count')
  34. self.fields['product_time'] = Field(attribute='product_time')
  35. self.fields['stock_count'] = Field(attribute='stock_count')
  36. self.fields['notes'] = Field(attribute='notes')
  37. def get_export_headers(self):
  38. return [u'产品名称', u'产品代码', u'质量要求', u'数量', u'需求时间', u'当前库存', u'备注']
  39. class Meta:
  40. fields = ('name', 'model', 'quality_request_text', 'purchase_count', 'product_time', 'stock_count',
  41. 'notes',)
  42. export_order = fields
  43. class PurchasePriceResource(resources.Resource):
  44. def __init__(self):
  45. super(PurchasePriceResource, self).__init__()
  46. self.fields['purchase_user_text'] = Field(attribute='purchase_user_text')
  47. self.fields['name'] = Field(attribute='name')
  48. self.fields['model'] = Field(attribute='model')
  49. self.fields['quality_request_text'] = Field(attribute='quality_request_text')
  50. self.fields['purchase_count'] = Field(attribute='purchase_count')
  51. self.fields['supplier_text'] = Field(attribute='supplier_text')
  52. self.fields['price'] = Field(attribute='price')
  53. self.fields['notes'] = Field(attribute='notes')
  54. def get_export_headers(self):
  55. return [u'员工', u'产品', u'代码', u'质量要求', u'数量', u'供应商', u'价格', u'备注']
  56. class Meta:
  57. fields = ('purchase_user_text', 'name', 'model', 'quality_request_text', 'purchase_count', 'supplier_text', 'price',
  58. 'notes',)
  59. export_order = fields
  60. class PurchasePlanImporter(ExcelImporter):
  61. fields = {
  62. u'产品类别': (True, ExcelImporter.formatUnicode),
  63. u'产品代码': (True, ExcelImporter.formatUnicode),
  64. u'数量': (True, ExcelImporter.formatFloatGtZ),
  65. u'质量要求': (False, ExcelImporter.formatUnicode),
  66. u'需求时间': (False, ExcelImporter.formatDateTime),
  67. u'备注': (False, ExcelImporter.formatUnicode),
  68. }
  69. class PurchaseOrderResource(resources.Resource):
  70. def __init__(self):
  71. super(PurchaseOrderResource, self).__init__()
  72. self.fields['order_no'] = Field(attribute='order_no')
  73. self.fields['no'] = Field(attribute='no')
  74. self.fields['supplier_name'] = Field(attribute='supplier_name')
  75. self.fields['products'] = Field(attribute='products')
  76. self.fields['payment_type'] = Field(attribute='payment_type')
  77. self.fields['count'] = Field(attribute='count')
  78. self.fields['amount'] = Field(attribute='amount')
  79. self.fields['apply_amount'] = Field(attribute='apply_amount')
  80. self.fields['status_text'] = Field(attribute='status_text')
  81. self.fields['arrval_text'] = Field(attribute='arrval_text')
  82. self.fields['entries'] = Field(attribute='entries')
  83. self.fields['create_user_text'] = Field(attribute='create_user_text')
  84. self.fields['create_time'] = Field(attribute='create_time')
  85. self.fields['check_user_text'] = Field(attribute='check_user_text')
  86. self.fields['check_time'] = Field(attribute='check_time')
  87. self.fields['notes'] = Field(attribute='notes')
  88. def get_export_headers(self):
  89. return [u'单号', u'合同号', u'供应商', u'产品', u'付款方式', u'合计数量', u'合计金额',u'已申请金额', u'状态', u'到货状态', u'批次',
  90. u'创建时间', u'创建人', u'审核时间', u'审核人', u'备注',]
  91. class Meta:
  92. fields = ('order_no', 'no', 'supplier_name', 'products', 'payment_type', 'count', 'amount', 'apply_amount', 'status_text', 'arrval_text',
  93. 'entries', 'create_time', 'create_user_text', 'check_time', 'check_user_text', 'notes')
  94. export_order = fields
  95. class PurchaseOrderDetailResource(resources.Resource):
  96. def __init__(self):
  97. super(PurchaseOrderDetailResource, self).__init__()
  98. self.fields['name'] = Field(attribute='name')
  99. self.fields['model'] = Field(attribute='model')
  100. self.fields['quality_request_text'] = Field(attribute='quality_request_text')
  101. self.fields['count'] = Field(attribute='count')
  102. self.fields['price'] = Field(attribute='price')
  103. self.fields['amount'] = Field(attribute='amount')
  104. self.fields['arrval_count'] = Field(attribute='arrval_count')
  105. self.fields['invoice_no'] = Field(attribute='invoice_no')
  106. self.fields['invoice_amount'] = Field(attribute='invoice_amount')
  107. def get_export_headers(self):
  108. return [u'产品名称', u'产品代码', u'质量标准',u'数量', u'单价', u'金额',
  109. u'到货数量', u'发票', u'付款金额',]
  110. class Meta:
  111. fields = ('name', 'model', 'quality_request_text', 'count', 'price', 'amount','arrval_count', 'invoice_no', 'invoice_amount',)
  112. export_order = fields
  113. class PurchaseInvoiceResource(resources.Resource):
  114. def __init__(self):
  115. super(PurchaseInvoiceResource, self).__init__()
  116. self.fields['order_no'] = Field(attribute='order_no')
  117. self.fields['name'] = Field(attribute='name')
  118. self.fields['model'] = Field(attribute='model')
  119. self.fields['supplier_name'] = Field(attribute='supplier_name')
  120. self.fields['amount'] = Field(attribute='amount')
  121. self.fields['invoice_no'] = Field(attribute='invoice_no')
  122. self.fields['invoice_amount'] = Field(attribute='invoice_amount')
  123. self.fields['invoice_date'] = Field(attribute='invoice_date')
  124. self.fields['create_time'] = Field(attribute='create_time')
  125. self.fields['create_user_text'] = Field(attribute='create_user_text')
  126. self.fields['check_status_text'] = Field(attribute='check_status_text')
  127. self.fields['check_user_text'] = Field(attribute='check_user_text')
  128. self.fields['check_time'] = Field(attribute='check_time')
  129. def get_export_headers(self):
  130. return [u'合同号', u'产品名称', u'产品代码',u'供应商', u'金额', u'发票号',
  131. u'发票金额',u'开票日期', u'创建时间', u'创建人',u'审核状态', u'审核时间', u'审核人']
  132. class Meta:
  133. fields = ('order_no', 'name', 'model', 'supplier_name',
  134. 'amount', 'invoice_no', 'invoice_amount','invoice_date', 'create_time', 'create_user_text',
  135. 'check_status_text', 'check_time', 'check_user_text')
  136. export_order = fields
  137. class GodownEntryResource(resources.Resource):
  138. def __init__(self, is_show_cost=True):
  139. super(GodownEntryResource, self).__init__()
  140. self.is_show_cost = is_show_cost
  141. self.fields['no'] = Field(attribute='no')
  142. self.fields['supplier_text'] = Field(attribute='supplier_text')
  143. self.fields['total_count'] = Field(attribute='total_count')
  144. self.fields['warehouse_text'] = Field(attribute='warehouse_text')
  145. self.fields['purchase_order_no'] = Field(attribute='purchase_order_no')
  146. self.fields['create_user_text'] = Field(attribute='create_user_text')
  147. self.fields['create_time'] = Field(attribute='create_time')
  148. self.fields['status_text'] = Field(attribute='status_text')
  149. self.fields['check_user_text'] = Field(attribute='check_user_text')
  150. self.fields['check_time'] = Field(attribute='check_time')
  151. self.fields['notes'] = Field(attribute='notes')
  152. if is_show_cost:
  153. self.fields['total_amount'] = Field(attribute='total_amount')
  154. self.fields['total_invoice_amount'] = Field(attribute='total_invoice_amount')
  155. fields = ('no', 'supplier_text', 'total_count', 'total_amount', 'total_invoice_amount', 'warehouse_text', 'purchase_order_no', 'create_time', 'create_user_text', 'status_text', 'check_time',
  156. 'check_user_text', 'notes')
  157. else:
  158. fields = (
  159. 'no', 'supplier_text', 'total_count', 'warehouse_text', 'purchase_order_no', 'create_time', 'create_user_text', 'status_text', 'check_time',
  160. 'check_user_text', 'notes')
  161. self._meta.export_order = fields
  162. def get_export_headers(self):
  163. if self.is_show_cost:
  164. return [u'入库单号', u'供应商', u'合计数量', u'合计金额', u'合计发票金额', u'仓别',u'合同号', u'创建时间', u'创建人' , u'审核状态', u'审核时间',u'审核人', u'备注']
  165. return [u'入库单号', u'供应商', u'合计数量', u'仓别',u'合同号', u'创建时间', u'创建人', u'审核状态', u'审核时间', u'审核人', u'备注']
  166. class GodownEntryDetailResource(resources.Resource):
  167. def __init__(self, is_show_cost=True):
  168. super(GodownEntryDetailResource, self).__init__()
  169. self.is_show_cost = is_show_cost
  170. self.fields['product_base_text'] = Field(attribute='product_base_text')
  171. self.fields['product_base_model'] = Field(attribute='product_base_model')
  172. self.fields['count'] = Field(attribute='count')
  173. self.fields['unit_text'] = Field(attribute='unit_text')
  174. self.fields['notes'] = Field(attribute='notes')
  175. if is_show_cost:
  176. self.fields['price'] = Field(attribute='price')
  177. self.fields['amount'] = Field(attribute='amount')
  178. self.fields['invoice_amount'] = Field(attribute='invoice_amount')
  179. fields = ('product_base_text', 'product_base_model', 'count', 'price', 'amount','invoice_amount', 'unit_text', 'notes')
  180. else:
  181. fields = ('product_base_text', 'product_base_model', 'count', 'unit_text', 'notes')
  182. self._meta.export_order = fields
  183. def get_export_headers(self):
  184. if self.is_show_cost:
  185. return [u'原料名称', u'原料代码', u'数量', u'单价', u'金额',u'发票金额', u'计量单位', u'备注']
  186. return [u'原料名称', u'原料代码', u'数量', u'计量单位', u'备注']
  187. class GodownEntryReturnResource(resources.Resource):
  188. def __init__(self, is_show_cost=True):
  189. super(GodownEntryReturnResource, self).__init__()
  190. self.is_show_cost = is_show_cost
  191. self.fields['no'] = Field(attribute='no')
  192. self.fields['supplier_text'] = Field(attribute='supplier_text')
  193. self.fields['total_count'] = Field(attribute='total_count')
  194. self.fields['create_user_text'] = Field(attribute='create_user_text')
  195. self.fields['create_time'] = Field(attribute='create_time')
  196. self.fields['status_text'] = Field(attribute='status_text')
  197. self.fields['check_user_text'] = Field(attribute='check_user_text')
  198. self.fields['check_time'] = Field(attribute='check_time')
  199. self.fields['notes'] = Field(attribute='notes')
  200. if is_show_cost:
  201. self.fields['total_amount'] = Field(attribute='total_amount')
  202. fields = (
  203. 'no', 'supplier_text', 'total_count', 'total_amount', 'create_user_text', 'create_time', 'status_text',
  204. 'check_user_text',
  205. 'check_time', 'notes',)
  206. else:
  207. fields = (
  208. 'no', 'supplier_text', 'total_count', 'create_user_text', 'create_time', 'status_text',
  209. 'check_user_text',
  210. 'check_time', 'notes',)
  211. self._meta.export_order = fields
  212. def get_export_headers(self):
  213. if self.is_show_cost:
  214. return [u'退货单号', u'供应商', u'合计数量', u'合计金额', u'创建人', u'创建时间' , u'审核状态',u'审核人', u'审核时间', u'备注']
  215. return [u'退货单号', u'供应商', u'合计数量', u'创建人', u'创建时间' , u'审核状态',u'审核人', u'审核时间', u'备注']
  216. class GodownEntryReturnDetailResource(resources.Resource):
  217. def __init__(self, is_show_cost=True):
  218. super(GodownEntryReturnDetailResource, self).__init__()
  219. self.is_show_cost = is_show_cost
  220. self.fields['product_base_text'] = Field(attribute='product_base_text')
  221. self.fields['product_base_model'] = Field(attribute='product_base_model')
  222. self.fields['godownentry_no'] = Field(attribute='godownentry_no')
  223. self.fields['count'] = Field(attribute='count')
  224. self.fields['notes'] = Field(attribute='notes')
  225. if is_show_cost:
  226. self.fields['price'] = Field(attribute='price')
  227. self.fields['amount'] = Field(attribute='amount')
  228. fields = ('product_base_text', 'product_base_model', 'godownentry_no', 'count', 'price', 'amount', 'notes')
  229. else:
  230. fields = ('product_base_text', 'product_base_model', 'godownentry_no', 'count', 'notes')
  231. self._meta.export_order = fields
  232. def get_export_headers(self):
  233. if self.is_show_cost:
  234. return [u'原料名称', u'原料代码', u'入库单号', u'数量', u'单价', u'金额', u'备注']
  235. return [u'原料名称', u'原料代码', u'入库单号', u'数量', u'备注']
  236. class PurchasePaymentResource(resources.Resource):
  237. def __init__(self):
  238. super(PurchasePaymentResource, self).__init__()
  239. self.fields['no'] = Field(attribute='no')
  240. self.fields['order_no'] = Field(attribute='order_no')
  241. self.fields['supplier_name'] = Field(attribute='supplier_name')
  242. self.fields['supplier_account'] = Field(attribute='supplier_account')
  243. self.fields['amount'] = Field(attribute='amount')
  244. self.fields['create_time'] = Field(attribute='create_time')
  245. self.fields['create_user_text'] = Field(attribute='create_user_text')
  246. self.fields['status_text'] = Field(attribute='status_text')
  247. self.fields['check_user_text'] = Field(attribute='check_user_text')
  248. self.fields['check_time'] = Field(attribute='check_time')
  249. self.fields['actual_amount'] = Field(attribute='actual_amount')
  250. self.fields['apply_amount'] = Field(attribute='apply_amount')
  251. self.fields['notes'] = Field(attribute='notes')
  252. def get_export_headers(self):
  253. return [u'付款单号', u'合同号',u'供应商',u'供应商账号', u'合同总金额', u'申请金额',u'实收金额', u'创建时间', u'创建人', u'审核状态', u'审核时间',
  254. u'审核人', u'备注']
  255. class Meta:
  256. fields = ('no','order_no', 'supplier_name', 'supplier_account', 'amount', 'apply_amount','actual_amount', 'create_time', 'create_user_text', 'status_text',
  257. 'check_time','check_user_text', 'notes')
  258. export_order = fields
  259. class PurchasePaymentDetailResource(resources.Resource):
  260. def __init__(self):
  261. super(PurchasePaymentDetailResource, self).__init__()
  262. self.fields['product__name'] = Field(attribute='product__name')
  263. self.fields['product__model'] = Field(attribute='product__model')
  264. self.fields['main__no'] = Field(attribute='main__no')
  265. self.fields['amount'] = Field(attribute='amount')
  266. def dehydrate_amount(self, instance):
  267. return Formater.formatAmountShowWithTwoDecimalPlaces(instance.amount)
  268. def get_export_headers(self):
  269. return [u'产品名称', u'产品代码', u'合同号', u'金额',]
  270. class Meta:
  271. fields = ('product__name', 'product__model', 'main__no', 'amount',)
  272. export_order = fields
  273. class GodownEntryQueryResource(resources.Resource):
  274. def __init__(self, is_show_cost=True):
  275. super(GodownEntryQueryResource, self).__init__()
  276. self.is_show_cost = is_show_cost
  277. self.fields['no'] = Field(attribute='no')
  278. self.fields['type'] = Field(attribute='type')
  279. self.fields['supplier'] = Field(attribute='supplier')
  280. self.fields['product_name'] = Field(attribute='product_name')
  281. self.fields['product_model'] = Field(attribute='product_model')
  282. self.fields['product_unit'] = Field(attribute='product_unit')
  283. self.fields['product_type'] = Field(attribute='product_type')
  284. self.fields['warehouse'] = Field(attribute='warehouse')
  285. self.fields['count'] = Field(attribute='count')
  286. self.fields['return_count'] = Field(attribute='return_count')
  287. self.fields['deliver_count'] = Field(attribute='deliver_count')
  288. self.fields['surplus_count'] = Field(attribute='surplus_count')
  289. self.fields['create_user'] = Field(attribute='create_user')
  290. self.fields['check_time'] = Field(attribute='check_time')
  291. self.fields['warehouse_place'] = Field(attribute='warehouse_place')
  292. self.fields['notes'] = Field(attribute='notes')
  293. if is_show_cost:
  294. self.fields['price'] = Field(attribute='price')
  295. self.fields['amount'] = Field(attribute='amount')
  296. fields = (
  297. 'no', 'type', 'supplier', 'product_name', 'product_model', 'product_unit', 'product_type', 'warehouse',
  298. 'price', 'count', 'return_count', 'amount', 'deliver_count', 'surplus_count', 'create_user',
  299. 'check_time', 'warehouse_place', 'notes')
  300. else:
  301. fields = (
  302. 'no', 'type', 'supplier', 'product_name', 'product_model', 'product_unit', 'product_type', 'warehouse',
  303. 'count', 'return_count', 'deliver_count', 'surplus_count', 'create_user', 'check_time',
  304. 'warehouse_place', 'notes')
  305. self._meta.export_order = fields
  306. def get_export_headers(self):
  307. if self.is_show_cost:
  308. return [u'入库单号', u'入库类别', u'供应商', u'产品', u'代码', u'单位', u'产品类别', u'仓别', u'入库单价', u'数量'
  309. , u'退货数量', u'合计金额', u'出库数量', u'剩余数量', u'创建人', u'审核时间', u'存放库位', u'备注']
  310. return [u'入库单号', u'入库类别', u'供应商', u'产品', u'代码', u'单位', u'产品类别', u'仓别', u'数量'
  311. , u'退货数量', u'出库数量', u'剩余数量', u'创建人', u'审核时间', u'存放库位', u'备注']
  312. class GodownEntryReturnQueryResource(resources.Resource):
  313. def __init__(self, is_show_cost=True):
  314. super(GodownEntryReturnQueryResource, self).__init__()
  315. self.is_show_cost = is_show_cost
  316. self.fields['main_no'] = Field(attribute='main_no')
  317. self.fields['godownentry_no'] = Field(attribute='godownentry_no')
  318. self.fields['main_supplier'] = Field(attribute='main_supplier')
  319. self.fields['product_base_text'] = Field(attribute='product_base_text')
  320. self.fields['product_base_model'] = Field(attribute='product_base_model')
  321. self.fields['main_warehouse'] = Field(attribute='main_warehouse')
  322. self.fields['count'] = Field(attribute='count')
  323. self.fields['main_create_user'] = Field(attribute='main_create_user')
  324. self.fields['main_create_time'] = Field(attribute='main_create_time')
  325. self.fields['main_check_user'] = Field(attribute='main_check_user')
  326. self.fields['main_check_time'] = Field(attribute='main_check_time')
  327. self.fields['main_notes'] = Field(attribute='main_notes')
  328. self.fields['notes'] = Field(attribute='notes')
  329. if is_show_cost:
  330. self.fields['price'] = Field(attribute='price')
  331. self.fields['amount'] = Field(attribute='amount')
  332. fields = (
  333. 'main_no', 'godownentry_no', 'main_supplier', 'product_base_text', 'product_base_model', 'main_warehouse',
  334. 'price',
  335. 'count','amount', 'main_create_user', 'main_create_time', 'main_check_user', 'main_check_time',
  336. 'main_notes', 'notes')
  337. else:
  338. fields = (
  339. 'main_no', 'godownentry_no', 'main_supplier', 'product_base_text', 'product_base_model', 'main_warehouse',
  340. 'count', 'main_create_user', 'main_create_time', 'main_check_user', 'main_check_time',
  341. 'main_notes', 'notes')
  342. self._meta.export_order = fields
  343. def get_export_headers(self):
  344. if self.is_show_cost:
  345. return [u'退货单号', u'入库单号',u'供应商', u'产品', u'代码', u'仓别', u'单价', u'数量',
  346. u'合计金额', u'创建人', u'创建时间', u'审核人员', u'审核时间', u'退货单备注', u'产品备注']
  347. return [u'退货单号', u'入库单号',u'供应商', u'产品', u'代码', u'仓别', u'数量',
  348. u'创建人', u'创建时间', u'审核人员', u'审核时间', u'退货单备注', u'产品备注']
  349. class GodownEntryImporter(ExcelImporter):
  350. fields = {
  351. u'产品名称': (False, ExcelImporter.formatUnicode),
  352. u'产品代码': (True, ExcelImporter.formatUnicode),
  353. u'数量': (True, ExcelImporter.formatFloatGtZ),
  354. u'单价': (True, ExcelImporter.formatFloatGeZ),
  355. u'发票金额': (True, ExcelImporter.formatFloatGeZ),
  356. u'备注': (False, ExcelImporter.formatUnicode),
  357. }