def stats_item(supplier_id): """ 渠道统计明细 :param supplier_id: :return: """ supplier_info = get_supplier_row_by_id(supplier_id) # 检查资源是否存在 if not supplier_info: abort(404) # 检查资源是否删除 if supplier_info.status_delete == STATUS_DEL_OK: abort(410) # 统计数据 supplier_stats_item_info = get_supplier_row_by_id(supplier_id) # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('supplier stats item') # 渲染模板 return render_template( 'supplier/stats_item.html', supplier_stats_item_info=supplier_stats_item_info, **document_info )
def ajax_delete(): """ 渠道删除 :return: """ ajax_success_msg = AJAX_SUCCESS_MSG.copy() ajax_failure_msg = AJAX_FAILURE_MSG.copy() # 检查删除权限 if not permission_supplier_section_del.can(): ext_msg = _('Permission Denied') ajax_failure_msg['msg'] = _('Del Failure, %(ext_msg)s', ext_msg=ext_msg) return jsonify(ajax_failure_msg) # 检查请求方法 if not (request.method == 'GET' and request.is_xhr): ext_msg = _('Method Not Allowed') ajax_failure_msg['msg'] = _('Del Failure, %(ext_msg)s', ext_msg=ext_msg) return jsonify(ajax_failure_msg) # 检查请求参数 supplier_id = request.args.get('supplier_id', 0, type=int) if not supplier_id: ext_msg = _('ID does not exist') ajax_failure_msg['msg'] = _('Del Failure, %(ext_msg)s', ext_msg=ext_msg) return jsonify(ajax_failure_msg) supplier_info = get_supplier_row_by_id(supplier_id) # 检查资源是否存在 if not supplier_info: ext_msg = _('ID does not exist') ajax_failure_msg['msg'] = _('Del Failure, %(ext_msg)s', ext_msg=ext_msg) return jsonify(ajax_failure_msg) # 检查资源是否删除 if supplier_info.status_delete == STATUS_DEL_OK: ext_msg = _('Already deleted') ajax_failure_msg['msg'] = _('Del Failure, %(ext_msg)s', ext_msg=ext_msg) return jsonify(ajax_failure_msg) current_time = datetime.utcnow() supplier_data = { 'status_delete': STATUS_DEL_OK, 'delete_time': current_time, 'update_time': current_time, } result = edit_supplier(supplier_id, supplier_data) if result: ajax_success_msg['msg'] = _('Del Success') return jsonify(ajax_success_msg) else: ajax_failure_msg['msg'] = _('Del Failure') return jsonify(ajax_failure_msg)
def pdf(buyer_order_id): """ 文件下载 :param buyer_order_id: :return: """ buyer_order_info = get_buyer_order_row_by_id(buyer_order_id) # 检查资源是否存在 if not buyer_order_info: abort(404) # 检查资源是否删除 if buyer_order_info.status_delete == STATUS_DEL_OK: abort(410) buyer_order_print_date = time_utc_to_local( buyer_order_info.update_time).strftime('%Y-%m-%d') buyer_order_code = '%s%s' % ( g.BUYER_ORDER_PREFIX, time_utc_to_local( buyer_order_info.create_time).strftime('%y%m%d%H%M%S')) # 获取渠道公司信息 supplier_info = get_supplier_row_by_id(buyer_order_info.supplier_cid) # 获取渠道联系方式 supplier_contact_info = get_supplier_contact_row_by_id( buyer_order_info.supplier_contact_id) # 获取询价人员信息 user_info = get_user_row_by_id(buyer_order_info.uid) buyer_order_items = get_buyer_order_items_rows( buyer_order_id=buyer_order_id) # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('buyer order pdf') template_name = 'buyer/order/pdf.html' html = render_template(template_name, buyer_order_id=buyer_order_id, buyer_order_info=buyer_order_info, supplier_info=supplier_info, supplier_contact_info=supplier_contact_info, user_info=user_info, buyer_order_items=buyer_order_items, buyer_order_print_date=buyer_order_print_date, buyer_order_code=buyer_order_code, **document_info) # return html return render_pdf( html=HTML(string=html), stylesheets=[CSS(string='@page {size:A4; margin:35px;}')], download_filename='采购订单.pdf'.encode('utf-8'))
def filter_supplier_company_name(supplier_id, default='-'): """ 渠道公司名称 :param supplier_id: :param default: :return: """ if not supplier_id: return default supplier_info = get_supplier_row_by_id(supplier_id) return supplier_info.company_name if supplier_info else default
def pdf(purchase_id): """ 文件下载 :param purchase_id: :return: """ purchase_info = get_purchase_row_by_id(purchase_id) # 检查资源是否存在 if not purchase_info: abort(404) # 检查资源是否删除 if purchase_info.status_delete == STATUS_DEL_OK: abort(410) purchase_print_date = time_utc_to_local( purchase_info.update_time).strftime('%Y-%m-%d') purchase_code = '%s%s' % ( g.ENQUIRIES_PREFIX, time_utc_to_local( purchase_info.create_time).strftime('%y%m%d%H%M%S')) # 获取渠道公司信息 supplier_info = get_supplier_row_by_id(purchase_info.supplier_cid) # 获取渠道联系方式 supplier_contact_info = get_supplier_contact_row_by_id( purchase_info.supplier_contact_id) # 获取进货人员信息 user_info = get_user_row_by_id(purchase_info.uid) purchase_items = get_purchase_items_rows(purchase_id=purchase_id) # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('purchase pdf') template_name = 'purchase/pdf.html' html = render_template(template_name, purchase_id=purchase_id, purchase_info=purchase_info, supplier_info=supplier_info, supplier_contact_info=supplier_contact_info, user_info=user_info, purchase_items=purchase_items, purchase_print_date=purchase_print_date, purchase_code=purchase_code, **document_info) # return html return render_pdf( html=HTML(string=html), stylesheets=[CSS(string='@page {size:A4; margin:35px;}')], download_filename='销售出货.pdf'.encode('utf-8'))
def pdf(enquiry_id): """ 文件下载 :param enquiry_id: :return: """ enquiry_info = get_enquiry_row_by_id(enquiry_id) # 检查资源是否存在 if not enquiry_info: abort(404) # 检查资源是否删除 if enquiry_info.status_delete == STATUS_DEL_OK: abort(410) enquiry_print_date = time_utc_to_local( enquiry_info.update_time).strftime('%Y-%m-%d') enquiry_code = '%s%s' % ( g.ENQUIRIES_PREFIX, time_utc_to_local( enquiry_info.create_time).strftime('%y%m%d%H%M%S')) # 获取客户公司信息 supplier_info = get_supplier_row_by_id(enquiry_info.supplier_cid) # 获取客户联系方式 supplier_contact_info = get_supplier_contact_row_by_id( enquiry_info.supplier_contact_id) # 获取询价人员信息 user_info = get_user_row_by_id(enquiry_info.uid) enquiry_items = get_enquiry_items_rows(enquiry_id=enquiry_id) # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('enquiry edit') template_name = 'enquiry/pdf.html' html = render_template(template_name, enquiry_id=enquiry_id, enquiry_info=enquiry_info, supplier_info=supplier_info, supplier_contact_info=supplier_contact_info, user_info=user_info, enquiry_items=enquiry_items, enquiry_print_date=enquiry_print_date, enquiry_code=enquiry_code, **document_info) # return html return render_pdf( html=HTML(string=html), stylesheets=[CSS(string='@page {size:A4; margin:35px;}')], download_filename='询价单.pdf'.encode('utf-8'))
def preview(buyer_order_id): """ 打印预览 :param buyer_order_id: :return: """ buyer_order_info = get_buyer_order_row_by_id(buyer_order_id) # 检查资源是否存在 if not buyer_order_info: abort(404) # 检查资源是否删除 if buyer_order_info.status_delete == STATUS_DEL_OK: abort(410) buyer_order_print_date = time_utc_to_local( buyer_order_info.update_time).strftime('%Y-%m-%d') buyer_order_code = '%s%s' % ( g.BUYER_ORDER_PREFIX, time_utc_to_local( buyer_order_info.create_time).strftime('%y%m%d%H%M%S')) # 获取渠道公司信息 supplier_info = get_supplier_row_by_id(buyer_order_info.supplier_cid) # 获取渠道联系方式 supplier_contact_info = get_supplier_contact_row_by_id( buyer_order_info.supplier_contact_id) # 获取询价人员信息 user_info = get_user_row_by_id(buyer_order_info.uid) buyer_order_items = get_buyer_order_items_rows( buyer_order_id=buyer_order_id) # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('buyer order preview') template_name = 'buyer/order/preview.html' return render_template(template_name, buyer_order_id=buyer_order_id, buyer_order_info=buyer_order_info, supplier_info=supplier_info, supplier_contact_info=supplier_contact_info, user_info=user_info, buyer_order_items=buyer_order_items, buyer_order_print_date=buyer_order_print_date, buyer_order_code=buyer_order_code, **document_info)
def info(enquiry_id): """ 询价详情 :param enquiry_id: :return: """ # 详情数据 enquiry_info = get_enquiry_row_by_id(enquiry_id) # 检查资源是否存在 if not enquiry_info: abort(404) # 检查资源是否删除 if enquiry_info.status_delete == STATUS_DEL_OK: abort(410) enquiry_print_date = time_utc_to_local( enquiry_info.update_time).strftime('%Y-%m-%d') enquiry_code = '%s%s' % ( g.ENQUIRIES_PREFIX, time_utc_to_local( enquiry_info.create_time).strftime('%y%m%d%H%M%S')) # 获取渠道公司信息 supplier_info = get_supplier_row_by_id(enquiry_info.supplier_cid) # 获取渠道联系方式 supplier_contact_info = get_supplier_contact_row_by_id( enquiry_info.supplier_contact_id) # 获取询价人员信息 user_info = get_user_row_by_id(enquiry_info.uid) enquiry_items = get_enquiry_items_rows(enquiry_id=enquiry_id) # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('enquiry info') template_name = 'enquiry/info.html' return render_template(template_name, enquiry_id=enquiry_id, enquiry_info=enquiry_info, supplier_info=supplier_info, supplier_contact_info=supplier_contact_info, user_info=user_info, enquiry_items=enquiry_items, enquiry_print_date=enquiry_print_date, enquiry_code=enquiry_code, **document_info)
def preview(purchase_id): """ 打印预览 :param purchase_id: :return: """ purchase_info = get_purchase_row_by_id(purchase_id) # 检查资源是否存在 if not purchase_info: abort(404) # 检查资源是否删除 if purchase_info.status_delete == STATUS_DEL_OK: abort(410) purchase_print_date = time_utc_to_local( purchase_info.update_time).strftime('%Y-%m-%d') purchase_code = '%s%s' % ( g.ENQUIRIES_PREFIX, time_utc_to_local( purchase_info.create_time).strftime('%y%m%d%H%M%S')) # 获取渠道公司信息 supplier_info = get_supplier_row_by_id(purchase_info.supplier_cid) # 获取渠道联系方式 supplier_contact_info = get_supplier_contact_row_by_id( purchase_info.supplier_contact_id) # 获取进货人员信息 user_info = get_user_row_by_id(purchase_info.uid) purchase_items = get_purchase_items_rows(purchase_id=purchase_id) # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('purchase preview') template_name = 'purchase/preview.html' return render_template(template_name, purchase_id=purchase_id, purchase_info=purchase_info, supplier_info=supplier_info, supplier_contact_info=supplier_contact_info, user_info=user_info, purchase_items=purchase_items, purchase_print_date=purchase_print_date, purchase_code=purchase_code, **document_info)
def info(supplier_id): """ 渠道详情 :param supplier_id: :return: """ # 详情数据 supplier_info = get_supplier_row_by_id(supplier_id) # 检查资源是否存在 if not supplier_info: abort(404) # 检查资源是否删除 if supplier_info.status_delete == STATUS_DEL_OK: abort(410) # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('supplier info') # 渲染模板 return render_template('supplier/info.html', supplier_info=supplier_info, **document_info)
def edit(supplier_id): """ 渠道编辑 """ supplier_info = get_supplier_row_by_id(supplier_id) # 检查资源是否存在 if not supplier_info: abort(404) # 检查资源是否删除 if supplier_info.status_delete == STATUS_DEL_OK: abort(410) template_name = 'supplier/edit.html' # 加载编辑表单 form = SupplierEditForm(request.form) form.owner_uid.choices = get_user_choices() # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('supplier edit') # 进入编辑页面 if request.method == 'GET': # 表单赋值 form.id.data = supplier_info.id form.company_name.data = supplier_info.company_name form.company_address.data = supplier_info.company_address form.company_site.data = supplier_info.company_site form.company_tel.data = supplier_info.company_tel form.company_fax.data = supplier_info.company_fax form.company_email.data = supplier_info.company_email form.company_type.data = supplier_info.company_type form.owner_uid.data = supplier_info.owner_uid form.create_time.data = supplier_info.create_time form.update_time.data = supplier_info.update_time # 渲染页面 return render_template(template_name, supplier_id=supplier_id, form=form, **document_info) # 处理编辑请求 if request.method == 'POST': # 表单校验失败 if supplier_id != form.id.data or not form.validate_on_submit(): flash(_('Edit Failure'), 'danger') # flash(form.errors, 'danger') return render_template(template_name, supplier_id=supplier_id, form=form, **document_info) # 表单校验成功 current_time = datetime.utcnow() supplier_data = { 'company_name': form.company_name.data, 'company_address': form.company_address.data, 'company_site': form.company_site.data, 'company_tel': form.company_tel.data, 'company_fax': form.company_fax.data, 'company_email': form.company_email.data, 'company_type': form.company_type.data, 'owner_uid': form.owner_uid.data, 'update_time': current_time, } result = edit_supplier(supplier_id, supplier_data) # 编辑操作成功 if result: flash(_('Edit Success'), 'success') return redirect( request.args.get('next') or url_for('supplier.lists')) # 编辑操作失败 else: flash(_('Edit Failure'), 'danger') return render_template(template_name, supplier_id=supplier_id, form=form, **document_info)
def edit(buyer_order_id): """ 采购订单编辑 """ buyer_order_info = get_buyer_order_row_by_id(buyer_order_id) # 检查资源是否存在 if not buyer_order_info: abort(404) # 检查资源是否删除 if buyer_order_info.status_delete == STATUS_DEL_OK: abort(410) # 检查资源是否核准 if buyer_order_info.status_audit == STATUS_AUDIT_OK: resource = _('Order') abort( exceptions.Locked.code, _('The %(resource)s has been approved, it cannot be modified', resource=resource)) template_name = 'buyer/order/edit.html' # 加载编辑表单 form = BuyerOrderEditForm(request.form) form.uid.choices = get_user_choices() # form.status_order.choices = STATUS_ORDER_CHOICES # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('buyer order edit') # 进入编辑页面 if request.method == 'GET': # 获取明细 buyer_order_items = get_buyer_order_items_rows( buyer_order_id=buyer_order_id) # 表单赋值 form.uid.data = buyer_order_info.uid form.supplier_cid.data = buyer_order_info.supplier_cid form.supplier_contact_id.data = buyer_order_info.supplier_contact_id form.type_tax.data = buyer_order_info.type_tax form.amount_order.data = buyer_order_info.amount_order # form.buyer_order_items = buyer_order_items while len(form.buyer_order_items) > 0: form.buyer_order_items.pop_entry() for buyer_order_item in buyer_order_items: buyer_order_item_form = BuyerOrderItemsEditForm() buyer_order_item_form.id = buyer_order_item.id buyer_order_item_form.buyer_order_id = buyer_order_item.buyer_order_id buyer_order_item_form.uid = buyer_order_item.uid # buyer_order_item_form.supplier_cid = buyer_order_item.supplier_cid # buyer_order_item_form.supplier_company_name = buyer_order_item.supplier_company_name buyer_order_item_form.custom_production_brand = buyer_order_item.custom_production_brand buyer_order_item_form.custom_production_model = buyer_order_item.custom_production_model buyer_order_item_form.production_id = buyer_order_item.production_id buyer_order_item_form.production_brand = buyer_order_item.production_brand buyer_order_item_form.production_model = buyer_order_item.production_model buyer_order_item_form.production_sku = buyer_order_item.production_sku buyer_order_item_form.delivery_time = buyer_order_item.delivery_time buyer_order_item_form.quantity = buyer_order_item.quantity buyer_order_item_form.unit_price = buyer_order_item.unit_price buyer_order_item_form.note = buyer_order_item.note buyer_order_item_form.type_tax = buyer_order_item.type_tax form.buyer_order_items.append_entry(buyer_order_item_form) # 渲染页面 return render_template(template_name, buyer_order_id=buyer_order_id, form=form, **document_info) # 处理编辑请求 if request.method == 'POST': # 增删数据行不需要校验表单 # 表单新增空行 if form.data_line_add.data is not None: if form.buyer_order_items.max_entries and len( form.buyer_order_items.entries ) >= form.buyer_order_items.max_entries: flash('最多创建%s条记录' % form.buyer_order_items.max_entries, 'danger') else: form.buyer_order_items.append_entry() return render_template(template_name, buyer_order_id=buyer_order_id, form=form, **document_info) # 表单删除一行 if form.data_line_del.data is not None: if form.buyer_order_items.min_entries and len( form.buyer_order_items.entries ) <= form.buyer_order_items.min_entries: flash('最少保留%s条记录' % form.buyer_order_items.min_entries, 'danger') else: data_line_index = form.data_line_del.data form.buyer_order_items.entries.pop(data_line_index) return render_template(template_name, buyer_order_id=buyer_order_id, form=form, **document_info) # 表单校验失败 if not form.validate_on_submit(): flash(_('Edit Failure'), 'danger') # flash(form.errors, 'danger') # flash(form.buyer_order_items.errors, 'danger') return render_template(template_name, buyer_order_id=buyer_order_id, form=form, **document_info) # 表单校验成功 # 获取明细 buyer_order_items = get_buyer_order_items_rows( buyer_order_id=buyer_order_id) buyer_order_items_ids = [item.id for item in buyer_order_items] # 数据新增、数据删除、数据修改 buyer_order_items_ids_new = [] amount_buyer_order = 0 for buyer_order_item in form.buyer_order_items.entries: # 错误 if buyer_order_item.form.id.data and buyer_order_item.form.id.data not in buyer_order_items_ids: continue buyer_order_item_data = { 'buyer_order_id': buyer_order_id, 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_company_name': get_supplier_row_by_id(form.supplier_cid.data).company_name, 'custom_production_brand': buyer_order_item.form.custom_production_brand.data, 'custom_production_model': buyer_order_item.form.custom_production_model.data, 'production_id': buyer_order_item.form.production_id.data, 'production_brand': buyer_order_item.form.production_brand.data, 'production_model': buyer_order_item.form.production_model.data, 'production_sku': buyer_order_item.form.production_sku.data, 'delivery_time': buyer_order_item.form.delivery_time.data, 'quantity': buyer_order_item.form.quantity.data, 'unit_price': buyer_order_item.form.unit_price.data, 'note': buyer_order_item.form.note.data, 'type_tax': form.type_tax.data, } if not buyer_order_item.form.id.data: # 新增 add_buyer_order_items(buyer_order_item_data) amount_buyer_order += buyer_order_item_data[ 'quantity'] * buyer_order_item_data['unit_price'] else: # 修改 edit_buyer_order_items(buyer_order_item.form.id.data, buyer_order_item_data) amount_buyer_order += buyer_order_item_data[ 'quantity'] * buyer_order_item_data['unit_price'] buyer_order_items_ids_new.append(buyer_order_item.form.id.data) # 删除 buyer_order_items_ids_del = list( set(buyer_order_items_ids) - set(buyer_order_items_ids_new)) for buyer_order_items_id in buyer_order_items_ids_del: delete_buyer_order_items(buyer_order_items_id) # 更新采购订单 current_time = datetime.utcnow() buyer_order_data = { 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_contact_id': form.supplier_contact_id.data, 'type_tax': form.type_tax.data, 'amount_production': amount_buyer_order, 'amount_order': amount_buyer_order, 'update_time': current_time, } result = edit_buyer_order(buyer_order_id, buyer_order_data) # 编辑操作成功 if result: flash(_('Edit Success'), 'success') return redirect( request.args.get('next') or url_for('buyer_order.lists')) # 编辑操作失败 else: flash(_('Edit Failure'), 'danger') return render_template(template_name, buyer_order_id=buyer_order_id, form=form, **document_info)
def add(): template_name = 'buyer/order/add.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('buyer order add') # 加载创建表单 form = BuyerOrderAddForm(request.form) form.uid.choices = get_user_choices() form.uid.data = current_user.id # form.contact_id.choices = default_choices_int # 进入创建页面 if request.method == 'GET': # 克隆单据 from_type = request.args.get('from_type') from_id = request.args.get('from_id', type=int) # 克隆单据 - 报价单 if from_type == 'buyer_order' and from_id: buyer_order_id = from_id buyer_order_info = get_buyer_order_row_by_id(buyer_order_id) # 检查资源是否存在 if not buyer_order_info: abort(404) # 检查资源是否删除 if buyer_order_info.status_delete == STATUS_DEL_OK: abort(410) # 获取明细 buyer_order_items = get_buyer_order_items_rows( buyer_order_id=buyer_order_id) # 表单赋值 form.uid.data = buyer_order_info.uid form.supplier_cid.data = buyer_order_info.supplier_cid form.supplier_contact_id.data = buyer_order_info.supplier_contact_id form.type_tax.data = buyer_order_info.type_tax form.amount_order.data = buyer_order_info.amount_order while len(form.buyer_order_items) > 0: form.buyer_order_items.pop_entry() for buyer_order_item in buyer_order_items: buyer_order_item_form = BuyerOrderItemsEditForm() buyer_order_item_form.id = buyer_order_item.id buyer_order_item_form.buyer_order_id = buyer_order_item.buyer_order_id buyer_order_item_form.uid = buyer_order_item.uid # buyer_order_item_form.supplier_cid = buyer_order_item.supplier_cid # buyer_order_item_form.supplier_company_name = buyer_order_item.supplier_company_name buyer_order_item_form.custom_production_brand = buyer_order_item.custom_production_brand buyer_order_item_form.custom_production_model = buyer_order_item.custom_production_model buyer_order_item_form.production_id = buyer_order_item.production_id buyer_order_item_form.production_brand = buyer_order_item.production_brand buyer_order_item_form.production_model = buyer_order_item.production_model buyer_order_item_form.production_sku = buyer_order_item.production_sku buyer_order_item_form.delivery_time = buyer_order_item.delivery_time buyer_order_item_form.quantity = buyer_order_item.quantity buyer_order_item_form.unit_price = buyer_order_item.unit_price buyer_order_item_form.note = buyer_order_item.note buyer_order_item_form.type_tax = buyer_order_item.type_tax form.buyer_order_items.append_entry(buyer_order_item_form) # 渲染页面 return render_template(template_name, form=form, **document_info) # 处理创建请求 if request.method == 'POST': # 表单新增空行 if form.data_line_add.data is not None: if form.buyer_order_items.max_entries and len( form.buyer_order_items.entries ) >= form.buyer_order_items.max_entries: flash('最多创建%s条记录' % form.buyer_order_items.max_entries, 'danger') else: form.buyer_order_items.append_entry() return render_template(template_name, form=form, **document_info) # 表单删除一行 if form.data_line_del.data is not None: if form.buyer_order_items.min_entries and len( form.buyer_order_items.entries ) <= form.buyer_order_items.min_entries: flash('最少保留%s条记录' % form.buyer_order_items.min_entries, 'danger') else: data_line_index = form.data_line_del.data form.buyer_order_items.entries.pop(data_line_index) return render_template(template_name, form=form, **document_info) # 表单校验失败 if not form.validate_on_submit(): flash(_('Add Failure'), 'danger') # flash(form.errors, 'danger') return render_template(template_name, form=form, **document_info) # 表单校验成功 # 创建订单 current_time = datetime.utcnow() buyer_order_data = { 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_contact_id': form.supplier_contact_id.data, 'type_tax': form.type_tax.data, 'delivery_way': form.delivery_way.data, 'create_time': current_time, 'update_time': current_time, } buyer_order_id = add_buyer_order(buyer_order_data) amount_buyer_order = 0 for buyer_order_item in form.buyer_order_items.entries: current_time = datetime.utcnow() buyer_order_item_data = { 'buyer_order_id': buyer_order_id, 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_company_name': get_supplier_row_by_id(form.supplier_cid.data).company_name, 'custom_production_brand': buyer_order_item.form.custom_production_brand.data, 'custom_production_model': buyer_order_item.form.custom_production_model.data, 'production_id': buyer_order_item.form.production_id.data, 'production_brand': buyer_order_item.form.production_brand.data, 'production_model': buyer_order_item.form.production_model.data, 'production_sku': buyer_order_item.form.production_sku.data, 'delivery_time': buyer_order_item.form.delivery_time.data, 'quantity': buyer_order_item.form.quantity.data, 'unit_price': buyer_order_item.form.unit_price.data, 'note': buyer_order_item.form.note.data, 'type_tax': form.type_tax.data, 'create_time': current_time, 'update_time': current_time, } # 新增 add_buyer_order_items(buyer_order_item_data) amount_buyer_order += (buyer_order_item_data['quantity'] or 0) * ( buyer_order_item_data['unit_price'] or 0) # 更新报价 buyer_order_data = { 'amount_production': amount_buyer_order, 'amount_order': amount_buyer_order, 'update_time': current_time, } result = edit_buyer_order(buyer_order_id, buyer_order_data) # todo 事务 # 明细保存 # 总表保存 # 创建操作成功 if result: flash(_('Add Success'), 'success') return redirect( request.args.get('next') or url_for('buyer_order.lists')) # 创建操作失败 else: flash(_('Add Failure'), 'danger') return render_template(template_name, form=form, **document_info)
def edit(enquiry_id): """ 询价编辑 """ enquiry_info = get_enquiry_row_by_id(enquiry_id) # 检查资源是否存在 if not enquiry_info: abort(404) # 检查资源是否删除 if enquiry_info.status_delete == STATUS_DEL_OK: abort(410) template_name = 'enquiry/edit.html' # 加载编辑表单 form = EnquiryEditForm(request.form) form.uid.choices = get_user_choices() form.status_order.choices = STATUS_ORDER_CHOICES # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('enquiry edit') # 进入编辑页面 if request.method == 'GET': # 获取明细 enquiry_items = get_enquiry_items_rows(enquiry_id=enquiry_id) # 表单赋值 form.uid.data = enquiry_info.uid form.supplier_cid.data = enquiry_info.supplier_cid form.supplier_contact_id.data = enquiry_info.supplier_contact_id form.status_order.data = enquiry_info.status_order form.amount_enquiry.data = enquiry_info.amount_enquiry # form.enquiry_items = enquiry_items while len(form.enquiry_items) > 0: form.enquiry_items.pop_entry() for enquiry_item in enquiry_items: enquiry_item_form = EnquiryItemEditForm() enquiry_item_form.id = enquiry_item.id enquiry_item_form.enquiry_id = enquiry_item.enquiry_id enquiry_item_form.uid = enquiry_item.uid enquiry_item_form.enquiry_production_model = enquiry_item.enquiry_production_model enquiry_item_form.enquiry_quantity = enquiry_item.enquiry_quantity enquiry_item_form.production_id = enquiry_item.production_id enquiry_item_form.production_brand = enquiry_item.production_brand enquiry_item_form.production_model = enquiry_item.production_model enquiry_item_form.production_sku = enquiry_item.production_sku enquiry_item_form.note = enquiry_item.note enquiry_item_form.quantity = enquiry_item.quantity enquiry_item_form.unit_price = enquiry_item.unit_price enquiry_item_form.delivery_time = enquiry_item.delivery_time enquiry_item_form.status_ordered = enquiry_item.status_ordered form.enquiry_items.append_entry(enquiry_item_form) # 渲染页面 return render_template(template_name, enquiry_id=enquiry_id, form=form, **document_info) # 处理编辑请求 if request.method == 'POST': # 增删数据行不需要校验表单 # 表单新增空行 if form.data_line_add.data is not None: if form.enquiry_items.max_entries and len( form.enquiry_items.entries ) >= form.enquiry_items.max_entries: flash('最多创建%s条记录' % form.enquiry_items.max_entries, 'danger') else: form.enquiry_items.append_entry() return render_template(template_name, enquiry_id=enquiry_id, form=form, **document_info) # 表单删除一行 if form.data_line_del.data is not None: if form.enquiry_items.min_entries and len( form.enquiry_items.entries ) <= form.enquiry_items.min_entries: flash('最少保留%s条记录' % form.enquiry_items.min_entries, 'danger') else: data_line_index = form.data_line_del.data form.enquiry_items.entries.pop(data_line_index) return render_template(template_name, enquiry_id=enquiry_id, form=form, **document_info) # 表单校验失败 if not form.validate_on_submit(): flash(_('Edit Failure'), 'danger') # flash(form.errors, 'danger') # flash(form.enquiry_items.errors, 'danger') return render_template(template_name, enquiry_id=enquiry_id, form=form, **document_info) # 表单校验成功 # 获取明细 enquiry_items = get_enquiry_items_rows(enquiry_id=enquiry_id) enquiry_items_ids = [item.id for item in enquiry_items] # 数据新增、数据删除、数据修改 enquiry_items_ids_new = [] amount_enquiry = 0 for enquiry_item in form.enquiry_items.entries: # 错误 if enquiry_item.form.id.data and enquiry_item.form.id.data not in enquiry_items_ids: continue enquiry_item_data = { 'enquiry_id': enquiry_id, 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_company_name': get_supplier_row_by_id(form.supplier_cid.data).company_name, 'enquiry_production_model': enquiry_item.form.enquiry_production_model.data, 'enquiry_quantity': enquiry_item.form.enquiry_quantity.data, 'production_id': enquiry_item.form.production_id.data, 'production_brand': enquiry_item.form.production_brand.data, 'production_model': enquiry_item.form.production_model.data, 'production_sku': enquiry_item.form.production_sku.data, 'note': enquiry_item.form.note.data, 'delivery_time': enquiry_item.form.delivery_time.data, 'quantity': enquiry_item.form.quantity.data, 'unit_price': enquiry_item.form.unit_price.data, 'status_ordered': enquiry_item.form.status_ordered.data, } if not enquiry_item.form.id.data: # 新增 add_enquiry_items(enquiry_item_data) amount_enquiry += enquiry_item_data[ 'quantity'] * enquiry_item_data['unit_price'] else: # 修改 edit_enquiry_items(enquiry_item.form.id.data, enquiry_item_data) amount_enquiry += enquiry_item_data[ 'quantity'] * enquiry_item_data['unit_price'] enquiry_items_ids_new.append(enquiry_item.form.id.data) # 删除 enquiry_items_ids_del = list( set(enquiry_items_ids) - set(enquiry_items_ids_new)) for enquiry_items_id in enquiry_items_ids_del: delete_enquiry_items(enquiry_items_id) # 更新询价 current_time = datetime.utcnow() enquiry_data = { 'supplier_cid': form.supplier_cid.data, 'uid': form.uid.data, 'supplier_contact_id': form.supplier_contact_id.data, 'status_order': form.status_order.data, 'amount_production': amount_enquiry, 'amount_enquiry': amount_enquiry, 'update_time': current_time, } result = edit_enquiry(enquiry_id, enquiry_data) # 编辑操作成功 if result: flash(_('Edit Success'), 'success') return redirect( request.args.get('next') or url_for('enquiry.lists')) # 编辑操作失败 else: flash(_('Edit Failure'), 'danger') return render_template(template_name, enquiry_id=enquiry_id, form=form, **document_info)
def add(): """ 创建询价 :return: """ template_name = 'enquiry/add.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('enquiry add') # 加载创建表单 form = EnquiryAddForm(request.form) form.uid.choices = get_user_choices() form.uid.data = current_user.id form.status_order.choices = STATUS_ORDER_CHOICES # 进入创建页面 if request.method == 'GET': # 克隆单据 from_type = request.args.get('from_type') from_id = request.args.get('from_id', type=int) # 克隆单据 - 报价单 if from_type == 'enquiry' and from_id: enquiry_id = from_id enquiry_info = get_enquiry_row_by_id(enquiry_id) # 检查资源是否存在 if not enquiry_info: abort(404) # 检查资源是否删除 if enquiry_info.status_delete == STATUS_DEL_OK: abort(410) # 获取明细 enquiry_items = get_enquiry_items_rows(enquiry_id=enquiry_id) # 表单赋值 form.uid.data = enquiry_info.uid form.supplier_cid.data = enquiry_info.supplier_cid form.supplier_contact_id.data = enquiry_info.supplier_contact_id form.delivery_way.data = enquiry_info.delivery_way form.note.data = enquiry_info.note form.status_order.data = enquiry_info.status_order form.amount_enquiry.data = enquiry_info.amount_enquiry # form.enquiry_items = enquiry_items while len(form.enquiry_items) > 0: form.enquiry_items.pop_entry() for enquiry_item in enquiry_items: enquiry_item_form = EnquiryItemEditForm() enquiry_item_form.id = enquiry_item.id enquiry_item_form.enquiry_id = enquiry_item.enquiry_id enquiry_item_form.uid = enquiry_item.uid enquiry_item_form.enquiry_production_model = enquiry_item.enquiry_production_model enquiry_item_form.enquiry_quantity = enquiry_item.enquiry_quantity enquiry_item_form.production_id = enquiry_item.production_id enquiry_item_form.production_brand = enquiry_item.production_brand enquiry_item_form.production_model = enquiry_item.production_model enquiry_item_form.production_sku = enquiry_item.production_sku enquiry_item_form.note = enquiry_item.note enquiry_item_form.quantity = enquiry_item.quantity enquiry_item_form.unit_price = enquiry_item.unit_price enquiry_item_form.delivery_time = enquiry_item.delivery_time enquiry_item_form.status_ordered = enquiry_item.status_ordered form.enquiry_items.append_entry(enquiry_item_form) # 渲染页面 return render_template(template_name, form=form, **document_info) # 处理创建请求 if request.method == 'POST': # 表单新增空行 if form.data_line_add.data is not None: if form.enquiry_items.max_entries and len( form.enquiry_items.entries ) >= form.enquiry_items.max_entries: flash('最多创建%s条记录' % form.enquiry_items.max_entries, 'danger') else: form.enquiry_items.append_entry() return render_template(template_name, form=form, **document_info) # 表单删除一行 if form.data_line_del.data is not None: if form.enquiry_items.min_entries and len( form.enquiry_items.entries ) <= form.enquiry_items.min_entries: flash('最少保留%s条记录' % form.enquiry_items.min_entries, 'danger') else: data_line_index = form.data_line_del.data form.enquiry_items.entries.pop(data_line_index) return render_template(template_name, form=form, **document_info) # 表单校验失败 if not form.validate_on_submit(): flash(_('Add Failure'), 'danger') # flash(form.errors, 'danger') return render_template(template_name, form=form, **document_info) # 表单校验成功 # 创建询价 current_time = datetime.utcnow() enquiry_data = { 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_contact_id': form.supplier_contact_id.data, 'status_order': form.status_order.data, 'expiry_date': (datetime.utcnow() + timedelta(days=7)).strftime('%Y-%m-%d'), 'create_time': current_time, 'update_time': current_time, } enquiry_id = add_enquiry(enquiry_data) amount_enquiry = 0 for enquiry_item in form.enquiry_items.entries: current_time = datetime.utcnow() enquiry_item_data = { 'enquiry_id': enquiry_id, 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_company_name': get_supplier_row_by_id(form.supplier_cid.data).company_name, 'enquiry_production_model': enquiry_item.form.enquiry_production_model.data, 'enquiry_quantity': enquiry_item.form.enquiry_quantity.data, 'production_id': enquiry_item.form.production_id.data, 'production_brand': enquiry_item.form.production_brand.data, 'production_model': enquiry_item.form.production_model.data, 'production_sku': enquiry_item.form.production_sku.data, 'note': enquiry_item.form.note.data, 'delivery_time': enquiry_item.form.delivery_time.data, 'quantity': enquiry_item.form.quantity.data, 'unit_price': enquiry_item.form.unit_price.data, 'status_ordered': enquiry_item.form.status_ordered.data, 'create_time': current_time, 'update_time': current_time, } # 新增 add_enquiry_items(enquiry_item_data) amount_enquiry += (enquiry_item_data['quantity'] or 0) * (enquiry_item_data['unit_price'] or 0) # 更新询价 enquiry_data = { 'amount_production': amount_enquiry, 'amount_enquiry': amount_enquiry, 'update_time': current_time, } result = edit_enquiry(enquiry_id, enquiry_data) # todo 事务 # 明细保存 # 总表保存 # 创建操作成功 if result: flash(_('Add Success'), 'success') return redirect( request.args.get('next') or url_for('enquiry.lists')) # 创建操作失败 else: flash(_('Add Failure'), 'danger') return render_template(template_name, form=form, **document_info)
def edit(purchase_id): """ 采购进货编辑 """ # 检查编辑权限 # enquiry_item_edit_permission = EnquiryItemEditPermission(enquiry_id) # if not enquiry_item_edit_permission.can(): # abort(403) purchase_info = get_purchase_row_by_id(purchase_id) # 检查资源是否存在 if not purchase_info: abort(404) # 检查资源是否删除 if purchase_info.status_delete == STATUS_DEL_OK: abort(410) # 检查资源是否核准 if purchase_info.status_audit == STATUS_AUDIT_OK: resource = _('Purchase') abort( exceptions.Locked.code, _('The %(resource)s has been approved, it cannot be modified', resource=resource)) template_name = 'purchase/edit.html' # 加载编辑表单 form = PurchaseEditForm(request.form) form.uid.choices = get_user_choices() form.warehouse_id.choices = get_warehouse_choices(option_type='update') # 内嵌表单货架选项 for item_form in form.purchase_items: item_form.rack_id.choices = get_rack_choices(form.warehouse_id.data, option_type='update') # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('purchase edit') # 进入编辑页面 if request.method == 'GET': # 获取明细 purchase_items = get_purchase_items_rows(purchase_id=purchase_id) # 表单赋值 form.uid.data = purchase_info.uid form.supplier_cid.data = purchase_info.supplier_cid form.supplier_contact_id.data = purchase_info.supplier_contact_id form.type_tax.data = purchase_info.type_tax form.warehouse_id.data = purchase_info.warehouse_id form.amount_purchase.data = purchase_info.amount_purchase # form.buyer_order_items = buyer_order_items while len(form.purchase_items) > 0: form.purchase_items.pop_entry() for purchase_item in purchase_items: purchase_item_form = PurchaseItemsEditForm() purchase_item_form.id = purchase_item.id purchase_item_form.purchase_id = purchase_item.purchase_id purchase_item_form.uid = purchase_item.uid purchase_item_form.production_id = purchase_item.production_id purchase_item_form.production_brand = purchase_item.production_brand purchase_item_form.production_model = purchase_item.production_model purchase_item_form.production_sku = purchase_item.production_sku purchase_item_form.quantity = purchase_item.quantity purchase_item_form.unit_price = purchase_item.unit_price purchase_item_form.rack_id = purchase_item.rack_id purchase_item_form.note = purchase_item.note purchase_item_form.type_tax = purchase_item.type_tax form.purchase_items.append_entry(purchase_item_form) # 内嵌表单货架选项 for item_form in form.purchase_items: item_form.rack_id.choices = get_rack_choices( form.warehouse_id.data, option_type='update') # 渲染页面 return render_template(template_name, purchase_id=purchase_id, form=form, **document_info) # 处理编辑请求 if request.method == 'POST': # 修改仓库 - 不做校验 if form.warehouse_changed.data: form.warehouse_changed.data = '' return render_template(template_name, form=form, **document_info) # 增删数据行不需要校验表单 # 表单新增空行 if form.data_line_add.data is not None: if form.purchase_items.max_entries and len( form.purchase_items.entries ) >= form.purchase_items.max_entries: flash('最多创建%s条记录' % form.purchase_items.max_entries, 'danger') else: form.purchase_items.append_entry() # 内嵌表单货架选项 for item_form in form.purchase_items: item_form.rack_id.choices = get_rack_choices( form.warehouse_id.data, option_type='update') return render_template(template_name, purchase_id=purchase_id, form=form, **document_info) # 表单删除一行 if form.data_line_del.data is not None: if form.purchase_items.min_entries and len( form.purchase_items.entries ) <= form.purchase_items.min_entries: flash('最少保留%s条记录' % form.purchase_items.min_entries, 'danger') else: data_line_index = form.data_line_del.data form.purchase_items.entries.pop(data_line_index) return render_template(template_name, purchase_id=purchase_id, form=form, **document_info) # 表单校验失败 if not form.validate_on_submit(): flash(_('Edit Failure'), 'danger') # flash(form.errors, 'danger') # flash(form.purchase_items.errors, 'danger') return render_template(template_name, purchase_id=purchase_id, form=form, **document_info) # 表单校验成功 # 获取明细 purchase_items = get_purchase_items_rows(purchase_id=purchase_id) purchase_items_ids = [item.id for item in purchase_items] # 数据新增、数据删除、数据修改 purchase_items_ids_new = [] amount_purchase = 0 for purchase_item in form.purchase_items.entries: # 错误 if purchase_item.form.id.data and purchase_item.form.id.data not in purchase_items_ids: continue purchase_item_data = { 'purchase_id': purchase_id, 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_company_name': get_supplier_row_by_id(form.supplier_cid.data).company_name, 'production_id': purchase_item.form.production_id.data, 'production_brand': purchase_item.form.production_brand.data, 'production_model': purchase_item.form.production_model.data, 'production_sku': purchase_item.form.production_sku.data, 'quantity': purchase_item.form.quantity.data, 'unit_price': purchase_item.form.unit_price.data, 'warehouse_id': form.warehouse_id.data, 'rack_id': purchase_item.form.rack_id.data, 'note': purchase_item.form.note.data, 'type_tax': form.type_tax.data, } if not purchase_item.form.id.data: # 新增 add_purchase_items(purchase_item_data) amount_purchase += purchase_item_data[ 'quantity'] * purchase_item_data['unit_price'] else: # 修改 edit_purchase_items(purchase_item.form.id.data, purchase_item_data) amount_purchase += purchase_item_data[ 'quantity'] * purchase_item_data['unit_price'] purchase_items_ids_new.append(purchase_item.form.id.data) # 删除 purchase_items_ids_del = list( set(purchase_items_ids) - set(purchase_items_ids_new)) for purchase_items_id in purchase_items_ids_del: delete_purchase_items(purchase_items_id) # 更新销售出货 current_time = datetime.utcnow() purchase_data = { 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_contact_id': form.supplier_contact_id.data, 'type_tax': form.type_tax.data, 'amount_production': amount_purchase, 'amount_purchase': amount_purchase, 'warehouse_id': form.warehouse_id.data, 'update_time': current_time, } result = edit_purchase(purchase_id, purchase_data) # 编辑操作成功 if result: flash(_('Edit Success'), 'success') return redirect( request.args.get('next') or url_for('purchase.lists')) # 编辑操作失败 else: flash(_('Edit Failure'), 'danger') return render_template(template_name, purchase_id=purchase_id, form=form, **document_info)
def edit(supplier_id): """ 联系方式 注意 contact_name name 对换 """ supplier_info = get_supplier_row_by_id(supplier_id) # 检查资源是否存在 if not supplier_info: abort(404) # 检查资源是否删除 if supplier_info.status_delete == STATUS_DEL_OK: abort(410) template_name = 'supplier/contact/edit.html' # 加载编辑表单 form = SupplierContactEditForm(request.form) form.cid.choices = supplier_id form.company_name.choices = supplier_info.company_name # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('supplier contact edit') # 进入编辑页面 if request.method == 'GET': # 获取明细 supplier_contact_items = get_supplier_contact_rows(cid=supplier_id) # 表单赋值 form.cid.data = supplier_info.id form.company_name.data = supplier_info.company_name # form.quotation_items = quotation_items while len(form.supplier_contact_items) > 0: form.supplier_contact_items.pop_entry() for supplier_contact_item in supplier_contact_items: supplier_contact_item_form = SupplierContactItemEditForm() supplier_contact_item_form.id = supplier_contact_item.id supplier_contact_item_form.cid = supplier_contact_item.cid supplier_contact_item_form.contact_name = supplier_contact_item.name supplier_contact_item_form.salutation = supplier_contact_item.salutation supplier_contact_item_form.mobile = supplier_contact_item.mobile supplier_contact_item_form.tel = supplier_contact_item.tel supplier_contact_item_form.fax = supplier_contact_item.fax supplier_contact_item_form.email = supplier_contact_item.email supplier_contact_item_form.address = supplier_contact_item.address supplier_contact_item_form.note = supplier_contact_item.note supplier_contact_item_form.status_default = supplier_contact_item.status_default form.supplier_contact_items.append_entry( supplier_contact_item_form) if not supplier_contact_items: form.supplier_contact_items.append_entry() # 渲染页面 return render_template(template_name, supplier_id=supplier_id, form=form, **document_info) # 处理编辑请求 if request.method == 'POST': # 增删数据行不需要校验表单 # 表单新增空行 if form.data_line_add.data is not None: if form.supplier_contact_items.max_entries and len( form.supplier_contact_items.entries ) >= form.supplier_contact_items.max_entries: flash('最多创建%s条记录' % form.supplier_contact_items.max_entries, 'danger') else: form.supplier_contact_items.append_entry() return render_template(template_name, supplier_id=supplier_id, form=form, **document_info) # 表单删除一行 if form.data_line_del.data is not None: if form.supplier_contact_items.min_entries and len( form.supplier_contact_items.entries ) <= form.supplier_contact_items.min_entries: flash('最少保留%s条记录' % form.supplier_contact_items.min_entries, 'danger') else: data_line_index = form.data_line_del.data form.supplier_contact_items.entries.pop(data_line_index) return render_template(template_name, supplier_id=supplier_id, form=form, **document_info) # 表单校验失败 if not form.validate_on_submit(): flash(_('Edit Failure'), 'danger') # flash(form.errors, 'danger') # flash(form.supplier_contact_items.errors, 'danger') return render_template(template_name, supplier_id=supplier_id, form=form, **document_info) # 表单校验成功 # 获取明细 supplier_contact_items = get_supplier_contact_rows(cid=supplier_id) supplier_contact_items_ids = [ item.id for item in supplier_contact_items ] # 数据新增、数据删除、数据修改 supplier_contact_items_ids_new = [] result = True for supplier_contact_item in form.supplier_contact_items.entries: # 错误 if supplier_contact_item.form.id.data and supplier_contact_item.form.id.data not in supplier_contact_items_ids: continue supplier_contact_item_data = { 'cid': supplier_id, 'name': supplier_contact_item.form.contact_name.data, 'salutation': supplier_contact_item.form.salutation.data, 'mobile': supplier_contact_item.form.mobile.data, 'tel': supplier_contact_item.form.tel.data, 'fax': supplier_contact_item.form.fax.data, 'email': supplier_contact_item.form.email.data, 'address': supplier_contact_item.form.address.data, 'note': supplier_contact_item.form.note.data, 'status_default': supplier_contact_item.form.status_default.data, } if not supplier_contact_item.form.id.data: # 新增 result = result and add_supplier_contact( supplier_contact_item_data) else: # 修改 result = result and edit_supplier_contact( supplier_contact_item.form.id.data, supplier_contact_item_data) supplier_contact_items_ids_new.append( supplier_contact_item.form.id.data) # 删除 supplier_contact_items_ids_del = list( set(supplier_contact_items_ids) - set(supplier_contact_items_ids_new)) for supplier_contact_items_id in supplier_contact_items_ids_del: result = result and delete_supplier_contact( supplier_contact_items_id) # 编辑操作成功 if result: flash(_('Edit Success'), 'success') return redirect( request.args.get('next') or url_for('supplier_contact.lists')) # 编辑操作失败 else: flash(_('Edit Failure'), 'danger') return render_template(template_name, supplier_id=supplier_id, form=form, **document_info)
def edit(supplier_id): """ 客户开票资料编辑 """ supplier_info = get_supplier_row_by_id(supplier_id) # 检查资源是否存在 if not supplier_info: abort(404) # 检查资源是否删除 if supplier_info.status_delete == STATUS_DEL_OK: abort(410) supplier_invoice_info = get_supplier_invoice_row_by_id(supplier_id) template_name = 'supplier/invoice/edit.html' # 加载编辑表单 form = SupplierInvoiceEditForm(request.form) # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('supplier invoice edit') # 进入编辑页面 if request.method == 'GET': current_time = datetime.utcnow() # 表单赋值 form.cid.data = supplier_id form.company_name.data = getattr(supplier_invoice_info, 'company_name', supplier_info.company_name) form.company_address.data = getattr(supplier_invoice_info, 'company_address', '') form.company_tel.data = getattr(supplier_invoice_info, 'company_tel', '') form.company_bank_name.data = getattr(supplier_invoice_info, 'company_bank_name', '') form.company_bank_account.data = getattr(supplier_invoice_info, 'company_bank_account', '') form.create_time.data = getattr(supplier_invoice_info, 'create_time', current_time) form.update_time.data = getattr(supplier_invoice_info, 'update_time', current_time) # 渲染页面 return render_template(template_name, supplier_id=supplier_id, form=form, **document_info) # 处理编辑请求 if request.method == 'POST': # 表单校验失败 if supplier_id != form.cid.data or not form.validate_on_submit(): flash(_('Edit Failure'), 'danger') # flash(form.errors, 'danger') return render_template(template_name, supplier_id=supplier_id, form=form, **document_info) # 表单校验成功 current_time = datetime.utcnow() supplier_invoice_data = { 'company_name': form.company_name.data, 'company_tax_id': form.company_tax_id.data, 'company_address': form.company_address.data, 'company_tel': form.company_tel.data, 'company_bank_name': form.company_bank_name.data, 'company_bank_account': form.company_bank_account.data, 'update_time': current_time, } if supplier_invoice_info: # 修改 result = edit_supplier_invoice(supplier_id, supplier_invoice_data) else: # 创建 supplier_invoice_data['cid'] = supplier_id result = add_supplier_invoice(supplier_invoice_data) # 编辑操作成功 if result: flash(_('Edit Success'), 'success') return redirect( request.args.get('next') or url_for('supplier_invoice.lists')) # 编辑操作失败 else: flash(_('Edit Failure'), 'danger') return render_template(template_name, supplier_id=supplier_id, form=form, **document_info)
def add(): """ 采购进货 :return: """ # return jsonify({}) template_name = 'purchase/add.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('purchase add') # 加载创建表单 form = PurchaseAddForm(request.form) form.uid.choices = get_user_choices() form.uid.data = current_user.id form.warehouse_id.choices = get_warehouse_choices(option_type='create') # 内嵌表单货架选项 for item_form in form.purchase_items: item_form.rack_id.choices = get_rack_choices(form.warehouse_id.data, option_type='create') # 进入创建页面 if request.method == 'GET': # 渲染页面 return render_template(template_name, form=form, **document_info) # 处理创建请求 if request.method == 'POST': # 修改仓库 - 不做校验 if form.warehouse_changed.data: form.warehouse_changed.data = '' return render_template(template_name, form=form, **document_info) # 表单新增空行 if form.data_line_add.data is not None: if form.purchase_items.max_entries and len( form.purchase_items.entries ) >= form.purchase_items.max_entries: flash('最多创建%s条记录' % form.purchase_items.max_entries, 'danger') else: form.purchase_items.append_entry() # 内嵌表单货架选项 for item_form in form.purchase_items: item_form.rack_id.choices = get_rack_choices( form.warehouse_id.data, option_type='create') return render_template(template_name, form=form, **document_info) # 表单删除一行 if form.data_line_del.data is not None: if form.purchase_items.min_entries and len( form.purchase_items.entries ) <= form.purchase_items.min_entries: flash('最少保留%s条记录' % form.purchase_items.min_entries, 'danger') else: data_line_index = form.data_line_del.data form.purchase_items.entries.pop(data_line_index) return render_template(template_name, form=form, **document_info) # 表单校验失败 if not form.validate_on_submit(): flash(_('Add Failure'), 'danger') # flash(form.errors, 'danger') return render_template(template_name, form=form, **document_info) # 表单校验成功 # 创建采购进货 current_time = datetime.utcnow() purchase_data = { 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_contact_id': form.supplier_contact_id.data, # 'type_purchase': form.type_purchase.data, 'warehouse_id': form.warehouse_id.data, 'create_time': current_time, 'update_time': current_time, } purchase_id = add_purchase(purchase_data) amount_purchase = 0 for purchase_item in form.purchase_items.entries: current_time = datetime.utcnow() purchase_item_data = { 'purchase_id': purchase_id, 'uid': form.uid.data, 'supplier_cid': form.supplier_cid.data, 'supplier_company_name': get_supplier_row_by_id(form.supplier_cid.data).company_name, 'production_id': purchase_item.form.production_id.data, 'production_brand': purchase_item.form.production_brand.data, 'production_model': purchase_item.form.production_model.data, 'production_sku': purchase_item.form.production_sku.data, 'warehouse_id': form.warehouse_id.data, 'rack_id': purchase_item.form.rack_id.data, 'note': purchase_item.form.note.data, 'quantity': purchase_item.form.quantity.data, 'unit_price': purchase_item.form.unit_price.data, 'create_time': current_time, 'update_time': current_time, } # 新增 add_purchase_items(purchase_item_data) amount_purchase += (purchase_item_data['quantity'] or 0) * (purchase_item_data['unit_price'] or 0) # 更新报价 purchase_data = { 'amount_production': amount_purchase, 'amount_purchase': amount_purchase, 'update_time': current_time, } result = edit_purchase(purchase_id, purchase_data) # todo 事务 # 明细保存 # 总表保存 # 创建操作成功 if result: flash(_('Add Success'), 'success') return redirect( request.args.get('next') or url_for('purchase.lists')) # 创建操作失败 else: flash(_('Add Failure'), 'danger') return render_template(template_name, form=form, **document_info)