You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.8 KiB

  1. // import { fetchInvoiceCategories, fetchInvoices } from "@/app/api/companys";
  2. import React from "react";
  3. import InvoiceSearch from "./InvoiceSearch";
  4. import InvoiceSearchLoading from "./InvoiceSearchLoading";
  5. import { fetchInvoicesV3, fetchIssuedInvoices, fetchReceivedInvoices, issuedInvoiceList, issuedInvoiceResult } from "@/app/api/invoices";
  6. import { INPUT_DATE_FORMAT, convertDateArrayToString, convertDateToString, moneyFormatter, timestampToDateString } from "@/app/utils/formatUtil";
  7. interface SubComponents {
  8. Loading: typeof InvoiceSearchLoading;
  9. }
  10. // function calculateHourlyRate(loweLimit: number, upperLimit: number, numOfWorkingDay: number, workingHour: number){
  11. // const hourlyRate = (loweLimit + upperLimit)/2/numOfWorkingDay/workingHour
  12. // return hourlyRate.toLocaleString()
  13. // }
  14. const InvoiceSearchWrapper: React.FC & SubComponents = async () => {
  15. const issuedInvoices = await fetchIssuedInvoices()
  16. const receivedInvoices = await fetchReceivedInvoices()
  17. const invoices = await fetchInvoicesV3()
  18. // console.log(invoices)
  19. const convertedIssedInvoices = issuedInvoices.map((invoice)=>{
  20. return{
  21. id: invoice.id,
  22. invoiceNo: invoice.invoiceNo,
  23. projectCode: invoice.projectCode,
  24. projectName: invoice.projectName,
  25. stage: invoice.stage,
  26. paymentMilestone: invoice.paymentMilestone,
  27. invoiceDate: convertDateArrayToString(invoice.invoiceDate, INPUT_DATE_FORMAT, false)!!,
  28. dueDate: convertDateArrayToString(invoice.dueDate, INPUT_DATE_FORMAT, false)!!,
  29. issuedAmount: moneyFormatter.format(invoice.issuedAmount)
  30. }
  31. })
  32. const convertedReceivedInvoices = receivedInvoices.map((invoice)=>{
  33. return{
  34. id: invoice.id,
  35. invoiceNo: invoice.invoiceNo,
  36. projectCode: invoice.projectCode,
  37. projectName: invoice.projectName,
  38. team: invoice.team,
  39. receiptDate: convertDateArrayToString(invoice.receiptDate, INPUT_DATE_FORMAT, false)!!,
  40. receivedAmount: moneyFormatter.format(invoice.receivedAmount)
  41. }
  42. })
  43. const convertedInvoices = invoices.map((invoice)=>{
  44. return{
  45. id: invoice.id,
  46. invoiceNo: invoice.invoiceNo,
  47. projectCode: invoice.projectCode,
  48. projectName: invoice.projectName,
  49. team: invoice.team,
  50. issuedDate: timestampToDateString(invoice.invoiceDate)!!,
  51. receiptDate: timestampToDateString(invoice.receiptDate??null)!!,
  52. issuedAmount: moneyFormatter.format(invoice.issueAmount),
  53. receivedAmount: invoice.paidAmount === null ? "-" : moneyFormatter.format(invoice.paidAmount)
  54. }
  55. })
  56. return <InvoiceSearch
  57. issuedInvoice={convertedIssedInvoices}
  58. receivedInvoice={convertedReceivedInvoices}
  59. invoices={convertedInvoices}
  60. />
  61. };
  62. InvoiceSearchWrapper.Loading = InvoiceSearchLoading;
  63. export default InvoiceSearchWrapper;