NetDueDateCalc.sql (21 lines of code) (raw):

CREATE OR REPLACE FUNCTION `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.NetDueDateCalc`( ip_koart STRING, ip_ZFBDT DATE, ip_BLDAT DATE, ip_shkzg STRING, ip_REBZG STRING, ip_ZBD3T NUMERIC, ip_ZBD2T NUMERIC, ip_ZBD1T NUMERIC ) AS ( ( SELECT date_add(if(Ip_Koart = 'D' AND Ip_ZFBDT IS NULL, Ip_BLDAT, Ip_ZFBDT), INTERVAL cast(if(Ip_Koart = 'D' AND Ip_Shkzg = 'H' AND Ip_REBZG IS NULL, 0, CASE WHEN Ip_Koart = 'D' AND Ip_ZBD3T IS NOT NULL THEN Ip_ZBD3T WHEN Ip_Koart = 'D' AND Ip_ZBD2T IS NOT NULL THEN Ip_ZBD2T WHEN Ip_Koart = 'D' AND Ip_ZBD1T IS NOT NULL THEN Ip_ZBD1T WHEN Ip_ZBD1T IS NULL THEN 0 END) AS INT64) DAY) ) ) OPTIONS (description = "This function returns date for which actual payment is due.")