diff --git a/packages/plugins/@hera/plugin-rental/src/client/schema-initializer/actions/SettlementExportExcel.tsx b/packages/plugins/@hera/plugin-rental/src/client/schema-initializer/actions/SettlementExportExcel.tsx index 8be45994e..c9d20e4d9 100644 --- a/packages/plugins/@hera/plugin-rental/src/client/schema-initializer/actions/SettlementExportExcel.tsx +++ b/packages/plugins/@hera/plugin-rental/src/client/schema-initializer/actions/SettlementExportExcel.tsx @@ -9,6 +9,7 @@ import { converDate } from '../../../utils/daysUtils'; export const excelDataHandle = (excelData) => { const { calc, contracts, result } = excelData; + const partyB = contracts.partyB?.[0]; const categoryCount = (itemCategory) => { let category = ''; switch (itemCategory) { @@ -57,7 +58,7 @@ export const excelDataHandle = (excelData) => { */ const nameRows = [ { - companyName: { name: '承租单位:', value: `${contracts.project?.company?.name ?? ''}` }, + companyName: { name: '承租单位:', value: `${partyB?.name ?? ''}` }, companyName1: { name: '合同编号:', value: `${contracts.project?.code ?? ''}` }, rowId: '3', }, @@ -573,9 +574,7 @@ export const ExportToExcel = async (data) => { }); }; //设置表格表头 - ws.getCell('A1').value = `${ - contracts.project?.associated_company?.name ?? `${PromptText.noContractedCompany}` - } 对账单`; + ws.getCell('A1').value = `${contracts.partyA?.[0]?.name ?? `${PromptText.noContractedCompany}`} 对账单`; ws.mergeCells('A1:J1'); ws.getCell('A1').alignment = { vertical: 'middle', horizontal: 'center' }; ws.getCell('A1').font = { @@ -687,7 +686,7 @@ export const ExportToExcel = async (data) => { contracts.project?.associated_company.address; ws.getCell(`F${notesRow}`).value = ` 备注:${contracts.project?.comment ?? ''} - 出租单位:${contracts.project?.associated_company?.name ?? PromptText.noContractedCompany}`; + 出租单位:${contracts.partyA?.[0]?.name ?? PromptText.noContractedCompany}`; ws.mergeCells(`F${notesRow}:J${notesRow}`); const url = 'http://985.so/bpw6g'; const imageUrl = await QRCode.toDataURL(url); diff --git a/packages/plugins/@hera/plugin-rental/src/server/migrations/2024090300001-update-contracts_fields.ts b/packages/plugins/@hera/plugin-rental/src/server/migrations/2024090300001-update-contracts_fields.ts new file mode 100644 index 000000000..3c6c4d442 --- /dev/null +++ b/packages/plugins/@hera/plugin-rental/src/server/migrations/2024090300001-update-contracts_fields.ts @@ -0,0 +1,27 @@ +import { Migration } from '@tachybase/server'; + +export default class extends Migration { + on = 'beforeLoad'; // 'beforeLoad' or 'afterLoad' + appVersion = '<0.21.88'; + async up() { + const result: any = await this.app.db.sequelize.query(` + UPDATE contracts +SET + "partyAId" = b.associated_company_id, + "partyBId" = b.company_id +FROM project b +WHERE + b.id = CASE + WHEN contracts.project_id IS NOT NULL + THEN contracts.project_id + ELSE ( + SELECT c.project_id + FROM contracts c + WHERE c.id = contracts.alternative_contract_id + ) + END + `); + const count = result[1].rowCount || 0; + console.log('共更新数据:' + count + '条'); + } +} diff --git a/packages/plugins/@hera/plugin-rental/src/server/pdf-documents/settlements-document.tsx b/packages/plugins/@hera/plugin-rental/src/server/pdf-documents/settlements-document.tsx index 38a3d5587..aa60cd485 100644 --- a/packages/plugins/@hera/plugin-rental/src/server/pdf-documents/settlements-document.tsx +++ b/packages/plugins/@hera/plugin-rental/src/server/pdf-documents/settlements-document.tsx @@ -220,11 +220,14 @@ const PreviewDocument = ({ ); } }; + + const partyA = contracts.partyA?.[0]; + const partyB = contracts.partyB?.[0]; return ( - {contracts.project?.associated_company?.name ?? `${PromptText.noContractedCompany}`} + {partyA?.name ?? `${PromptText.noContractedCompany}`} 对账单 客户各项费用明细 @@ -233,7 +236,7 @@ const PreviewDocument = ({ 承租单位: - {contracts?.project?.company?.name} + {partyB?.name} 合同编号: @@ -416,7 +419,7 @@ const PreviewDocument = ({ 备注:{contracts.project?.comment} 出租单位: - {contracts.project?.associated_company?.name ?? `${PromptText.noContractedCompany}`} + {partyA?.name ?? `${PromptText.noContractedCompany}`} diff --git a/packages/plugins/@hera/plugin-rental/src/server/sqls/settlement_select.sql b/packages/plugins/@hera/plugin-rental/src/server/sqls/settlement_select.sql index 40f31fffa..42e0f74b2 100644 --- a/packages/plugins/@hera/plugin-rental/src/server/sqls/settlement_select.sql +++ b/packages/plugins/@hera/plugin-rental/src/server/sqls/settlement_select.sql @@ -59,6 +59,30 @@ SELECT WHERE c3.id = settlements.contract_id ) + ) || JSONB_SET( + TO_JSONB(contracts), + '{partyA}', + ( + SELECT + COALESCE(JSONB_AGG(companyA), '{}'::jsonb) + FROM + company companyA + JOIN contracts c4 ON c4."partyAId" = companyA.id + WHERE + c4.id = settlements.contract_id + ) + ) || JSONB_SET( + TO_JSONB(contracts), + '{partyB}', + ( + SELECT + COALESCE(JSONB_AGG(companyB), '{}'::jsonb) + FROM + company companyB + JOIN contracts c4 ON c4."partyBId" = companyB.id + WHERE + c4.id = settlements.contract_id + ) ) ) AS contracts, (