summaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
Diffstat (limited to 'src/app')
-rw-r--r--src/app/(mobile-screen)/page.tsx4
-rw-r--r--src/app/api/stock-opname/export/route.tsx80
-rw-r--r--src/app/api/stock-opname/route.tsx6
3 files changed, 54 insertions, 36 deletions
diff --git a/src/app/(mobile-screen)/page.tsx b/src/app/(mobile-screen)/page.tsx
index 430a195..08b9dc9 100644
--- a/src/app/(mobile-screen)/page.tsx
+++ b/src/app/(mobile-screen)/page.tsx
@@ -7,9 +7,9 @@ export default function HomePage() {
return (
<Authenticated>
<main className="px-4 pt-10">
- <ProfileCard />
- <Spacer y={6} />
<StockOpname />
+ <Spacer y={6} />
+ <ProfileCard />
</main>
</Authenticated>
)
diff --git a/src/app/api/stock-opname/export/route.tsx b/src/app/api/stock-opname/export/route.tsx
index 1595f20..27f99fe 100644
--- a/src/app/api/stock-opname/export/route.tsx
+++ b/src/app/api/stock-opname/export/route.tsx
@@ -14,45 +14,69 @@ export async function GET(request: NextRequest) {
const companyId = parseInt(paramCompanyId)
- const stockOpnames = await prisma.stockOpname.groupBy({
- by: ['productId'],
- where: { companyId }
- })
-
- type SOLocationProduct = (StockOpnameLocationRes & { product: Product | null })
+ let page = 1;
+ let totalPage = 1;
+ const stockOpnames = []
+ do {
+ const requestParams = new URLSearchParams({
+ page: page.toString(),
+ companyId: companyId.toString()
+ })
+ const stockOpnamesFetch = await fetch(`${SELF_HOST}/api/stock-opname?${requestParams}`)
+ const stockOpnamesJson = await stockOpnamesFetch.json()
+ stockOpnames.push(...stockOpnamesJson.result)
- const datas: SOLocationProduct[] = []
+ page++
+ totalPage = stockOpnamesJson.totalPage
+ } while (page <= totalPage);
for (const opname of stockOpnames) {
const requestParams = new URLSearchParams({
- productId: opname.productId.toString(),
+ productId: opname.id.toString(),
companyId: companyId.toString()
})
const detailsFetch = await fetch(`${SELF_HOST}/api/stock-opname/location?${requestParams}`)
const details: StockOpnameLocationRes[] = await detailsFetch.json()
- const product = await prisma.product.findFirst({ where: { id: opname.productId } })
- const mappedData: SOLocationProduct[] = details.map((data) => ({
- ...data,
- product
- }))
-
- datas.push(...mappedData)
+ opname['details'] = details
}
- const dataSheet = datas.map((data) => ({
- location: data.name,
- name: data.product?.name,
- itemCode: data.product?.itemCode,
- barcode: data.product?.barcode,
- onhandQty: data.product?.onhandQty,
- differenceQty: data.product?.differenceQty,
- count1: data.COUNT1.quantity,
- count2: data.COUNT2.quantity,
- count3: data.COUNT3.quantity,
- verification: data.VERIFICATION.quantity,
- isDifferent: data.product?.isDifferent
- }))
+
+ const dataSheet = []
+
+ for (const opname of stockOpnames) {
+ const defaultItems = {
+ itemCode: opname?.itemCode,
+ barcode: opname?.barcode,
+ name: opname.name,
+ }
+
+ dataSheet.push({
+ ...defaultItems,
+ location: '',
+ count1: opname.quantity.COUNT1,
+ count2: opname.quantity.COUNT2,
+ count3: opname.quantity.COUNT3,
+ verification: opname.quantity.VERIFICATION,
+ onhandQty: opname.onhandQty,
+ differenceQty: opname.differenceQty,
+ isDifferent: opname.isDifferent
+ })
+
+ for (const detail of opname['details']) {
+ dataSheet.push({
+ ...defaultItems,
+ location: detail.name,
+ count1: detail.COUNT1.quantity,
+ count2: detail.COUNT2.quantity,
+ count3: detail.COUNT3.quantity,
+ verification: detail.VERIFICATION.quantity,
+ onhandQty: '',
+ differenceQty: '',
+ isDifferent: ''
+ })
+ }
+ }
const worksheet = XLSX.utils.json_to_sheet(dataSheet)
const workbook = XLSX.utils.book_new()
diff --git a/src/app/api/stock-opname/route.tsx b/src/app/api/stock-opname/route.tsx
index 0515238..ba54524 100644
--- a/src/app/api/stock-opname/route.tsx
+++ b/src/app/api/stock-opname/route.tsx
@@ -164,12 +164,6 @@ const computeIsDifferent = async ({
const stockOpnamesFetch = await fetch(`${SELF_HOST}/api/stock-opname/location?${searchParams}`)
const stockOpnames: StockOpnameLocationRes[] = await stockOpnamesFetch.json()
- const count2Count = await prisma.stockOpname.count({
- where: { companyId, productId, team: 'COUNT2' }
- })
-
- const isCount2Counted: boolean = count2Count > 0
-
let isDifferent: boolean = false
for (const opname of stockOpnames) {