Implement issue 1 search, order reuse and tracking

This commit is contained in:
reddaniel110
2026-10-14 11:25:43 +08:00
parent 0e45a58e5b
commit 4aaa6c6a14
17 changed files with 363 additions and 19 deletions
+25
View File
@@ -123,6 +123,13 @@ def run(executable=None):
response = admin.request.get(base + path)
assert response.status == 200 and marker in response.body(), path
maker=accounts['maker']
maker.goto(base + '/suppliers?kw=测试供应商简称')
assert maker.locator('table.grid tbody tr').count() >= 1
maker.goto(base + '/orders/new')
maker.locator('#supplierSearch').fill('测试供应商简称')
assert maker.locator('#supplierPickNew option').count() == 2
maker.locator('#supplierPickNew').select_option(index=1)
assert maker.locator('[name=supplier_id]').input_value() != ''
for kind,count in [('purchase',2),('outsourcing',30)]:
maker.goto(base + '/orders/new')
maker.locator('[name=doc_type]').select_option(kind)
@@ -203,6 +210,8 @@ def run(executable=None):
approver.screenshot(path=str(RUN / (kind+'-mobile-tracking.png')))
assert hashlib.sha256(approver.request.get(view_url.replace('/view','/pdf')).body()).hexdigest() == archives[-1][1]
admin.goto(base + '/')
assert admin.locator('[data-stage="work_undelivered"] span').inner_text() == '2 单 →'
assert admin.locator('[data-stage="work_completed"] span').inner_text() == '0 单 →'
for key in ('prepayment', 'invoice_due', 'paid_undelivered'):
assert admin.locator('[data-tracking="'+key+'"] .v').inner_text() == '1', key
assert admin.locator('#board-filter option[value="partial_delivery"]').inner_text() == '部分交货(1)'
@@ -212,6 +221,13 @@ def run(executable=None):
assert admin.locator('.tracking-table tbody tr').count() == 1
assert 'WO' in admin.locator('.tracking-table tbody tr').first.inner_text()
admin.screenshot(path=str(RUN / 'tracking-filter.png'), full_page=True)
maker.goto(base + '/orders?material_kw=BROWSER-2')
assert maker.locator('.orders-table tbody tr').count() == 2
assert all('BROWSER-2' in text for text in maker.locator('.matched-materials').all_inner_texts())
maker.screenshot(path=str(RUN/'material-order-search.png'), full_page=True)
maker.goto(base + '/materials?kw=BROWSER-2')
assert 'BROWSER-2' in maker.locator('table.grid').inner_text()
assert '0.3340' in maker.locator('table.grid').inner_text()
for width in (320, 390, 768):
approver.set_viewport_size({'width':width, 'height':844})
for path in (base + '/', view_url + '#order-tracking'):
@@ -230,6 +246,15 @@ def run(executable=None):
maker.get_by_role('button',name='导入',exact=True).click()
maker.wait_for_load_state('networkidle')
assert maker.locator('[name=item_date]').input_value()=='2026-10-01'
first_row = maker.locator('#itemTable tr').nth(1)
original_options = first_row.locator('.matpick option').count()
first_row.locator('.matsearch').fill('BROWSER-1')
assert 1 < first_row.locator('.matpick option').count() < original_options
target = first_row.locator('.matpick option[data-code="BROWSER-1"]').get_attribute('value')
first_row.locator('.matpick').select_option(target)
from decimal import Decimal
assert Decimal(first_row.locator('.price').input_value()) == Decimal('0.3340')
maker.screenshot(path=str(RUN/'material-picker-search.png'), full_page=True)
response = admin.request.get(base + '/export/ledger')
assert response.status == 200
ledger = openpyxl.load_workbook(io.BytesIO(response.body()))