summaryrefslogtreecommitdiff
path: root/db/migrations_backup/0095_odd_slayback.sql
blob: bdea91f0ccf6f1ed4f4ed024747eca6ecf895b09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
DROP VIEW "public"."contracts_detail_view";--> statement-breakpoint
CREATE VIEW "public"."contracts_detail_view" AS (select "contracts"."id", "contracts"."contract_no", "contracts"."contract_name", "contracts"."status", "contracts"."start_date", "contracts"."end_date", "contracts"."project_id", "projects"."code", "projects"."name", "contracts"."vendor_id", "vendors"."vendor_name", "contracts"."payment_terms", "contracts"."delivery_terms", "contracts"."delivery_date", "contracts"."delivery_location", "contracts"."currency", "contracts"."total_amount", "contracts"."discount", "contracts"."tax", "contracts"."shipping_fee", "contracts"."net_total", "contracts"."partial_shipping_allowed", "contracts"."partial_payment_allowed", "contracts"."remarks", "contracts"."version", "contracts"."created_at", "contracts"."updated_at", EXISTS (
          SELECT 1 
          FROM "contract_envelopes" 
          WHERE "contract_envelopes"."contract_id" = "contracts"."id"
        ) as "has_signature", COALESCE((
          SELECT json_agg(
            json_build_object(
              'id', ci.id,
              'itemId', ci.item_id,
              'description', ci.description,
              'quantity', ci.quantity,
              'unitPrice', ci.unit_price,
              'taxRate', ci.tax_rate,
              'taxAmount', ci.tax_amount,
              'totalLineAmount', ci.total_line_amount,
              'remark', ci.remark,
              'createdAt', ci.created_at,
              'updatedAt', ci.updated_at
            )
          )
          FROM "contract_items" AS ci
          WHERE ci.contract_id = "contracts"."id"
        ), '[]') as "items", COALESCE((
          SELECT json_agg(
            json_build_object(
              'id', ce.id,
              'envelopeId', ce.envelope_id,
              'documentId', ce.document_id,
              'envelopeStatus', ce.envelope_status,
              'fileName', ce.file_name,
              'filePath', ce.file_path,
              'createdAt', ce.created_at,
              'updatedAt', ce.updated_at,
              'signers', (
                SELECT json_agg(
                  json_build_object(
                    'id', cs.id,
                    'vendorContactId', cs.vendor_contact_id,
                    'signerType', cs.signer_type,
                    'signerEmail', cs.signer_email,
                    'signerName', cs.signer_name,
                    'signerPosition', cs.signer_position,
                    'signerStatus', cs.signer_status,
                    'signedAt', cs.signed_at
                  )
                )
                FROM "contract_signers" AS cs
                WHERE cs.envelope_id = ce.id
              )
            )
          )
          FROM "contract_envelopes" AS ce
          WHERE ce.contract_id = "contracts"."id"
        ), '[]') as "envelopes" from "contracts" left join "projects" on "contracts"."project_id" = "projects"."id" left join "vendors" on "contracts"."vendor_id" = "vendors"."id");