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.

103 lines
3.5 KiB

  1. # Copyright 2020 Brainbean Apps (https://brainbeanapps.com)
  2. # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
  3. from openupgradelib import openupgrade
  4. @openupgrade.migrate()
  5. def migrate(env, version):
  6. openupgrade.logged_query(
  7. env.cr,
  8. """
  9. WITH _mappings AS (
  10. SELECT
  11. m.id,
  12. l.field_to_assign,
  13. l.name,
  14. l.date_format
  15. FROM
  16. account_bank_statement_import_paypal_map AS m
  17. RIGHT OUTER JOIN (
  18. SELECT
  19. *,
  20. ROW_NUMBER() OVER (
  21. PARTITION BY map_parent_id, field_to_assign
  22. ORDER BY id ASC
  23. ) AS row_number
  24. FROM account_bank_statement_import_paypal_map_line
  25. WHERE field_to_assign IS NOT NULL
  26. ) AS l ON m.id = l.map_parent_id AND l.row_number = 1
  27. )
  28. INSERT INTO account_bank_statement_import_paypal_mapping (
  29. name,
  30. float_thousands_sep,
  31. float_decimal_sep,
  32. date_format,
  33. time_format,
  34. date_column,
  35. time_column,
  36. tz_column,
  37. name_column,
  38. currency_column,
  39. gross_column,
  40. fee_column,
  41. balance_column,
  42. transaction_id_column,
  43. description_column,
  44. from_email_address_column,
  45. invoice_id_column,
  46. bank_name_column,
  47. bank_account_column
  48. )
  49. SELECT
  50. m.name,
  51. m.float_thousands_sep,
  52. m.float_decimal_sep,
  53. COALESCE(_date.date_format, '%m/%d/%Y') AS date_format,
  54. '%H:%M:%S' AS time_format,
  55. COALESCE(_date.name, 'Date') AS date_column,
  56. COALESCE(_time.name, 'Time') AS time_column,
  57. 'Time Zone' AS tz_column,
  58. COALESCE(_name.name, 'Name') AS name_column,
  59. COALESCE(_currency.name, 'Currency') AS currency_column,
  60. COALESCE(_gross.name, 'Gross') AS gross_column,
  61. COALESCE(_fee.name, 'Fee') AS fee_column,
  62. COALESCE(_balance.name, 'Balance') AS balance_column,
  63. COALESCE(_tid.name, 'Transaction ID') AS transaction_id_column,
  64. COALESCE(_description.name, 'Description') AS description_column,
  65. COALESCE(_from_email.name, 'From Email Address')
  66. AS from_email_address_column,
  67. COALESCE(_invoice.name, 'Invoice ID') AS invoice_id_column,
  68. COALESCE(_bank_name.name, 'Bank Name') AS bank_name_column,
  69. COALESCE(_bank_acc.name, 'Bank Account') AS bank_account_column
  70. FROM
  71. account_bank_statement_import_paypal_map AS m
  72. LEFT JOIN _mappings AS _date
  73. ON m.id = _date.id AND _date.field_to_assign = 'date'
  74. LEFT JOIN _mappings AS _time
  75. ON m.id = _time.id AND _time.field_to_assign = 'time'
  76. LEFT JOIN _mappings AS _name
  77. ON m.id = _name.id AND _name.field_to_assign = 'partner_name'
  78. LEFT JOIN _mappings AS _currency
  79. ON m.id = _currency.id AND _currency.field_to_assign = 'currency'
  80. LEFT JOIN _mappings AS _gross
  81. ON m.id = _gross.id AND _gross.field_to_assign = 'amount'
  82. LEFT JOIN _mappings AS _fee
  83. ON m.id = _fee.id AND _fee.field_to_assign = 'commission'
  84. LEFT JOIN _mappings AS _balance
  85. ON m.id = _balance.id AND _balance.field_to_assign = 'balance'
  86. LEFT JOIN _mappings AS _tid
  87. ON m.id = _tid.id AND _tid.field_to_assign = 'transaction_id'
  88. LEFT JOIN _mappings AS _description
  89. ON m.id = _description.id AND _description.field_to_assign = 'description'
  90. LEFT JOIN _mappings AS _from_email
  91. ON m.id = _from_email.id AND _from_email.field_to_assign = 'email'
  92. LEFT JOIN _mappings AS _invoice
  93. ON m.id = _invoice.id AND _invoice.field_to_assign = 'invoice_number'
  94. LEFT JOIN _mappings AS _bank_name
  95. ON m.id = _bank_name.id AND _bank_name.field_to_assign = 'bank_name'
  96. LEFT JOIN _mappings AS _bank_acc
  97. ON m.id = _bank_acc.id AND _bank_acc.field_to_assign = 'bank_account';
  98. """
  99. )