Advertisement
Guest User

view

a guest
Jul 24th, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.90 KB | None | 0 0
  1. CREATE OR REPLACE VIEW public.company_card_combined_data_payment_orders_output_part AS
  2. WITH root_company_id AS (
  3. SELECT companies_group_types.company_id AS id
  4. FROM companies_group_types
  5. WHERE companies_group_types.group_company_type = 'PARTNER' :: TEXT
  6. UNION
  7. SELECT companies.id
  8. FROM companies
  9. WHERE companies.is_root = TRUE
  10. ), salary_orders AS (
  11. SELECT
  12. payment_order_1.id AS order_id,
  13. ((SELECT payment_request_article.id
  14. FROM payment_request_article
  15. JOIN article_expense ON article_expense.id = payment_request_article.article_expense_id
  16. WHERE payment_request_article.status = 'ACTIVE' :: TEXT AND
  17. payment_request_article.payment_order_id = payment_order_1.id AND
  18. article_expense.status = 'ACTIVE' :: TEXT AND article_expense.ignore_in_company_card IS NOT NULL AND
  19. article_expense.ignore_in_company_card AND (payment_order_1.recipient_id IN (SELECT root_company_id.id
  20. FROM root_company_id))
  21. LIMIT 1)) IS NOT NULL AS is_salary
  22. FROM payment_order payment_order_1
  23. )
  24. SELECT
  25. payment_order.id,
  26. COALESCE(payment_order.performed_time, payment_order.plan_date) AS time_fact,
  27. payment_order.update_time,
  28. 0 AS debit,
  29. COALESCE(payment_order.sum, 0 :: NUMERIC) AS credit,
  30. -COALESCE(payment_order.sum, 0 :: NUMERIC) AS value,
  31. payment_order.comments AS comment,
  32. payment_order.id AS payment_order_id,
  33. CASE
  34. WHEN COALESCE(salary_orders.is_salary, FALSE)
  35. THEN NULL :: UUID
  36. ELSE payment_order.recipient_id
  37. END AS company_id,
  38. payment_order.root_owner_id,
  39. payment_order.number AS document_name,
  40. 'payment_order' :: TEXT AS entity_type,
  41. payment_order.id AS entity_id,
  42. CASE
  43. WHEN account.id IS NULL
  44. THEN NULL :: UUID
  45. ELSE payment_order.recipient_account_id
  46. END AS contractor_account_id,
  47. COALESCE(salary_orders.is_salary, FALSE) AS is_salary,
  48. payment_order.report_period,
  49. payment_order.report_period_to,
  50. payment_order.period_type,
  51. payment_order.condition AS payment_order_condition,
  52. payment_order.payer_id,
  53. payment_order.create_time AS time_create
  54. FROM payment_order
  55. LEFT JOIN account
  56. ON account.id = payment_order.payer_account_id AND account.account_type != 'bank_account' :: TEXT AND
  57. (account.account_type != 'cash_account' :: TEXT OR account.cashbox IS NULL OR account.cashbox = FALSE)
  58. LEFT JOIN salary_orders ON salary_orders.order_id = payment_order.id
  59. WHERE payment_order.condition != ALL (ARRAY ['CANCELED' :: TEXT, 'PERFORMED' :: TEXT])
  60. OR (payment_order.condition = 'PERFORMED' AND NOT EXISTS(
  61. SELECT
  62. FROM finance_transactions
  63. WHERE finance_transactions.payment_order_id = payment_order.id
  64. AND finance_transactions.contractor_id = payment_order.recipient_id
  65. AND finance_transactions.main_company_id =
  66. payment_order.payer_id
  67. )
  68. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement