diff --git a/sql/manual_changes/2026-06-15-fix-fn-numbering-klinik-one-to-one-lab.sql b/sql/manual_changes/2026-06-15-fix-fn-numbering-klinik-one-to-one-lab.sql new file mode 100644 index 00000000..5febdac3 --- /dev/null +++ b/sql/manual_changes/2026-06-15-fix-fn-numbering-klinik-one-to-one-lab.sql @@ -0,0 +1,92 @@ +-- Fix fn_numbering_klinik: change one.m_branch reference to one_lab.m_branch +-- Caused "Table 'one.m_branch' doesn't exist" error on INSERT into one_klinik.order + +DROP FUNCTION IF EXISTS `fn_numbering_klinik`; +DELIMITER $$ +CREATE DEFINER=`root`@`localhost` FUNCTION `fn_numbering_klinik`(`type` char(30)) RETURNS varchar(25) CHARSET utf8mb4 COLLATE utf8mb4_general_ci + READS SQL DATA +begin declare number varchar(50); + declare prefix varchar(50); + declare prefix_date varchar(50); + declare sufix varchar(50); + declare counter int; + declare dgt int; + declare rst varchar(5); + declare udt datetime; + + + select S_NumberingPrefix, S_NumberingPrefixDate, S_NumberingSufix, S_NumberingCounter, S_NumberingDigit, S_NumberingReset, + S_NumberingLastUpdated + into prefix, prefix_date, sufix, counter, dgt, rst, udt + from s_numbering where S_NumberingType = type for update; + + if rst = 'D' then + if date_format(udt, '%Y-%m-%d') <> date_format(now(), '%Y-%m-%d') then + set counter = 1; + end if; + elseif rst = 'M' then + if date_format(udt, '%Y-%m') <> date_format(now(), '%Y-%m') then + set counter = 1; + end if; + elseif rst = 'Y' then + if date_format(udt, '%Y') <> date_format(now(), '%Y') then + set counter = 1; + end if; + end if; + + set number = ''; + if prefix is not null and prefix <> '' then + set number = trim(prefix); + end if; + if prefix_date is not null and prefix_date <> '' then + set number = concat(trim(number),date_format(now(),prefix_date)); + + if type = 'P' then + set number = concat( prefix,fn_numbering_year(now())); + end if; + + + + if type = 'L' then + set number = fn_get_prefix_nolab( now() ); + end if; + /*if type = 'PAY' then + set number = concat( trim(prefix),fn_numbering_year(now()), fn_numbering_month(now()) ); + end if;*/ + end if; + + if rst = 'X' then + set number = counter; + else + if type='PAY' then + /*set @s_counter = lpad(counter,dgt,'0'); + set @xternal = ( + select numberMapTarget + from number_map + where + numberMapOrigin = @s_counter + limit 0,1 + ); + set number = concat(trim(number), trim(@xternal) );*/ + set number = concat(trim(number), lpad(counter,dgt,'0')); + else + set number = concat(trim(number), lpad(counter,dgt,'0')); + end if; + end if; + if sufix is not null and sufix <> '' then + set number = concat(trim(number),trim(sufix)); + end if; + + + + if type = 'K' then + set @branch_code = (select M_BranchCode from one_lab.m_branch where M_BranchIsActive = 'Y' + and M_BranchIsDefault = 'Y' limit 0,1 ); + set number = concat(number,@branch_code); + end if; + update s_numbering set S_NumberingCounter = counter + 1, S_NumberingLastUpdated = NOW() where S_NumberingType=type; + return trim(number); + + +END$$ +DELIMITER ;