def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log('change', '批量审核了 %(count)d %(items)s.' % {"count": n, "items": model_ngettext(self.opts, n)}) queryset.update(status=2) else: for obj in queryset: _total_si_quantity = obj.va_stockout.vallotsiinfo_set.all().filter(order_status__in=[1, 2, 3]).aggregate(sum_quantity=Sum('quantity'))['sum_quantity'] if not _total_si_quantity: _total_si_quantity = 0 if _total_si_quantity > obj.va_stockout.quantity: self.message_user("%s 虚拟入库确实超过了对应出库数,请查看" % obj.order_id, "error") obj.mistake_tag = 1 obj.save() n -= 1 continue else: _total_si_complete_quantity = obj.va_stockout.vallotsiinfo_set.all().filter(order_status__in=[2, 3]).aggregate(sum_quantity=Sum('quantity'))['sum_quantity'] if not _total_si_complete_quantity: _total_si_complete_quantity = 0 obj.va_stockout.undistributed = obj.va_stockout.quantity - _total_si_complete_quantity obj.va_stockout.save() self.message_user("成功提交 %(count)d %(items)s." % {"count": n, "items": model_ngettext(self.opts, n)}, 'success') return None
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log( 'change', '批量审核了 %(count)d %(items)s.' % { "count": n, "items": model_ngettext(self.opts, n) }) queryset.update(status=2) else: des_department = CentreInfo.objects.filter(name='物流部')[0] i = 0 for obj in queryset: self.log('change', '', obj) if i == 0: des_department = obj.des_department obj.order_category = obj.des_department.category i += 1 continue else: obj.des_department = des_department obj.order_category = obj.des_department.category i += 1 obj.save() self.message_user( "成功提交 %(count)d %(items)s." % { "count": n, "items": model_ngettext(self.opts, n) }, 'success') return None
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log( 'change', '批量审核了 %(count)d %(items)s.' % { "count": n, "items": model_ngettext(self.opts, n) }) queryset.update(status=2) else: for obj in queryset: self.log('change', '', obj) if obj.warehouse.undistributed >= obj.quantity: repeat_stock = DeptStockInfo.objects.filter( goods_name=obj.goods_name, warehouse=obj.warehouse.warehouse, vwarehouse=obj.vwarehouse) if repeat_stock: dp_stock = repeat_stock[0] dp_stock.quantity += obj.quantity dp_stock.save() else: dp_stock = DeptStockInfo() attrs = ['goods_name', 'vwarehouse', 'quantity'] for attr in attrs: value = getattr(obj, attr, None) setattr(dp_stock, attr, value) dp_stock.warehouse = obj.warehouse.warehouse dp_stock.goods_id = obj.goods_name.goods_id dp_stock.creator = self.request.user.username dp_stock.save() stock_order = StockInfo.objects.filter( id=obj.warehouse.id)[0] stock_order.undistributed = stock_order.undistributed - obj.quantity stock_order.save() else: self.message_user( "%s 可分配库存不足,无法分配" % obj.distribution_order_id, "error") n -= 1 obj.error_tag = 1 obj.save() continue obj.order_status = 2 obj.save() # 设置入库单的入库数量。 self.message_user("%s 递交完毕" % obj.distribution_order_id, "info") self.message_user( "成功提交 %(count)d %(items)s." % { "count": n, "items": model_ngettext(self.opts, n) }, 'success') return None
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log('change', '批量审核了 %(count)d %(items)s.' % {"count": n, "items": model_ngettext(self.opts, n)}) queryset.update(status=2) else: check_uq = 0 for obj in queryset: self.log('change', '', obj) if check_uq: obj.va_stockout.undistributed = check_uq _q_dept_stock = DeptStockInfo.objects.filter(centre=obj.centre, goods_name=obj.goods_name, warehouse=obj.warehouse, vwarehouse=obj.vwarehouse) if _q_dept_stock.exists(): dept_stock = _q_dept_stock[0] dept_stock.quantity += obj.quantity else: dept_stock = DeptStockInfo() fields = ['centre', 'goods_name', 'goods_id', 'warehouse', 'vwarehouse', 'quantity'] for key in fields: value = getattr(obj, key, None) setattr(dept_stock, key, value) check_uq = obj.va_stockout.undistributed - obj.quantity if check_uq < 0: self.message_user("%s 虚拟入库超过了对应出库数" % obj.order_id, "error") obj.mistake_tag = 1 obj.save() n -= 1 continue else: try: obj.va_stockout.undistributed = check_uq obj.va_stockout.save() except Exception as e: self.message_user("%s 更新对应虚拟入库出错, %s" % (obj.order_id, e), "error") obj.mistake_tag = 2 obj.save() n -= 1 continue try: dept_stock.save() except Exception as e: self.message_user("%s 单据保存出错, %s" % (obj.order_id, e), "error") obj.mistake_tag = 3 obj.save() n -= 1 continue obj.order_status = 2 obj.mistake_tag = 0 obj.save() self.message_user("成功提交 %(count)d %(items)s." % {"count": n, "items": model_ngettext(self.opts, n)}, 'success') return None
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log( 'change', '批量审核了 %(count)d %(items)s.' % { "count": n, "items": model_ngettext(self.opts, n) }) queryset.update(status=2) else: i = 0 for obj in queryset: i += 1 self.log('change', '', obj) order_so = VASOCheck() prefix = "AO" serial_number = str(datetime.datetime.now()).replace( "-", "").replace(" ", "").replace(":", "").replace(".", "")[:12] suffix = 1000 + i order_id = prefix + str(serial_number) + str(suffix) order_so.order_id = order_id order_so.creator = self.request.user.username order_so.goods_name = obj.goods_name order_so.goods_id = obj.goods_id order_so.centre = obj.centre order_so.warehouse = obj.warehouse order_so.vwarehouse = obj.vwarehouse order_so.undistributed = obj.quantity order_so.quantity = obj.quantity order_so.dept_stock = obj try: order_so.save() except Exception as e: self.message_user( "%s 创建虚拟出库单出错, %s" % (obj.order_id, e), "error") continue self.message_user( "成功生成 %(count)d %(items)s." % { "count": n, "items": model_ngettext(self.opts, n) }, 'success') return None
def delete_models(self, queryset): n = queryset.count() if n: if self.delete_models_batch: self.log('delete', _('Batch delete %(count)d %(items)s.') % { "count": n, "items": model_ngettext(self.opts, n)}) queryset.delete() else: for obj in queryset: self.log('delete', '', obj) obj.delete() self.message_user(_("Successfully deleted %(count)d %(items)s.") % { "count": n, "items": model_ngettext(self.opts, n) }, 'success')
def delete_models(self, queryset): n = queryset.count() if n: queryset.delete() self.message_user(_("Successfully deleted %(count)d %(items)s.") % { "count": n, "items": model_ngettext(self.opts, n) }, 'success')
def delete_models(self, queryset): n = queryset.count() print 22222 if n: if self.delete_models_batch: for data in queryset: for field in data._meta.fields: s = getattr(data,field.name) if(os.path.isfile('./media/'+str(s))==True): if(str(s).find("/quanjing/")==-1): os.remove('./media/' + str(s)) else: s = str(s).split("/") str1 = s[0:3] str1 = '/'.join(str1) shutil.rmtree('./media/'+str1) os.remove('./media/'+str1+'.zip') queryset.delete() else: for obj in queryset: for field in obj._meta.fields: s = getattr(obj, field.name) if (os.path.isfile('./media/' + str(s)) == True): if (str(s).find("/quanjing/") == -1): os.remove('./media/' + str(s)) else: s = str(s).split("/") str1 = s[0:3] str1 = '/'.join(str1) shutil.rmtree('./media/' + str1) os.remove('./media/' + str1 + '.zip') obj.delete() self.message_user(_("Successfully deleted %(count)d %(items)s.") % { "count": n, "items": model_ngettext(self.opts, n) }, 'success')
def delete_models(self, queryset): n = queryset.count() if n: if self.delete_models_batch: for obj in queryset: # print (type(obj) == MnTTa) # if obj.mno and "," in obj.mno: # type = 2 # else: # type = 1 # Jianfenchi.objects.create(djf_issueno=obj.issueno, # djf_issueid=obj.pk, # djf_wyno=obj.mno, # djf_issuebt=obj.biaoti, # djf_wyname=obj.mname, # djf_type=type, # djf_time=obj.submit_time) obj.delete() else: for obj in queryset: obj.delete() self.message_user( _("Successfully deleted %(count)d %(items)s.") % { "count": n, "items": model_ngettext(self.opts, n) }, 'success')
def delete_models(self, queryset): n = queryset.count() if n: for obj in queryset: if obj.order_status == 3: obj.order_status -= 3 obj.save() self.message_user("%s 取消成功" % obj.express_id, "success") elif obj.order_status in [1, 2, 4, 5]: if obj.wo_category == 1 and obj.order_status == 4: obj.order_status -= 2 obj.save() self.message_user("%s 驳回上一级成功" % obj.express_id, "success") else: obj.order_status -= 1 obj.save() self.message_user("%s 取消成功" % obj.express_id, "success") self.message_user( "成功驳回 %(count)d %(items)s." % { "count": n, "items": model_ngettext(self.opts, n) }, 'success') return None
def reject_models(self, queryset): n = queryset.count() if n: for obj in queryset: if isinstance(obj, VAllotSOInfo): if obj.order_status == 1: obj.order_status -= 1 obj.save() self.message_user("%s 取消成功" % obj.order_id, "success") continue if obj.order_status == 2 and obj.undistributed == obj.quantity: obj.order_status -= 1 obj.save() self.message_user("%s 驳回上一级成功" % obj.order_id, "success") continue else: n -= 1 self.message_user("%s 单据状态错误,请检查,驳回出错。" % obj.order_id, "error") continue elif isinstance(obj, VAllotSIInfo): if obj.order_status > 0: obj.order_status -= 1 obj.save() if obj.order_status == 0: self.message_user("%s 取消成功" % obj.order_id, "success") else: self.message_user("%s 驳回上一级成功" % obj.order_id, "success") else: n -= 1 self.message_user("%s 单据状态错误,请检查,驳回出错。" % obj.order_id, "error") self.message_user("成功驳回 %(count)d %(items)s." % {"count": n, "items": model_ngettext(self.opts, n)}, 'success') return None
def do_action(self, queryset): n = queryset.count() if n: queryset.update(is_del=1) self.message_user( _("Successfully deleted %(count)d %(items)s.") % { "count": n, "items": model_ngettext(self.opts, n) }, 'success')
def delete_models(self, queryset): u'''orm删除对象''' n = queryset.count() if n: self.do_deletes(queryset) self.message_user( _("Successfully deleted %(count)d %(items)s.") % { "count": n, "items": model_ngettext(self.opts, n) }, 'success')
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log('change', '批量审核了 %(count)d %(items)s.' % {"count": n, "items": model_ngettext(self.opts, n)}) queryset.update(order_status=3) else: for obj in queryset: self.log('change', '', obj) obj.order_status = 2 obj.mistake_tag = 0 obj.save() self.message_user("成功提交 %(count)d %(items)s." % {"count": n, "items": model_ngettext(self.opts, n)}, 'success') return None
def delete_models(self, queryset): u'''orm删除对象''' n = queryset.count() if n: if self.log: for obj in queryset: self.log_deletion(self.request, obj) queryset.delete() self.message_user( _("Successfully deleted %(count)d %(items)s.") % { "count": n, "items": model_ngettext(self.opts, n) }, 'success')
def delete_models(self, queryset): n = queryset.count() if n: if self.delete_models_batch: self.log('delete', _('Batch delete %(count)d %(items)s.') % {"count": n, "items": model_ngettext(self.opts, n)}) queryset.delete() else: for obj in queryset: self.log('delete', '', obj) obj.delete() self.message_user(_("Successfully deleted %(count)d %(items)s.") % { "count": n, "items": model_ngettext(self.opts, n) }, 'success')
def reject_models(self, queryset): n = queryset.count() if n: for obj in queryset: if obj.order_status == 1: obj.order_status -= 1 obj.save() if obj.order_status == 0: self.message_user("%s 取消成功" % obj.express_id, "success") else: self.message_user("%s 驳回上一级成功" % obj.express_id, "success") else: n -= 1 self.message_user("%s 部门状态错误,请检查,取消出错。" % obj.express_id, "error") self.message_user("成功驳回 %(count)d %(items)s." % {"count": n, "items": model_ngettext(self.opts, n)}, 'success') return None
def change_models(self, queryset, cleaned_data): n = queryset.count() data = {} for f in self.opts.fields: if not f.editable or isinstance(f, models.AutoField) \ or not f.name in cleaned_data: continue data[f] = cleaned_data[f.name] if n: for obj in queryset: for f, v in data.items(): f.save_form_data(obj, v) obj.save() self.message_user(_("Successfully change %(count)d %(items)s.") % { "count": n, "items": model_ngettext(self.opts, n) }, 'success')
def delete_models(self, queryset): n = queryset.count() if n: if self.delete_models_batch: queryset.delete() else: for obj in queryset: obj.delete() self.message_user( _("Successfully deleted %(count)d %(items)s.") % {"count": n, "items": model_ngettext(self.opts, n)}, "success", )
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log( 'change', '批量审核了 %(count)d %(items)s.' % { "count": n, "items": model_ngettext(self.opts, n) }) queryset.update(status=2) else: for obj in queryset: self.log('change', '', obj) if not obj.des_department: self.message_user("单号%s没有指定目的部门,不允许递交" % obj.order_id, "error") n -= 1 obj.mistake_tag = 1 obj.save() continue _q_repeat_so = StockoutList.objects.filter( order_id=obj.order_id) if _q_repeat_so.exists(): self.message_user( "单号%s不要重复点递交,多线程递交会造成程序错乱" % obj.order_id, "error") n -= 1 obj.mistake_tag = 1 obj.save() continue _q_stock_virtual = DeptStockInfo.objects.filter( department=obj.des_department, warehouse=obj.warehouse, goods_name=obj.goods_name) if _q_stock_virtual.exists(): stock_virtual = _q_stock_virtual[0] stock_virtual.quantity = stock_virtual.quantity - obj.quantity if stock_virtual.quantity < 0: self.message_user("单号%s部门存货不足" % obj.order_id, "error") n -= 1 obj.mistake_tag = 2 obj.save() continue stocklist = StockoutList() stocklist.order_id = obj.order_id stocklist.creator = self.request.user.username try: stocklist.save() except Exception as e: self.message_user( "单号%s保存历史记录失败,错误:%s" % (obj.order_id, e), "error") n -= 1 obj.mistake_tag = 3 obj.save() continue try: stock_virtual.save() except Exception as e: self.message_user( "单号%s保存部门仓失败,错误:%s" % (obj.order_id, e), "error") n -= 1 obj.mistake_tag = 4 obj.save() continue stock = StockInfo.objects.filter( warehouse=obj.warehouse, goods_name=obj.goods_name)[0] if obj.des_department.category == 1: stock.undistributed = stock.undistributed - obj.quantity stock.quantity = stock.quantity - obj.quantity else: stock.quantity = stock.quantity - obj.quantity try: stock.save() except Exception as e: self.message_user( "单号%s保存实仓失败,错误:%s" % (obj.order_id, e), "error") n -= 1 obj.mistake_tag = 5 obj.save() continue convert_si = CovertSIUnhandle.objects.filter( goods_name=obj.goods_name, warehouse=obj.warehouse).order_by('stockin_date') minuend = obj.quantity for c_si in convert_si: if minuend > c_si.quantity_linking: minuend = minuend - c_si.quantity_linking c_si.quantity_linking = 0 stocklist.si_order_id = str(c_si.order_id) stocklist.save() c_si.save() else: c_si.quantity_linking = c_si.quantity_linking - minuend stocklist.si_order_id = '{0}+{1}'.format( str(stocklist.si_order_id), str(c_si.order_id)) stocklist.si_order_id = stocklist.si_order_id[: 300] stocklist.save() c_si.save() break else: self.message_user("单号%s部门没有此货品" % obj.order_id, "error") n -= 1 obj.mistake_tag = 7 obj.save() continue obj.order_status = 2 obj.mistake_tag = 0 obj.save() self.message_user( "成功提交 %(count)d %(items)s." % { "count": n, "items": model_ngettext(self.opts, n) }, 'success') return None
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log( 'change', '批量审核了 %(count)d %(items)s.' % { "count": n, "items": model_ngettext(self.opts, n) }) queryset.update(status=2) else: for obj in queryset: self.log('change', '', obj) if obj.quantity_received == obj.quantity_receivable: current_quantity = obj.purchase_order_id.complete_quantity + obj.quantity_received if obj.purchase_order_id.quantity >= current_quantity: obj.purchase_order_id.complete_quantity = current_quantity obj.purchase_order_id.save() else: obj.mistake_tag = 2 n -= 1 obj.save() continue else: obj.mistake_tag = 1 n -= 1 obj.save() continue is_exists = StockInfo.objects.filter( goods_name=obj.goods_name, warehouse=obj.warehouse) if is_exists.exists(): stock_exists = is_exists[0] stock_exists.quantity += obj.quantity_received stock_exists.undistributed += obj.quantity_received stock_exists.save() obj.order_status = 2 obj.save() else: stock = StockInfo() attrs = ['goods_name', 'goods_id', 'warehouse'] for att in attrs: value = getattr(obj, att, None) setattr(stock, att, value) stock.undistributed = obj.quantity_received stock.quantity = obj.quantity_received stock.creator = self.request.user.username try: stock.save() except Exception as e: n -= 1 obj.mistake_tag = 3 obj.save() continue obj.order_status = 2 obj.save() self.message_user( "成功提交 %(count)d %(items)s." % { "count": n, "items": model_ngettext(self.opts, n) }, 'success') return None
def delete_models(self, queryset): u'''orm删除对象''' n = queryset.count() if n: if self.log: for obj in queryset: self.log_deletion(self.request, obj) queryset.delete() self.message_user(_("Successfully deleted %(count)d %(items)s.") % {"count": n, "items": model_ngettext(self.opts, n) }, 'success')
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log( 'change', '批量审核了 %(count)d %(items)s.' % { "count": n, "items": model_ngettext(self.opts, n) }) queryset.update(status=2) else: queryset = queryset.filter(mistake_tag__in=[2, 7]) if queryset.exists(): try: goods_quantity = queryset.values( 'warehouse', 'goods_name', 'department__centre').annotate(sum=Sum('quantity')) except Exception as e: self.message_user("设置错误 %s" % e, "error") return None i = 0 for quantity in goods_quantity: i += 1 _q_entrepot = WarehouseVirtual.objects.filter( warehouse_name='正品待分仓') if _q_entrepot.exists(): entrepot = _q_entrepot[0] else: self.message_user("系统不存在'正品待分仓',请先创建该仓库 ", "error") break _q_stock = DeptStockInfo.objects.filter( vwarehouse=entrepot, warehouse_id=quantity['warehouse'], goods_name=quantity['goods_name']) if _q_stock.exists(): _sum_quantity = _q_stock.values( 'goods_name').annotate(total=Sum('quantity')) if quantity['sum'] > _sum_quantity[0]['total']: self.message_user( "可分配库存不足 %s" % quantity['goods_name'], "error") queryset.filter( goods_name_id=quantity['goods_name'] ).update(mistake_tag=8) n -= 1 continue else: goods_quantity = quantity['sum'] for stock in _q_stock: i += 1 so_order = VAllotSOInfo() so_order.dept_stock = stock prefix = "AO" serial_number = str( datetime.datetime.now()).replace( "-", "").replace(" ", "").replace( ":", "").replace(".", "")[:12] suffix = 1000 + i order_id = prefix + str( serial_number) + str(suffix) so_order.order_id = order_id so_order.centre = stock.centre so_order.warehouse = stock.warehouse so_order.vwarehouse = stock.vwarehouse so_order.goods_id = stock.goods_id so_order.goods_name = stock.goods_name so_order.mistake_tag = 8 so_order.creator = self.request.user.username if stock.quantity >= goods_quantity: so_order.quantity = goods_quantity so_order.undistributed = goods_quantity so_order.memorandum = { quantity['department__centre']: goods_quantity } try: so_order.save() queryset.filter( goods_name_id=quantity[ 'goods_name']).update( mistake_tag=10) break except Exception as e: self.message_user( "%s 生成虚拟出库单出错 " % e, "error") queryset.filter( goods_name_id=quantity[ 'goods_name']).update( mistake_tag=9) break else: so_order.quantity = stock.quantity so_order.undistributed = stock.quantity goods_quantity -= stock.quantity so_order.memorandum = { quantity['department__centre']: stock.quantity } try: so_order.save() queryset.filter(goods_name_id=quantity[ 'goods_name']).update( mistake_tag=10) except Exception as e: self.message_user( "%s 生成虚拟出库单出错 " % e, "error") queryset.filter(goods_name_id=quantity[ 'goods_name']).update( mistake_tag=9) break else: self.message_user("货品无足够可分配库存", "error") queryset.filter( goods_name_id=quantity['goods_name']).update( mistake_tag=8) else: self.message_user("只支持部门仓无货情况的错误提示订单", "error") self.message_user( "成功提交 %(count)d %(items)s." % { "count": n, "items": model_ngettext(self.opts, n) }, 'success') return None
def delete_models(self, queryset): u'''orm删除对象''' n = queryset.count() if n: self.do_deletes(queryset) self.message_user(_("Successfully deleted %(count)d %(items)s.") % {"count": n, "items": model_ngettext(self.opts, n) }, 'success')
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log( 'change', '批量审核了 %(count)d %(items)s.' % { "count": n, "items": model_ngettext(self.opts, n) }) queryset.update(status=2) else: for obj in queryset: self.log('change', '', obj) centre = obj.department.centre _q_vwarehouse = DeptToVW.objects.filter(centre=centre) if _q_vwarehouse.exists(): vwarehouse = _q_vwarehouse[0].warehouse else: self.message_user( "单号%s部门没有映射部门仓库,请设置对应仓库" % obj.order_id, "error") n -= 1 obj.mistake_tag = 1 obj.save() continue _q_stock = StockInfo.objects.filter( warehouse=obj.warehouse, goods_name=obj.goods_name) if _q_stock.exists(): current_stock = _q_stock[0] current_stock.quantity = obj.quantity_received + current_stock.quantity check_quantity = CovertSI.objects.filter( order_status=2, warehouse=obj.warehouse, goods_name=obj.goods_name).aggregate( Sum('quantity_linking') )['quantity_linking__sum'] if check_quantity is None: check_quantity = 0 check_quantity = check_quantity + obj.quantity_received if check_quantity != current_stock.quantity: self.message_user( "单号%s不要重复点递交,多线程递交会造成程序错乱" % obj.order_id, "error") n -= 1 obj.save() continue else: if obj.department.category == 1: current_stock.undistributed = current_stock.undistributed + obj.quantity_received try: current_stock.save() except Exception as e: self.message_user( "单号%s实仓实例保存失败, 错误:%s" % (obj.order_id, e), "error") n -= 1 obj.mistake_tag = 3 obj.save() continue _q_stock_virtual = DeptStockInfo.objects.filter( centre=obj.department.centre, goods_name=obj.goods_name, warehouse=obj.warehouse, vwarehouse=vwarehouse) if _q_stock_virtual.exists(): stock_virtual = _q_stock_virtual[0] stock_virtual.quantity = stock_virtual.quantity + obj.quantity_received try: stock_virtual.save() except Exception as e: self.message_user( "单号%s部门仓实例保存失败, 错误:%s" % (obj.order_id, e), "error") n -= 1 obj.mistake_tag = 4 obj.save() continue else: stock_virtual = DeptStockInfo() stock_virtual.goods_name = obj.goods_name stock_virtual.goods_id = obj.goods_id stock_virtual.warehouse = obj.warehouse stock_virtual.centre = obj.department.centre stock_virtual.vwarehouse = vwarehouse stock_virtual.quantity = obj.quantity_received try: stock_virtual.creator = self.request.user.username stock_virtual.save() except Exception as e: self.message_user( "单号%s部门仓实例保存失败, 错误:%s" % (obj.order_id, e), "error") n -= 1 obj.mistake_tag = 4 obj.save() continue else: stock = StockInfo() stock_virtual = DeptStockInfo() fields_list = ['goods_name', 'goods_id', 'warehouse'] for k in fields_list: if hasattr(obj, k): setattr(stock, k, getattr(obj, k)) # 更新对象属性对应键值 for k in fields_list: if hasattr(obj, k): setattr(stock_virtual, k, getattr(obj, k)) # 更新对象属性对应键值 stock.quantity = obj.quantity_received if obj.department.category == 1: stock.undistributed = obj.quantity_received else: stock.undistributed = 0 stock_virtual.centre = obj.department.centre stock_virtual.vwarehouse = vwarehouse stock_virtual.quantity = obj.quantity_received try: stock.creator = self.request.user.username stock.save() except Exception as e: self.message_user( "单号%s实仓实例保存失败, 错误:%s" % (obj.order_id, e), "error") n -= 1 obj.mistake_tag = 3 obj.save() continue try: stock_virtual.creator = self.request.user.username stock_virtual.save() except Exception as e: self.message_user( "单号%s部门仓实例保存失败, 错误:%s" % (obj.order_id, e), "error") n -= 1 obj.mistake_tag = 4 obj.save() continue obj.order_status = 2 obj.quantity_linking = obj.quantity_received obj.mistake_tag = 0 obj.save() self.message_user( "成功提交 %(count)d %(items)s." % { "count": n, "items": model_ngettext(self.opts, n) }, 'success') return None
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log( 'change', '批量审核了 %(count)d %(items)s.' % { "count": n, "items": model_ngettext(self.opts, n) }) queryset.update(status=2) else: for obj in queryset: centre = obj.department.centre _q_vwarehouse = DeptToVW.objects.filter(centre=centre) if _q_vwarehouse.exists(): vwarehouse = _q_vwarehouse[0].warehouse else: self.message_user( "单号%s部门没有映射部门仓库,请设置对应仓库" % obj.order_id, "error") n -= 1 obj.mistake_tag = 1 obj.save() continue if obj.mistake_tag == 4: self.log('change', '', obj) _q_stock_virtual = DeptStockInfo.objects.filter( centre=obj.department.centre, goods_name=obj.goods_name, warehouse=obj.warehouse, vwarehouse=vwarehouse) if _q_stock_virtual.exists(): stock_virtual = _q_stock_virtual[0] stock_virtual.quantity = stock_virtual.quantity + obj.quantity_received try: stock_virtual.save() except Exception as e: self.message_user( "单号%s部门仓实例保存失败, 错误:%s" % (obj.order_id, e), "error") n -= 1 obj.mistake_tag = 4 obj.save() continue else: stock_virtual = DeptStockInfo() stock_virtual.goods_name = obj.goods_name stock_virtual.goods_id = obj.goods_id stock_virtual.warehouse = obj.warehouse stock_virtual.centre = obj.department.centre stock_virtual.vwarehouse = vwarehouse stock_virtual.quantity = obj.quantity_received try: stock_virtual.creator = self.request.user.username stock_virtual.save() except Exception as e: self.message_user( "单号%s部门仓实例保存失败, 错误:%s" % (obj.order_id, e), "error") n -= 1 obj.mistake_tag = 4 obj.save() continue obj.order_status = 2 obj.quantity_linking = obj.quantity_received obj.mistake_tag = 0 obj.save() else: self.message_user("只有虚拟库存保存失败才可以修复", "error") n -= 1 continue self.message_user( "成功修复 %(count)d %(items)s." % { "count": n, "items": model_ngettext(self.opts, n) }, 'success') return None
def post(self, request, *args, **kwargs): delivery_ids = request.POST.get('ids', None) special_tag = request.POST.get('special_tag', None) if special_tag: _q_vwarehouse = WarehouseVirtual.objects.filter( warehouse_name='正品待分仓') if _q_vwarehouse: vwarehouse = _q_vwarehouse[0] _q_warehouse = DeptToW.objects.all() warehouse_list = [ warehouse.warehouse for warehouse in _q_warehouse ] queryset = TransDeptStock.objects.filter( warehouse__in=warehouse_list, vwarehouse=vwarehouse) n = queryset.count() if n: i = 0 for obj in queryset: if obj.quantity == 0: n -= 1 continue i += 1 self.log('change', '', obj) order_so = VASOCheck() prefix = "AO" serial_number = str(datetime.datetime.now()).replace( "-", "").replace(" ", "").replace(":", "").replace(".", "")[:12] suffix = 1000 + i order_id = prefix + str(serial_number) + str(suffix) order_so.order_id = order_id order_so.creator = self.request.user.username order_so.goods_name = obj.goods_name order_so.goods_id = obj.goods_id order_so.centre = obj.centre order_so.warehouse = obj.warehouse order_so.vwarehouse = obj.vwarehouse order_so.undistributed = obj.quantity order_so.quantity = obj.quantity order_so.dept_stock = obj try: order_so.save() except Exception as e: self.message_user( "%s 创建虚拟出库单出错, %s" % (obj.order_id, e), "error") continue self.message_user( "成功生成 %(count)d %(items)s." % { "count": n, "items": model_ngettext(self.opts, n) }, 'success') else: self.message_user("没有设置正品待分仓", "error") if delivery_ids is not None: if " " in delivery_ids: delivery_ids = delivery_ids.split(" ") for i in delivery_ids: if not re.match(r'^.{3,30}$', i): self.message_user( '%s包含错误的货品编号,请检查' % str(delivery_ids), 'error') break self.delivery_ids = delivery_ids self.queryset() return super(TransDeptStockAdmin, self).post(request, *args, **kwargs)
def post(self, request, *args, **kwargs): report_dic = {"successful": 0, "discard": 0, "false": 0, "repeated": 0, "error": []} ids = request.POST.get('ids', None) special_tag = request.POST.get('special_tag', None) if special_tag: if special_tag == '1': _q_warehouse = DeptToW.objects.all() warehouse_list = [warehouse.warehouse for warehouse in _q_warehouse] queryset = VAllotSOInfo.objects.filter(order_status=2, warehouse__in=warehouse_list) n = queryset.count() if n: i = 0 for obj in queryset: order_si = VAllotSIInfo() i += 1 self.log('change', '', obj) prefix = "AI" serial_number = str(datetime.datetime.now()).replace("-", "").replace(" ", "").replace(":", "").replace( ".", "")[:12] suffix = 1000 + i order_id = prefix + str(serial_number) + str(suffix) order_si.order_id = order_id _q_centre = DeptToW.objects.filter(warehouse=obj.warehouse) centre_num = _q_centre.count() if _q_centre.exists() and centre_num == 1: des_centre = _q_centre[0].centre else: obj.mistake_tag = 2 obj.save() report_dic['error'].append("%s 中心对应实仓出错, %s" % (obj.order_id, e)) report_dic['false'] += 1 continue _q_vwarehouse = DeptToVW.objects.filter(centre=des_centre) if _q_vwarehouse.exists(): des_vwarehouse = _q_vwarehouse[0].warehouse else: obj.mistake_tag = 2 obj.save() report_dic['error'].append("%s 部门对应中心仓出错, %s" % (obj.order_id, e)) report_dic['false'] += 1 continue order_si.warehouse = obj.warehouse order_si.ori_vwarehouse = obj.vwarehouse order_si.ori_centre = obj.centre order_si.centre = des_centre order_si.vwarehouse = des_vwarehouse order_si.quantity = obj.quantity order_si.creator = request.user.username order_si.goods_name = obj.goods_name order_si.goods_id = obj.goods_id order_si.va_stockout = obj try: order_si.save() report_dic['successful'] += 1 except Exception as e: report_dic['false'] += 1 report_dic['error'].append(e) continue self.message_user("成功生成 %(count)d %(items)s." % {"count": n, "items": model_ngettext(self.opts, n)}, 'success') elif special_tag == '2': so_orders = VASOHandle.objects.filter(is_delete=0, mistake_tag=8) i = 0 if so_orders: for order in so_orders: i += 1 si_order = VAllotSIInfo() try: for k, v in eval(order.memorandum).items(): si_order.centre_id = k _q_vwarehouse = DeptToVW.objects.filter(centre_id=k, is_delete=0) if _q_vwarehouse: si_order.vwarehouse = _q_vwarehouse[0].warehouse else: self.message_user('%s 入库部门仓库出错' % order.order_id, 'error') order.mistake_tag = 4 order.save() report_dic['false'] += 1 continue si_order.quantity = v except Exception as e: report_dic['error'].append('%s备注格式不对,单据出错' % str(order.order_id)) report_dic['false'] += 1 continue prefix = "AI" serial_number = str(datetime.datetime.now()).replace("-", "").replace(" ", "").replace(":", "").replace( ".", "")[:12] suffix = 1000 + i order_id = prefix + str(serial_number) + str(suffix) si_order.order_id = order_id si_order.order_category = 2 si_order.ori_centre = order.centre si_order.ori_vwarehouse = order.vwarehouse si_order.goods_id = order.goods_id si_order.goods_name = order.goods_name si_order.warehouse = order.warehouse si_order.va_stockout = order try: si_order.creator = request.user.username si_order.save() report_dic['successful'] += 1 except Exception as e: order.mistake_tag = 3 order.save() report_dic['false'] += 1 report_dic['error'].append(e) if report_dic: self.message_user(report_dic, 'info') if ids is not None: if " " in ids: ids = ids.split(" ") for i in ids: if not re.match(r'^.{3,30}$', i): self.message_user('%s包含错误的货品编号,请检查' % str(ids), 'error') break self.ids = ids self.queryset() return super(VASOHandleAdmin, self).post(request, *args, **kwargs)
def do_action(self, queryset): if not self.has_change_permission(): raise PermissionDenied n = queryset.count() if n: if self.modify_models_batch: self.log('change', '批量审核了 %(count)d %(items)s.' % {"count": n, "items": model_ngettext(self.opts, n)}) queryset.update(status=2) else: for obj in queryset: self.log('change', '', obj) obj.dept_stock.quantity = obj.dept_stock.quantity - obj.quantity if obj.dept_stock.quantity < 0: self.message_user("%s 可调拨数量不足,修正调拨数量" % obj.order_id, "error") obj.mistake_tag = 1 obj.save() continue else: try: obj.dept_stock.save() except Exception as e: self.message_user("%s 更新虚拟库存错误, %s" % (obj.order_id, e), "error") obj.mistake_tag = 2 obj.save() continue if obj.centre.category == 1: _q_stock = StockInfo.objects.filter(goods_name=obj.goods_name, warehouse=obj.warehouse) if _q_stock.exists(): stock = _q_stock[0] stock.undistributed -= obj.quantity if stock.undistributed < 0: self.message_user("%s 实仓可调拨库存数量错误, %s" % (obj.order_id, e), "error") obj.mistake_tag = 4 obj.save() continue else: try: stock.save() except Exception as e: self.message_user("%s 实仓可调拨保存错误, %s" % (obj.order_id, e), "error") obj.mistake_tag = 6 obj.save() continue else: self.message_user("%s 查不到实仓可调拨货品, %s" % (obj.order_id, e), "error") obj.mistake_tag = 5 obj.save() continue pass obj.order_status = 2 if obj.mistake_tag != 8: obj.mistake_tag = 0 try: obj.save() except Exception as e: self.message_user("%s 单据保存出错, %s" % (obj.order_id, e), "error") obj.mistake_tag = 3 obj.save() continue self.message_user("成功提交 %(count)d %(items)s." % {"count": n, "items": model_ngettext(self.opts, n)}, 'success') return None