· 6 years ago · Aug 13, 2019, 11:20 AM
1package crm_app;
2
3import core.BaseFactoryLogic;
4import static core.BaseFactoryLogic.__procType;
5import static core.BaseFactoryLogic.__spName;
6import static core.BaseFactoryLogic.f;
7import planc.PlcEnums.*;
8import db_factory.FactoryEnums;
9import planc.PlcUtils;
10
11/*
12 * @author eugene
13 */
14
15public class Fac_spcrm_reset_saledoc extends BaseFactoryLogic{
16
17 private static final FactoryEnums.DbType [] __dbt = {FactoryEnums.DbType.DATA};
18
19 // **PAY ATTENTION: DON'T CHANGE THE ALLOCATION NUMBER UNTIL THE SALEDOC PROCESS IS READEY !!!!!!!!!!!!!!!!!!!!!!
20 private static final String [] __allocations = {}; //EX: {"6","10","11","12","13","14"} !!! PLEASE DO NOT COMMIT CHANGES IN THIS LINE
21 // **PAY ATTENTION: DON'T CHANGE THE ALLOCATION NUMBER UNTIL THE SALEDOC PROCESS IS READEY !!!!!!!!!!!!!!!!!!!!!!
22
23 private static final FactoryEnums.Allocations __allocationsEnum = FactoryEnums.Allocations.GROUP_UPDATES;
24
25 public static final boolean __d_updates = false;
26 private static final String __INC_SUB_VER = "'increment_sub_version'"; // instruction to read source document version and increment sub-version
27
28 public Fac_spcrm_reset_saledoc(){
29 super();
30 __spName = "spcrm_reset_saledoc";
31 __spVers = "1.10";
32 __procType = PlcProcType.IDE;
33 //__idebug_level = 1;
34 //__btest = true;
35 //__plcbug = false;
36 //__btemp = true; // #tmp_ts_updates state
37 }
38
39 private String __btest_plcd_updates() throws Exception{
40 String __val = ""
41 + (__btest && __d_updates
42 ? ""
43 + __btest_addTimeCheck("'spcrm_reset_saledoc: plcd_updates state'")
44 + f.tools().__openCursorForSelectBlock("@__tmp_curs", "select idnt,pollupdt,updt,alfidx,mark,recid,rt,ft,valint,valdate,valcurr,valstr from plcd_updates where userid=@_userid order by idnt asc")
45 + f.tools().__runSqlBlockOnCursor("@__tmp_curs",
46 f.tools().__setVarVal("@__tmpval",
47 "'idnt: '+cast(isnull(@__tmpid,0) as "+f.varTypes().BigIntVarchar()+")+' pollupdt: '+cast(isnull(@__tmppoll,0) as "+f.varTypes().BigIntVarchar()+")+' updt: '+cast(isnull(@__tmpupdt,0) as "+f.varTypes().BigIntVarchar()+")+' alfidx: '+cast(isnull(@__tmpalf,0) as "+f.varTypes().BigIntVarchar()+")"
48 +"+' mark: '+isnull(@__tmpmark,'')+' recid: '+cast(isnull(@__tmprid,0) as "+f.varTypes().BigIntVarchar()+")+' rt: '+cast(isnull(@__tmprt,0) as "+f.varTypes().BigIntVarchar()+")+' ft: '+cast(isnull(@__tmpft,0) as "+f.varTypes().BigIntVarchar()+")"
49 +"+' valint: '+cast(isnull(@__tmpint,0) as "+f.varTypes().BigIntVarchar()+")+' valdate: '+isnull("+__datetime_as_varchar("@__tmpdate")+",'')+' valcurr: '+cast(isnull(@__tmpcurr,0) as "+f.varTypes().BigIntVarchar()+")+' valstr: '+isnull(@__tmpstr,'')"
50 ) + __btest_addTimeCheck("@__tmpval"),
51 // idnt, pollupdt, updt, alfidx, mark, recid, rt, ft, valint, valdate, valcurr, valstr
52 "@__tmpid","@__tmppoll","@__tmpupdt","@__tmpalf","@__tmpmark","@__tmprid","@__tmprt","@__tmpft","@__tmpint","@__tmpdate","@__tmpcurr","@__tmpstr"
53 )
54 : ""
55 )
56 + "";
57 return __val;
58 }
59
60 private String __btest_items(String __name) throws Exception {
61 String __val = ""
62 + (__btest
63 ? ""
64 + __btest_addTimeCheck("'spcrm_reset_saledoc: copying "+__name+"'")
65 + f.tools().__openCursorForSelectBlock("@__tmp_curs", "select id,recid,rt,ft,twin,acc,newrecid from @__items order by id asc")
66 + f.tools().__runSqlBlockOnCursor("@__tmp_curs",
67 f.tools().__setVarVal("@__s",
68 "'id: '+cast(isnull(@__id,0) as "+f.varTypes().BigIntVarchar()+")+'recid: '+cast(isnull(@__rid,0) as "+f.varTypes().BigIntVarchar()+")+' rt: '+cast(isnull(@__rt,0) as "+f.varTypes().BigIntVarchar()+")+' ft: '+cast(isnull(@__ft,0) as "+f.varTypes().BigIntVarchar()+")"
69 +"+' twin: '+cast(isnull(@__twin,0) as "+f.varTypes().BigIntVarchar()+")+' acc: '+cast(isnull(@__account,0) as "+f.varTypes().BigIntVarchar()+")+' newrecid: '+cast(isnull(@__lnk2stg,0) as "+f.varTypes().BigIntVarchar()+")"
70 ) + __btest_addTimeCheck("@__s"),
71 // id, rid, rt, ft, twin, acc, newrecid
72 "@__id","@__rid","@__rt","@__ft","@__twin","@__account","@__lnk2stg"
73 )
74 //+ __btest_addTimeCheck("'@__val=['+isnull(@__val,'')+']'")
75 : ""
76 )
77 + "";
78 return __val;
79 }
80
81 private String __related_doc_rt_by_hierarchy() throws Exception {
82 String __val = ""
83 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0") + " -- find if exists related saledocs by hierarchy"
84 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
85 + f.tools().__setVarVal("@__rt_link", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__objects where id = @__id") + ")")
86 + f.tools().If().__openIfBlock("isnull(@__rt_link,0)=2111401060600+@__rtfb")
87 + f.tools().__setVarVal("@__flag_waybill", "1")
88 + f.tools().If().__addElseIfBlock("isnull(@__rt_link,0)=2111401060302+@__rtfb")
89 + f.tools().__setVarVal("@__flag_transaction_invoice", "1")
90 + f.tools().If().__addElseIfBlock("isnull(@__rt_link,0)=2111401060200+@__rtfb")
91 + f.tools().__setVarVal("@__flag_order", "1")
92 + f.tools().If().__addElseIfBlock("isnull(@__rt_link,0)=2111401060100+@__rtfb")
93 + f.tools().__setVarVal("@__flag_plist", "1")
94 + f.tools().If().__closeIfBlock()
95 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
96 + f.tools().While().__closeWhileBlock()
97
98 + f.indent() + " -- add to rt_link the related saledoc type that located higher in the hierarchy"
99 + f.tools().If().__openIfBlock("isnull(@__flag_waybill,0)=1")
100 + f.tools().__setVarVal("@__rt_link", "2111401060600+@__rtfb")
101 + f.tools().If().__addElseIfBlock("isnull(@__flag_transaction_invoice,0)=1")
102 + f.tools().__setVarVal("@__rt_link", "2111401060302+@__rtfb")
103 + f.tools().If().__addElseIfBlock("isnull(@__flag_order,0)=1")
104 + f.tools().__setVarVal("@__rt_link", "2111401060200+@__rtfb")
105 + f.tools().If().__addElseIfBlock("isnull(@__flag_plist,0)=1")
106 + f.tools().__setVarVal("@__rt_link", "2111401060100+@__rtfb")
107 + f.tools().If().__closeIfBlock();
108 return __val;
109 }
110
111 private String __link_current_saledoc_to_chosen_saledoc(String __SaledocRecid, String __saledocRt) throws Exception {
112 String __val = ""
113 + f.tools().__setVarVal("@__rid", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7152", "0"))
114 + f.tools().If().__openIfBlock("isnull(@__rid,0)=0") + " -- verify existing join record and create if not exists"
115 + f.tools().__setVarVal("@__rid", "@__newrid")
116 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
117 + f.tools().__setVarVal("@__val", "@__val + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2112000000000+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_4_'+ cast(@_recid as " + f.varTypes().BigIntVarchar() + ") + ','")
118
119 + f.indent() + " -- join current saledoc to new join record"
120 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(isnull(@_rt,0) as " + f.varTypes().BigIntVarchar() + ")+'_7152_%')")
121 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_7152_'+ cast(@__rid as " + f.varTypes().BigIntVarchar() + ") + ','")
122 + f.tools().If().__closeIfBlock()
123 + f.indent() + " -- join copied saledoc to new join record"
124 + f.tools().If().__openIfBlock("not (@_res like '%'+cast("+__SaledocRecid+" as " + f.varTypes().BigIntVarchar() + ")+'_'+cast("+__saledocRt+" as " + f.varTypes().BigIntVarchar() + ")+'_7152_%')")
125 + f.tools().__setVarVal("@__val", "@__val + cast("+__SaledocRecid+" as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast("+__saledocRt+" as " + f.varTypes().BigIntVarchar() + ") +'_7152_'+ cast(@__rid as " + f.varTypes().BigIntVarchar() + ") + ','")
126 + f.tools().If().__closeIfBlock()
127 + f.tools().If().__closeIfBlock()
128
129 + f.indent() + " -- link current saledoc with copied saledoc"
130 + f.tools().__setVarVal("@__rt", "2111103000000+@__rtfb")
131 + __fetch_linked_activities("@_recid", __SaledocRecid, "@__rid")
132 + f.tools().If().__openIfBlock("(isnull(@__rid,0)=0)"
133 +"and(not (@_res like '%'+'_'+cast(@__rt as " + f.varTypes().Varchar(19) + ")+'_7150_'+cast("+__SaledocRecid+" as " + f.varTypes().Varchar(19) + ")+',%'))"
134 //+"and(not (@_res like '%'+'_'+cast(@__rt as " + f.varTypes().Varchar(19) + ")+'_7149_'+cast("+__SaledocRecid+" as " + f.varTypes().Varchar(19) + ")+',%'))"
135 //+"and(not (@_res like '%'+'_'+cast(@__rt as " + f.varTypes().Varchar(19) + ")+'_7150_'+cast(@_recid as " + f.varTypes().Varchar(19) + ")+',%'))"
136 ) // check if not exist link on '@_res'
137 + f.tools().__setVarVal("@__rid", "@__newrid")
138 + f.tools().__setVarVal("@__lnk", "@__newrid + 1")
139 + f.tools().__setVarVal("@__newrid", "@__newrid + 2")
140 + f.tools().__setVarVal("@__val", "@__val"
141 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7149_'+ cast(@_recid as " + f.varTypes().BigIntVarchar() + ") + ','"
142 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7150_'+ cast("+__SaledocRecid+" as " + f.varTypes().BigIntVarchar() + ") + ','"
143 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7142_'+ cast(@__lnk as " + f.varTypes().BigIntVarchar() + ") + ','"
144 + " + cast(@__lnk as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7149_'+ cast("+__SaledocRecid+" as " + f.varTypes().BigIntVarchar() + ") + ','"
145 + " + cast(@__lnk as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7150_'+ cast(@_recid as " + f.varTypes().BigIntVarchar() + ") + ','"
146 + " + cast(@__lnk as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7142_'+ cast(@__rid as " + f.varTypes().BigIntVarchar() + ") + ','"
147 )
148 + f.tools().If().__closeIfBlock()
149 + "";
150 return __val;
151 }
152
153 private String __create_intakes_from_debit_order(String __varName) throws Exception {
154 String __val = ""
155 + f.tools().If().__openIfBlock(__varName+"='new_receipt'")
156 + f.tools().__setVarVal("@__sum_of_total_intakes", "0")
157 + f.tools().If().__closeIfBlock()
158 + f.tools().__setVarVal("@__recid_intake", "0")
159 + f.tools().__setVarVal("@__flag", "0")
160 + f.indent() + " -- adding marked intakes to the follow-up document, and changing the program debits, which has only executed intakes, status to 'finished'"
161 + f.indent() + "delete from @__items;"
162 + f.indent() + "delete from @__objects;"
163 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7306 and val=@_recid;"
164
165 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
166 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
167 + f.tools().__setVarVal("@__recid_program_debit", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
168 + __fetchIdeVariable("@__program_finish_status","debit_program_stage_ended")
169
170 + f.indent() + " -- changing all the program debits status to 'finished'"
171 + f.indent() + "delete from @__intakes;"
172 + f.indent() + "insert into @__intakes (recid) select recid from dmlkps where ft=7272 and val=@__recid_program_debit;"
173
174 + f.tools().__setVarVal("@__deal_kind", __fetch_val("@_userid", "@__recid_program_debit", "7320", "0", "@_stmp", "@_draft"))
175 + f.tools().__setVarVal("@__coin_value", __fetch_val("@_userid", "@__recid_program_debit", "5060", "0", "@_stmp", "@_draft"))
176 + f.tools().__setVarVal("@__tid", "0")
177 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
178 + f.tools().While().__openWhileBlock("isnull(@__id_intakes,0)>0")
179 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes where id = @__id_intakes") + ")")
180 + f.tools().__setVarVal("@__rt_link", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from dm where recid=@__recid_link") + ")")
181 + f.tools().__setVarVal("@__exists", __fetch_val("@_userid", "@__recid_link", "2160", "0", "@_stmp", "@_draft"))
182 + f.tools().__setVarVal("@__recid_intake", __fetch_val("@_userid", "@__recid_link", "7276", "0", "@_stmp", "@_draft"))
183 + f.tools().If().__openIfBlock(__varName+"='existing_receipt'")
184 + f.tools().__setVarVal("@__recid_exist", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes_to_receipt where @__recid_link = recid") + ")")
185 + f.tools().__setVarVal("@__flag", "(" + f.tools().__addLimitToSelectStmt(1, "select num from @__intakes_to_receipt where @__recid_link = recid") + ")")
186 + f.tools().If().__closeIfBlock()
187 + f.tools().If().__openIfBlock("isnull(@__exists,0)=1 and isnull(@__recid_intake,0)=0 and (("+__varName+"='new_receipt') or (("+__varName+"='existing_receipt') and (isnull(@__recid_exist,0)<>0)))")
188 + f.tools().If().__openIfBlock("isnull(@__flag,0)=0") // if flag=0, needs to create new intake
189 + f.tools().__setVarVal("@__sum_of_intake", __fetch_val("@_userid", "@__recid_link", "5042", "0", "@_stmp", "@_draft"))
190 + f.tools().If().__openIfBlock("(isnull(@__copy_rt,0) between 2111401060500+@__rtfb and 2111401060599+@__rtfb) or "+__varName+"='existing_receipt'") + " -- if follow-up document is receipt, calculate the sum of the intakes"
191 + f.tools().__setVarVal("@__sum_of_total_intakes", "@__sum_of_total_intakes + @__sum_of_intake")
192 + f.tools().If().__addElseIfBlock("isnull(@__copy_rt,0) = 2111401060303+@__rtfb and @__sum_of_intake < 0")
193 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_intake_sum_less_zero")
194 + f.tools().If().__closeIfBlock()
195 + f.tools().If().__openIfBlock(__varName+"='new_receipt'")
196 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "7276", "@__copy", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
197 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "2160", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
198 + f.tools().If().__closeIfBlock()
199 + f.indent() + "insert into @__items (recid,rt,ft) select @__recid_link,@__rt_link,7273 order by @__recid_link;"
200 /* there is already this insert in the copying_items function
201 + f.tools().If().__openIfBlock("isnull(@__rt_link,0)= 2111408040000+@__rtfb")
202 + f.indent() + "insert into @__items (recid,rt,ft) select dmlkps.recid,rt,ft from dmlkps join dm on dmlkps.recid=dm.recid where ft=7321 and dmlkps.val=@__recid_link order by dmlkps.recid;"
203 + f.tools().If().__closeIfBlock()
204 */
205 + f.tools().If().__closeIfBlock()
206 + f.tools().If().__openIfBlock("isnull(@__deal_kind,0) = @__credit_type_payments")
207 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7104", "@__program_finish_status", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
208 + __insert_into_post_logic("@__recid_program_debit","2111409000000+@__rtfb","7104", "3") + " -- update stage of debit program"
209 + f.tools().If().__closeIfBlock()
210 + f.tools().If().__addElseIfBlock("isnull(@__exists,0)=0 and isnull(@__recid_intake,0)=0")
211 + f.tools().__setVarVal("@__tid", "1")
212 + f.tools().If().__closeIfBlock()
213 + f.tools().__setVarVal("@__id_intakes", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__intakes where id > @__id_intakes order by id") + ")")
214 + f.tools().While().__closeWhileBlock()
215
216 + f.tools().__setVarVal("@__current_status", __fetch_val("@_userid", "@__recid_program_debit", "7104", "0", "@_stmp", "@_draft"))
217 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
218 + f.tools().If().__openIfBlock("(@__tid = 0) and (@__current_status <> @__program_finish_status) and (isnull(@__id_intakes,0)>0)")
219 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7104", "@__program_finish_status", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
220 + __insert_into_post_logic("@__recid_program_debit","2111409000000+@__rtfb","7104", "3") + " -- update stage of debit program"
221 + f.tools().If().__closeIfBlock()
222 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
223 + f.tools().While().__closeWhileBlock()
224 + f.tools().If().__openIfBlock("isnull(@__recid_program_debit,0) <> 0")
225 + __insert_into_post_logic("@__recid_program_debit","2111409000000+@__rtfb","7292")
226 + __insert_into_post_logic("@_recid","2111401060700+@__rtfb","7104","2") + " -- update stage of debit order, spcrm_saledoc_default_values_to_balance_fields"
227 + f.tools().If().__closeIfBlock()
228 + f.tools().If().__openIfBlock("isnull(@__flag,0)=0") // if flag=0, needs to create new intake
229 + f.tools().If().__openIfBlock("isnull(@__copy_rt,0) between 2111401060500+@__rtfb and 2111401060599+@__rtfb")
230 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5015", "@__sum_of_total_intakes/@__rate_saledoc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
231 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5028", "@__sum_of_total_intakes", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
232 + f.tools().If().__closeIfBlock()
233
234 + __copying_items("intakes_from_debit_order")
235 + f.tools().If().__closeIfBlock()
236 + "";
237 return __val;
238 }
239
240 private String __discount_items_taxs(String __name) throws Exception {
241 String __val = ""
242 + f.tools().__setVarVal("@__tid", "(select min(id) from @__taxs)")
243 + f.tools().While().__openWhileBlock("isnull(@__tid,0)>0")
244 + f.tools().__setVarVal("@__tax_recid", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__taxs where id = @__tid") + ")")
245 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__tax_recid", "5037", "0", "@_stmp", "@_draft")) + " -- sum of taxes"
246 + f.tools().__setVarVal("@__sum_of_taxes", "@__sum_of_taxes + @__sum")
247 + f.tools().__setVarVal("@__tax_kind_recid", __fetch_val("@_userid", "@__tax_recid", "7202", "0", "@_stmp", "@_draft"))
248
249 + f.tools().If().__openIfBlock("@__flag=0")
250 + f.tools().__setVarVal("@__id_details", "(" + f.tools().__addLimitToSelectStmt(1,"select id from @__taxs where id>@__tid order by id") + ")")
251 + f.tools().__setVarVal("@__last_tax_kind", "(select max(id) from @__taxs)")
252 + f.tools().__setVarVal("@__next_rid", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__taxs where id = @__id_details") + ")")
253 + f.tools().__setVarVal("@__next_tax_kind_recid", __fetch_val("@_userid", "@__next_rid", "7202", "0", "@_stmp", "@_draft"))
254 + f.tools().If().__closeIfBlock()
255 + f.tools().If().__openIfBlock("isnull(@__tax_kind_recid,0)<>isnull(@__next_tax_kind_recid,0) or @__flag=1")
256 + f.tools().If().__openIfBlock("@__flag=0")
257 + f.tools().__setVarVal("@__id_details", "(" + f.tools().__addLimitToSelectStmt(1,"select id from @__taxs where id>@__id_details order by id") + ")")
258 + f.tools().If().__openIfBlock("@__id_details=@__last_tax_kind")
259 + f.tools().__setVarVal("@__flag", "1")
260 + f.tools().If().__closeIfBlock()
261 + f.tools().If().__closeIfBlock()
262 + f.tools().__setVarVal("@__tax_id", __fetch_val("@_userid", "@__tax_recid", "7202", "0", "@_stmp", "@_draft"))
263 + f.tools().__setVarVal("@__tax_name", __fetch_val("@_userid", "@__tax_id", "1001", "0", "@_stmp", "@_draft"))
264 + f.tools().__setVarVal("@__tax_str", "@__tax_name + ' '")
265 + f.tools().__setVarVal("@__tax", __fetch_val("@_userid", "@__tax_recid", "5022", "0", "@_stmp", "@_draft"))
266 + f.tools().__setVarVal("@__tax_str", "@__tax_str + cast((cast(@__tax as float)) as varchar) + '%'")
267 + f.tools().If().__closeIfBlock()
268 + f.tools().If().__openIfBlock("isnull(@__sum_of_taxes,0)<>0 and isnull(@__tax_kind_recid,0)<>isnull(@__next_tax_kind_recid,0)")
269 + f.tools().__setVarVal("@__lnk2stg", "@__newrid")
270 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
271 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "7221", "@__copy", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
272 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "1107", "@__tax_str", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
273 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "7226", "@__tax_kind_recid", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
274 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "5026", "@__tax", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
275 + f.tools().If().__openIfBlock("@_rt between 2111401060500+@__rtfb and 2111401060599+@__rtfb and isnull(@__type,0)=@__sd_credit_receipt")
276 + f.tools().__setVarVal("@__sum_of_taxes", "@__sum_of_taxes*(-1)")
277 + f.tools().If().__closeIfBlock()
278 + f.tools().If().__openIfBlock("@__copy_rt=2111401060301+@__rtfb and @_rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb")
279 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "5027", "@__sum_of_taxes", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
280 + f.tools().If().__addElseBlock()
281 + f.tools().If().__openIfBlock("@__difference=1")
282 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "5027", "(@__sum_of_taxes*(@__sum_of_total_intakes/@__sum_of_total_saledocs))-@__round", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
283 + f.tools().__setVarVal("@__difference", "0")
284 + f.tools().If().__addElseBlock()
285 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "5027", "@__sum_of_taxes*(@__sum_of_total_intakes/@__sum_of_total_saledocs)", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
286 + f.tools().If().__closeIfBlock()
287 + f.tools().If().__closeIfBlock()
288 // + f.indent() + "insert into @__discount_items (recid,sum,tax_rate,newrecid) select @__tax_recid,@__sum_of_taxes,@__tax,@__lnk2stg;"
289 + f.tools().__setVarVal("@__sum_of_taxes", "0")
290 + f.tools().If().__closeIfBlock()
291 + f.tools().__setVarVal("@__tid", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__taxs where id > @__tid order by id") + ")")
292 + f.tools().While().__closeWhileBlock();
293 return __val;
294 }
295
296 private String __discount_items(String __name) throws Exception {
297 String __val = ""
298 + f.indent() + " -- creating 'discount' items. the number of the 'discount' items depends on the amount kinds of taxes"
299 + f.tools().__setVarVal("@__curr", __fetch_val("@_userid", "@_recid", "7218", "0", "@_stmp", "@_draft"))
300 + f.tools().__setVarVal("@__rate", __fetch_val("@_userid", "@_recid", "5033", "0", "@_stmp", "@_draft"))
301 + f.tools().__setVarVal("@__sum_of_taxes", "@__sum_of_total_saledocs - @__sum_of_total_saledocs_no_tax")
302 + f.tools().__setVarVal("@__id", "(select min(id) from @__discount_items)")
303 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0") + " -- number of tax kinds"
304 + f.tools().__setVarVal("@__tax_recid", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__discount_items where id = @__id") + ")")
305 + f.tools().__setVarVal("@__discount_item", "@__newrid")
306 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
307 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "7163", "@__copy", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
308 + f.tools().__setVarVal("@__count", "@__count + 1") + " -- number of the discount item"
309 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "2055", "@__count", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
310
311 + f.indent() + " -- calculate sum of the discount item"
312 + f.tools().__setVarVal("@__sum", "(" + f.tools().__addLimitToSelectStmt(1, "select sum from @__discount_items where id = @__id") + ")")
313 + f.tools().__setVarVal("@__tax", "(" + f.tools().__addLimitToSelectStmt(1, "select tax_rate from @__discount_items where id = @__id") + ")")
314 + f.tools().__setVarVal("@__tax", "(@__tax + 100) / 100")
315 + f.tools().__setVarVal("@__total_sum", "@__total_sum - (@__sum / @__sum_of_taxes * (@__sum_of_total_saledocs - @__sum_of_total_intakes))")
316 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "5036", "((@__sum / @__sum_of_taxes * (@__sum_of_total_saledocs - @__sum_of_total_intakes)) * (-1))", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
317 + f.tools().__setVarVal("@__sum", "(@__sum / @__sum_of_taxes * (@__sum_of_total_saledocs - @__sum_of_total_intakes)) / @__tax") + " -- total sum of discount item without tax"
318 + f.tools().__setVarVal("@__sum_of_total_saledocs_no_tax", "@__sum_of_total_saledocs_no_tax - @__sum")
319 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "5009", "(@__sum * (-1))", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
320 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "5011", "(@__sum * (-1))", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
321 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "5025", "(@__sum * (-1))", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
322 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "5029", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
323 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "5034", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
324 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "5018", "1", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
325
326 + f.indent() + " -- item name"
327 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "1144", "'פריט קיזוז'", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
328
329 + f.indent() + " -- item description"
330 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "6020", "'<div dir=\"rtl\">קיזוז סכום הפריט, לפי סוג המס, עקב תשלום חלקי.</div>'", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
331
332 + f.indent() + " -- currency"
333 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "7217", "@__curr", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
334 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "5031", "@__rate", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
335
336 + f.indent() + " -- tax in item"
337 + f.tools().__setVarVal("@__lnk2stg", "@__newrid")
338 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
339 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "7223", "@__discount_item", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
340 + f.tools().__setVarVal("@__tax_kind_recid", __fetch_val("@_userid", "@__tax_recid", "7202", "0", "@_stmp", "@_draft"))
341 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "7202", "@__tax_kind_recid", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
342
343 + f.tools().__setVarVal("@__tax", "(" + f.tools().__addLimitToSelectStmt(1, "select tax_rate from @__discount_items where id = @__id") + ")")
344 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "5022", "@__tax", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
345 + f.tools().__setVarVal("@__tax_name", __fetch_val("@_userid", "@__tax_recid", "1103", "0", "@_stmp", "@_draft"))
346 + updateBulkValBuilder("@__lnk2stg", null, "2110725000000+@__rtfb", "1103", "@__tax_name", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
347 + f.tools().__setVarVal("@__sum", "@__sum * (@__tax / 100)") + " -- sum of tax"
348 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "5037", "(@__sum * (-1))", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
349 + updateBulkValBuilder("@__discount_item", null, "2111410000000+@__rtfb", "5035", "(@__sum * (-1))", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
350
351 + f.indent() + " -- update tax sum summary in saledoc"
352 + f.tools().__setVarVal("@__tax_recid", "(" + f.tools().__addLimitToSelectStmt(1, "select newrecid from @__discount_items where id = @__id") + ")")
353 + f.tools().__setVarVal("@__tax", "(" + f.tools().__addLimitToSelectStmt(1, "select sum from @__discount_items where id = @__id") + ")")
354
355 + f.tools().If().__openIfBlock("@__val like '%'+cast(@__tax_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(2110728000000+@__rtfb as " + f.varTypes().BigIntVarchar() + ")+'_5027_%'")
356 + f.tools().__setVarVal("@__val", "(select replace(@__val,cast(@__tax_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(2110728000000+@__rtfb as " + f.varTypes().BigIntVarchar() + ")+'_5027_'+cast(@__tax as " + f.varTypes().Money()+ "), cast(@__tax_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(2110728000000+@__rtfb as " + f.varTypes().BigIntVarchar() + ")+'_5027_'+cast((@__tax - @__sum) as " + f.varTypes().Money()+ ")))")
357 + f.tools().If().__addElseBlock()
358 + updateBulkValBuilder("@__tax_recid", null, "2110728000000+@__rtfb", "5027", "(@__tax - @__sum)", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE, FactoryEnums.ResultDuplicate.OVERRIDE_VALUE)
359 + f.tools().If().__closeIfBlock()
360 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__discount_items where id > @__id order by id") + ")")
361 + f.tools().While().__closeWhileBlock();
362 return __val;
363 }
364
365 private String __calculate_sum_summary() throws Exception {
366 String __val = ""
367 + f.indent() + "delete from @__objects;"
368 + f.indent() + "insert into @__objects (recid) select b.val from dmlkps a join dmlkps b on a.recid=b.recid "
369 + "join dm on b.val=dm.recid where a.ft=7149 and b.ft=7150 and a.val=@_recid and rt = @__rt_link;" + " -- could be related 2 documents or more"
370
371 + f.tools().__setVarVal("@__tid", "(select min(id) from @__objects)")
372 + f.tools().If().__openIfBlock("isnull(@__tid,0)>0")
373 + f.tools().__setVarVal("@__sum_of_total_saledocs_no_tax", "0")
374 + f.tools().__setVarVal("@__sum_of_taxes", "0")
375 + f.tools().__setVarVal("@__sum_of_total_saledocs", "0")
376 + f.tools().__setVarVal("@__round_items", "0")
377
378 + f.tools().While().__openWhileBlock("isnull(@__tid,0)>0")+ " -- add tax summary and sum of the related items to the new record"
379 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__tid") + ")")
380 + f.tools().__setVarVal("@__rate", __fetch_val("@_userid", "@__recid_link", "5033", "0", "@_stmp", "@_draft"))
381 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_link", "5016", "0", "@_stmp", "@_draft")) + " -- sum of saledoc without taxes"
382 + f.tools().__setVarVal("@__sum_of_total_saledocs_no_tax", "@__sum_of_total_saledocs_no_tax + (@__sum*@__rate)")
383 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_link", "5015", "0", "@_stmp", "@_draft")) + " -- sum of saledoc"
384 + f.tools().__setVarVal("@__sum_of_total_saledocs", "@__sum_of_total_saledocs + (@__sum*@__rate)")
385 + f.tools().__setVarVal("@__round_items", "@__round_items + (@__sum*@__rate)")
386 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__rid", "5027", "0", "@_stmp", "@_draft")) + " -- sum of taxes"
387 + f.tools().__setVarVal("@__sum_of_taxes", "@__sum_of_taxes + @__sum")
388 + f.tools().__setVarVal("@__tid", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__tid order by id") + ")")
389 + f.tools().While().__closeWhileBlock()
390 + f.tools().If().__closeIfBlock()
391 + "";
392 return __val;
393 }
394
395 private String __insert_value_to_item(String __ft) throws Exception {
396 String __val = ""
397 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__rid", __ft, "0", "@_stmp", "@_draft"))
398 + f.tools().If().__openIfBlock("@_rt between 2111401060500+@__rtfb and 2111401060599+@__rtfb and isnull(@__type,0)=@__sd_credit_receipt")
399 + f.tools().__setVarVal("@__sum", "@__sum*(-1)")
400 + f.tools().If().__closeIfBlock()
401 + f.tools().If().__openIfBlock("isnull(@__sum,0)<>0")
402 + f.tools().__setVarVal("@__sum", "(@__sum_of_total_intakes/@__sum_of_total_saledocs)*@__sum")
403 + updateBulkValBuilder("@__lnk2stg", null, "@__rt", __ft, "@__sum", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
404 + f.tools().If().__addElseBlock()
405 + updateBulkValBuilder("@__lnk2stg", null, "@__rt", __ft, "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
406 + f.tools().If().__closeIfBlock();
407 return __val;
408 }
409
410 private String __copying_items(String __name) throws Exception {
411 String __val = ""
412 + f.tools().__setVarVal("@__id", "(select min(id) from @__items)")
413 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
414 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__items where id = @__id") + ")")
415 + f.tools().__setVarVal("@__rt", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__items where id = @__id") + ")")
416 + f.tools().__setVarVal("@__ft", "(" + f.tools().__addLimitToSelectStmt(1, "select ft from @__items where id = @__id") + ")")
417 + f.tools().__setVarVal("@__v", "cast(@__ft as " + f.varTypes().BigIntVarchar() + ")")
418 + f.tools().__setVarVal("@__lnk2stg", "@__newrid")
419 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
420 + f.tools().If().__openIfBlock("('"+__name+"' = 'items_from_related_doc' or '"+__name+"' = 'items_from_debit_order') and @__rt = 2110728000000+@__rtfb")
421 + f.tools().__setVarVal("@__v", "@__v + ',5027'")
422 + f.tools().If().__openIfBlock("'"+__name+"' = 'items_from_related_doc'")
423 + __calculate_sum_summary()
424 + f.tools().__setVarVal("@__round_intakes", "@__sum_of_total_intakes")
425 + f.tools().__setVarVal("@__round_items", "@__sum_of_total_saledocs")
426 + f.tools().If().__closeIfBlock()
427 + f.tools().If().__addElseIfBlock("('"+__name+"' = 'items_from_related_doc' or ('"+__name+"' = 'items_from_debit_order')) and @__rt = 2111410000000+@__rtfb")
428 + f.tools().__setVarVal("@__v", "@__v + ',2055'")
429 + f.tools().__setVarVal("@__round_intakes", "@__sum_of_total_intakes")
430 + f.tools().__setVarVal("@__round_items", "@__sum_of_total_saledocs")
431 + f.tools().If().__openIfBlock("isnull(@__round_intakes,0)<>isnull(@__round_items,0) and ('"+__name+"' = 'items_from_related_doc' or ('"+__name+"' = 'items_from_debit_order' "
432 + " and isnull(@__copy_rt,0)= 2111401060303+@__rtfb))")
433 + f.tools().__setVarVal("@__v", "@__v + ',5009,5011,5013,5024,5025,5029,5030,5034,5035,5036'")
434 + f.tools().If().__openIfBlock("isnull(@__round_intakes,0)<isnull(@__round_items,0)")
435 + f.tools().__setVarVal("@__v", "@__v + ',1001,1144'")
436 + f.tools().If().__closeIfBlock()
437 + f.tools().If().__closeIfBlock()
438 + f.tools().If().__addElseIfBlock("('"+__name+"' = 'intakes_from_debit_order') and (@__rt between 2111408000000+@__rtfb and 2111408999999+@__rtfb)")
439 + f.tools().__setVarVal("@__v", "@__v + ',7272,7104'")
440 + f.tools().If().__closeIfBlock()
441 + f.tools().__setVarVal("@__i", "1") + " -- ignore fields from Field ID List"
442 + f.tools().__setVarVal("@__c", "1") + " -- copy links"
443 + f.tools().__procedureCallCreator("sp_copy_record", 0, "@__rid", "@__rt", "@__lnk2stg", "@__rt", "@__v", "@__i", "@__c")
444 + f.tools().__setVarVal("@__rval", f.tools().__getOutVarVal("@__val", f.varTypes().Varchar(db_factory.FactoryUtils.__outParamsValSize)))
445 + __add_debug_line("'sp_copy_record('+cast(isnull(@__rid,0) as " + f.varTypes().BigIntVarchar() + ")+') @__rval=['+isnull(@__rval,'')+']'")
446
447 /* moved down to the split intakes loop
448 + f.tools().If().__openIfBlock("(@__rt between 2111408040000+@__rtfb and 2111408049999+@__rtfb) and (@__ft=7321)")
449 + f.tools().If().__openIfBlock("('"+__name+"' = 'intakes_from_debit_order') and isnull(@__copy,0)=0")
450 + updateBulkValBuilder("@__rid", null, "@__rt", "7276", "@__receipt_recid", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
451 + f.tools().If().__addElseBlock()
452 + updateBulkValBuilder("@__rid", null, "@__rt", "7276", "@__copy", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
453 + f.tools().If().__closeIfBlock()
454 + f.tools().If().__closeIfBlock()
455 */
456 + f.tools().If().__openIfBlock("('"+__name+"' = 'intakes_from_debit_order') and (@__rt between 2111408000000+@__rtfb and 2111408999999+@__rtfb) and isnull(@__copy,0)=0")
457 + f.tools().__setVarVal("@__val", "@__val + isnull(@__rval,'')"
458 + " + cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__ft as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__receipt_recid as " + f.varTypes().BigIntVarchar() + ") + ','"
459 )
460 + f.tools().If().__addElseBlock()
461 + f.tools().__setVarVal("@__val", "@__val + isnull(@__rval,'')"
462 + " + cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__ft as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy as " + f.varTypes().BigIntVarchar() + ") + ','"
463 )
464 + f.tools().If().__closeIfBlock()
465 + f.tools().If().__openIfBlock("('"+__name+"' = 'intakes_from_debit_order') and (@__rt between 2111408000000+@__rtfb and 2111408999999+@__rtfb)")
466 + updateBulkValBuilder("@__lnk2stg", null, "@__rt", "7104", "@__intake_stage_accepted", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
467 + f.tools().If().__openIfBlock("@__val like '%'+cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@__rt as " + f.varTypes().BigIntVarchar() + ")+'_2160_1%'")
468 + f.tools().__setVarVal("@__val", "(select replace(@__val,cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@__rt as " + f.varTypes().BigIntVarchar() + ")+'_2160_1', cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@__rt as " + f.varTypes().BigIntVarchar() + ")+'_2160_0'))")
469 + f.tools().If().__closeIfBlock()
470 + f.tools().If().__addElseIfBlock("('"+__name+"' = 'items_from_related_doc') and @__rt = 2110728000000+@__rtfb")
471 + f.tools().If().__openIfBlock("isnull(@__sum_of_taxes,0) <> 0")
472 + updateBulkValBuilder("@__lnk2stg", null, "2110728000000+@__rtfb", "5027", "@__sum_of_taxes", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
473 + f.tools().If().__closeIfBlock()
474 + f.tools().If().__closeIfBlock()
475 + f.indent() + "update @__items set newrecid=@__lnk2stg where id = @__id;"
476
477 + f.tools().If().__openIfBlock("('"+__name+"' = 'items_from_related_doc' or ('"+__name+"' = 'items_from_debit_order' "
478 + " and isnull(@__copy_rt,0)= 2111401060303+@__rtfb)) and (isnull(@__round_intakes,0)<>isnull(@__round_items,0)) and @__rt = 2111410000000+@__rtfb")
479
480 + f.tools().__setVarVal("@__id_details", "(" + f.tools().__addLimitToSelectStmt(1,"select id from @__items where id>@__id order by id") + ")")
481 + f.tools().__setVarVal("@__rate", __fetch_val("@_userid", "@__rid", "5031", "0", "@_stmp", "@_draft"))
482 + __insert_value_to_item("5009") // relative sum of item
483 + __insert_value_to_item("5011") // relative sum of item after discount
484 + f.tools().__setVarVal("@__relative_saledoc_sum_no_tax", "@__relative_saledoc_sum_no_tax+(@__sum*@__rate)")
485 + f.tools().__setVarVal("@__round", "@__sum*@__rate")
486 + f.tools().__setVarVal("@__total_round_sum", "@__total_round_sum+@__round")
487 + f.tools().__setVarVal("@__relative_saledoc_sum", "@__relative_saledoc_sum+(@__sum*@__rate)")
488 + __insert_value_to_item("5013") // relative sum of discount
489 + __insert_value_to_item("5024") // relative price list in national coin
490 + __insert_value_to_item("5025") // relative sum of item in national coin after discount without taxes
491 + __insert_value_to_item("5029") // relative sum of discount in national coin
492 + __insert_value_to_item("5030") // relative price list
493 + __insert_value_to_item("5034") // relative sum of taxes included in the item sum
494 + f.tools().__setVarVal("@__relative_saledoc_sum", "@__relative_saledoc_sum-(isnull(@__sum,0))")
495 + __insert_value_to_item("5035") // relative sum of taxes which NOT included in the item sum
496 + f.tools().__setVarVal("@__relative_saledoc_sum", "@__relative_saledoc_sum+(isnull(@__sum,0))")
497
498 + __insert_value_to_item("5036") // relative sum of item in national coin after discount
499 + f.tools().If().__openIfBlock("isnull(@__round_intakes,0)<isnull(@__round_items,0)")
500 + f.tools().__setVarVal("@__name", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__rid", "1144", "0"))
501 + f.tools().__setVarVal("@__name", "(" + f.tools().__addLimitToSelectStmt(1,"select f101 from plcresources where resname = 'plc_imp_partial_payment_for'") + ") + ' ' + @__name")
502 + updateBulkValBuilder("@__lnk2stg", null, "@__rt", "1144", "@__name" , "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
503 + f.tools().If().__closeIfBlock()
504
505 + f.tools().If().__closeIfBlock()
506
507 // copy item tax rates
508 + f.tools().If().__openIfBlock("(@__rt between 2111410000000+@__rtfb and 2111419999999+@__rtfb) or ((@__rt between 2111408040000+@__rtfb and 2111408040000+@__rtfb) and (@__ft=7273))")
509 + f.tools().If().__openIfBlock("('"+__name+"' = 'items_from_related_doc' or '"+__name+"' = 'items_from_debit_order') and (isnull(@__round_intakes,0)<isnull(@__round_items,0))")
510 + f.tools().__setVarVal("@__items_count", "@__items_count + 1")
511 + updateBulkValBuilder("@__lnk2stg", null, "2111410000000+@__rtfb", "2055", "@__items_count", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
512 + f.tools().If().__closeIfBlock()
513 + f.indent() + "delete from @__taxs;"
514 + f.tools().If().__openIfBlock("@__rt between 2111410000000+@__rtfb and 2111419999999+@__rtfb")
515 + f.indent() + "insert into @__taxs (recid,rt,ft)"
516 + f.indent() + " select l.RECID,d.RT,l.FT from DMLKPS l left join DM d on d.RECID=l.RECID and d.RT between 2110725000000+@__rtfb and 2110725999999+@__rtfb where l.FT=7223 and l.VAL=@__rid and d.RECID is not null order by l.RECID;"
517 + f.tools().If().__addElseBlock()
518 + f.indent() + "insert into @__taxs (recid,rt,ft)"
519 + f.indent() + " select l.RECID,d.RT,l.FT from DMLKPS l left join DM d on d.RECID=l.RECID and d.RT between 2111408040000+@__rtfb and 2111408040000+@__rtfb where l.FT=7321 and l.VAL=@__rid and d.RECID is not null order by l.RECID;"
520 + f.tools().If().__closeIfBlock()
521 + f.tools().__setVarVal("@__tid", "(select min(id) from @__taxs)")
522 + f.tools().While().__openWhileBlock("isnull(@__tid,0)>0")
523 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__taxs where id = @__tid") + ")")
524 + f.tools().__setVarVal("@__rt", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__taxs where id = @__tid") + ")")
525 + f.tools().__setVarVal("@__ft", "(" + f.tools().__addLimitToSelectStmt(1, "select ft from @__taxs where id = @__tid") + ")")
526 + f.tools().__setVarVal("@__v", "cast(@__ft as " + f.varTypes().BigIntVarchar() + ")")
527 + f.tools().If().__openIfBlock("isnull(@__round_intakes,0)<>isnull(@__round_items,0) and ('"+__name+"' = 'items_from_related_doc' or ('"+__name+"' = 'items_from_debit_order' "
528 + " and isnull(@__copy_rt,0)= 2111401060303+@__rtfb))")
529 + f.tools().__setVarVal("@__v", "@__v + ',5037'")
530 + f.tools().If().__closeIfBlock()
531
532 + f.tools().__setVarVal("@__lnk2stg", "@__newrid")
533 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
534 + f.tools().If().__openIfBlock("('"+__name+"' = 'intakes_from_debit_order') and (@__rt between 2111408000000+@__rtfb and 2111408999999+@__rtfb)")
535 + f.tools().__setVarVal("@__v", "@__v + ',7273,7272,7104'")
536 + updateBulkValBuilder("@__lnk2stg", null, "@__rt", "7104", "@__intake_stage_accepted", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
537 + updateBulkValBuilder("@__lnk2stg", null, "@__rt", "7282", "@__deal_kind", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
538 + f.tools().If().__openIfBlock("isnull(@__copy,0)=0")
539 + updateBulkValBuilder("@__rid", null, "@__rt", "7276", "@__receipt_recid", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
540 + updateBulkValBuilder("@__lnk2stg", null, "@__rt", "7273", "@__receipt_recid", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
541 + f.tools().If().__addElseBlock()
542 + updateBulkValBuilder("@__rid", null, "@__rt", "7276", "@__copy", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
543 + updateBulkValBuilder("@__lnk2stg", null, "@__rt", "7273", "@__copy", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
544 + f.tools().If().__closeIfBlock()
545 + f.tools().If().__openIfBlock("@__val like '%'+cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@__rt as " + f.varTypes().BigIntVarchar() + ")+'_2160_1%'")
546 + f.tools().__setVarVal("@__val", "(select replace(@__val,cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@__rt as " + f.varTypes().BigIntVarchar() + ")+'_2160_1', cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@__rt as " + f.varTypes().BigIntVarchar() + ")+'_2160_0'))")
547 + f.tools().If().__closeIfBlock()
548 + f.tools().If().__closeIfBlock()
549 + f.tools().__setVarVal("@__i", "1") + " -- ignore fields from Field ID List"
550 + f.tools().__setVarVal("@__c", "1") + " -- copy links"
551 + f.tools().__procedureCallCreator("sp_copy_record", 0, "@__rid", "@__rt", "@__lnk2stg", "@__rt", "@__v", "@__i", "@__c")
552 + f.tools().__setVarVal("@__rval", f.tools().__getOutVarVal("@__val", f.varTypes().Varchar(db_factory.FactoryUtils.__outParamsValSize)))
553 + __add_debug_line("'sp_copy_record('+cast(isnull(@__rid,0) as " + f.varTypes().BigIntVarchar() + ")+'.'+cast(isnull(@__tid,0) as " + f.varTypes().BigIntVarchar() + ")+') @__rval=['+isnull(@__rval,'')+']'")
554 + f.tools().If().__openIfBlock("('"+__name+"' = 'items_from_related_doc' or ('"+__name+"' = 'items_from_debit_order' "
555 + " and isnull(@__copy_rt,0)= 2111401060303+@__rtfb)) and (isnull(@__round_intakes,0)<>isnull(@__round_items,0)) and @__rt between 2110725000000+@__rtfb and 2110725999999+@__rtfb")
556 + __insert_value_to_item("5037")
557 + f.tools().If().__closeIfBlock()
558 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select newrecid from @__items where id = @__id") + ")")
559 + f.tools().__setVarVal("@__val", "@__val + isnull(@__rval,'')"
560 + " + cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__ft as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rid as " + f.varTypes().BigIntVarchar() + ") + ','"
561 )
562 + f.indent() + "update @__taxs set newrecid=@__lnk2stg where id = @__tid;"
563
564 + f.tools().__setVarVal("@__tid", "(" + f.tools().__addLimitToSelectStmt(1,"select id from @__taxs where id>@__tid order by id") + ")")
565 + f.tools().While().__closeWhileBlock()
566 + f.tools().If().__openIfBlock("('"+__name+"' = 'items_from_related_doc' or '"+__name+"' = 'items_from_debit_order') and (isnull(@__round_intakes,0)>=isnull(@__round_items,0))")
567 + f.tools().__setVarVal("@__items_count", "@__items_count + 1")
568 + updateBulkValBuilder("@__rid", null, "2111410000000+@__rtfb", "2055", "@__items_count", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
569 + f.tools().If().__closeIfBlock()
570 + f.tools().If().__closeIfBlock()
571
572 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1,"select id from @__items where id>@__id order by id") + ")")
573 + f.tools().While().__closeWhileBlock()
574 + __btest_items(__name)
575 + "";
576 return __val;
577 }
578
579 private String __fetch_linked_activities(String __act1rid, String __act2rid, String __varName) {
580 String __val = ""
581 // fetch draft duplicate link between activities
582 + f.tools().__setVarVal(__varName, "(" + f.tools().__addLimitToSelectStmt(1,"select d.recid from plcd_updates d join plcd_updates l1 on l1.recid=d.recid and l1.ft=7149 and l1.valint="+__act1rid+" and l1.mark is null and l1.userid=d.userid"
583 +" join plcd_updates l2 on l2.recid=d.recid and l2.ft=7150 and l2.valint="+__act2rid+" and l2.mark is null and l2.userid=d.userid"
584 +" where d.rt between 2111103000000+@__rtfb and 2111103999999+@__rtfb and d.mark is null and d.userid=@_userid")
585 + ")")
586 + f.tools().If().__openIfBlock("isnull("+__varName+",0)=0") // fetch existing duplicate link between activities
587 + f.tools().__setVarVal(__varName, "(" + f.tools().__addLimitToSelectStmt(1,"select l1.RECID from DMLKPS l1 join DMLKPS l2 on l2.RECID=l1.RECID and l2.FT=7150 and l2.VAL="+__act2rid+" left join DM d on d.RECID=l1.RECID and d.RT between 2111103000000+@__rtfb and 2111103999999+@__rtfb where l1.FT=7149 and l1.VAL="+__act1rid+" and d.RECID is not null") + ")")
588 + f.tools().If().__closeIfBlock()
589 + "";
590 return __val;
591 }
592
593 private String __get_field_valint(String __recid, String __rt, String __ft, String __varName) throws Exception {
594 String __val = ""
595 + f.tools().__setVarVal("@__nm", "',' + cast("+__recid+" as " + f.varTypes().BigIntVarchar() + ")+'_'+cast("+__rt+" as " + f.varTypes().BigIntVarchar() + ")+'_'+cast("+__ft+" as " + f.varTypes().BigIntVarchar() + ")+'_'")
596 + f.tools().__setVarVal("@__fv", f.tools().__functionCallCreator("sf_extract_ending", "@_res", "@__nm"))
597 + f.tools().If().__openIfBlock("isnull(@__fv,'')<>''")
598 + f.tools().__setVarVal(__varName, "cast(@__fv as " + f.varTypes().BigInt() + ")")
599 + f.tools().If().__addElseBlock()
600 + f.tools().__setVarVal(__varName, "0")
601 + f.tools().If().__closeIfBlock()
602 + __add_debug_line("'spcrm_reset_saledoc.__get_field_valint -> @__nm=['+isnull(@__nm,'')+'], val='+cast(isnull("+__varName+",0) as "+f.varTypes().BigIntVarchar()+")")
603 + "";
604 return __val;
605 }
606
607 private String __fetch_doctypes() {
608 String __val = ""
609 + f.indent() + "insert into @__doctypes (recid,rt,num,nstmp,ver,vstmp,parentid)"
610 + f.indent() + " select d.RECID, d.RT, n.VAL, n.STMP, v.VAL, v.STMP, p.VAL from DM d"
611 + f.indent() + " left join DMINTS n on n.RECID=d.RECID and n.FT=2053"
612 + f.indent() + " left join DMINTS v on v.RECID=d.RECID and v.FT=2052"
613 + f.indent() + " left join DMLKPS p on p.RECID=d.RECID and p.FT=7169"
614 + f.indent() + " where d.RT between 2110713000000+@__rtfb and 2110713999999+@__rtfb order by d.RECID;"
615 + "";
616 return __val;
617 }
618
619 private String __btest_doctypes() throws Exception {
620 String __val = ""
621 + (__btest
622 ? ""
623 + __btest_addTimeCheck("'spcrm_reset_saledoc: document_types'")
624 + f.tools().__openCursorForSelectBlock("@__tmp_curs", "select id,recid,rt,num,nstmp,ver,vstmp,parentid,fnum,fver,fage from @__doctypes order by id asc")
625 + f.tools().__runSqlBlockOnCursor("@__tmp_curs",
626 f.tools().__setVarVal("@__s",
627 "'id: '+cast(isnull(@__id,0) as "+f.varTypes().BigIntVarchar()+")+'recid: '+cast(isnull(@__rid,0) as "+f.varTypes().BigIntVarchar()+")+' rt: '+cast(isnull(@__rt,0) as "+f.varTypes().BigIntVarchar()+")+' num: '+cast(isnull(@__rt_link,0) as "+f.varTypes().BigIntVarchar()+")"
628 +"+' nstmp: '+cast(isnull(@__twin,0) as "+f.varTypes().BigIntVarchar()+")+' ver: '+cast(isnull(@__rt_link2,0) as "+f.varTypes().BigIntVarchar()+")+' vstmp: '+cast(isnull(@__lnk2stg,0) as "+f.varTypes().BigIntVarchar()+")"
629 +"+' parentid: '+cast(isnull(@__f,0) as "+f.varTypes().BigIntVarchar()+")+' fnum: '+cast(isnull(@__i,0) as "+f.varTypes().BigIntVarchar()+")+' fver: '+cast(isnull(@__c,0) as "+f.varTypes().BigIntVarchar()+")+' fage: '+cast(isnull(@__prf,0) as "+f.varTypes().BigIntVarchar()+")"
630 ) + __btest_addTimeCheck("@__s"),
631 // id, recid, rt, num, nstmp, ver, vstmp, parentid, fnum, fver, fage
632 "@__id","@__rid","@__rt","@__rt_link","@__twin","@__rt_link2","@__lnk2stg","@__f","@__i","@__c","@__prf"
633 )
634 //+ __btest_addTimeCheck("'@__val=['+isnull(@__val,'')+']'")
635 : ""
636 )
637 + "";
638 return __val;
639 }
640
641 private String __get_parent_enumeration(String __enumval, String __enumrid, String __enumfield, String __enumflag) {
642 String __val = ""
643 + f.tools().__setVarVal(__enumval, "(" + f.tools().__addLimitToSelectStmt(1, "select "+__enumfield+" from @__doctypes where recid=@__type") + ")")
644 + f.indent() + "update @__doctypes set "+__enumflag+" where recid=@__type;"
645 + f.tools().__setVarVal(__enumrid, "@__type")
646 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select parentid from @__doctypes where recid=@__type") + ")")
647 + f.tools().While().__openWhileBlock("isnull("+__enumval+",-1)<0 and isnull(@__rid,0)>0") + " -- fetch parent type of enumeration, when value not assigned"
648 + f.tools().__setVarVal(__enumval, "(" + f.tools().__addLimitToSelectStmt(1, "select "+__enumfield+" from @__doctypes where recid=@__rid") + ")")
649 + f.indent() + "update @__doctypes set "+__enumflag+" where recid=@__rid;"
650 + f.tools().If().__openIfBlock("isnull("+__enumval+",-1)<0")
651 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select parentid from @__doctypes where recid=@__rid") + ")")
652 + f.tools().If().__addElseBlock()
653 + f.tools().__setVarVal(__enumrid, "@__rid")
654 + f.tools().If().__closeIfBlock()
655 + f.tools().While().__closeWhileBlock()
656
657 + f.tools().__setVarVal("@__c", "(select count(*) from @__doctypes where parentid=@__type and isnull("+__enumfield+",-1)<0)")
658 + f.tools().If().__openIfBlock("isnull(@__c,0)>0")
659 + f.tools().__setVarVal("@__i", "1")
660 + f.indent() + "update @__doctypes set "+__enumflag+", fage=@__i where parentid=@__type and isnull("+__enumfield+",-1)<0;"
661 + f.tools().__setVarVal("@__c", "(select count(*) from @__doctypes where parentid in (select recid from @__doctypes where fage=@__i) and isnull("+__enumfield+",-1)<0)")
662 + f.tools().While().__openWhileBlock("isnull(@__c,0)>0 and @__i < 21") + " -- update dependants, limit 20"
663 + f.indent() + "update @__doctypes set "+__enumflag+", fage=@__i + 1 where parentid in (select recid from @__doctypes where fage=@__i) and isnull("+__enumfield+",-1)<0;"
664 + f.tools().__setVarVal("@__i", "@__i + 1")
665 + f.tools().__setVarVal("@__c", "(select count(*) from @__doctypes where parentid in (select recid from @__doctypes where fage=@__i) and isnull("+__enumfield+",-1)<0)")
666 + f.tools().While().__closeWhileBlock()
667 + f.tools().If().__closeIfBlock()
668 + "";
669 return __val;
670 }
671
672 private String __set_rollback(String __rval, String __rmsg) {
673 String __val = ""
674 + f.tools().__setVarVal("@__rollb", __rval)
675 + f.tools().__setOutVarVal("@_rollback", __rval)
676 + f.tools().__setOutVarVal("@_rollback_resource_message", __rmsg)
677 + "";
678 return __val;
679 }
680
681 private String __split_version(String __sVerVal, String __sVerNum, String __sSubVer, String __iSubVer) {
682 String __val = ""
683 + f.tools().__setVarVal(__iSubVer, "0")
684 + f.tools().If().__openIfBlock("isnull("+__sVerVal+",'')<>'' and charindex('-',"+__sVerVal+",1)>0")
685 + f.tools().__setVarVal(__sVerNum, "substring("+__sVerVal+",1,charindex('-',"+__sVerVal+",1)-1)") // version
686 + f.tools().__setVarVal(__sSubVer, "substring("+__sVerVal+",charindex('-',"+__sVerVal+",1)+1,len("+__sVerVal+"))") // sub version
687 + f.tools().If().__openIfBlock("isnull("+__sSubVer+",'')<>'' and isnumeric("+__sSubVer+")=1")
688 + f.tools().__setVarVal(__iSubVer, "cast("+__sSubVer+" as " + f.varTypes().Int() + ")") // sub version number
689 + f.tools().If().__closeIfBlock()
690 + f.tools().If().__addElseBlock()
691 + f.tools().__setVarVal(__sVerNum, "isnull("+__sVerVal+",'')")
692 + f.tools().__setVarVal(__sSubVer, "''")
693 + f.tools().If().__closeIfBlock()
694 + "";
695 return __val;
696 }
697
698 @Override
699 public String scriptCreator(String _spName) throws Exception {
700 String __sbody = ""
701+f.indent()+"--------------------------------------------------------------------------------------------------------------------------------------"
702+f.indent()+"-- NAME - spcrm_reset_saledoc --"
703+f.indent()+"-- CATEGORY - CRM Application Logic Function (ALF) --"
704+f.indent()+"-- INPUT PARAMETERS: --"
705+f.indent()+"-- @_userid - ID of Appllication User --"
706+f.indent()+"-- @_recid - ID of sale document record --"
707+f.indent()+"-- @_rt - Type of record (2111401060000 and 2111401069999) --"
708+f.indent()+"-- @_ft - ID of field --"
709+f.indent()+"-- @_draft - Flag draft-apply (regular [0], not-final [1], final [2], draft-removing [3]) --"
710+f.indent()+"-- @_import_call - Flag import executing ('true'/'false') --"
711+f.indent()+"-- PURPOSE - Updates Application data, by return of the command to sp_update_bulk. --"
712+f.indent()+"-- DESCRIPTION - 1.Reset sale document fields: 1033,4105,4104,4108,4106,5017,5015 --"
713+f.indent()+"-- 2.Send values by @_alf_buffer to DEPENDENT ALF procedures: spcrm_stage_changed --"
714+f.indent()+"-- 3.Create linked records --"
715+f.indent()+"--------------------------------------------------------------------------------------------------------------------------------------"
716 + f.tools().testTable().__createTestTableAsTempTable()
717 + f.indent()
718 + f.tools().__createNewVar("@__rtfb", f.varTypes().BigInt())
719 + f.tools().__createNewVar("@__rtf", f.varTypes().BigIntVarchar())
720 + f.tools().__createNewVar("@_rttrimed", f.varTypes().BigInt())
721 + f.tools().__createNewVar("@__val", f.varTypes().Varchar(db_factory.FactoryUtils.__outParamsValSize), "''")
722 + f.tools().__createNewVar("@__rval", f.varTypes().LargestVarchar())
723 + f.tools().__createNewVar("@__sval", f.varTypes().LargestVarchar())
724 + f.tools().__createNewVar("@__type", f.varTypes().BigInt())
725 + f.tools().__createNewVar("@__ptype", f.varTypes().BigInt(), "0")
726 + f.tools().__createNewVar("@__ch", f.varTypes().Varchar(1))
727 + f.tools().__createNewVar("@__enum", f.varTypes().BigInt(), "-1")
728 + f.tools().__createNewVar("@__enumrid", f.varTypes().BigInt(), "0")
729 + f.tools().__createNewVar("@__ever", f.varTypes().BigInt(), "-1")
730 + f.tools().__createNewVar("@__everrid", f.varTypes().BigInt(), "0")
731 + f.tools().__createNewVar("@__subver", f.varTypes().BigInt(), "0")
732 + f.tools().__createNewVar("@__poll", f.varTypes().BigInt(), "0")
733 + f.tools().__createNewVar("@__ert", f.varTypes().BigInt())
734 + f.tools().__createNewVar("@__estmp", f.varTypes().BigInt())
735 + f.tools().__createNewVar("@__id_details", f.varTypes().BigInt())
736 + f.tools().__createNewVar("@__tid", f.varTypes().BigInt())
737 + f.tools().__createNewVar("@__id", f.varTypes().BigInt())
738 + f.tools().__createNewVar("@__id_intakes", f.varTypes().BigInt())
739 + f.tools().__createNewVar("@__items_count", f.varTypes().BigInt(),"0")
740 + f.tools().__createNewVar("@__count", f.varTypes().BigInt(),"0")
741 + f.tools().__createNewVar("@__tax_count", f.varTypes().Int(),"0")
742 + f.tools().__createNewVar("@__rid", f.varTypes().BigInt())
743 + f.tools().__createNewVar("@__lnk", f.varTypes().BigInt())
744 + f.tools().__createNewVar("@__rt", f.varTypes().BigInt())
745 + f.tools().__createNewVar("@__ft", f.varTypes().BigInt())
746 + f.tools().__createNewVar("@__stage", f.varTypes().BigInt())
747 + f.tools().__createNewVar("@__pstage", f.varTypes().BigInt(), "0")
748 + f.tools().__createNewVar("@__method_pay", f.varTypes().BigInt(), "0")
749 + f.tools().__createNewVar("@__essence", f.varTypes().BigInt())
750 + f.tools().__createNewVar("@__recid_accounts", f.varTypes().BigInt())
751 + f.tools().__createNewVar("@__count_tax_invoices", f.varTypes().BigInt(),"0")
752 + f.tools().__createNewVar("@__link_essence", f.varTypes().BigInt())
753 + f.tools().__createNewVar("@__receipt_recid", f.varTypes().BigInt())
754 + f.tools().__createNewVar("@__recid_exist", f.varTypes().BigInt())
755 + f.tools().__createNewVar("@__recid_customer", f.varTypes().BigInt())
756 + f.tools().__createNewVar("@__checkbox_default", f.varTypes().BigInt())
757 + f.tools().__createNewVar("@__recid_details", f.varTypes().BigInt())
758 + f.tools().__createNewVar("@__flag_default_credit", f.varTypes().Int(), "0")
759 + f.tools().__createNewVar("@__flag_payment", f.varTypes().Int(), "0")
760 + f.tools().__createNewVar("@__num_of_payments", f.varTypes().Int())
761 + f.tools().__createNewVar("@__sd_plist", f.varTypes().BigInt(), "0")
762 + f.tools().__createNewVar("@__sd_order", f.varTypes().BigInt(), "0")
763 + f.tools().__createNewVar("@__sd_debit_order", f.varTypes().BigInt(), "0")
764 + f.tools().__createNewVar("@__sd_receipt", f.varTypes().BigInt(), "0")
765 + f.tools().__createNewVar("@__sd_credit_receipt", f.varTypes().BigInt(), "0")
766 + f.tools().__createNewVar("@__sd_tax_invoice", f.varTypes().BigInt(), "0")
767 + f.tools().__createNewVar("@__sd_credit_tax_invoice", f.varTypes().BigInt(), "0")
768 + f.tools().__createNewVar("@__sd_asmblg_tax_invoice", f.varTypes().BigInt(), "0")
769 + f.tools().__createNewVar("@__sd_waybill", f.varTypes().BigInt(), "0")
770 + f.tools().__createNewVar("@__sd_credit_waybill", f.varTypes().BigInt(), "0")
771 + f.tools().__createNewVar("@__sd_transaction_invoice", f.varTypes().BigInt(), "0")
772 + f.tools().__createNewVar("@__sd_asmblg_transaction_invoice", f.varTypes().BigInt(), "0")
773 + f.tools().__createNewVar("@__sd_credit_transaction_invoice", f.varTypes().BigInt(), "0")
774 + f.tools().__createNewVar("@__sd_tax_receipt_invoice", f.varTypes().BigInt(), "0")
775 + f.tools().__createNewVar("@__flag_waybill", f.varTypes().BigInt(), "0")
776 + f.tools().__createNewVar("@__flag_tax_invoice", f.varTypes().BigInt(), "0")
777 + f.tools().__createNewVar("@__flag_transaction_invoice", f.varTypes().BigInt(), "0")
778 + f.tools().__createNewVar("@__flag_order", f.varTypes().BigInt(), "0")
779 + f.tools().__createNewVar("@__flag_plist", f.varTypes().BigInt(), "0")
780 + f.tools().__createNewVar("@__stg_opn", f.varTypes().BigInt(), "0")
781 + f.tools().__createNewVar("@__stg_cls", f.varTypes().BigInt(), "0")
782 + f.tools().__createNewVar("@__stg_cnc", f.varTypes().BigInt(), "0")
783 + f.tools().__createNewVar("@__stg_exec", f.varTypes().BigInt(), "0")
784 + f.tools().__createNewVar("@__stg_suspend", f.varTypes().BigInt(), "0")
785 + f.tools().__createNewVar("@__stg_finished", f.varTypes().BigInt(), "0")
786 + f.tools().__createNewVar("@__exists", f.varTypes().BigInt())
787 + f.tools().__createNewVar("@__exists_intakes", f.varTypes().BigInt())
788 + f.tools().__createNewVar("@__recid_relation", f.varTypes().BigInt())
789 + f.tools().__createNewVar("@__recid_intake", f.varTypes().BigInt())
790 + f.tools().__createNewVar("@__recid_related_intake", f.varTypes().BigInt())
791 + f.tools().__createNewVar("@__program_finish_status", f.varTypes().BigInt())
792 + f.tools().__createNewVar("@__program_active_status", f.varTypes().BigInt())
793 + f.tools().__createNewVar("@__program_canceled_status", f.varTypes().BigInt())
794 + f.tools().__createNewVar("@__suspend_reason_order_cnc", f.varTypes().BigInt())
795 + f.tools().__createNewVar("@__intake_stage_accepted", f.varTypes().BigInt())
796 + f.tools().__createNewVar("@__intake_stage_deposited", f.varTypes().BigInt())
797 + f.tools().__createNewVar("@__intake_stage_in_progress", f.varTypes().BigInt())
798 + f.tools().__createNewVar("@__intake_stage_executed", f.varTypes().BigInt())
799 + f.tools().__createNewVar("@__current_status", f.varTypes().BigInt())
800 + f.tools().__createNewVar("@__status", f.varTypes().BigInt())
801 + f.tools().__createNewVar("@__ver_order_debit", f.varTypes().LargestVarchar())
802 + f.tools().__createNewVar("@__ver_for_followup_doc", f.varTypes().LargestVarchar())
803 + f.tools().__createNewVar("@__version", f.varTypes().BigInt())
804 + f.tools().__createNewVar("@__followup_doc_type", f.varTypes().BigInt(),"0")
805 + f.tools().__createNewVar("@__rt_intake", f.varTypes().BigInt())
806 + f.tools().__createNewVar("@__next_rt_intake", f.varTypes().BigInt())
807 + f.tools().__createNewVar("@__next_sum", f.varTypes().Money())
808 + f.tools().__createNewVar("@__round_items", f.varTypes().Numeric(19,2),"0")
809 + f.tools().__createNewVar("@__round_intakes", f.varTypes().Numeric(19,2),"0")
810 + f.tools().__createNewVar("@__round", f.varTypes().Numeric(19,2),"0")
811 + f.tools().__createNewVar("@__total_round_sum", f.varTypes().Numeric(19,2),"0")
812 + f.tools().__createNewVar("@__difference", f.varTypes().Int(),"0")
813 + f.tools().__createNewVar("@__coin", f.varTypes().BigInt())
814 + f.tools().__createNewVar("@__next_coin", f.varTypes().BigInt())
815 + f.tools().__createNewVar("@__different_values", f.varTypes().Int(),"0")
816 + f.tools().__createNewVar("@__recid_receipt", f.varTypes().BigInt())
817 + f.tools().__createNewVar("@__deal_kind", f.varTypes().BigInt())
818 + f.tools().__createNewVar("@__coin_value", f.varTypes().Money())
819 + f.tools().__createNewVar("@__recid_doc", f.varTypes().BigInt(), "0")
820 + f.tools().__createNewVar("@__recid_link", f.varTypes().BigInt())
821 + f.tools().__createNewVar("@__rt_link", f.varTypes().BigInt())
822 + f.tools().__createNewVar("@__rt_link2", f.varTypes().BigInt())
823 + f.tools().__createNewVar("@__total_sum", f.varTypes().Money())
824 + f.tools().__createNewVar("@__sum", f.varTypes().Money())
825 + f.tools().__createNewVar("@__sum_of_total_saledocs", f.varTypes().Money(), "0")
826 + f.tools().__createNewVar("@__sum_of_total_saledocs_no_tax", f.varTypes().Money(), "0")
827 + f.tools().__createNewVar("@__sum_of_taxes", f.varTypes().Money(), "0")
828 + f.tools().__createNewVar("@__tax_recid", f.varTypes().BigInt())
829 + f.tools().__createNewVar("@__include_tax", f.varTypes().Int())
830 + f.tools().__createNewVar("@__flag_order_plist", f.varTypes().Int(),"0") // conversion flag: pricelist <-> order
831 + f.tools().__createNewVar("@__flag_debit_order", f.varTypes().Int(),"0")
832 + f.tools().__createNewVar("@__checkNewRecord", f.varTypes().BigInt())
833 + f.tools().__createNewVar("@__tax_id", f.varTypes().BigInt())
834 + f.tools().__createNewVar("@__tax_name", f.varTypes().LargestVarchar())
835 + f.tools().__createNewVar("@__tax_str", f.varTypes().LargestVarchar())
836 + f.tools().__createNewVar("@__tax_kind_recid", f.varTypes().BigInt())
837 + f.tools().__createNewVar("@__next_tax_kind_recid", f.varTypes().BigInt())
838 + f.tools().__createNewVar("@__last_tax_kind", f.varTypes().BigInt())
839 + f.tools().__createNewVar("@__flag", f.varTypes().Int(),"0")
840 + f.tools().__createNewVar("@__next_rid", f.varTypes().BigInt())
841 + f.tools().__createNewVar("@__tax_num", f.varTypes().Money())
842 + f.tools().__createNewVar("@__tax", f.varTypes().Money())
843 + f.tools().__createNewVar("@__sum_of_intake", f.varTypes().Money())
844 + f.tools().__createNewVar("@__relative_saledoc_sum_no_tax", f.varTypes().Money(),"0")
845 + f.tools().__createNewVar("@__relative_saledoc_sum", f.varTypes().Money(),"0")
846 + f.tools().__createNewVar("@__relative_saledoc_tax_sum", f.varTypes().Money(),"0")
847 + f.tools().__createNewVar("@__sum_of_total_intakes", f.varTypes().Money(), "0")
848 + f.tools().__createNewVar("@__curr", f.varTypes().BigInt())
849 + f.tools().__createNewVar("@__now", f.varTypes().DateTime())
850 + f.tools().__createNewVar("@__rate", f.varTypes().Money())
851 + f.tools().__createNewVar("@__followup_doc", f.varTypes().BigInt(),"0")
852 + f.tools().__createNewVar("@__followup_doc_rt", f.varTypes().BigInt(),"0")
853 + f.tools().__createNewVar("@__suspend_reason", f.varTypes().BigInt())
854 + f.tools().__createNewVar("@__count_intakes", f.varTypes().Int(), "0")
855 + f.tools().__createNewVar("@__copy_all_intakes", f.varTypes().Int(), "0")
856 + f.tools().__createNewVar("@__copy_all_items", f.varTypes().Int(), "0")
857 + f.tools().__createNewVar("@__caregiver", f.varTypes().BigInt())
858 + f.tools().__createNewVar("@__role_in_link", f.varTypes().BigInt())
859 + f.tools().__createNewVar("@__stg", f.varTypes().BigInt())
860 + f.tools().__createNewVar("@__newrid", f.varTypes().BigInt())
861 + f.tools().__createNewVar("@__recid_program_debit", f.varTypes().BigInt())
862 + f.tools().__createNewVar("@__rt_program_debit", f.varTypes().BigInt())
863 + f.tools().__createNewVar("@__discount_item", f.varTypes().BigInt(), "0")
864 + f.tools().__createNewVar("@__copy", f.varTypes().BigInt(), "0")
865 + f.tools().__createNewVar("@__copy_rt", f.varTypes().BigInt(), "0")
866 + f.tools().__createNewVar("@__lnk2stg", f.varTypes().BigInt())
867 + f.tools().__createNewVar("@__twin", f.varTypes().BigInt())
868 + f.tools().__createNewVar("@__account", f.varTypes().BigInt())
869 + f.tools().__createNewVar("@__f", f.varTypes().BigInt())
870 + f.tools().__createNewVar("@__prf", f.varTypes().BigInt())
871 + f.tools().__createNewVar("@__pprf", f.varTypes().BigInt())
872 + f.tools().__createNewVar("@__supplier_essence", f.varTypes().BigInt())
873 + f.tools().__createNewVar("@__account_recid", f.varTypes().BigInt())
874 + f.tools().__createNewVar("@__debit_order_created_from", f.varTypes().BigInt())
875 + f.tools().__createNewVar("@__is_not_credit_doc", f.varTypes().BigInt())
876 + f.tools().__createNewVar("@__debit_program_created", f.varTypes().Int(),"0")
877 + f.tools().__createNewVar("@__dprf", f.varTypes().BigInt())
878 + f.tools().__createNewVar("@__new_tax_recid", f.varTypes().BigInt(), "0")
879 + f.tools().__createNewVar("@__rate_saledoc", f.varTypes().Money())
880 + f.tools().__createNewVar("@__nm", f.varTypes().SmallVarchar())
881 + f.tools().__createNewVar("@__name", f.varTypes().SmallVarchar())
882 + f.tools().__createNewVar("@__fv", f.varTypes().SmallVarchar())
883 + f.tools().__createNewVar("@__v", f.varTypes().LargestVarchar())
884 + f.tools().__createNewVar("@__rval", f.varTypes().LargestVarchar())
885 + f.tools().__createNewVar("@__num", f.varTypes().SmallVarchar(), "''")
886 + f.tools().__createNewVar("@__ver", f.varTypes().SmallVarchar(), "''")
887 + f.tools().__createNewVar("@__n", f.varTypes().SmallVarchar())
888 + f.tools().__createNewVar("@__p", f.varTypes().Money())
889 + f.tools().__createNewVar("@__vp", f.varTypes().Money())
890 + f.tools().__createNewVar("@__vs", f.varTypes().Money())
891 + f.tools().__createNewVar("@__t", f.varTypes().Money())
892 + f.tools().__createNewVar("@__pos", f.varTypes().Int())
893 + f.tools().__createNewVar("@__end", f.varTypes().Int())
894 + f.tools().__createNewVar("@__inc_num", f.varTypes().Int(), "0")
895 + f.tools().__createNewVar("@__inc_ver", f.varTypes().Int(), "0")
896 + f.tools().__createNewVar("@__rollb", f.varTypes().Int())
897 + f.tools().__createNewVar("@__postlogic", f.varTypes().Int(), "0")
898 + f.tools().__createNewVar("@__doc_for_collection", f.varTypes().Int())
899 + f.tools().__createNewVar("@__maxsubver", f.varTypes().Int())
900 + f.tools().__createNewVar("@__i", f.varTypes().Int())
901 + f.tools().__createNewVar("@__c", f.varTypes().Int())
902 + f.tools().__createNewVar("@__buf", f.varTypes().LargestVarchar())
903 + f.tools().__createNewVar("@__s", f.varTypes().LargestVarchar())
904 + f.tools().__createNewVar("@__tz", f.varTypes().Varchar(6))
905 + f.tools().__createNewVar("@__mdts", f.varTypes().Varchar(25))
906 + f.tools().__createNewVar("@__mark", f.varTypes().SmallVarchar())
907 + f.tools().__createNewVar("@__mdt", f.varTypes().DateTime())
908 + f.tools().__createNewVar("@__date", f.varTypes().DateTime())
909 + f.tools().__createNewVar("@__date_without_time", f.varTypes().Date())
910 + f.tools().__createNewVar("@__days", f.varTypes().Int())
911 + f.tools().__createNewVar("@__date_added", f.varTypes().DateTime())
912 + f.tools().__createNewVar("@__current_date", f.varTypes().DateTime(), "getdate()")
913 + f.tools().__createNewVar("@__type_of_stage_open", f.varTypes().BigInt())
914 + f.tools().__createNewVar("@__internal_val", f.varTypes().LargestVarchar())
915
916 + f.indent() + "-- temporary tables declaration"
917 + f.tools().__createTableVariable("@__intakes_to_receipt", "id "+f.varTypes().Identity(f.varTypes().BigInt(),1,1)+", recid "+f.varTypes().BigInt()+", num "+f.varTypes().Int()+", primary key (id)", "id")
918 + f.tools().__createTableVariable("@__sum_intakes", "id "+f.varTypes().Identity(f.varTypes().BigInt(),1,1)+", recid "+f.varTypes().BigInt()+", rt "+f.varTypes().BigInt()+", sum "+f.varTypes().Money()+", primary key (id)", "id")
919 + f.tools().__createTableVariable("@__items", "id "+f.varTypes().Identity(f.varTypes().BigInt(),1,1)+", recid "+f.varTypes().BigInt()+", rt "+f.varTypes().BigInt()+", ft "+f.varTypes().BigInt()
920 +", twin "+f.varTypes().BigInt()+", acc "+f.varTypes().BigInt()+", newrecid "+f.varTypes().BigInt()+", primary key (id)", "id")
921 + f.tools().__createTableVariable("@__taxs", "id "+f.varTypes().Identity(f.varTypes().BigInt(),1,1)+", recid "+f.varTypes().BigInt()+", rt "+f.varTypes().BigInt()+", ft "+f.varTypes().BigInt()
922 +", newrecid "+f.varTypes().BigInt()+", primary key (id)", "id")
923 + f.tools().__createTableVariable("@__doctypes", "id "+f.varTypes().Identity(f.varTypes().BigInt(),1,1)+", recid "+f.varTypes().BigInt()+", rt "+f.varTypes().BigInt()+", num "+f.varTypes().BigInt()+", nstmp "+f.varTypes().BigInt()
924 +", ver "+f.varTypes().BigInt()+", vstmp "+f.varTypes().BigInt()+", parentid "+f.varTypes().BigInt()+", fnum "+f.varTypes().Int()+", fver "+f.varTypes().Int()+", fage "+f.varTypes().Int()+", primary key (id)", "id")
925 //TODO: RT in @__objects/@__intakes - @__rt_link
926 + f.tools().__createTableVariable("@__objects", "id "+f.varTypes().Identity(f.varTypes().BigInt(),1,1)+", recid "+f.varTypes().BigInt()+", rt "+f.varTypes().BigInt()+", recid_relation "+f.varTypes().BigInt()+", primary key (id)", "id")
927 + f.tools().__createTableVariable("@__intakes", "id "+f.varTypes().Identity(f.varTypes().BigInt(),1,1)+", recid "+f.varTypes().BigInt()+", rt "+f.varTypes().BigInt()+", primary key (id)", "id")
928 + f.tools().__createTableVariable("@__details", "id "+f.varTypes().Identity(f.varTypes().BigInt(),1,1)+", recid "+f.varTypes().BigInt()+", primary key (id)", "id")
929 + f.tools().__createTableVariable("@__discount_items", "id "+f.varTypes().Identity(f.varTypes().BigInt(),1,1)+", recid "+f.varTypes().BigInt()+", sum "+f.varTypes().Money()+", tax_rate "+f.varTypes().Money()+", newrecid "+f.varTypes().BigInt()+", primary key (id)", "id")
930
931 + (__btest
932 ? ""
933 + f.indent() + "-- btest cursors and variables declaration"
934 + f.tools().__createNewVar("@__tmp_curs", f.varTypes().CursorType())
935 + f.tools().__createNewVar("@__tmpid", f.varTypes().BigInt())
936 + f.tools().__createNewVar("@__tmppoll", f.varTypes().Int())
937 + f.tools().__createNewVar("@__tmpupdt", f.varTypes().Int())
938 + f.tools().__createNewVar("@__tmpalf", f.varTypes().Int())
939 + f.tools().__createNewVar("@__tmpmark", f.varTypes().SmallVarchar())
940 + f.tools().__createNewVar("@__tmprid", f.varTypes().BigInt())
941 + f.tools().__createNewVar("@__tmprt", f.varTypes().BigInt())
942 + f.tools().__createNewVar("@__tmpft", f.varTypes().BigInt())
943 + f.tools().__createNewVar("@__tmpstr", f.varTypes().SmallVarchar())
944 + f.tools().__createNewVar("@__tmpint", f.varTypes().BigInt())
945 + f.tools().__createNewVar("@__tmpdate", f.varTypes().DateTime())
946 + f.tools().__createNewVar("@__tmpcurr", f.varTypes().Money())
947 + f.tools().__createNewVar("@__tmpval", f.varTypes().LargestVarchar())
948 : ""
949 )
950
951 + f.indent()
952 + f.tools().__setVarVal("@__checkNewRecord", __isNewRecord())
953 + f.tools().__setVarVal("@__rtfb", "cast((@_rt / "+PlcUtils.__maxRt+") as "+f.varTypes().Int()+") * "+PlcUtils.__maxRt)
954 + f.tools().__setVarVal("@__rtf", "cast(cast((@_rt / "+PlcUtils.__maxRt+") as "+f.varTypes().Int()+") as " + f.varTypes().BigIntVarchar()+")")
955 + f.tools().__setVarVal("@_rttrimed", "cast((@_rt % "+PlcUtils.__maxRt+") as "+f.varTypes().BigInt()+")")
956 + f.tools().__setVarVal("@__newrid", f.tools().__getOutVarVal("@_alf_recid", f.varTypes().Int()))
957 + f.tools().__setVarVal("@__buf", f.tools().__getOutVarVal("@_alf_buffer", f.varTypes().LargestVarchar()))
958 + f.tools().If().__openIfBlock("isnull(@__buf,'')='' or isnull(@__buf,'')='0'")
959 + f.tools().__setVarVal("@__buf", "''")
960 + f.tools().If().__closeIfBlock()
961 + __castValueAsInt("@__postlogic", "@_plogic", "1", f.varTypes().Int())
962 + SetTimeZoneValue("@__tz")
963 + __add_debug_line("'spcrm_reset_saledoc -> INPUT @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@_rt='+cast(isnull(@_rt,0) as "+f.varTypes().BigIntVarchar()+")+',@_ft='+cast(isnull(@_ft,0) as "+f.varTypes().BigIntVarchar()+")+',@_draft='+cast(isnull(@_draft,0) as "+f.varTypes().BigIntVarchar()+")"
964 + "+',@_stmp='+cast(isnull(@_stmp,0) as "+f.varTypes().BigIntVarchar()+")+',@_import_call='+cast(isnull(@_import_call,'false') as "+f.varTypes().SmallVarchar()+")+',@__postlogic='+cast(isnull(@__postlogic,0) as "+f.varTypes().BigIntVarchar()+")+',@_plogic=['+isnull(@_plogic,'')+'],@_alf_buffer=['+isnull(@__buf,'')+'],@_res=['+isnull(@_res,'')+']'")
965 + __btest_plcd_updates()
966 + __btest_tmp_ts_updates()
967 + f.tools().__setVarVal("@__rollb", f.tools().__getOutVarVal("@_rollback", f.varTypes().Int()))
968 + f.indent()
969/*
970 * Verification of input RT value and DRAFT flag
971 * @__buf - this variable copying to global variable global '_alf_buffer', that say which records are removed from draft table.
972 */
973 + f.tools().If().__openIfBlock(__in_range_of_saledoc("@_rttrimed") + " and isnull(@__rollb,0)=0 and isnull(@_draft,0)=3") + " -- CRM: removing draft sale document"
974 + f.tools().If().__openIfBlock("@__buf not like '%=saledocdraftremove='+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'=%'")
975 + f.tools().__setVarVal("@__buf", "@__buf + '=saledocdraftremove='+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'='")
976 + f.tools().If().__closeIfBlock()
977
978 + f.tools().If().__addElseIfBlock(__in_range_of_saledoc("@_rttrimed") + " and isnull(@__rollb,0)=0 and isnull(@_draft,0)<>3 and @__postlogic not in (2,3) and (@_ft not in (7292,7363) or @_draft<>1)") + " -- CRM: reset sale document"
979/*
980 * Fetch a field values, also from actually deleted record (@_ft=0)
981 */
982 + f.tools().If().__openIfBlock("@_ft=0") + " -- delete sale document"
983 + f.tools().__setVarVal("@__type", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7166", "1"))
984 + f.tools().__setVarVal("@__stage", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7104", "1"))
985 + f.tools().__setVarVal("@__num", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@_recid", "2051", "1")) // fetch Tax Authority number of the saledoc
986 + f.tools().__setVarVal("@__ver", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@_recid", "4107", "1")) // fetch version number of the saledoc
987 + f.tools().If().__addElseIfBlock("isnull(@__postlogic,0) not in (0,10)") // 10 means to direct call from 'spcrm_saledoc_create_tax_invoice_for_selected_intakes'
988 + f.tools().__setVarVal("@__type", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7166", "3"))
989 + f.tools().__setVarVal("@__stage", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7104", "3"))
990 + f.tools().__setVarVal("@__num", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@_recid", "2051", "3"))
991 + f.tools().__setVarVal("@__ver", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@_recid", "4107", "3"))
992 + f.tools().If().__addElseBlock()
993 + f.tools().__setVarVal("@__type", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7166", "0"))
994 + f.tools().__setVarVal("@__stage", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7104", "0"))
995 + f.tools().__setVarVal("@__num", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@_recid", "2051", "0"))
996 + f.tools().__setVarVal("@__ver", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@_recid", "4107", "0"))
997 + f.tools().If().__openIfBlock("isnull(@_draft,0)=2")
998 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select max(idnt) from plcd_updates where RECID=@_recid and FT=@_ft and mark is not null and userid=@_userid") + ")")
999 + f.tools().If().__addElseBlock()
1000 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select max(idnt) from plcd_updates where RECID=@_recid and FT=@_ft and mark is null and userid=@_userid") + ")")
1001 + f.tools().If().__closeIfBlock()
1002 + f.tools().If().__openIfBlock("isnull(@__rid,0)>0")
1003 + f.tools().__setVarVal("@__poll", "(" + f.tools().__addLimitToSelectStmt(1, "select pollupdt from plcd_updates where idnt=@__rid") + ")")
1004 + f.tools().If().__openIfBlock("isnull(@_draft,0)=2")
1005 + f.tools().__setVarVal("@__mark", "(" + f.tools().__addLimitToSelectStmt(1, "select mark from plcd_updates where idnt=@__rid") + ")")
1006 + f.tools().If().__closeIfBlock()
1007 + f.tools().If().__closeIfBlock()
1008 + f.tools().If().__closeIfBlock()
1009/*
1010 * Fetch a document type details:
1011 * @__enum - (2053) The latest number of sales document for the Tax Authority
1012 * @__ever - (2052) The latest version of sales document for internal use
1013 * @__enumrid & @__everrid - (7169) The parent for dependents enumeration, instead of latest version (2052) or number (2053) of current type, will be use latest version or number from parent type
1014 */
1015 + f.indent() + "delete from @__doctypes;"
1016 + f.tools().If().__openIfBlock("isnull(@__type,0)>0 and isnull(@_draft,0) in (0,2) and ("
1017 + "(@_ft in (0,7166,7104) and (@_import_call is null or @_import_call<>'true'))or(@_ft in (4107,2051) and @_import_call='true')"
1018 + ")")
1019 + __fetch_doctypes()
1020 + __get_parent_enumeration("@__enum","@__enumrid","num","fnum=1")
1021 + __get_parent_enumeration("@__ever","@__everrid","ver","fver=1")
1022 + __btest_doctypes()
1023 + f.tools().If().__closeIfBlock()
1024 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@__type='+cast(isnull(@__type,0) as "+f.varTypes().BigIntVarchar()+")"
1025 +"+',@__enumrid='+cast(isnull(@__enumrid,0) as "+f.varTypes().BigIntVarchar()+")+',@__enum='+cast(isnull(@__enum,-1) as "+f.varTypes().BigIntVarchar()+")+',@__ever='+cast(isnull(@__ever,-1) as "+f.varTypes().BigIntVarchar()+")+',@__everrid='+cast(isnull(@__everrid,0) as "+f.varTypes().BigIntVarchar()+")")
1026
1027 + __fetchIdeVariable("@__sd_plist","saledoc_type_pricelist")
1028 + __fetchIdeVariable("@__sd_receipt","saledoc_type_receipt")
1029 + __fetchIdeVariable("@__sd_debit_order","saledoc_type_debit_order")
1030 + __fetchIdeVariable("@__sd_credit_tax_invoice","saledoc_type_credit_tax_invoice")
1031 + __fetchIdeVariable("@__sd_waybill","saledoc_type_waybill")
1032 + __fetchIdeVariable("@__sd_credit_waybill","saledoc_type_credit_waybill")
1033 + __fetchIdeVariable("@__sd_transaction_invoice","saledoc_type_transaction_invoice")
1034 + __fetchIdeVariable("@__sd_asmblg_transaction_invoice","saledoc_type_assemblage_transaction_invoice")
1035 + __fetchIdeVariable("@__sd_credit_transaction_invoice","saledoc_type_credit_transaction_invoice")
1036 + __fetchIdeVariable("@__sd_tax_receipt_invoice","saledoc_type_tax_receipt_invoice")
1037 + __fetchIdeVariable("@__sd_tax_invoice","saledoc_type_tax_invoice")
1038 + __fetchIdeVariable("@__sd_credit_receipt","saledoc_type_credit_reciept")
1039 + __fetchIdeVariable("@__sd_asmblg_tax_invoice","saledoc_type_assemblage_tax_invoice")
1040 + __fetchIdeVariable("@__intake_stage_accepted","intake_stage_accepted")
1041 + __fetchIdeVariable("@__intake_stage_deposited","intake_stage_deposited")
1042 + __fetchIdeVariable("@__intake_stage_in_progress","intake_stage_in_progress")
1043 + __fetchIdeVariable("@__intake_stage_executed","intake_stage_executed")
1044 + __fetchIdeVariable("@__intake_stage_future","intake_stage_future")
1045 + __fetchIdeVariable("@__sd_order","saledoc_type_order")
1046 + __fetchIdeVariable("@__stg_opn","saledoc_status_open")
1047 + __fetchIdeVariable("@__stg_cls","saledoc_status_closed")
1048 + __fetchIdeVariable("@__stg_cnc","saledoc_status_canceled")
1049 + __fetchIdeVariable("@__stg_exec","saledoc_status_execution")
1050 + __fetchIdeVariable("@__stg_suspend","saledoc_status_suspend")
1051 + __fetchIdeVariable("@__stg_finished","saledoc_status_finished")
1052 + __fetchIdeVariable("@__type_of_stage_open","type_of_stage_open")
1053 + __fetchIdeVariable("@__program_finish_status","debit_program_stage_ended")
1054 + __fetchIdeVariable("@__program_active_status","debit_program_stage_active")
1055 + __fetchIdeVariable("@__credit_type_payments","creditcard_credit_type_payments")
1056 + f.tools().__setVarVal("@__rate_saledoc", __fetch_val("@_userid", "@_recid", "5033", "0", "@_stmp", "@_draft"))
1057 + f.tools().__setVarVal("@__supplier_essence", "(" + f.tools().__addLimitToSelectStmt(1,"select recid from dmstrs where ft = "+PlcUtils.__fldvarFt+" and val = @__rtf+'_link_essence_saledocsupplier'") + ")")
1058
1059 + f.tools().If().__openIfBlock("@_draft in (0,2)")
1060 + f.tools().If().__openIfBlock("@_ft<>0")
1061 + f.tools().__setVarVal("@__account_recid", "(" + f.tools().__addLimitToSelectStmt(1,"select c.val from dmlkps a join dmlkps b on a.recid=b.recid \n" +
1062 "join dmlkps c on a.recid=c.recid\n" +
1063 "where a.ft=7186 and a.val=@_recid and b.ft=7045 and \n" +
1064 "b.val=@__supplier_essence and c.ft=7176") + ")")
1065
1066 + f.tools().__setVarVal("@__is_not_credit_doc", __fetch_val("@_userid", "@_recid", "7166", "0", "@_stmp", "@_draft"))
1067 + f.tools().If().__addElseBlock()
1068 + f.tools().__setVarVal("@__account_recid", "(" + f.tools().__addLimitToSelectStmt(1,"select c.val from lglkps a join dmlkps b on a.recid=b.recid \n" +
1069 "join dmlkps c on a.recid=c.recid\n" +
1070 "where a.ft=7186 and a.val=@_recid and b.ft=7045 and \n" +
1071 "b.val=@__supplier_essence and c.ft=7176 and c.val is not null") + ")")
1072
1073 + f.tools().__setVarVal("@__is_not_credit_doc", __fetch_val("@_userid", "@_recid", "7166", "1", "@_stmp", "@_draft"))
1074 + f.tools().If().__closeIfBlock()
1075 + f.tools().__setVarVal("@__debit_order_created_from", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__account_recid", "7328", "0"))
1076 + f.tools().If().__closeIfBlock()
1077
1078 + f.tools().If().__openIfBlock("((@_ft=4 and @_draft=1) or (@__postlogic=1 and @_ft=7104)) and (@_rttrimed between 2111401060200 and 2111401060299 or @_rttrimed=2111401060301 "
1079 + "or @_rttrimed=2111401060302 or @_rttrimed between 2111401060600 and 2111401060699)")
1080 + f.tools().__setVarVal("@__debit_order_created_from", "(" + f.tools().__addLimitToSelectStmt(1, "select c.val from #tmp_ts_updates a join #tmp_ts_updates b on a.recid=b.recid\n" +
1081 "join dmlkps c on b.valint=c.recid\n" +
1082 "where a.ft=7186 and a.valint= @_recid\n" +
1083 "and b.ft=7176 and c.ft=7328") + ")")
1084 + f.tools().If().__openIfBlock("@_ft=4 and @_draft=1")
1085 + f.tools().__setVarVal("@__is_not_credit_doc", __fetch_val("@_userid", "@_recid", "7166", "0", "@_stmp", "@_draft"))
1086 + f.tools().If().__addElseBlock()
1087 + f.tools().__setVarVal("@__is_not_credit_doc", __fetch_val("@_userid", "@_recid", "7166", "3", "@_stmp", "@_draft"))
1088 + f.tools().If().__closeIfBlock()
1089
1090 + f.tools().If().__openIfBlock("(isnull(@__debit_order_created_from,0)=isnull(@__is_not_credit_doc,1)) and "
1091 + "((@__debit_order_created_from=@__sd_order and @_rttrimed between 2111401060200 and 2111401060299) "
1092 + "or (@__debit_order_created_from=@__sd_tax_invoice and @_rttrimed=2111401060301) "
1093 + "or (@__debit_order_created_from=@__sd_transaction_invoice and @_rttrimed=2111401060302) "
1094 + "or (@__debit_order_created_from=@__sd_waybill and @_rttrimed between 2111401060600 and 2111401060699))")
1095
1096 + f.tools().__setVarVal("@__doc_for_collection", "1")
1097 + f.tools().If().__addElseBlock()
1098 + f.tools().__setVarVal("@__doc_for_collection", "0")
1099 + f.tools().If().__closeIfBlock()
1100 + updateBulkValBuilder("@_recid", null, "@_rt", "2179", "@__doc_for_collection", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1101 + f.tools().If().__closeIfBlock()
1102 + f.indent()
1103 + f.tools().If().__openIfBlock("(isnull(@__postlogic,0)=0)and(@__checkNewRecord is not null)and(@_ft=7166)and(isnull(@__type,0) in (@__sd_credit_waybill,@__sd_credit_tax_invoice,@__sd_credit_transaction_invoice,@__sd_credit_receipt))")
1104 + successfullMessage("plc_imp_doc_not_related_to_debit_order")
1105 + f.tools().If().__closeIfBlock()
1106 + f.tools().__setVarVal("@__rid", "0")
1107 + f.tools().If().__openIfBlock("isnull(@_ft,0)>0 and isnull(@_ft,0)<>2051 and isnull(@__num,'')<>'' and isnull(@__poll,0)>0")
1108 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select count(idnt) from plcd_updates where RECID=@_recid and FT=2051 and mark is null and userid=@_userid and pollupdt<>@__poll") + ")") // a query returns whether there are records of the 'Tax Authority' field from table 'plcd_updates'
1109 + f.tools().If().__closeIfBlock()
1110 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@__poll='+cast(isnull(@__poll,0) as "+f.varTypes().BigIntVarchar()+")+',count(ft2051)='+cast(isnull(@__rid,0) as "+f.varTypes().BigIntVarchar()+")"
1111 + "+',@__num='+isnull(@__num,'')+',@__sd_plist='+cast(isnull(@__sd_plist,0) as "+f.varTypes().BigIntVarchar()+")+',@__sd_order='+cast(isnull(@__sd_order,0) as "+f.varTypes().BigIntVarchar()+")"
1112 + "+',@__stg_opn='+cast(isnull(@__stg_opn,0) as "+f.varTypes().BigIntVarchar()+")+',@__stg_cls='+cast(isnull(@__stg_cls,0) as "+f.varTypes().BigIntVarchar()+")+',@__stg_cnc='+cast(isnull(@__stg_cnc,0) as "+f.varTypes().BigIntVarchar()+")")
1113
1114 + f.tools().__setVarVal("@__poll", "@__rid") //TODO: overwrite variable @__poll (last pollupdt) with count() different updates of Tax Authority field ???
1115 + f.tools().__setVarVal("@__mdt", "getdate()")
1116 + f.tools().__setVarVal("@__mdts", "replace("+__datetime_as_varchar("@__mdt")+",' ','T') + @__tz")
1117
1118 + f.indent()
1119 + f.tools().If().__openIfBlock("@_ft=0") + " -- delete sale document"
1120/*
1121 * TRIGGER: Delete a record
1122 * verify a number of document or version, decrement a saved last version value
1123 * can not delete a saledoc in the type stage -closed or processing
1124 */
1125 + f.tools().__setVarVal("@__id", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__stage", "7113", "0"))
1126 + f.tools().If().__openIfBlock("@__id <> @__type_of_stage_open") // and not @_rttrimed between 2111401060100 and 2111401060199
1127 + __set_rollback("2", "'plc_imp_not_delete_saledoc'")
1128 + f.tools().If().__addElseIfBlock("@_rttrimed = 2111401060303 or @_rttrimed between 2111401060500 and 2111401060599") + " -- tax-invoice/receipt OR receipt"
1129
1130 + f.indent() + " -- fetching linked intakes (credit-card, bank-transfer) for status verification"
1131 + f.indent() + "delete from @__intakes;"
1132 + f.indent() + "insert into @__intakes (recid,rt)"
1133 + f.indent() + " select d.recid, d.rt from lglkps l"
1134 + f.indent() + " left join dm d on d.recid=l.recid and (d.rt between 2111408020000+@__rtfb and 2111408029999+@__rtfb or d.rt between 2111408040000+@__rtfb and 2111408049999+@__rtfb)"
1135 + f.indent() + " where l.ft=7273 and l.val=@_recid and d.recid is not null and d.cstmp=l.stmp"
1136 + f.indent() + " group by d.recid, d.rt;"
1137
1138 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
1139 + f.tools().While().__openWhileBlock("isnull(@__id_intakes,0)>0 and isnull(@__rollb,0)=0")
1140 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes where id=@__id_intakes") + ")")
1141 + f.tools().__setVarVal("@__rt_link", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__intakes where id=@__id_intakes") + ")")
1142 + f.tools().__setVarVal("@__current_status", __fetch_val("@_userid", "@__recid_link", "7104", "0", "@_stmp", "@_draft"))
1143 + f.tools().If().__openIfBlock("@__current_status = @__intake_stage_executed and @__rt_link between 2111408040000+@__rtfb and 2111408049999+@__rtfb")
1144 + __set_rollback("1", "'plc_imp_cant_delete_intake_credit_card'")
1145 + f.tools().If().__addElseIfBlock("@__current_status = @__intake_stage_executed and @__rt_link between 2111408020000+@__rtfb and 2111408029999+@__rtfb")
1146 + __set_rollback("1", "'plc_imp_cant_delete_intake_bank_transfer'")
1147 + f.tools().If().__addElseIfBlock("@__current_status = @__intake_stage_in_progress")
1148 + __set_rollback("1", "'plc_imp_cant_delete_in_progress_intake'")
1149 + f.tools().If().__closeIfBlock()
1150 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes where id > @__id_intakes)")
1151 + f.tools().While().__closeWhileBlock()
1152
1153 + f.tools().If().__openIfBlock("isnull(@__rollb,0)=0")
1154 + f.indent() + " -- fetching related documents (billing instruction) for status verification"
1155 + f.indent() + "delete from @__objects;"
1156 + f.indent() + "insert into @__objects (recid,rt)"
1157 + f.indent() + " select d.recid, d.rt from lglkps l1 join lglkps l2 on l2.recid=l1.recid and l2.ft=7150"
1158 + f.indent() + " left join dm d on d.recid=l2.val and d.rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb"
1159 + f.indent() + " where l1.ft=7149 and l1.val=@_recid and d.recid is not null"
1160 + f.indent() + " group by d.recid, d.rt;"
1161 + f.indent() + " -- if the previous insert returned nothing, it could be because the twin is not deleted yet, so we need to check the twin in dmlkps table instead of lglkps table"
1162 + f.indent() + "insert into @__objects (recid,rt)"
1163 + f.indent() + " select d.recid, d.rt from lglkps l1 join dmlkps l2 on l2.recid=l1.recid and l2.ft=7150"
1164 + f.indent() + " left join dm d on d.recid=l2.val and d.rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb"
1165 + f.indent() + " where l1.ft=7149 and l1.val=@_recid and d.recid is not null and d.recid not in (select recid from @__objects)"
1166 + f.indent() + " group by d.recid, d.rt;"
1167
1168 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1169 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
1170 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1171 + f.tools().__setVarVal("@__rt_link", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__objects where id = @__id") + ")")
1172 + f.tools().__setVarVal("@__current_status", __fetch_val("@_userid", "@__recid_link", "7104", "0", "@_stmp", "@_draft"))
1173 + f.tools().If().__openIfBlock("@__current_status = @__stg_finished")
1174 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "7104", "@__stg_exec", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1175 + __insert_into_post_logic("@__recid_link","@__rt_link","7104", "3") + " -- update stage of debit order"
1176 + f.tools().If().__openIfBlock("isnull(@__debit_order_created_from,0)=isnull(@__is_not_credit_doc,0)")
1177 + f.tools().If().__openIfBlock("isnull(@__debit_order_created_from,0)=@__sd_order")
1178 + f.tools().__setVarVal("@__rt", "2111401060200+@__rtfb")
1179 + f.tools().If().__addElseIfBlock("isnull(@__debit_order_created_from,0)=@__sd_waybill")
1180 + f.tools().__setVarVal("@__rt", "2111401060600+@__rtfb")
1181 + f.tools().If().__addElseIfBlock("isnull(@__debit_order_created_from,0)=@__sd_tax_invoice")
1182 + f.tools().__setVarVal("@__rt", "2111401060301+@__rtfb")
1183 + f.tools().If().__addElseIfBlock("isnull(@__debit_order_created_from,0)=@__sd_transaction_invoice")
1184 + f.tools().__setVarVal("@__rt", "2111401060302+@__rtfb")
1185 + f.tools().If().__closeIfBlock()
1186 + f.tools().If().__closeIfBlock()
1187
1188 + f.indent() + "delete from @__items;"
1189 + f.indent() + "insert into @__items (recid)"
1190 + f.indent() + " select b.val from dmlkps a join dmlkps b on a.recid=b.recid join dm on b.val=dm.recid "
1191 + f.indent() + " where a.val=@__recid_link and a.ft=7149 and b.ft=7150 and rt = @__rt;"
1192
1193 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_link", "5015", "0", "@_stmp", "@_draft"))
1194
1195
1196 + f.tools().__setVarVal("@__tid", "(select min(id) from @__items)")
1197 + f.tools().While().__openWhileBlock("isnull(@__tid,0)>0")
1198 + f.tools().__setVarVal("@__recid_relation", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__items where id = @__tid") + ")")
1199 + f.tools().__setVarVal("@__next_sum", __fetch_val("@_userid", "@__recid_relation", "5063", "0", "@_stmp", "@_draft"))
1200 + f.tools().__setVarVal("@__next_sum", "@__next_sum + @__sum")
1201
1202 + updateBulkValBuilder("@__recid_relation", null, "@__rt", "5063", "@__next_sum", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1203 + f.tools().__setVarVal("@__recid_relation", "(" + f.tools().__addLimitToSelectStmt(1, "select a.recid from dmlkps a join dmlkps b on a.recid=b.recid \n" +
1204 "where a.ft=7149 and b.ft=7150 and a.val=@__recid_relation and b.val=@__recid_link") + ")")
1205
1206 + updateBulkValBuilder("@__recid_relation", null, "2111103000000+@__rtfb", "5048", PlcUtils.__updBulk_DELETE_Value, "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1207 + updateBulkValBuilder("@__recid_relation", null, "2111103000000+@__rtfb", "7327", PlcUtils.__updBulk_DELETE_Value, "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1208
1209 + f.tools().__setVarVal("@__tid", "(select min(id) from @__items where id > @__tid)")
1210 + f.tools().While().__closeWhileBlock()
1211 + f.tools().If().__closeIfBlock()
1212
1213 + f.indent() + " -- checking which debit program has the deleted intakes, in order to change their status to 'activate'"
1214 + f.indent() + "delete from @__items;"
1215 + f.indent() + "insert into @__items (recid,rt)"
1216 + f.indent() + " select d.recid,d.rt from dmlkps l"
1217 + f.indent() + " left join dm d on d.recid=l.recid and d.rt between 2111409000000+@__rtfb and 2111409999999+@__rtfb"
1218 + f.indent() + " where l.ft=7306 and l.val=@__recid_link and d.recid is not null"
1219 + f.indent() + " group by d.recid, d.rt;"
1220
1221 + f.tools().__setVarVal("@__tid", "(select min(id) from @__items)")
1222 + f.tools().While().__openWhileBlock("isnull(@__tid,0)>0")
1223 + f.tools().__setVarVal("@__recid_program_debit", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__items where id = @__tid") + ")")
1224 + f.tools().__setVarVal("@__rt_link2", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__items where id = @__tid") + ")")
1225 + f.tools().__setVarVal("@__current_status", __fetch_val("@_userid", "@__recid_program_debit", "7104", "0", "@_stmp", "@_draft"))
1226 // + f.tools().If().__openIfBlock("@__current_status = @__program_finish_status")
1227
1228 + f.indent() + " -- search fin.intakes linked to Billing plan (7272) and implemented (7276) in current Receipt"
1229 + f.indent() + "delete from @__details;"
1230 + f.indent() + "insert into @__details (recid)"
1231 + f.indent() + " select d.recid from dmlkps l"
1232 + f.indent() + " left join dm d on d.recid=l.recid and d.rt between 2111408000000+@__rtfb and 2111408999999+@__rtfb"
1233 + f.indent() + " where l.ft=7272 and l.val=@__recid_program_debit and d.recid is not null"
1234 + f.indent() + " group by d.recid;"
1235
1236 + f.tools().__setVarVal("@__exists", "0")
1237 + f.tools().__setVarVal("@__id_details", "(select min(id) from @__details)")
1238 + f.tools().While().__openWhileBlock("isnull(@__id_details,0)>0")
1239 + f.tools().__setVarVal("@__recid_related_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__details where id = @__id_details") + ")")
1240 + f.tools().__setVarVal("@__rt_intake", __fetch_val("@_userid", "@__recid_related_intake", "1000", "0", "@_stmp", "@_draft"))
1241 + f.tools().__setVarVal("@__recid_doc", __fetch_val("@_userid", "@__recid_related_intake", "7276", "1", "@_stmp", "@_draft"))
1242 + f.tools().If().__openIfBlock("@__recid_doc = @_recid")
1243 + updateBulkValBuilder("@__recid_related_intake", null, "@__rt_intake", "7104", "@__intake_stage_future", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1244 + f.tools().If().__openIfBlock("@__exists=0 and (@__current_status=@__program_finish_status)")
1245 + f.tools().__setVarVal("@__exists", "1")
1246 + updateBulkValBuilder("@__recid_program_debit", null, "@__rt_link2", "7104", "@__program_active_status", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1247 + __insert_into_post_logic("@__recid_program_debit","@__rt_link2","7104", "3") + " -- update stage of debit program"
1248 + f.tools().If().__closeIfBlock()
1249 + f.tools().If().__closeIfBlock()
1250 + f.tools().__setVarVal("@__id_details", "(select min(id) from @__details where id > @__id_details)")
1251 + f.tools().While().__closeWhileBlock()
1252
1253 // + f.tools().If().__closeIfBlock()
1254 + f.tools().__setVarVal("@__tid", "(select min(id) from @__items where id > @__tid)")
1255 + f.tools().While().__closeWhileBlock()
1256
1257 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects where id > @__id)")
1258 + f.tools().While().__closeWhileBlock()
1259
1260 + f.tools().__setVarVal("@__recid_doc", "0") // reset value
1261
1262 + f.tools().If().__closeIfBlock()
1263 + f.tools().If().__closeIfBlock()
1264
1265 + f.tools().If().__openIfBlock("isnull(@__ever,-1)>=0")
1266 + f.indent() + " -- fetch max existing version"
1267 + f.tools().__setVarVal("@__rid", "(select max(VERS) from ("
1268 + "select case when charindex('-',s.VAL,1)>1 then cast(substring(s.VAL,1,charindex('-',s.VAL,1)-1) as "+f.varTypes().BigInt()+") when charindex('-',s.VAL,1)<1 then cast(s.VAL as "+f.varTypes().BigInt()+") else 0 end VERS from DMSTRS s"
1269 + " left join DM d on d.RECID=s.RECID and d.RT between 2111401060000+@__rtfb and 2111401069999+@__rtfb"
1270 + " join DMLKPS l on l.RECID=s.RECID and l.FT=7166 and l.VAL in (select recid from @__doctypes where fver=1)"
1271 + " where s.FT=4107 and isnull(s.VAL,'')<>'' and d.RECID is not null and d.RECID<>@_recid"
1272 + ") t)"
1273 )
1274 + f.tools().If().__openIfBlock("isnull(@__rid,0)>0 and @__ever > @__rid") + " -- reduce version to max existing, when last version deleted"
1275 + f.tools().__setVarVal("@__ert", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__doctypes where recid=@__everrid" ) + ")")
1276 + f.tools().__setVarVal("@__estmp", "(" + f.tools().__addLimitToSelectStmt(1, "select vstmp from @__doctypes where recid=@__everrid") + ")")
1277 + f.tools().__setVarVal("@__ever", "@__rid")
1278 + __lock_and_update_enum_value("@__everrid","@__ert","2052","@__estmp","@__ever","@_stmp")
1279 + f.tools().__setVarVal("@__rollb", f.tools().__getOutVarVal("@_rollback", f.varTypes().Int()))
1280 + f.tools().If().__closeIfBlock()
1281 + f.tools().If().__closeIfBlock()
1282
1283 + f.tools().If().__addElseIfBlock("@_ft=7292 or (@_ft=7363 and isnull(@_draft,0) in (0,2))") + " -- follow-up document"
1284 + f.tools().__setVarVal("@__current_status", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7104", "0")) // document status
1285 + f.tools().If().__openIfBlock("isnull(@__current_status,0) <> @__stg_exec and @_rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb")
1286 + __set_rollback("1", "'plc_imp_debit_order_status_not_exec'")
1287 + f.tools().If().__addElseIfBlock("isnull(@__current_status,0) not in (@__stg_cls,@__stg_exec)")
1288 + __set_rollback("1", "'plc_imp_cant_create_followup_doc'")
1289 + f.tools().If().__closeIfBlock()
1290 + f.tools().If().__openIfBlock("@_ft=7292")
1291 + f.tools().If().__openIfBlock("@__postlogic=10") // 10 means to direct call from 'spcrm_saledoc_create_tax_invoice_for_selected_intakes'
1292 + f.tools().__setVarVal("@__followup_doc", "@__sd_tax_invoice")
1293 + f.tools().If().__addElseBlock()
1294 + f.tools().__setVarVal("@__followup_doc", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7292", "0"))
1295 + f.tools().If().__openIfBlock("isnull(@__followup_doc,0)<>0")
1296 + updateBulkValBuilder("@_recid", null, "@_rt", "7292", PlcUtils.__updBulk_DELETE_Value, "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1297 + f.tools().If().__closeIfBlock()
1298 + f.tools().If().__closeIfBlock()
1299 + f.tools().If().__openIfBlock("isnull(@__followup_doc,0)<>0")
1300 + f.tools().__setVarVal("@__receipt_recid", __fetch_val("@_userid", "@_recid", "7363", "0", "@_stmp", "@_draft"))
1301 + f.tools().If().__openIfBlock("isnull(@__receipt_recid,0)<>0")
1302 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_cant_create_and_related_together")
1303 + f.tools().If().__closeIfBlock()
1304 + f.tools().If().__closeIfBlock()
1305 + f.tools().If().__addElseBlock() // ft=7363
1306 + f.tools().__setVarVal("@__receipt_recid", __fetch_val("@_userid", "@_recid", "7363", "0", "@_stmp", "@_draft"))
1307 + f.tools().__setVarVal("@__followup_doc", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7292", "0"))
1308 + f.tools().__setVarVal("@__status", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__receipt_recid", "7104", "0"))
1309 + f.tools().If().__openIfBlock("isnull(@__followup_doc,0)<>0")
1310 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_cant_create_and_related_together")
1311 + f.tools().If().__addElseIfBlock("isnull(@__status,0)=@__stg_cls") + " -- can't add intake or sum of intake to a closed receipt"
1312 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_receipt_closed")
1313 + f.tools().If().__closeIfBlock()
1314 + updateBulkValBuilder("@_recid", null, "@_rt", "7363", PlcUtils.__updBulk_DELETE_Value, "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1315 + f.tools().If().__closeIfBlock()
1316
1317 + f.tools().If().__openIfBlock("isnull(@__current_status,0) = @__stg_exec and @_rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb and (@_draft in (0,2))") + " -- checking if exists marked items or intakes"
1318 + f.tools().If().__openIfBlock("isnull(@__followup_doc,0) in (@__sd_tax_invoice,@__sd_tax_receipt_invoice)")
1319
1320 + f.indent() + " -- checking if exist marked items"
1321 + f.indent() + "delete from @__objects;"
1322 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7163 and val=@_recid;"
1323
1324 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1325 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0 and isnull(@__exists,0)=0")
1326 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1327 + f.tools().__setVarVal("@__exists", __fetch_val("@_userid", "@__recid_link", "2162", "0", "@_stmp", "@_draft"))
1328 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
1329 + f.tools().While().__closeWhileBlock()
1330
1331 + f.tools().If().__openIfBlock("isnull(@__exists,0)=0")
1332 + f.tools().__setVarVal("@__copy_all_items", "1")
1333 + f.tools().If().__closeIfBlock()
1334 + f.tools().If().__closeIfBlock()
1335 + f.tools().If().__openIfBlock("(isnull(@__followup_doc,0) in (@__sd_receipt,@__sd_tax_receipt_invoice)) or @_ft=7363")
1336
1337 + __fetchIdeVariable("@__intake_stage_implemented","intake_stage_implemented")
1338 + f.indent() + " -- checking if exist marked intakes"
1339 + f.indent() + "delete from @__objects;"
1340 + f.indent() + "insert into @__objects (recid) select dmlkps.recid from\n" +
1341 "(select recid from dmlkps where ft=7306 and val=@_recid) as a\n" +
1342 "join dmlkps on a.recid=dmlkps.val\n" +
1343 "join dmints on dmlkps.recid=dmints.recid\n" +
1344 "where dmlkps.ft=7272 and dmints.ft=2160 and dmints.val=1;"
1345
1346 //TODO: select rt from @__objects ??
1347 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1348 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
1349 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1350 + f.tools().__setVarVal("@__rt_link", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from dm where recid = @__recid_link") + ")")
1351 + f.tools().__setVarVal("@__date", __fetch_val("@_userid", "@__recid_link", "3037", "0", "@_stmp", "@_draft"))
1352 + f.tools().If().__openIfBlock("(@__current_date < @__date) and (@__rt_link not in (2111408030000+@__rtfb,2111408050000+@__rtfb))")
1353 + __set_rollback("1", "'plc_imp_chosen_future_date_intake'")
1354 + f.tools().If().__addElseBlock()
1355 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "7104", "@__intake_stage_implemented", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1356 + f.tools().If().__openIfBlock("@__rt_link = 2111408040000+@__rtfb")
1357 + f.indent() + "delete from @__intakes;"
1358 + f.indent() + "insert into @__intakes (recid) select recid from dmlkps where ft=7321 and val=@__recid_link;"
1359 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
1360 + f.tools().While().__openWhileBlock("isnull(@__id_intakes,0)>0") + " -- split intakes"
1361 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes where id = @__id_intakes") + ")")
1362 + updateBulkValBuilder("@__recid_intake", null, "2111408040000+@__rtfb", "7104", "@__intake_stage_implemented", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1363 + f.tools().__setVarVal("@__id_intakes", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__intakes where id > @__id_intakes order by id") + ")")
1364 + f.tools().While().__closeWhileBlock()
1365 + f.tools().If().__closeIfBlock()
1366 + f.tools().If().__closeIfBlock()
1367 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
1368 + f.tools().While().__closeWhileBlock()
1369
1370 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1371 + f.tools().If().__openIfBlock("isnull(@__id,0)=0")
1372 + f.tools().If().__openIfBlock("isnull(@__followup_doc,0)=@__sd_receipt")
1373 + __set_rollback("1", "'plc_imp_missing_intakes'")
1374 + f.tools().If().__addElseIfBlock("isnull(@__followup_doc,0)=@__sd_tax_receipt_invoice")
1375 + __set_rollback("1", "'plc_imp_miss_intake_in_tax_receipt_invoice'")
1376 + f.tools().If().__addElseIfBlock("@_ft=7363")
1377 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_choose_intakes_to_attach_them")
1378 + f.tools().If().__closeIfBlock()
1379 + f.tools().If().__closeIfBlock()
1380
1381 + f.tools().If().__openIfBlock("@_ft=7363")
1382 + f.tools().__setVarVal("@__sum_of_total_intakes", "0")
1383
1384 + f.indent() + "delete from @__intakes_to_receipt;"
1385 + f.indent() + "delete from @__sum_intakes;"
1386 + f.indent() + "insert into @__sum_intakes (recid,rt,sum) select dmcurrs.recid,rt,dmcurrs.val from dmcurrs join dm on dmcurrs.recid=dm.recid \n" +
1387 "where dmcurrs.recid in\n" +
1388 "(select dmlkps.recid from\n" +
1389 "(select recid from dmlkps where ft=7306 and val=@_recid) as a\n" +
1390 "join dmlkps on a.recid=dmlkps.val\n" +
1391 "join dmints on dmlkps.recid=dmints.recid\n" +
1392 "where dmlkps.ft=7272 and dmints.ft=2160 and dmints.val=1) and ft=5042;"
1393
1394 + f.tools().__setVarVal("@__id", "(select min(id) from @__sum_intakes)")
1395 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
1396 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__sum_intakes where id = @__id") + ")")
1397 + f.tools().__setVarVal("@__sum", "(" + f.tools().__addLimitToSelectStmt(1, "select sum from @__sum_intakes where id = @__id") + ")")
1398 + f.tools().__setVarVal("@__rt_link", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__sum_intakes where id = @__id") + ")")
1399 + f.tools().If().__openIfBlock("@__rt_link=2111408040000+@__rtfb")
1400 + f.tools().__setVarVal("@__deal_kind", __fetch_val("@_userid", "@__recid_link", "7282", "0", "@_stmp", "@_draft"))
1401 + f.tools().If().__closeIfBlock()
1402 + f.tools().__setVarVal("@__date_without_time", __fetch_val("@_userid", "@__recid_link", "3037", "0", "@_stmp", "@_draft"))
1403
1404 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select dmlkps.recid from dmlkps join dm on dmlkps.recid=dm.recid "
1405 + "join dmdates on dm.recid=dmdates.recid and dmdates.ft=3037"
1406 + "where dmlkps.val=@__receipt_recid and rt=@__rt_link and "
1407 + "cast(dmdates.val as date)=@__date_without_time and dmlkps.ft=7273") + ")")
1408
1409 + f.tools().If().__openIfBlock("isnull(@__recid_intake,0)<>0")
1410 + f.tools().__setVarVal("@__status", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_intake", "7104", "0"))
1411 + f.tools().If().__openIfBlock("((@__status = @__intake_stage_accepted) or (@__rt_link between 2111408010000+@__rtfb and 2111408019999+@__rtfb))"
1412 + " AND (@__rt_link<>2111408040000+@__rtfb or isnull(@__deal_kind,0)<>@__credit_type_payments)")
1413 + f.tools().__setVarVal("@__sum_of_intake", __fetch_val("@_userid", "@__recid_intake", "5042", "0", "@_stmp", "@_draft"))
1414 + f.tools().__setVarVal("@__sum_of_total_intakes", "@__sum_of_total_intakes + @__sum")
1415 + f.tools().__setVarVal("@__sum_of_intake", "@__sum_of_intake + @__sum")
1416 + updateBulkValBuilder("@__recid_intake", null, "@__rt_link", "5042", "@__sum_of_intake", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1417 + updateBulkValBuilder("@__recid_intake", null, "@__rt_link", "5064", "@__sum_of_intake", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1418 + f.tools().__setVarVal("@__rate", __fetch_val("@_userid", "@__recid_intake", "5045", "0", "@_stmp", "@_draft"))
1419 + f.tools().__setVarVal("@__sum_of_intake", "@__sum_of_intake/@__rate")
1420 + updateBulkValBuilder("@__recid_intake", null, "@__rt_link", "5043", "@__sum_of_intake", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1421 + updateBulkValBuilder("@__recid_intake", null, "@__rt_link", "5044", "@__sum_of_intake", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1422 /* OREN 4.7.19 - credit type payments will create only new intakes in any case for now
1423 + f.tools().If().__addElseIfBlock("@__rt_link=2111408040000+@__rtfb") // credit type payments
1424 + f.tools().__setVarVal("@__rate", __fetch_val("@_userid", "@__recid_intake", "5045", "0", "@_stmp", "@_draft"))
1425
1426 + f.indent() + "delete from @__objects;"
1427 + f.indent() + "insert into @__objects (recid) select @__recid_intake;"
1428 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7321 and val=@__recid_intake;"
1429
1430 + f.tools().__setVarVal("@__tid", "(select min(id) from @__objects)")
1431 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__objects)")
1432 + f.tools().While().__openWhileBlock("isnull(@__tid,0)>0")
1433 + f.tools().__setVarVal("@__recid_related_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__tid") + ")")
1434 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_link", "5042", "0", "@_stmp", "@_draft"))
1435 + f.tools().If().__openIfBlock("@__tid=@__id_intakes")
1436 + f.tools().__setVarVal("@__sum_of_total_intakes", "@__sum_of_total_intakes + @__sum")
1437 + f.tools().If().__closeIfBlock()
1438 + f.tools().__setVarVal("@__sum_of_intake", __fetch_val("@_userid", "@__recid_related_intake", "5042", "0", "@_stmp", "@_draft"))
1439 + f.tools().__setVarVal("@__sum_of_intake", "@__sum_of_intake + @__sum")
1440 + updateBulkValBuilder("@__recid_related_intake", null, "@__rt_link", "5042", "@__sum_of_intake", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1441 + f.tools().__setVarVal("@__sum_of_intake", "@__sum_of_intake/@__rate")
1442 + updateBulkValBuilder("@__recid_related_intake", null, "@__rt_link", "5043", "@__sum_of_intake", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1443 + f.tools().__setVarVal("@__sum_of_intake", __fetch_val("@_userid", "@__recid_related_intake", "5064", "0", "@_stmp", "@_draft"))
1444 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_link", "5064", "0", "@_stmp", "@_draft"))
1445 + f.tools().__setVarVal("@__sum_of_intake", "@__sum_of_intake + @__sum")
1446 + updateBulkValBuilder("@__recid_related_intake", null, "@__rt_link", "5064", "@__sum_of_intake", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1447 + f.tools().__setVarVal("@__sum_of_intake", "@__sum_of_intake/@__rate")
1448 + updateBulkValBuilder("@__recid_related_intake", null, "@__rt_link", "5044", "@__sum_of_intake", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1449 + f.tools().__setVarVal("@__tid", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__tid order by id") + ")")
1450 + f.tools().While().__closeWhileBlock()
1451 + f.tools().If().__closeIfBlock()
1452 */
1453 + f.indent() + "insert into @__intakes_to_receipt (recid,num) select @__recid_link,1;"
1454 + f.tools().If().__addElseBlock()
1455 + f.indent() + "insert into @__intakes_to_receipt (recid,num) select @__recid_link,0;"
1456 + f.tools().If().__closeIfBlock()
1457 + f.tools().If().__addElseBlock()
1458 + f.indent() + "insert into @__intakes_to_receipt (recid,num) select @__recid_link,0;"
1459 + f.tools().If().__closeIfBlock()
1460 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "2160", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1461 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "7276", "@__receipt_recid", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1462 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__sum_intakes where id > @__id order by id") + ")")
1463 + f.tools().While().__closeWhileBlock()
1464 + f.tools().__setVarVal("@__id", "(select min(id) from @__intakes_to_receipt)")
1465 + f.tools().If().__openIfBlock("isnull(@__id,0)<>0")
1466 + f.tools().__setVarVal("@__tid", "0")
1467 + __create_intakes_from_debit_order("'existing_receipt'")
1468 + f.tools().If().__closeIfBlock()
1469 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1470 + f.tools().If().__openIfBlock("isnull(@__id,0)<>0")
1471 + f.tools().__setVarVal("@__rate", __fetch_val("@_userid", "@__receipt_recid", "5033", "0", "@_stmp", "@_draft"))
1472 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__receipt_recid", "5015", "0", "@_stmp", "@_draft"))
1473 + updateBulkValBuilder("@__receipt_recid", null, "2111401060500+@__rtfb", "5015", "(@__sum_of_total_intakes/@__rate)+@__sum", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1474 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__receipt_recid", "5028", "0", "@_stmp", "@_draft"))
1475 + updateBulkValBuilder("@__receipt_recid", null, "2111401060500+@__rtfb", "5028", "@__sum_of_total_intakes+@__sum", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1476 + __link_current_saledoc_to_chosen_saledoc("@__receipt_recid", "2111401060500+@__rtfb")
1477 + f.tools().__setVarVal("@__name", "(" + f.tools().__addLimitToSelectStmt(1,"select f101 from dm where recid=@__receipt_recid") + ")")
1478 + f.tools().__setVarVal("@__name", "(" + f.tools().__addLimitToSelectStmt(1,"select f101 from plcresources where resname = 'plc_imp_intakes_attached_successfully'") + ") + @__name")
1479 + successfullFreeMessage("@__name")
1480 + f.tools().If().__closeIfBlock()
1481 + f.tools().If().__closeIfBlock()
1482 + f.tools().If().__closeIfBlock()
1483 + f.tools().If().__openIfBlock("@__followup_doc = @__sd_receipt")
1484
1485 + f.indent() + " -- checking if the sum of the intakes is minus or plus"
1486 + f.indent() + "delete from @__objects;"
1487 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7306 and val=@_recid;"
1488
1489 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1490 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
1491 + f.tools().__setVarVal("@__recid_program_debit", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1492
1493 + f.indent() + "delete from @__intakes;"
1494 + f.indent() + "insert into @__intakes (recid) select recid from dmlkps where ft=7272 and val=@__recid_program_debit;"
1495
1496 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
1497 + f.tools().While().__openWhileBlock("isnull(@__id_intakes,0)>0")
1498 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes where id = @__id_intakes") + ")")
1499 + f.tools().__setVarVal("@__rt_link", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from dm where recid=@__recid_link") + ")")
1500 + f.tools().__setVarVal("@__exists", __fetch_val("@_userid", "@__recid_link", "2160", "0", "@_stmp", "@_draft"))
1501 + f.tools().__setVarVal("@__recid_intake", __fetch_val("@_userid", "@__recid_link", "7276", "0", "@_stmp", "@_draft"))
1502
1503 + f.tools().If().__openIfBlock("isnull(@__exists,0)=1 and isnull(@__recid_intake,0)=0")
1504 + f.tools().__setVarVal("@__sum_of_intake", __fetch_val("@_userid", "@__recid_link", "5042", "0", "@_stmp", "@_draft"))
1505 + f.tools().__setVarVal("@__sum_of_total_intakes", "@__sum_of_total_intakes + @__sum_of_intake")
1506
1507 + f.tools().If().__closeIfBlock()
1508 + f.tools().__setVarVal("@__id_intakes", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__intakes where id > @__id_intakes order by id") + ")")
1509 + f.tools().While().__closeWhileBlock()
1510 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
1511 + f.tools().While().__closeWhileBlock()
1512
1513 + f.tools().If().__openIfBlock("isnull(@__sum_of_total_intakes,0)<0")
1514 + f.tools().__setVarVal("@__followup_doc", "@__sd_credit_receipt")
1515 + f.tools().If().__closeIfBlock()
1516
1517 + f.tools().If().__closeIfBlock()
1518
1519 + f.indent() + " -- checking if all the programs debit are ended, if are all ended, changing the billing instruction status to finished"
1520 + f.indent() + "delete from @__objects;"
1521 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7306 and val=@_recid;"
1522
1523 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1524 + f.tools().__setVarVal("@__recid_program_debit", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1525 + __insert_into_post_logic("@__recid_program_debit","2111409000000+@__rtfb","7292")
1526
1527 + f.tools().If().__addElseIfBlock("@_rt in (2111401060301+@__rtfb,2111401060302+@__rtfb,2111401060500+@__rtfb,2111401060600+@__rtfb)") + " -- tax invoice, transaction invoice, receipt and waybill"
1528 + f.tools().If().__openIfBlock("isnull(@__followup_doc,0) in (@__sd_credit_transaction_invoice,@__sd_credit_receipt,@__sd_credit_tax_invoice,@__sd_credit_waybill) and @_draft in (0,2)")
1529
1530 + f.indent() + " -- inserting all the related saledocs of the document to table"
1531 + f.indent() + "delete from @__objects;"
1532 + f.indent() + "insert into @__objects (recid,rt,recid_relation)"
1533 + f.indent() + " select d.recid,d.rt,a.recid from dmlkps a join dmlkps b on b.recid=a.recid and b.ft=7150"
1534 + f.indent() + " left join dm d on d.recid=b.val and d.rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb"
1535 + f.indent() + " where a.ft=7149 and a.val=@_recid and d.recid is not null;"
1536
1537 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1538 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
1539 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1540 + f.tools().__setVarVal("@__rt_link", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__objects where id = @__id") + ")")
1541 + f.tools().__setVarVal("@__recid_relation", "(" + f.tools().__addLimitToSelectStmt(1, "select recid_relation from @__objects where id = @__id") + ")")
1542 + f.tools().__setVarVal("@__current_status", __fetch_val("@_userid", "@__recid_link", "7104", "0", "@_stmp", "@_draft"))
1543 + f.tools().If().__openIfBlock("@__current_status = @__stg_exec")
1544 + f.tools().If().__openIfBlock("isnull(@__followup_doc,0) = @__sd_credit_transaction_invoice")
1545 + __fetchIdeVariable("@__suspend_reason","order_debit_suspend_reason_credit_trans_invoice")
1546 + f.tools().If().__addElseIfBlock("isnull(@__followup_doc,0) = @__sd_credit_receipt")
1547 + __fetchIdeVariable("@__suspend_reason","order_debit_suspend_reason_credit_receipt")
1548 + f.tools().If().__addElseIfBlock("isnull(@__followup_doc,0) = @__sd_credit_tax_invoice")
1549 + __fetchIdeVariable("@__suspend_reason","order_debit_suspend_reason_credit_tax_invoice")
1550 + f.tools().If().__addElseIfBlock("isnull(@__followup_doc,0) = @__sd_credit_waybill")
1551 + __fetchIdeVariable("@__suspend_reason","order_debit_suspend_reason_credit_waybill")
1552 + f.tools().If().__closeIfBlock()
1553 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "7314", "@__suspend_reason", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1554 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "7104", "@__stg_suspend", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1555 + __insert_into_post_logic("@__recid_link","@__rt_link","7104","2") + " -- update stage of billing instruction"
1556 + f.tools().If().__openIfBlock("@_draft in (0,2)")
1557 + f.tools().__setVarVal("@__ver_order_debit", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__recid_link", "4107", "0"))
1558 + successfullFreeMessage(" 'הוראת חיוב ' + @__ver_order_debit + ' הושהתה.'")
1559 + f.tools().If().__closeIfBlock()
1560 + f.tools().If().__addElseIfBlock("@__current_status = @__stg_opn")
1561 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "0", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1562 + updateBulkValBuilder("@__recid_relation", null, "2111103000000+@__rtfb", "0", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1563 + f.tools().If().__closeIfBlock()
1564 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
1565 + f.tools().While().__closeWhileBlock()
1566 + f.tools().If().__closeIfBlock()
1567 + f.tools().If().__closeIfBlock()
1568 + f.tools().If().__openIfBlock("@_rt in (2111401060301+@__rtfb,2111401060302+@__rtfb,2111401060200+@__rtfb,2111401060600+@__rtfb)") + " -- tax invoice, transaction invoice, order, waybill"
1569 + f.tools().If().__openIfBlock("@__followup_doc in (@__sd_tax_receipt_invoice,@__sd_receipt,@__sd_tax_invoice)") + " -- tax invoice, tax-receipt invoice, receipt"
1570
1571 + f.indent() + "-- find all the related saledocs"
1572 + f.indent() + "delete from @__items;"
1573 + f.indent() + "insert into @__items (recid,rt) select b.val, dm.rt from dmlkps a join dmlkps b on a.recid=b.recid join dm on b.val=dm.recid \n" +
1574 "join dmdates on b.val=dmdates.recid \n" +
1575 "where a.ft=7149 and b.ft=7150 and a.val=@_recid and \n" +
1576 "dm.rt in (2111401060302+@__rtfb,2111401060303+@__rtfb,2111401060301+@__rtfb,2111401060500+@__rtfb,2111401060200+@__rtfb,2111401060600+@__rtfb,2111401060700+@__rtfb) \n" +
1577 "and dm.rt<>@_rt order by dmdates.val;"
1578 + f.tools().__setVarVal("@__id", "(select min(id) from @__items)")
1579 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
1580 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__items where id = @__id") + ")")
1581 + f.tools().__setVarVal("@__rt_link", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__items where id = @__id") + ")")
1582
1583 + f.indent() + "-- insert to the table debit order that related to the current related saledoc"
1584 + f.indent() + "insert into @__items (recid,rt) select b.val,dm.rt from dmlkps a join dmlkps b on a.recid=b.recid join dm on b.val=dm.recid \n" +
1585 "join dmdates on b.val=dmdates.recid \n" +
1586 "where a.ft=7149 and b.ft=7150 and a.val=@__recid_link and b.val not in (select recid from @__objects) \n" +
1587 "and dm.rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb \n" +
1588 "and dm.rt<>@_rt order by dmdates.val;"
1589
1590 + f.indent() + "insert into @__objects (recid) select recid from @__items where recid not in (select recid from @__objects);"
1591 + f.tools().If().__openIfBlock("isnull(@__rt_link,0) between 2111401060700+@__rtfb and 2111401060799+@__rtfb")
1592 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_there_is_related_debit_order")
1593 + f.tools().If().__closeIfBlock()
1594 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__items where id > @__id order by id") + ")")
1595 + f.tools().While().__closeWhileBlock()
1596 + f.tools().If().__closeIfBlock()
1597 + f.tools().If().__closeIfBlock()
1598 + f.tools().If().__openIfBlock("isnull(@__followup_doc,0)>0")
1599 + f.tools().If().__openIfBlock("@_recid >= " + PlcUtils.__minRecId) + " -- updated existing record"
1600 + f.tools().__setVarVal("@__copy", "@__newrid") // recid of the new saledoc
1601 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
1602
1603 + f.tools().If().__openIfBlock("@__followup_doc in (@__sd_receipt,@__sd_credit_receipt)")
1604 + f.tools().__setVarVal("@__copy_rt", "2111401060500+@__rtfb")
1605 + f.tools().If().__addElseIfBlock("@__followup_doc in (@__sd_credit_tax_invoice,@__sd_tax_invoice,@__sd_asmblg_tax_invoice)")
1606 + f.tools().__setVarVal("@__copy_rt", "2111401060301+@__rtfb")
1607 + f.tools().If().__addElseIfBlock("@__followup_doc = @__sd_order")
1608 + f.tools().__setVarVal("@__copy_rt", "2111401060200+@__rtfb")
1609 + f.tools().If().__addElseIfBlock("@__followup_doc in (@__sd_waybill,@__sd_credit_waybill)")
1610 + f.tools().__setVarVal("@__copy_rt", "2111401060600+@__rtfb")
1611 + f.tools().If().__addElseIfBlock("@__followup_doc in (@__sd_transaction_invoice,@__sd_asmblg_transaction_invoice,@__sd_credit_transaction_invoice)")
1612 + f.tools().__setVarVal("@__copy_rt", "2111401060302+@__rtfb")
1613 + f.tools().If().__addElseIfBlock("@__followup_doc = @__sd_tax_receipt_invoice")
1614 + f.tools().__setVarVal("@__copy_rt", "2111401060303+@__rtfb")
1615 + f.tools().If().__addElseBlock()
1616 + __set_rollback("2", "'crm_sd_copy_impossible'") // can't copy saledoc where followup doc.type is not compatible
1617 + f.tools().If().__closeIfBlock()
1618
1619 + f.tools().__setVarVal("@__val", "@__val + cast(@__copy as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy_rt as " + f.varTypes().BigIntVarchar() + ") +'_7166_'+ cast(@__followup_doc as " + f.varTypes().BigIntVarchar() + ") + ','")
1620
1621 + f.tools().If().__addElseBlock()
1622 + __set_rollback("2", "'crm_sd_copy_impossible'") // can't copy temporary\new saledoc record
1623 + f.tools().If().__closeIfBlock()
1624 + f.tools().If().__addElseIfBlock("@_ft<>7363")
1625 + __set_rollback("2", "'crm_sd_copy_impossible'") // can't copy saledoc where followup doc.type is not specified
1626 + f.tools().If().__closeIfBlock()
1627
1628 + f.tools().If().__addElseIfBlock("@_ft=7166") + " -- sale document type"
1629/*
1630 * TRIGGER: Update a document type field
1631 * Verify of document conversion
1632 * Reset RT according to document type OR create a duplicate of document
1633 */
1634 + f.tools().__setVarVal("@__ptype", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7166", "1")) // previous document type
1635 //+ f.tools().If().__openIfBlock("isnull(@__ptype,0)=0 and isnull(@_draft,0)=1")
1636 // + f.tools().__setVarVal("@__ptype", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7166", "2"))
1637 //+ f.tools().If().__closeIfBlock()
1638 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@__ptype='+cast(isnull(@__ptype,0) as "+f.varTypes().BigIntVarchar()+")+',@__stage='+cast(isnull(@__stage,0) as "+f.varTypes().BigIntVarchar()+")"
1639 + "+',@_rttrimed='+cast(isnull(@_rttrimed,0) as "+f.varTypes().BigIntVarchar()+")+',@__num='+isnull(@__num,'')+',@__poll='+cast(isnull(@__poll,0) as "+f.varTypes().BigIntVarchar()+")")
1640 // check if the document is still not enumerated, Tax Authority number is empty
1641 + f.tools().If().__openIfBlock("isnull(@__num,'')<>''") //TODO: check canceled condition // and isnull(@__poll,0)>0
1642 + __set_rollback("2", "'crm_sd_conv_impossible'")
1643 + f.tools().If().__addElseIfBlock("@_rttrimed between 2111401060100 and 2111401060199 and isnull(@__ptype,0)>0 and isnull(@__type,0)>0 and (@__ptype<>@__type) and isnull(@__type,0)=isnull(@__sd_order,0)") + " -- pricelist into order"
1644 //pricelist into order
1645 + f.tools().If().__openIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_opn") + " -- opened pricelist"
1646 + f.tools().__setVarVal("@__flag_order_plist", "1")
1647 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_1000_%')") // check whether a record exists already of 'RT change'
1648 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_1000_'+ cast(2111401060200+@__rtfb as " + f.varTypes().BigIntVarchar() + ") + ','")
1649 + f.tools().If().__closeIfBlock()
1650 + f.tools().__setVarVal("@__buf", "@__buf + ',' + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_7166_'+ cast(@__ptype as " + f.varTypes().BigIntVarchar() + ") + ','")
1651
1652 + f.tools().If().__addElseIfBlock("isnull(@__type,0)>0 and isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_cls") + " -- pricelist closed"
1653 + f.tools().If().__openIfBlock("@_recid >= " + PlcUtils.__minRecId + " and (isnull(@_draft,0)=2)") + " -- updated existing record"
1654 + f.tools().__setVarVal("@__copy", "@__newrid") // recid of the new one order saledoc
1655 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
1656 + f.tools().__setVarVal("@__copy_rt", "2111401060200+@__rtfb") // default
1657
1658 + f.tools().__setVarVal("@__val", "@__val + cast(@__copy as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy_rt as " + f.varTypes().BigIntVarchar() + ") +'_7166_'+ cast(@__type as " + f.varTypes().BigIntVarchar() + ") + ','")
1659
1660 + f.indent() + " -- send to postlogic instruction to read source document version and increment sub-version"
1661 + f.tools().If().__openIfBlock("isnull(@__ver,'')<>''")
1662 + f.tools().__setVarVal("@__buf", "@__buf +'='+ cast(@__copy as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy_rt as " + f.varTypes().BigIntVarchar() + ") +'_'+ "+__INC_SUB_VER+" + '='")
1663 + f.tools().If().__closeIfBlock()
1664
1665 + f.tools().If().__addElseBlock()
1666 + __set_rollback("2", "'crm_sd_conv_impossible'")
1667 + f.tools().If().__closeIfBlock()
1668 + f.tools().If().__addElseBlock()
1669 + __set_rollback("2", "'crm_sd_conv_impossible'")
1670 + f.tools().If().__closeIfBlock()
1671 + f.tools().If().__addElseIfBlock("@_rttrimed between 2111401060200 and 2111401060299 and isnull(@__ptype,0)>0 and isnull(@__type,0)>0 and (@__ptype<>@__type) and isnull(@__type,0)=isnull(@__sd_plist,0)") + " -- order into pricelist"
1672 //order into pricelist
1673 + f.tools().If().__openIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_opn") + " -- reset category and pricelist stage for opened order only"
1674 + f.tools().__setVarVal("@__flag_order_plist", "1")
1675 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_1000_%')")
1676 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_1000_'+ cast(2111401060100+@__rtfb as " + f.varTypes().BigIntVarchar() + ") + ','")
1677 + f.tools().If().__closeIfBlock()
1678 + f.tools().__setVarVal("@__buf", "@__buf + ',' + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_7166_'+ cast(@__type as " + f.varTypes().BigIntVarchar() + ") + ','")
1679
1680 + f.tools().If().__addElseBlock() + " -- not opened order"
1681 + __set_rollback("2", "'crm_sd_conv_impossible'")
1682 + f.tools().If().__closeIfBlock()
1683 //+ f.tools().If().__addElseIfBlock("@_rttrimed between 2111401060200 and 2111401060299 and isnull(@__ptype,0)>0 and isnull(@__type,0)>0 and (@__ptype<>@__type) and isnull(@__type,0)=isnull(@__sd_plist,0)") + " -- XXX into XXX"
1684 //TODO: add new type conversion
1685
1686 + f.tools().If().__addElseIfBlock(__in_range_of_saledoc("@_rttrimed") + " and isnull(@__ptype,0)=0 and isnull(@__type,0)>0")
1687 + f.indent() + " -- first update of type document, reset defaults"
1688 // assign RT value to compare with saledoc type
1689 + f.tools().If().__openIfBlock("isnull(@__type,0)=isnull(@__sd_plist,0)")
1690 + f.tools().__setVarVal("@__ptype", "2111401060100")
1691 + f.tools().If().__addElseIfBlock("isnull(@__type,0)=isnull(@__sd_order,0)")
1692 + f.tools().__setVarVal("@__ptype", "2111401060200")
1693 //+ f.tools().If().__addElseIfBlock("isnull(@__type,0)=isnull(@__sd_XXXXX,0)")
1694 //TODO: add another types condition
1695
1696 + f.tools().If().__closeIfBlock()
1697 + f.tools().If().__openIfBlock("isnull(@__ptype,0)>0 and @__ptype<>@_rttrimed") + " -- reset RT of record according to document type"
1698 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_1000_%')")
1699 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_1000_'+ cast(@__ptype+@__rtfb as " + f.varTypes().BigIntVarchar() + ") + ','")
1700 + f.tools().If().__closeIfBlock()
1701 + f.tools().If().__closeIfBlock()
1702
1703 + f.tools().If().__openIfBlock("isnull(@__ptype,0)>0 and isnull(@__stg_opn,0)>0 and isnull(@__stage,0)=0") + " -- reset default stage"
1704 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_7104_%')"
1705 + " and not (@__val like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_7104_%')"
1706 + " and not (@__buf like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_7104_%')")
1707 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_7104_'+ cast(@__stg_opn as " + f.varTypes().BigIntVarchar() + ") + ','")
1708 + f.tools().If().__closeIfBlock()
1709 + f.tools().If().__closeIfBlock()
1710
1711 + f.tools().__setVarVal("@__ptype", "0")
1712 + f.tools().If().__addElseIfBlock("(isnull(@__ptype,0)>0)and((isnull(@__type,0)>0 and (@__ptype<>@__type))or(isnull(@__type,0)=0))") + " -- document type has been modified"
1713 + __set_rollback("2", "'crm_sd_conv_impossible'")
1714 + f.tools().If().__closeIfBlock()
1715
1716 + f.tools().If().__addElseIfBlock("@_ft=7104") + " -- sale document stage: verify modification"
1717/*
1718 * TRIGGER: Update a stage field
1719 * Verify a previous/current stage values, prepare to copying into new opened document
1720 * Reset internal variables:
1721 * @__inc_ver - flag for treatment of version number
1722 * @__inc_num - flag for treatment of number of Tax Autority of Israel
1723 * Verify of required fields/links by calling [sfcrm_verify_saledoc] on closing of document
1724 */
1725 + f.tools().__setVarVal("@__pstage", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7104", "1")) // fetch previous stage
1726 + f.tools().If().__openIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_opn") // opening of document
1727 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and isnull(@__pstage,0) in (@__stg_cls,@__stg_cnc)")
1728 // reopen saledoc is possible for price list and order ONLY when @_draft=0
1729 + f.tools().If().__openIfBlock("not (@_rttrimed between 2111401060100 and 2111401060299)")
1730 + __set_rollback("2", "'crm_sd_upd_stage_impossible'")
1731 + f.tools().If().__addElseIfBlock("isnull(@_draft,0) in (1,2)")
1732 + __set_rollback("2", "'crm_sd_upd_stage_impossible;core_space;crm_avoid_activity_draft_operation'")
1733 + f.tools().If().__closeIfBlock()
1734 + f.tools().If().__closeIfBlock()
1735 + f.tools().If().__openIfBlock("isnull(@__rollb,0)=0 and isnull(@__ver,'')<>'' and isnull(@__pstage,0)=0 and @__postlogic<>0")
1736 + f.tools().__setVarVal("@__inc_ver", "1") + " -- increment sub-version of copyed document by postlogic"
1737 + f.tools().If().__addElseIfBlock("isnull(@__rollb,0)=0 and isnull(@__ver,'')=''") + " -- possible ONLY for NOT enumerated saledocs"
1738 + f.tools().__setVarVal("@__inc_ver", "1") + " -- increment sub-version"
1739 + f.tools().If().__closeIfBlock()
1740 + f.tools().If().__addElseIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_cls") // closing of document
1741 + f.tools().If().__openIfBlock("@_import_call is null or @_import_call<>'true'") + " -- when caller is not importer"
1742 + f.tools().__setVarVal("@__s", f.tools().__functionCallCreator("sfcrm_verify_saledoc", "@_userid", "@_recid", "@_rt", "@_draft", "@_profid")) // check that all the required data is already set in order to turn the saledoc into “closed” stage. each type has it's own required-data. probably must-fields not included
1743 + f.tools().If().__addElseBlock()
1744 + f.tools().__setVarVal("@__s", "''")
1745 + f.tools().If().__closeIfBlock()
1746 + f.tools().If().__openIfBlock("isnull(@__s,'')<>''")
1747 + __set_rollback("1", "'crm_sd_upd_stage_impossible'+isnull(@__s,'')")
1748 + f.tools().If().__addElseIfBlock("isnull(@__num,'')=''")
1749 + f.tools().__setVarVal("@__inc_num", "1") + " -- increment numbering"
1750 + f.tools().If().__closeIfBlock()
1751 + f.tools().If().__addElseIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_cnc") // canceling of document
1752 // cancel saledoc is possible for price list and order ONLY when @_draft=0
1753 + f.tools().If().__openIfBlock("not (@_rttrimed between 2111401060100 and 2111401060299)")
1754 + __set_rollback("2", "'crm_sd_upd_stage_impossible'")
1755 + f.tools().If().__closeIfBlock()
1756 + f.tools().If().__addElseBlock() // update stage of document with invalid value OR not defined IDE variables
1757 + f.tools().If().__openIfBlock("isnull(@__stage,0)<>@__stg_exec")
1758 + __set_rollback("2", "'crm_sd_upd_stage_impossible'")
1759 + f.tools().If().__closeIfBlock()
1760 + f.tools().If().__closeIfBlock()
1761
1762 + f.tools().If().__openIfBlock("isnull(@__rollb,0)=0 and isnull(@__type,0)>0 and isnull(@__stage,0)>0 and isnull(@__pstage,0)>0 and ("
1763 + "(@__stage=@__stg_opn and @__pstage in (@__stg_cls,@__stg_cnc)) or (@__stage=@__stg_cls and @__pstage=@__stg_cnc)"
1764 + ")")
1765 + f.indent()+ "-- the stage change is possible ONLY if the document Tax Authority number has not been assigned"
1766 + f.tools().If().__openIfBlock("@__pstage=@__stg_cnc and isnull(@__num,'')<>'' and not (@_rttrimed between 2111401060100 and 2111401060299)")
1767 + __set_rollback("2", "'crm_sd_upd_stage_impossible'")
1768 + f.tools().If().__addElseBlock()
1769 + f.indent() + "-- fetch join record and extract version info"
1770 + f.tools().__setVarVal("@__rid", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7152", "0"))
1771 + __split_version("@__ver","@__n","@__v","@__pos")
1772 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@__pstage='+cast(isnull(@__pstage,0) as "+f.varTypes().BigIntVarchar()+")+',@__rid='+cast(isnull(@__rid,0) as "+f.varTypes().BigIntVarchar()+")"
1773 + "+',@__ver='+isnull(@__ver,'')+',@__n='+isnull(@__n,'')+',@__v='+isnull(@__v,'')+',@__pos='+cast(isnull(@__pos,0) as "+f.varTypes().BigIntVarchar()+")")
1774 + f.indent() + "-- search of opened saledoc in the same join of saledocs under same version"
1775 + f.tools().If().__openIfBlock("isnull(@__rid,0)>0 and isnull(@__n,'')<>'' and isnull(@__pos,0)>0") + " -- join record exists and version info extracted"
1776 + f.indent() + " -- look for a valid saledoc of a newer sub-version under the same version"
1777 + f.tools().If().__openIfBlock("exists(" + f.tools().__addLimitToSelectStmt(1,"select l.RECID from DMLKPS l join DMLKPS ls on ls.RECID=l.RECID and ls.FT=7104 and ls.VAL<>@__stg_cnc"
1778 + " join DMLKPS lt on lt.RECID=l.RECID and lt.FT=7166 and lt.VAL in (select recid from @__doctypes where fver=1)"
1779 + " join DMSTRS s on s.RECID=l.RECID and s.FT=4107 and substring(s.VAL,1,charindex('-',s.VAL,1)-1)=@__n and cast(substring(s.VAL,charindex('-',s.VAL,1)+1,len(s.VAL)) as " + f.varTypes().Int() + ")>@__pos"
1780 + " left join DM d on d.RECID=l.RECID and d.RT between 2111401060000+@__rtfb and 2111401069999+@__rtfb where l.FT=7152 and l.VAL=@__rid and l.RECID<>@_recid and d.RECID is not null"
1781 ) + ")")
1782 + __set_rollback("2", "'crm_sd_opened_already'")
1783 + f.tools().If().__closeIfBlock()
1784 + f.tools().If().__closeIfBlock()
1785
1786 + f.tools().If().__openIfBlock("isnull(@__stg_cnc,0)>0 and isnull(@__rollb,0)=0")
1787 + f.tools().If().__openIfBlock("@_draft in (0,2)")
1788 + f.tools().__setVarVal("@__copy", "@__newrid") //recid of the new duplicate saledoc
1789 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
1790 + f.tools().__setVarVal("@__copy_rt", "@_rt") // default
1791
1792 + f.tools().__setVarVal("@__val", "@__val + cast(@__copy as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy_rt as " + f.varTypes().BigIntVarchar() + ") +'_7166_'+ cast(@__type as " + f.varTypes().BigIntVarchar() + ") + ','")
1793 // cancel current saledoc
1794 + updateBulkValBuilder("@_recid", null, "@_rt", "7104", "@__stg_cnc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1795
1796 + f.indent() + " -- send to postlogic instruction to read source document version and increment sub-version"
1797 + f.tools().If().__openIfBlock("isnull(@__ver,'')<>''")
1798 + f.tools().__setVarVal("@__buf", "@__buf +'='+ cast(@__copy as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy_rt as " + f.varTypes().BigIntVarchar() + ") +'_'+ "+__INC_SUB_VER+" + '='")
1799 + f.tools().If().__closeIfBlock()
1800
1801 + f.tools().If().__closeIfBlock()
1802 + f.tools().If().__addElseIfBlock("isnull(@__rollb,0)=0")
1803 + __set_rollback("2", "'crm_sd_upd_stage_impossible'") // can't to overwrite stage (cancel current document on opening) because of stage variable is not defined
1804 + f.tools().If().__closeIfBlock()
1805
1806 + f.tools().If().__closeIfBlock()
1807 + f.tools().If().__addElseIfBlock("isnull(@__rollb,0)=0 and isnull(@__type,0)>0 and isnull(@__stage,0)>0 and isnull(@__pstage,0)>0 and isnull(@__num,'')<>''")
1808 + __set_rollback("2", "'crm_sd_upd_stage_impossible'") // can't change stage if there is an Tax Authority number in the saledoc
1809 + f.tools().If().__closeIfBlock()
1810
1811 + f.tools().If().__openIfBlock("@_rttrimed between 2111401060700 and 2111401060799 and @__postlogic=0") + " -- billing instruction document"
1812 + f.tools().__setVarVal("@__suspend_reason", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7314", "0"))
1813 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0)in (@__stg_cnc,@__stg_finished))")
1814 + f.indent() + " -- if previous status were canceled or finished, its impossible to change the status"
1815 + __set_rollback("1", "'plc_imp_convert_impossible'")
1816 + f.tools().If().__addElseIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_exec") + " -- status changed to 'execution'"
1817 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and isnull(@__pstage,0) in (@__stg_opn,@__stg_suspend)")
1818
1819 + f.indent() + "delete from @__objects;"
1820 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7306 and val=@_recid;"
1821
1822 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1823 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0 and isnull(@__count_intakes,0)=0")
1824 + f.tools().__setVarVal("@__recid_program_debit", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1825 + f.indent() + "delete from @__intakes;"
1826 + f.indent() + "insert into @__intakes (recid) select recid from dmlkps where ft=7272 and val=@__recid_program_debit;"
1827
1828 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
1829 + f.tools().While().__openWhileBlock("isnull(@__id_intakes,0)>0 and isnull(@__count_intakes,0)=0")
1830 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes where id = @__id_intakes") + ")")
1831 + f.tools().__setVarVal("@__recid_receipt", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_intake", "7276", "0"))
1832 + f.tools().If().__openIfBlock("isnull(@__recid_receipt,0)=0") + "-- if the intake does not has a pointer to receipt"
1833 + f.tools().__setVarVal("@__count_intakes", "@__count_intakes + 1")
1834 + f.tools().If().__closeIfBlock()
1835 + f.tools().__setVarVal("@__id_intakes", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__intakes where id > @__id_intakes order by id") + ")")
1836 + f.tools().While().__closeWhileBlock()
1837 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
1838 + f.tools().While().__closeWhileBlock()
1839 + f.tools().If().__openIfBlock("isnull(@__count_intakes,0)=0") + "-- if there is no future intakes, do rollback"
1840 + __set_rollback("1", "'plc_imp_cant_update_status'")
1841 + f.tools().If().__closeIfBlock()
1842 + f.tools().If().__openIfBlock("isnull(@__suspend_reason,0)<>0 and (@__pstage=@__stg_suspend) and @_draft in (0,2)")
1843 + updateBulkValBuilder("@_recid", null, "2111401060700+@__rtfb", "7314", PlcUtils.__updBulk_DELETE_Value, "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1844 + f.tools().If().__closeIfBlock()
1845 + f.tools().If().__closeIfBlock()
1846
1847 + f.tools().If().__addElseIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_suspend") + " -- status changed to 'suspend'"
1848 // + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0)=@__stg_opn) and isnull(@_draft,0) in (1,2)")
1849 // + f.indent() + " -- if previous status were open, do rollback"
1850 // + rollbackWithMessage(FactoryEnums.RollBack.CANCEL_UPDATES, "crm_sd_upd_stage_impossible")
1851 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0) in (@__stg_opn,@__stg_exec))") + " -- previous status were to 'execution'"
1852 + f.tools().If().__openIfBlock("isnull(@__suspend_reason,0)=0") + " -- if the field 'suspend reason' is empty, do rollback"
1853 + __set_rollback("1", "'plc_imp_fill_suspend_reason'")
1854 + f.tools().If().__closeIfBlock()
1855 + f.tools().If().__closeIfBlock()
1856 + f.tools().If().__addElseIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_finished and @_draft in (0,2)") + " -- status changed to 'finished'"
1857 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0)in (@__stg_opn,@__stg_suspend,@__stg_exec))")
1858
1859 + f.indent() + "delete from @__objects;"
1860 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7306 and val=@_recid;"
1861
1862 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1863 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0 and @__count_intakes=0")
1864 + f.tools().__setVarVal("@__recid_program_debit", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1865
1866 + f.indent() + " -- intakes of program debit"
1867 + f.indent() + "delete from @__intakes;"
1868 + f.indent() + "insert into @__intakes (recid) select recid from dmlkps where ft=7272 and val=@__recid_program_debit;"
1869
1870 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
1871 + f.tools().While().__openWhileBlock("isnull(@__id_intakes,0)>0 and @__count_intakes=0")
1872 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes where id = @__id_intakes") + ")")
1873 + f.tools().__setVarVal("@__recid_receipt", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_intake", "7276", "0"))
1874 + f.tools().If().__openIfBlock("isnull(@__recid_receipt,0)<>0") + "-- if the intake has a pointer to receipt"
1875 + f.tools().__setVarVal("@__count_intakes", "@__count_intakes + 1")
1876 + f.tools().If().__closeIfBlock()
1877 + f.tools().__setVarVal("@__id_intakes", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__intakes where id > @__id_intakes order by id") + ")")
1878 + f.tools().While().__closeWhileBlock()
1879 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
1880 + f.tools().While().__closeWhileBlock()
1881 + f.tools().If().__openIfBlock("isnull(@__count_intakes,0)=0") + "-- if no one of the intakes has a pointer to a receipt, do rollback"
1882 + __set_rollback("1", "'plc_imp_no_actual_intakes'")
1883 + f.tools().If().__closeIfBlock()
1884 + f.tools().__setVarVal("@__count_intakes", "0")
1885 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1886 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
1887 + f.tools().__setVarVal("@__recid_program_debit", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1888
1889 + f.indent() + "delete from @__intakes;"
1890 + f.indent() + "insert into @__intakes (recid) select recid from dmlkps where ft=7272 and val=@__recid_program_debit;"
1891 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
1892 + f.tools().While().__openWhileBlock("isnull(@__id_intakes,0)>0")
1893 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes where id = @__id_intakes") + ")")
1894 + f.tools().__setVarVal("@__rt_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from dm where recid=@__recid_intake") + ")")
1895 + f.tools().__setVarVal("@__recid_receipt", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_intake", "7276", "0"))
1896 + f.tools().If().__openIfBlock("isnull(@__recid_receipt,0)=0")
1897 + f.indent() + "-- if the intake doesn't has a pointer to receipt - delete it"
1898 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "0", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1899 + f.tools().If().__addElseBlock()
1900 + f.tools().__setVarVal("@__count_intakes", "@__count_intakes + 1")
1901 + f.tools().If().__closeIfBlock()
1902 + f.tools().__setVarVal("@__id_intakes", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__intakes where id > @__id_intakes order by id") + ")")
1903 + f.tools().While().__closeWhileBlock()
1904 + f.tools().If().__openIfBlock("isnull(@__count_intakes,0)>0") + " -- there are actual intakes. change program debit status to 'finished'"
1905 + f.tools().__setVarVal("@__current_status", __fetch_val("@_userid", "@__recid_program_debit", "7104", "0", "@_stmp", "@_draft"))
1906 + f.tools().If().__openIfBlock("isnull(@__current_status,0) <> @__program_finish_status")
1907 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7104", "@__program_finish_status", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1908 + __insert_into_post_logic("@__recid_program_debit","2111409000000+@__rtfb","7104", "3") + " -- update stage of debit program"
1909 + __insert_into_post_logic("@__recid_intake","@__rt_intake","5043") + " -- spcrm_saledoc_set_sum_field_in_debit_program"
1910 + f.tools().If().__closeIfBlock()
1911 + f.tools().If().__addElseBlock() + " -- there are NO actual intakes. change program debit status to 'canceled'"
1912 + f.tools().__setVarVal("@__program_canceled_status", "(" + f.tools().__addLimitToSelectStmt(1,"select recid from dmstrs where ft = "+PlcUtils.__fldvarFt+" and val = @__rtf+'_debit_program_stage_cancel'") + ")")
1913 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7104", "@__program_canceled_status", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1914 + __insert_into_post_logic("@__recid_program_debit","2111409000000+@__rtfb","7104", "4") + " -- update stage of debit program"
1915 + f.tools().If().__closeIfBlock()
1916 + f.tools().__setVarVal("@__count_intakes", "0")
1917 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
1918 + f.tools().While().__closeWhileBlock()
1919 + f.tools().If().__openIfBlock("isnull(@__recid_program_debit,0)<>0")
1920 + __insert_into_post_logic("@__recid_intake","@__rt_intake","5043", "4") + " -- sfcrm_saledoc_fetch_intakes_sum"
1921 + f.tools().If().__closeIfBlock()
1922 + f.tools().If().__openIfBlock("isnull(@__suspend_reason,0)<>0 and (@__pstage=@__stg_suspend) and @_draft in (0,2)")
1923 + updateBulkValBuilder("@_recid", null, "2111401060700+@__rtfb", "7314", PlcUtils.__updBulk_DELETE_Value, "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1924 + f.tools().If().__closeIfBlock()
1925 + f.tools().If().__closeIfBlock()
1926 + f.tools().If().__addElseIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_cnc") + " -- status changed to 'canceled'"
1927 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0)in (@__stg_opn,@__stg_suspend,@__stg_exec))")
1928
1929 + f.indent() + "delete from @__objects;"
1930 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7306 and val=@_recid;"
1931
1932 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1933 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
1934 + f.tools().__setVarVal("@__recid_program_debit", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1935
1936 + f.indent() + "-- intakes of program debit"
1937 + f.indent() + "delete from @__intakes;"
1938 + f.indent() + "insert into @__intakes (recid) select recid from dmlkps where ft=7272 and val=@__recid_program_debit;"
1939
1940 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
1941 + f.tools().While().__openWhileBlock("isnull(@__id_intakes,0)>0")
1942 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes where id = @__id_intakes") + ")")
1943 + f.tools().__setVarVal("@__recid_receipt", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_intake", "7276", "0"))
1944 + f.tools().If().__openIfBlock("isnull(@__recid_receipt,0)<>0") + "-- if the intake has a pointer to receipt"
1945 + __set_rollback("1", "'plc_imp_intake_has_executed'")
1946 + f.tools().If().__closeIfBlock()
1947 + f.tools().__setVarVal("@__id_intakes", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__intakes where id > @__id_intakes order by id") + ")")
1948 + f.tools().While().__closeWhileBlock()
1949 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
1950 + f.tools().While().__closeWhileBlock()
1951
1952 + f.indent() + "-- if its passed the previous loop it means no one of the intakes has a pointer to a receipt, so we will delete all of those intakes"
1953 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1954 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
1955 + f.tools().__setVarVal("@__recid_program_debit", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1956 + f.indent() + "delete from @__intakes;"
1957 + f.indent() + "insert into @__intakes (recid) select recid from dmlkps where ft=7272 and val=@__recid_program_debit;"
1958
1959 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
1960 + f.tools().While().__openWhileBlock("isnull(@__id_intakes,0)>0")
1961 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes where id = @__id_intakes") + ")")
1962 + f.tools().__setVarVal("@__rt_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from dm where recid=@__recid_intake") + ")")
1963 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "0", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1964 + f.tools().__setVarVal("@__id_intakes", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__intakes where id > @__id_intakes order by id") + ")")
1965 + f.tools().While().__closeWhileBlock()
1966 + f.tools().__setVarVal("@__program_canceled_status", "(" + f.tools().__addLimitToSelectStmt(1,"select recid from dmstrs where ft = "+PlcUtils.__fldvarFt+" and val = @__rtf+'_debit_program_stage_cancel'") + ")")
1967 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7104", "@__program_canceled_status", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1968 + __insert_into_post_logic("@__recid_program_debit","2111409000000+@__rtfb","7104", "3") + " -- update stage of debit program"
1969 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
1970 + f.tools().While().__closeWhileBlock()
1971 + updateBulkValBuilder("@_recid", null, "@_rt", "5015", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1972 + f.tools().If().__openIfBlock("isnull(@__suspend_reason,0)<>0 and (@__pstage=@__stg_suspend) and @_draft in (0,2)")
1973 + updateBulkValBuilder("@_recid", null, "2111401060700+@__rtfb", "7314", PlcUtils.__updBulk_DELETE_Value, "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1974 + f.tools().If().__closeIfBlock()
1975 + f.tools().If().__closeIfBlock()
1976 + f.tools().If().__addElseIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_opn") + " -- status changed to 'open'"
1977 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and isnull(@__pstage,0) in (@__stg_suspend,@__stg_exec)")
1978 + __set_rollback("1", "'plc_imp_convert_impossible'")
1979 + f.tools().If().__closeIfBlock()
1980 + f.tools().If().__closeIfBlock()
1981 + f.tools().If().__addElseIfBlock("@_rttrimed between 2111401060400 and 2111401060499") + " -- deposit document"
1982 + f.tools().If().__openIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_cls") + " -- status changed to 'closed'"
1983 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0) in (@__stg_opn,@__stg_cnc)) and isnull(@_draft,0) in (1,2)")
1984 + f.indent() + " -- inserting all the intakes of the document to table"
1985 + f.indent() + "delete from @__objects;"
1986 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7278 and val=@_recid;"
1987
1988 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
1989 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
1990 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
1991 + f.tools().__setVarVal("@__rt_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from dm where recid=@__recid_intake") + ")")
1992 + f.tools().__setVarVal("@__current_status", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_intake", "7104", "0"))
1993
1994 + f.tools().If().__openIfBlock("@__current_status = @__intake_stage_accepted")
1995 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "7104", "@__intake_stage_deposited", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
1996 + f.tools().If().__addElseBlock()
1997 + f.tools().__setVarVal("@__current_status", __fetch_val("@_userid", "@__recid_intake", "7104", "1", "@_stmp", "@_draft"))
1998 + f.tools().If().__openIfBlock("(isnull(@__current_status,0) = @__intake_stage_accepted) and (@_draft = 2)")
1999 + __insert_into_post_logic("@__recid_intake","@__rt_intake","7104") + " -- update stage of intake"
2000 + f.tools().If().__closeIfBlock()
2001 + f.tools().If().__closeIfBlock()
2002 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2003 + f.tools().While().__closeWhileBlock()
2004 + f.tools().If().__closeIfBlock()
2005 + f.tools().If().__addElseIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0) in (@__stg_opn,@__stg_cnc)") + " -- status changed to 'open'"
2006 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0)=@__stg_cls) and isnull(@_draft,0) in (1,2)")
2007
2008 + f.indent() + " -- inserting all the intakes of the document to table"
2009 + f.indent() + "delete from @__objects;"
2010 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7278 and val=@_recid;"
2011
2012 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2013 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
2014 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2015 + f.tools().__setVarVal("@__rt_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from dm where recid=@__recid_intake") + ")")
2016
2017 + f.tools().__setVarVal("@__current_status", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_intake", "7104", "0"))
2018 + f.tools().If().__openIfBlock("@__current_status = @__intake_stage_deposited")
2019 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "7104", "@__intake_stage_accepted", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2020 + f.tools().If().__addElseBlock()
2021 + f.tools().__setVarVal("@__current_status", __fetch_val("@_userid", "@__recid_intake", "7104", "1", "@_stmp", "@_draft"))
2022 + f.tools().If().__openIfBlock("(isnull(@__current_status,0) = @__intake_stage_deposited) and (@_draft = 2)")
2023 + __insert_into_post_logic("@__recid_intake","@__rt_intake","7104") + " -- update stage of intake"
2024 + f.tools().If().__closeIfBlock()
2025 + f.tools().If().__closeIfBlock()
2026 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2027 + f.tools().While().__closeWhileBlock()
2028 + f.tools().If().__closeIfBlock()
2029 + f.tools().If().__openIfBlock("isnull(@__stage,0)=@__stg_cnc")
2030
2031 + f.indent() + " -- inserting all the intakes of the document to table"
2032 + f.indent() + "delete from @__objects;"
2033 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7278 and val=@_recid;"
2034
2035 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2036 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
2037 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2038 + f.tools().__setVarVal("@__rt_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from dm where recid=@__recid_intake") + ")")
2039
2040 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "7278", PlcUtils.__updBulk_DELETE_Value, "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2041 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "7296", "@_recid", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2042 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2043 + f.tools().While().__closeWhileBlock()
2044 + f.tools().If().__closeIfBlock()
2045 + f.tools().If().__closeIfBlock()
2046 + f.tools().If().__openIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0) in (@__stg_opn,@__stg_cls)") + " -- status changed to 'open' or 'closed'"
2047 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0)=@__stg_cnc) and isnull(@_draft,0) in (0,2)")
2048
2049 + f.indent() + " -- inserting all the intakes of the document to table"
2050 + f.indent() + "delete from @__objects;"
2051 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7296 and val=@_recid;"
2052
2053 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2054 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
2055 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2056 + f.tools().__setVarVal("@__rt_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from dm where recid=@__recid_intake") + ")")
2057 + f.tools().__setVarVal("@__recid_link", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_intake", "7278", "0"))
2058 + f.tools().If().__openIfBlock("isnull(@__recid_link,0)<>0")
2059 + __set_rollback("1", "'plc_imp_intakes_already_deposited'")
2060 + f.tools().If().__closeIfBlock()
2061
2062 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "7278", "@_recid", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2063 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "7296", PlcUtils.__updBulk_DELETE_Value, "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2064 + f.tools().If().__openIfBlock("isnull(@__stage,0)=@__stg_cls")
2065 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "7104", "@__intake_stage_deposited", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2066 + __insert_into_post_logic("@__recid_intake","@__rt_intake","7104") + " -- update stage of intake"
2067 + f.tools().If().__closeIfBlock()
2068 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2069 + f.tools().While().__closeWhileBlock()
2070 + f.tools().If().__closeIfBlock()
2071 + f.tools().If().__closeIfBlock()
2072 + f.tools().If().__addElseIfBlock("(isnull(@__debit_order_created_from,0)=isnull(@__is_not_credit_doc,0)) and "
2073 + "((isnull(@__debit_order_created_from,0)=@__sd_order and @_rt between 2111401060200+@__rtfb and 2111401060299+@__rtfb) "
2074 + " OR (isnull(@__debit_order_created_from,0)=@__sd_waybill and @_rt between 2111401060600+@__rtfb and 2111401060699+@__rtfb)"
2075 + " OR (isnull(@__debit_order_created_from,0)=@__sd_tax_invoice and @_rt=2111401060301+@__rtfb)"
2076 + " OR (isnull(@__debit_order_created_from,0)=@__sd_transaction_invoice and @_rt=2111401060302+@__rtfb))") + " -- document kind for cllection. it's the document that the debit order will be created from"
2077 + f.tools().If().__openIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_cnc") + " -- status changed to 'canceled'"
2078 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0)= @__stg_cls) and isnull(@_draft,0) in (0,2)")
2079 + f.indent() + " -- inserting all the related saledocs of the document to table"
2080 + f.indent() + "delete from @__objects;"
2081 + f.indent() + "insert into @__objects (recid,rt,recid_relation) select b.val,rt,a.recid from dmlkps a join dmlkps b on a.recid=b.recid "
2082 + "join dm on b.val=dm.recid where a.ft=7149 and b.ft=7150 and a.val=@_recid and rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb;"
2083
2084 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2085 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
2086 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2087 + f.tools().__setVarVal("@__rt_link", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__objects where id = @__id") + ")")
2088 + f.tools().__setVarVal("@__recid_relation", "(" + f.tools().__addLimitToSelectStmt(1, "select recid_relation from @__objects where id = @__id") + ")")
2089 + f.tools().__setVarVal("@__current_status", __fetch_val("@_userid", "@__recid_link", "7104", "0", "@_stmp", "@_draft"))
2090 + f.tools().If().__openIfBlock("@__current_status = @__stg_exec")
2091 + f.tools().__setVarVal("@__suspend_reason_order_cnc", "(" + f.tools().__addLimitToSelectStmt(1,"select recid from dmstrs where ft = "+PlcUtils.__fldvarFt+" and val = @__rtf+'_order_debit_suspend_reason_order_canceled'") + ")")
2092 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "7314", "@__suspend_reason_order_cnc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2093 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "7104", "@__stg_suspend", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2094 + __insert_into_post_logic("@__recid_link","@__rt_link","7104","2") + " -- update stage of billing instruction"
2095 + f.tools().__setVarVal("@__ver_order_debit", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__recid_link", "4107", "0"))
2096 + successfullFreeMessage(" 'הוראת חיוב ' + @__ver_order_debit + ' הושהתה.'")
2097 + f.tools().If().__addElseIfBlock("@__current_status = @__stg_opn")
2098 + updateBulkValBuilder("@__recid_link", null, "@__rt_link", "0", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2099 + updateBulkValBuilder("@__recid_relation", null, "2111103000000+@__rtfb", "0", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2100 + f.tools().If().__closeIfBlock()
2101 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2102 + f.tools().While().__closeWhileBlock()
2103 + f.tools().If().__closeIfBlock()
2104 + f.tools().If().__addElseIfBlock("(isnull(@__stage,0)>0) and (isnull(@__stage,0) = @__stg_cls)") + " -- status changed to 'close'"
2105 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0)=@__stg_opn) and (isnull(@_draft,0) in (0,2))")
2106
2107 + f.indent() + " -- fetching all related sale documents"
2108 + f.indent() + "delete from @__objects;"
2109 + f.indent() + "insert into @__objects (recid)"
2110 + f.indent() + " select d.recid from dmlkps a join dmlkps b on b.recid=a.recid and b.ft=7150"
2111 + f.indent() + " left join dm d on d.recid=b.val and d.rt between 2111401060000+@__rtfb and 2111401069999+@__rtfb"
2112 + f.indent() + " where a.ft=7149 and a.val=@_recid and d.recid is not null;"
2113 + f.indent() + " -- fetching all related billing instruction for each related sale document"
2114 + f.indent() + "delete from @__details;"
2115 + f.indent() + "insert into @__details (recid)"
2116 + f.indent() + " select d.recid from dmlkps a join dmlkps b on b.recid=a.recid and b.ft=7150"
2117 + f.indent() + " left join dm d on d.recid=b.val and d.rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb"
2118 + f.indent() + " where a.ft=7149 and a.val in (select recid from @__objects) and d.recid is not null;"
2119
2120 + f.tools().__setVarVal("@__recid_doc", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__details order by id") + ")")
2121 + f.tools().If().__openIfBlock("isnull(@__recid_doc,0)>0") + " -- first related billing instruction found"
2122 //TODO: canceled link to join record, result not used & overwrited: @__rid
2123 //+ f.tools().__setVarVal("@__rid", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7152", "0"))
2124
2125 + f.indent() + " -- link current saledoc with the billing instruction"
2126 + f.tools().__setVarVal("@__rt", "2111103000000+@__rtfb")
2127 //+ __fetch_linked_activities("@_recid", "@__recid_doc", "@__rid") //TODO: canceled, result not used & overwrited: @__rid
2128
2129 + f.tools().__setVarVal("@__rid", "@__newrid")
2130 + f.tools().__setVarVal("@__lnk", "@__newrid + 1")
2131 + f.tools().__setVarVal("@__newrid", "@__newrid + 2")
2132 + f.tools().__setVarVal("@__val", "@__val"
2133 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7149_'+ cast(@_recid as " + f.varTypes().BigIntVarchar() + ") + ','"
2134 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7150_'+ cast(@__recid_doc as " + f.varTypes().BigIntVarchar() + ") + ','"
2135 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7142_'+ cast(@__lnk as " + f.varTypes().BigIntVarchar() + ") + ','"
2136 + " + cast(@__lnk as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7149_'+ cast(@__recid_doc as " + f.varTypes().BigIntVarchar() + ") + ','"
2137 + " + cast(@__lnk as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7150_'+ cast(@_recid as " + f.varTypes().BigIntVarchar() + ") + ','"
2138 + " + cast(@__lnk as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7142_'+ cast(@__rid as " + f.varTypes().BigIntVarchar() + ") + ','"
2139 )
2140 + f.tools().If().__addElseBlock() + " -- create a new one billing instruction"
2141 + f.tools().If().__openIfBlock("@_recid >= " + PlcUtils.__minRecId) + " -- updated existing record"
2142 + f.tools().__setVarVal("@__copy", "@__newrid") // recid of the new billing instruction
2143 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
2144 + f.tools().__setVarVal("@__copy_rt", "2111401060700+@__rtfb")
2145
2146 + f.tools().__setVarVal("@__val", "@__val + cast(@__copy as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy_rt as " + f.varTypes().BigIntVarchar() + ") +'_7166_'+ cast(@__sd_debit_order as " + f.varTypes().BigIntVarchar() + ") + ','")
2147
2148 + f.indent() + " -- checking if each of date of payments has the same rt and sum"
2149 + f.indent() + "delete from @__objects;"
2150 + f.indent() + "insert into @__objects (recid) select l.recid from dmlkps l join dmdates d on l.recid=d.recid where l.ft = 7165 and d.ft=3021 and l.val=@_recid order by d.val;"
2151 + f.indent() + "insert into @__objects (recid) select l.recid from plcd_updates l join plcd_updates d on l.recid=d.recid where l.ft = 7165 and d.ft=3021 and l.valint=@_recid and l.recid not in (select recid from @__objects) order by d.valint;"
2152
2153 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2154
2155 + f.indent() + " -- first payment"
2156 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2157 + f.tools().__setVarVal("@__rt_intake", __fetch_val("@_userid", "@__recid_intake", "2175", "0", "@_stmp", "@_draft"))
2158 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_intake", "5008", "0", "@_stmp", "@_draft"))
2159 + f.tools().__setVarVal("@__days", __fetch_val("@_userid", "@_recid", "2113", "0", "@_stmp", "@_draft"))
2160 + f.tools().__setVarVal("@__date", __fetch_val("@_userid", "@__recid_intake", "3021", "0", "@_stmp", "@_draft"))
2161 + f.tools().__setVarVal("@__coin", __fetch_val("@_userid", "@__recid_intake", "7231", "0", "@_stmp", "@_draft"))
2162 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2163
2164 + f.tools().__setVarVal("@__count_intakes", "0")
2165 + f.tools().__setVarVal("@__tid", "(select count(*) from @__objects)")
2166 + f.tools().If().__openIfBlock("isnull(@__tid,0)>1")
2167 + f.indent() + " -- comparison between first payment to the others"
2168 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0 and @__different_values=0")
2169 + f.tools().__setVarVal("@__count_intakes", "@__count_intakes + 1")
2170 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2171 + f.tools().__setVarVal("@__next_rt_intake", __fetch_val("@_userid", "@__recid_intake", "2175", "0", "@_stmp", "@_draft"))
2172 + f.tools().__setVarVal("@__next_sum", __fetch_val("@_userid", "@__recid_intake", "5008", "0", "@_stmp", "@_draft"))
2173 + f.tools().__setVarVal("@__next_coin", __fetch_val("@_userid", "@__recid_intake", "7231", "0", "@_stmp", "@_draft"))
2174 + f.tools().__setVarVal("@__current_date", __fetch_val("@_userid", "@__recid_intake", "3021", "0", "@_stmp", "@_draft"))
2175 + f.tools().__setVarVal("@__date_added", "dateadd("+f.dateDiffTimeTypes().Month()+",@__count_intakes,@__date)")
2176 + f.tools().If().__openIfBlock("isnull(@__days,0) <> 0") + " -- if there is current + 30/60/90"
2177 + f.tools().__setVarVal("@__date_added", "(" + f.tools().__addLimitToSelectStmt(1,"select date_trunc('month', @__date_added) + interval '1 month - 1 day'") + ")")
2178 + f.tools().If().__closeIfBlock()
2179
2180 + f.tools().If().__openIfBlock("@__rt_intake<>@__next_rt_intake or @__sum<>@__next_sum or @__coin<>@__next_coin or cast(@__date_added as date)<>cast(@__current_date as date)")
2181 + f.tools().__setVarVal("@__different_values", "1")
2182 + f.tools().If().__closeIfBlock()
2183 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2184 + f.tools().While().__closeWhileBlock()
2185 + f.tools().If().__closeIfBlock()
2186 + f.tools().If().__openIfBlock("@__different_values=0 or isnull(@__tid,0)=1") + " -- create debit program"
2187 + f.tools().__setVarVal("@__debit_program_created", "1")
2188 + f.tools().__setVarVal("@__id", "(select count(*) from @__objects)")
2189 + f.tools().__setVarVal("@__recid_program_debit", "@__newrid")
2190 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
2191
2192 + f.indent() + " -- linking new debit program to the new billing instruction"
2193 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7306", "@__copy", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2194 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@_recid", "5015", "0", "@_stmp", "@_draft"))
2195 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "5050", "@__sum", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2196 + __fetchIdeVariable("@__cyclicality","debit_program_cyclicality_month")
2197 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7303", "@__cyclicality", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2198 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "2165", "1", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2199
2200
2201 + f.indent() + " -- debit program start date"
2202 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "3040", "isnull(@__date,getdate())", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2203
2204 + f.tools().If().__openIfBlock("@__id= 0")
2205 + f.tools().__setVarVal("@__num_of_payments", "1")
2206 + f.tools().If().__addElseBlock()
2207 + f.tools().__setVarVal("@__num_of_payments", "@__id")
2208 + f.tools().If().__closeIfBlock()
2209 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "2155", "@__num_of_payments", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2210
2211 + f.indent() + " -- debit program end date"
2212 + f.tools().If().__openIfBlock("@__date is not null")
2213 + f.tools().__setVarVal("@__date", "dateadd("+f.dateDiffTimeTypes().Month()+",@__num_of_payments-1,@__date)")
2214 + f.tools().If().__addElseBlock()
2215 + f.tools().__setVarVal("@__date", "dateadd("+f.dateDiffTimeTypes().Month()+",1,getdate())")
2216 + f.tools().If().__closeIfBlock()
2217 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "3039", "@__date", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2218
2219 + f.indent() + " -- currency"
2220 + f.tools().__setVarVal("@__curr", __fetch_val("@_userid", "@_recid", "7218", "0", "@_stmp", "@_draft"))
2221 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7297", "@__curr", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2222
2223 + f.indent() + " -- intake kind"
2224 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "2158", "isnull(@__rt_intake,2111408040000)", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2225
2226 + f.tools().If().__openIfBlock("(@__rt_intake between 2111408040000 and 2111408049999) and (@__num_of_payments>0)") + " -- credit card"
2227 + f.indent() + " -- debit program deal kind"
2228 + f.tools().If().__openIfBlock("@__num_of_payments=1")
2229 + __fetchIdeVariable("@__deal_kind","creditcard_credit_type_regular")
2230 + f.tools().If().__addElseIfBlock("@__num_of_payments>1")
2231 + __fetchIdeVariable("@__deal_kind","creditcard_credit_type_standing_order")
2232 + f.tools().If().__closeIfBlock()
2233 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7320", "@__deal_kind", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2234 + f.tools().If().__closeIfBlock()
2235
2236 + f.indent() + " -- method of debit - ONLY in credit card"
2237 + __fetchIdeVariable("@__essence","link_essence_saledocrecipient")
2238 + f.indent() + "delete from @__objects;"
2239 + f.indent() + " -- insert all the saledoc essences from actions participants"
2240 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft = 7147 and val = @_recid;"
2241 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2242 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0 and @__recid_customer is null")
2243 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2244 + f.tools().__setVarVal("@__link_essence", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_link", "7045", "0"))
2245 + f.tools().If().__openIfBlock("@__link_essence = @__essence") // if the essence equals to 'customer'
2246 + f.tools().__setVarVal("@__recid_customer", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_link", "7148", "0"))
2247 + f.tools().__setVarVal("@__recid_accounts", "(" + f.tools().__addLimitToSelectStmt(1,"select recid from dmlkps where ft=7155 and val=@__recid_customer") + ")")
2248 + f.tools().If().__openIfBlock("@__rt_intake between 2111408040000 and 2111408049999") + " -- credit card"
2249 + f.indent() + "delete from @__details;"
2250 + f.indent() + "insert into @__details (recid) select recid from dmlkps where ft=7288 and val=@__recid_accounts;"
2251 + f.tools().__setVarVal("@__tid", "(select min(id) from @__details)")
2252 + f.tools().While().__openWhileBlock("isnull(@__tid,0)>0 and isnull(@__checkbox_default,0)=0")
2253 + f.tools().__setVarVal("@__recid_details", "(" + f.tools().__addLimitToSelectStmt(1,"select recid from @__details where id=@__tid") + ")")
2254 + f.tools().__setVarVal("@__checkbox_default", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@__recid_details", "2167", "0"))
2255 + f.tools().If().__openIfBlock("isnull(@__checkbox_default,0)<>0") + " -- if there is a default credit card"
2256 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7305", "@__recid_details", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2257 + f.tools().If().__closeIfBlock()
2258 + f.tools().__setVarVal("@__tid", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__details where id > @__tid order by id") + ")")
2259 + f.tools().While().__closeWhileBlock()
2260 + f.tools().If().__openIfBlock("isnull(@__checkbox_default,0)=0")
2261 + f.tools().__setVarVal("@__flag_default_credit", "1")
2262 + f.tools().If().__closeIfBlock()
2263 + f.tools().If().__closeIfBlock()
2264 + f.tools().If().__closeIfBlock()
2265 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2266 + f.tools().While().__closeWhileBlock()
2267
2268 + f.indent() + " -- debit program status"
2269 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "7104", "@__program_active_status", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2270
2271 + f.indent() + " -- currency rate"
2272 + f.tools().__setVarVal("@__rate", __fetch_val("@_userid", "@_recid", "5033", "0", "@_stmp", "@_draft"))
2273 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "5060", "@__rate", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2274
2275 + f.indent() + " -- sum by national currency"
2276 + f.tools().__setVarVal("@__sum", "@__sum * @__rate")
2277 + updateBulkValBuilder("@__recid_program_debit", null, "2111409000000+@__rtfb", "5061", "@__sum", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2278 + __insert_into_post_logic("@__recid_program_debit","2111409000000+@__rtfb","7104", "1", "new_debit_program_from_order")
2279 + f.tools().If().__closeIfBlock()
2280 + f.tools().__setVarVal("@__followup_doc", "@__sd_debit_order")
2281
2282 + f.tools().If().__addElseIfBlock("isnull(@__rid,0)=1")
2283 + __set_rollback("1", "'crm_sd_copy_impossible'") // can not copy to saledoc if there is no value in the 'document type' field or if it is a new record
2284 + f.tools().If().__closeIfBlock()
2285 + f.tools().If().__closeIfBlock()
2286 + f.tools().If().__closeIfBlock()
2287 + f.tools().If().__closeIfBlock()
2288 + f.tools().If().__addElseIfBlock("@_rttrimed between 2111401060500 and 2111401060599") + " -- receipt"
2289 + f.tools().If().__openIfBlock("(isnull(@__stage,0)>0) and (isnull(@__stage,0) = @__stg_cls) and (isnull(@__type,0)=@__sd_credit_receipt)") + " -- status changed to 'close'"
2290 + f.tools().If().__openIfBlock("isnull(@__pstage,0)>0 and (isnull(@__pstage,0)=@__stg_opn) and (isnull(@_draft,0) in (0,2))")
2291 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@_recid", "5015", "0", "@_stmp", "@_draft"))
2292 + f.tools().If().__openIfBlock("isnull(@__sum,0)>0")
2293 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_sum_in_credit_receipt_must_be_negative")
2294 + f.tools().If().__closeIfBlock()
2295 + f.tools().If().__closeIfBlock()
2296 + f.tools().If().__closeIfBlock()
2297 + f.tools().If().__closeIfBlock()
2298
2299 + f.tools().If().__addElseIfBlock("@_ft=2056") + " -- sale document copy-flag"
2300/*
2301 * TRIGGER: Update a copy-flag field, for copying of document record
2302 * Verify document type field and RECID
2303 * Reset of copy-flag
2304 * Assign a temporary value of RECID for a copy of document
2305 * Reset/Increment of document Number/Version
2306 */
2307 + f.tools().If().__openIfBlock("isnull(@__type,0)=0 or @__type in (@__sd_credit_receipt,@__sd_credit_tax_invoice,@__sd_credit_transaction_invoice,@__sd_credit_waybill)") + "-- if its credit saledoc"
2308 + __set_rollback("2", "'plc_imp_cant_duplicate_saledoc'")
2309 + f.tools().If().__addElseBlock()
2310 + f.tools().__setVarVal("@__rid", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "2056", "0"))
2311 + f.tools().If().__openIfBlock("isnull(@__rid,0)=1 and isnull(@__type,0)>0 and @_recid >= " + PlcUtils.__minRecId) + " -- updated existing record"
2312 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_2056_%')")
2313 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_2056_0' + ','") // restore trigger value to '0'
2314 + f.tools().If().__closeIfBlock()
2315 + f.tools().__setVarVal("@__copy", "@__newrid") // recid of the new saledoc
2316 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
2317 + f.tools().__setVarVal("@__copy_rt", "@_rt") // default
2318
2319 + f.tools().If().__addElseIfBlock("isnull(@__rid,0)=1")
2320 + __set_rollback("2", "'crm_sd_copy_impossible'") // can not copy to saledoc if there is no value in the 'document type' field or if it is a new record
2321 + f.tools().If().__closeIfBlock()
2322 + f.tools().If().__closeIfBlock()
2323
2324 + f.tools().If().__addElseIfBlock("@_ft=4107 and @_import_call='true'") + " -- sale document version number (imported value only)"
2325/*
2326 * TRIGGER: Update a version number field (from import ONLY)
2327 * Import requires a reset of the last version number (2052) with largest number
2328 */
2329 + f.tools().If().__openIfBlock("isnull(@__ver,'')<>'' and charindex('-',@__ver,1)=0 and isnumeric(@__ver)=1")
2330 + f.tools().__setVarVal("@__id", "cast(@__ver as " + f.varTypes().BigInt() + ")")
2331 + f.tools().If().__openIfBlock("(isnull(@__ever,-1)<0 and isnull(@__id,0)>0)or(isnull(@__ever,-1)>=0 and @__ever < @__id)")
2332 + f.tools().__setVarVal("@__ert", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__doctypes where recid=@__everrid" ) + ")")
2333 + f.tools().__setVarVal("@__estmp", "(" + f.tools().__addLimitToSelectStmt(1, "select vstmp from @__doctypes where recid=@__everrid") + ")")
2334 + f.tools().__setVarVal("@__ever", "@__id")
2335 + __lock_and_update_enum_value("@__everrid","@__ert","2052","@__estmp","@__ever","@_stmp")
2336 + f.tools().__setVarVal("@__rollb", f.tools().__getOutVarVal("@_rollback", f.varTypes().Int()))
2337 + f.tools().If().__closeIfBlock()
2338 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_4107_%')")
2339 + f.tools().__setVarVal("@__ver", "@__ver+'-1'") // add SUB-VERSION because of deficit
2340 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_4107_'+ cast(len(@__ver) as " + f.varTypes().BigIntVarchar() + ") + '_' + @__ver + ','")
2341 + f.tools().__setVarVal("@__buf", "@__buf +','+ cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_4107_'+ cast(len(@__ver) as " + f.varTypes().BigIntVarchar() + ") + '_' + @__ver + ','")
2342 + f.tools().If().__closeIfBlock()
2343 + f.tools().If().__closeIfBlock()
2344
2345 + f.tools().If().__addElseIfBlock("@_ft=2051 and @_import_call='true'") + " -- sale document Tax Authority number (imported value only)"
2346/*
2347 * TRIGGER: Update a Tax Authority number field (from import ONLY)
2348 * Import requires a reset of the last Tax Authority number (2053) with largest number
2349 */
2350 + f.tools().If().__openIfBlock("isnull(@__num,'')<>'' and isnumeric(@__num)=1")
2351 + f.tools().__setVarVal("@__id", "cast(@__num as " + f.varTypes().BigInt() + ")")
2352 + f.tools().If().__openIfBlock("(isnull(@__enum,-1)<0 and isnull(@__id,0)>0)or(isnull(@__enum,-1)>=0 and @__enum < @__id)")
2353 + f.tools().__setVarVal("@__ert", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__doctypes where recid=@__enumrid" ) + ")")
2354 + f.tools().__setVarVal("@__estmp", "(" + f.tools().__addLimitToSelectStmt(1, "select nstmp from @__doctypes where recid=@__enumrid") + ")")
2355 + f.tools().__setVarVal("@__enum", "@__id")
2356 + __lock_and_update_enum_value("@__enumrid","@__ert","2053","@__estmp","@__enum","@_stmp")
2357 + f.tools().__setVarVal("@__rollb", f.tools().__getOutVarVal("@_rollback", f.varTypes().Int()))
2358 + f.tools().If().__closeIfBlock()
2359 + f.tools().If().__closeIfBlock()
2360
2361 + f.tools().If().__closeIfBlock()
2362
2363 + f.tools().If().__openIfBlock("(isnull(@__rollb,0)=0)and(@_ft > 0)and(@_ft not in (2056,7363))and(isnull(@_draft,0)<>3)and(isnull(@__copy,0)=0)")
2364/*
2365 * TRIGGER: any update, excluding: Draft-removing (draft=3), copying record
2366 * Validate data modification by calling [sfcrm_validate_saledoc_modification]
2367 * Reset MAIN date of record when empty (@__rid)
2368 * Transfer stage and Main date into (@__buf) for creating of Stages linked to document
2369 */
2370 + f.tools().If().__openIfBlock("(@_ft not in (7166,7104,7292,7363))and(isnull(@__stage,0)>0 and isnull(@__stg_opn,0)>0 and isnull(@__stage,0)<>isnull(@__stg_opn,0))")
2371 + f.indent() + " -- comparing field modification with status modification, when field modified after status"
2372 + f.tools().__setVarVal("@__id", f.tools().__functionCallCreator("sfcrm_validate_saledoc_modification", "@_userid", "@_recid", "@_recid", "@_rt", "@_ft", "@_draft", "@_stmp"))
2373 + f.tools().If().__openIfBlock("isnull(@__id,0)>0")
2374 + f.tools().If().__openIfBlock("@_rttrimed between 2111401060100 and 2111401060299")
2375 + __set_rollback("2", "'crm_sd_upd_impossible;core_colon;core_space;crm_sd_closed'") // reopen saledoc is possible for price list and order ONLY
2376 + f.tools().If().__addElseBlock()
2377 + __set_rollback("2", "'crm_sd_upd_impossible'")
2378 + f.tools().If().__closeIfBlock()
2379 + f.tools().If().__closeIfBlock()
2380 + f.tools().If().__closeIfBlock()
2381 + f.tools().If().__openIfBlock("isnull(@__rollb,0)=0 and isnull(@_draft,0) in (0,2)")//<>3
2382 + f.tools().If().__openIfBlock("isnull(@_draft,0)=2")
2383 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select max(idnt) from plcd_updates where RECID=@_recid and FT=3009 and mark is not null and userid=@_userid") + ")")
2384 //+ f.tools().If().__addElseIfBlock("isnull(@_draft,0)=1")
2385 // + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select max(idnt) from plcd_updates where RECID=@_recid and FT=3009 and mark is null and userid=@_userid") + ")")
2386 + f.tools().If().__addElseBlock() // isnull(@_draft,0)=0
2387 //+ f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select d.RECID from DM d join DMDATES dt on dt.RECID=d.RECID and dt.FT=3009 and dt.STMP=d.MSTMP where d.RECID=@_recid") + ")")
2388 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select dt.RECID from DMDATES dt left join DM d on d.RECID=dt.RECID and d.MSTMP=dt.STMP where dt.RECID=@_recid and dt.FT=3009 and d.RECID is not null") + ")")
2389 + f.tools().If().__closeIfBlock()
2390 + f.tools().If().__openIfBlock("(isnull(@__rid,0)=0)" // add main date to saledoc, if main date is empty
2391 + "and(not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_3009_%'))"
2392 + "and(not (@__val like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_3009_%'))")
2393 //+ __setMainDateOfSaledoc("@_recid", "@_rt", "@__mdt")
2394 + f.tools().__setOutVarVal("@_alf_buffer", "@__buf")
2395 + f.tools().__setVarVal("@__v", "@_res + @__val")
2396 + f.tools().__setVarVal("@__rval", f.tools().__functionCallCreator("sfcrm_update_date_of_saledoc","@_userid","@_recid","@_rt","@_stmp","@__v"))
2397 + f.tools().__setVarVal("@__val", "@__val + @__rval")
2398 + f.tools().__setVarVal("@__buf", f.tools().__getOutVarVal("@_alf_buffer", f.varTypes().LargestVarchar()))
2399 + f.tools().__setVarVal("@__rollb", f.tools().__getOutVarVal("@_rollback", f.varTypes().Int()))
2400 + f.tools().If().__closeIfBlock()
2401 + f.tools().If().__openIfBlock("@_ft in (7104)")
2402 + f.tools().__setVarVal("@__buf", "@__buf + ',' + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_7104_'+ cast(isnull(@__stage,0) as " + f.varTypes().BigIntVarchar() + ") + ','")
2403/*
2404 + f.tools().If().__openIfBlock("isnull(@__rid,0)>0")
2405 + f.tools().If().__openIfBlock("isnull(@_draft,0)>0")
2406 + f.tools().__setVarVal("@__mdt", "(" + f.tools().__addLimitToSelectStmt(1, "select valdate from plcd_updates where idnt=@__rid") + ")")
2407 + f.tools().If().__addElseBlock()
2408 + f.tools().__setVarVal("@__mdt", "(" + f.tools().__addLimitToSelectStmt(1, "select VAL from DMDATES where RECID=@__rid and FT=3009") + ")")
2409 + f.tools().If().__closeIfBlock()
2410 + f.tools().If().__openIfBlock("@__mdt is not null")
2411 //+ f.tools().__setVarVal("@__buf", "@__buf + ',' + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_3009_'+ replace("+__datetime_as_varchar("@__mdt")+",' ','T') + @__tz + ','")
2412 +__setMainDateOfSaledoc("@_recid", "@_rt", "@__mdt", true)
2413 + f.tools().If().__closeIfBlock()
2414 + f.tools().If().__addElseBlock()
2415 //+ f.tools().__setVarVal("@__buf", "@__buf + ',' + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_3009_'+ @__mdts + ','")
2416 +__setMainDateOfSaledoc("@_recid", "@_rt", "@__mdt", true)
2417 + f.tools().If().__closeIfBlock()
2418*/
2419 + f.tools().If().__closeIfBlock()
2420 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@_ft='+cast(isnull(@_ft,0) as "+f.varTypes().BigIntVarchar()+")+',@_draft='+cast(isnull(@_draft,0) as "+f.varTypes().BigIntVarchar()+")+',@__rid='+cast(isnull(@__rid,0) as "+f.varTypes().BigIntVarchar()+")+',@__buf='+isnull(@__buf,'')")
2421 + f.tools().If().__closeIfBlock()
2422 + f.tools().If().__closeIfBlock()
2423 + f.indent()
2424
2425 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@__num='+isnull(@__num,'')+',@__ver='+isnull(@__ver,'')+',@__inc_num='+cast(isnull(@__inc_num,0) as "+f.varTypes().BigIntVarchar()+")+',@__inc_ver='+cast(isnull(@__inc_ver,0) as "+f.varTypes().BigIntVarchar()+")")
2426 + f.tools().If().__openIfBlock("@_ft in (7166,7104) and isnull(@__rollb,0)=0 and isnull(@_draft,0) in (0,2)") + " -- sale document type or stage"
2427 + f.indent() + " -- calculate document Tax Authority number"
2428/*
2429 * TRIGGER: Update of fields: Type of document, Stage
2430 * Calculate document Tax Authority number, when required
2431 * Calculate document version, when required
2432 */
2433 + f.tools().__setVarVal("@__n", "'=saledocnumber='+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'='")
2434 + f.tools().If().__openIfBlock("(isnull(@__enum,-1)>=0)and(isnull(@__inc_num,0)=1)and(isnull(@__n,'')<>'' and @__buf not like '%'+@__n+'%') ") + " -- required a numbering of the documents"
2435 + f.tools().__setVarVal("@__pos", "0")
2436 + f.tools().__setVarVal("@__end", "0")
2437 + f.tools().If().__openIfBlock("(isnull(@__num,'')='')or(isnull(@__ptype,0)>0 and isnull(@__type,0)>0 and (@__type<>@__ptype))") // if there is no Tax Authority number or type was changed
2438 + f.tools().__setVarVal("@__s", "'=saledocenum='+cast(@__type as " + f.varTypes().BigIntVarchar() + ")+'='")
2439 + f.tools().If().__openIfBlock("@__buf like '%'+@__s+'%'") + " -- last document number already changed"
2440 + f.tools().__setVarVal("@__pos", "charindex(@__s,@__buf,1)")
2441 + f.tools().If().__openIfBlock("isnull(@__pos,0)>0") + " -- fetch last document number from buffer"
2442 + f.tools().__setVarVal("@__pos", "@__pos + len(@__s)")
2443 + f.tools().__setVarVal("@__end", "charindex('=',@__buf,@__pos)")
2444 + f.tools().If().__openIfBlock("isnull(@__end,0)>0")
2445 + f.tools().__setVarVal("@__enum", "cast(substring(@__buf,@__pos,@__end-@__pos) as " + f.varTypes().BigInt() + ")") // the value of last Tax Authority number
2446 + f.tools().If().__closeIfBlock()
2447 + f.tools().If().__closeIfBlock()
2448 + f.tools().If().__closeIfBlock()
2449 + f.tools().__setVarVal("@__ert", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__doctypes where recid=@__enumrid" ) + ")")
2450 + f.tools().__setVarVal("@__estmp", "(" + f.tools().__addLimitToSelectStmt(1, "select nstmp from @__doctypes where recid=@__enumrid") + ")")
2451 + f.tools().__setVarVal("@__enum", "@__enum + 1")
2452 + __lock_and_update_enum_value("@__enumrid","@__ert","2053","@__estmp","@__enum","@_stmp")
2453 + f.tools().If().__openIfBlock("isnull(@__pos,0)>0 and isnull(@__end,0)>@__pos")
2454 + f.tools().__setVarVal("@__s", "substring(@__buf,1,@__pos-1) + cast(@__enum as " + f.varTypes().BigIntVarchar() + ") + substring(@__buf,@__end,len(@__buf)-@__end+1)")
2455 + f.tools().If().__addElseBlock()
2456 + f.tools().__setVarVal("@__s", "@__buf + @__s + cast(@__enum as " + f.varTypes().BigIntVarchar() + ")+'='")
2457 + f.tools().If().__closeIfBlock()
2458 + f.tools().__setVarVal("@__buf", "@__s + @__n") // update new Tax Authority number on buffer
2459 + f.tools().__setVarVal("@__num", "cast(@__enum as " + f.varTypes().BigIntVarchar() + ")")
2460 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_2051_%')")
2461 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_2051_'+ cast(@__enum as " + f.varTypes().BigIntVarchar() + ") + ','")
2462 + f.tools().__setVarVal("@__buf", "@__buf +','+ cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_2051_'+ cast(@__enum as " + f.varTypes().BigIntVarchar() + ") + ','")
2463 + f.tools().If().__closeIfBlock()
2464 + f.tools().If().__closeIfBlock()
2465 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@__enum='+cast(isnull(@__enum,-1) as "+f.varTypes().BigIntVarchar()+")+',@__num='+isnull(@__num,'')+',@__buf='+isnull(@__buf,'')")
2466 + f.tools().If().__closeIfBlock()
2467
2468 + f.indent() + " -- calculate document version"
2469 + f.tools().If().__openIfBlock("(isnull(@__ever,-1)>=0)and(isnull(@__inc_ver,0)=1)")
2470 + f.tools().If().__openIfBlock("isnull(@__ver,'')='' and isnull(@__postlogic,0)<>0") // fetch version from source record
2471 + f.tools().__setVarVal("@__s", "'='+cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_'+ "+__INC_SUB_VER+" +'='")
2472 + f.tools().If().__openIfBlock("@__buf like '%'+@__s+'%'") + " -- received instruction to read source document version and increment sub-version"
2473 + f.tools().__setVarVal("@__rid", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7153", "3")) //source record
2474 + f.tools().__setVarVal("@__ver", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__rid", "4107", "0")) //source record version
2475 + f.tools().If().__closeIfBlock()
2476 + f.tools().If().__closeIfBlock()
2477 + f.tools().If().__openIfBlock("isnull(@__postlogic,0)<>0")
2478 + f.tools().__setVarVal("@__rid", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7152", "3")) //join record
2479 + f.tools().If().__addElseBlock()
2480 + f.tools().__setVarVal("@__rid", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7152", "0")) //join record
2481 + f.tools().If().__closeIfBlock()
2482 + __split_version("@__ver","@__n","@__v","@__pos")
2483 + f.tools().If().__openIfBlock("isnull(@__rid,0)>0 and isnull(@__n,'')<>'' and isnull(@__pos,0)>0")
2484 + f.indent() + " -- fetch max sub-version from same joined versions"
2485 + f.tools().__setVarVal("@__maxsubver", "(" + f.tools().__addLimitToSelectStmt(1,"select max(cast(substring(s.VAL,charindex('-',s.VAL,1)+1,len(s.VAL)) as " + f.varTypes().Int() + ")) from DMSTRS s join DMLKPS l on l.RECID=s.RECID and l.FT=7152 and l.VAL=@__rid"
2486 + " left join DM d on d.RECID=s.RECID and d.RT between 2111401060000+@__rtfb and 2111401069999+@__rtfb join DMLKPS lt on lt.RECID=s.RECID and lt.FT=7166 and lt.VAL in (select recid from @__doctypes where fver=1)"
2487 + " where s.FT=4107 and charindex('-',s.VAL,1)>0 and substring(s.VAL,1,charindex('-',s.VAL,1)-1)=@__n and cast(substring(s.VAL,charindex('-',s.VAL,1)+1,len(s.VAL)) as " + f.varTypes().Int() + ")>@__pos and s.RECID<>@_recid and d.RECID is not null"
2488 ) + ")")
2489 + f.tools().If().__closeIfBlock()
2490 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',join_rid='+cast(isnull(@__rid,0) as "+f.varTypes().BigIntVarchar()+")+',@__maxsubver='+cast(isnull(@__maxsubver,0) as "+f.varTypes().BigIntVarchar()+")"
2491 + "+',currsubver='+cast(isnull(@__pos,0) as "+f.varTypes().BigIntVarchar()+")+',mainverstr='+isnull(@__n,'')+',subverstr='+isnull(@__v,'')+',@__buf='+isnull(@__buf,'')")
2492 + f.tools().If().__closeIfBlock()
2493 + f.tools().__setVarVal("@__n", "'=saledocsubver='+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'='")
2494 //+ f.tools().If().__openIfBlock("isnull(@__copy,0)>0")
2495 // + f.tools().__setVarVal("@__n", "''")
2496 //+ f.tools().If().__closeIfBlock()
2497 + f.tools().If().__openIfBlock("(isnull(@__ever,-1)>=0)and(isnull(@__inc_ver,0)=1)and((isnull(@__n,'')='')or(isnull(@__n,'')<>'' and @__buf not like '%'+@__n+'%'))")
2498 + f.tools().__setVarVal("@__pos", "0")
2499 + f.tools().__setVarVal("@__end", "0")
2500 + f.tools().If().__openIfBlock("isnull(@__ver,'')=''")
2501 + f.indent() + " -- increase version"
2502 + f.tools().__setVarVal("@__s", "'=saledocver='+cast(@__everrid as " + f.varTypes().BigIntVarchar() + ")+'='")
2503 + f.tools().If().__openIfBlock("@__buf like '%'+@__s+'%'") + " -- last document version already changed"
2504 + f.tools().__setVarVal("@__pos", "charindex(@__s,@__buf,1)")
2505 + f.tools().If().__openIfBlock("isnull(@__pos,0)>0") + " -- fetch last document version from buffer"
2506 + f.tools().__setVarVal("@__pos", "@__pos + len(@__s)")
2507 + f.tools().__setVarVal("@__end", "charindex('=',@__buf,@__pos)")
2508 + f.tools().If().__openIfBlock("isnull(@__end,0)>0")
2509 + f.tools().__setVarVal("@__ever", "cast(substring(@__buf,@__pos,@__end-@__pos) as " + f.varTypes().BigInt() + ")")
2510 + f.tools().If().__closeIfBlock()
2511 + f.tools().If().__closeIfBlock()
2512 + f.tools().If().__closeIfBlock()
2513 + f.tools().__setVarVal("@__ert", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__doctypes where recid=@__everrid" ) + ")")
2514 + f.tools().__setVarVal("@__estmp", "(" + f.tools().__addLimitToSelectStmt(1, "select vstmp from @__doctypes where recid=@__everrid") + ")")
2515 + f.tools().__setVarVal("@__ever", "@__ever + 1")
2516 + __lock_and_update_enum_value("@__everrid","@__ert","2052","@__estmp","@__ever","@_stmp")
2517 + f.tools().__setVarVal("@__rollb", f.tools().__getOutVarVal("@_rollback", f.varTypes().Int()))
2518 + f.tools().__setVarVal("@__subver", "1") + " -- initialize sub number in the version"
2519 + f.tools().If().__openIfBlock("isnull(@__pos,0)>0 and isnull(@__end,0)>@__pos")
2520 + f.tools().__setVarVal("@__s", "substring(@__buf,1,@__pos-1) + cast(@__ever as " + f.varTypes().BigIntVarchar() + ") + substring(@__buf,@__end,len(@__buf)-@__end+1)")
2521 + f.tools().If().__addElseBlock()
2522 + f.tools().__setVarVal("@__s", "@__buf + @__s + cast(@__ever as " + f.varTypes().BigIntVarchar() + ")+'='")
2523 + f.tools().If().__closeIfBlock()
2524 + f.tools().__setVarVal("@__buf", "@__s + @__n")
2525 + f.tools().__setVarVal("@__ver", "cast(@__ever as " + f.varTypes().BigIntVarchar() + ") + '-' + cast(@__subver as " + f.varTypes().BigIntVarchar() + ")")
2526 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_4107_%')")
2527 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_4107_'+ cast(len(@__ver) as " + f.varTypes().BigIntVarchar() + ") + '_' + @__ver + ','")
2528 + f.tools().__setVarVal("@__buf", "@__buf +','+ cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_4107_'+ cast(len(@__ver) as " + f.varTypes().BigIntVarchar() + ") + '_' + @__ver + ','")
2529 + f.tools().If().__closeIfBlock()
2530 + f.tools().If().__addElseIfBlock("isnull(@__ver,'')<>''")
2531 + f.indent() + " -- increase sub-version"
2532 + f.tools().__setVarVal("@__pos", "charindex('-',@__ver,1)")
2533 + f.tools().If().__openIfBlock("isnull(@__pos,0)>0") + " -- fetch sub-version"
2534 + f.tools().__setVarVal("@__subver", "cast(substring(@__ver,@__pos+1,len(@__ver)-@__pos) as " + f.varTypes().BigInt() + ")")
2535 + f.tools().If().__closeIfBlock()
2536 + f.tools().If().__openIfBlock("isnull(@__maxsubver,0)>0 and isnull(@__maxsubver,0)>isnull(@__subver,0)")
2537 + f.tools().__setVarVal("@__subver", "@__maxsubver + 1")
2538 + f.tools().If().__addElseBlock()
2539 + f.tools().__setVarVal("@__subver", "@__subver + 1")
2540 + f.tools().If().__closeIfBlock()
2541 + f.tools().If().__openIfBlock("isnull(@__pos,0)>0")
2542 + f.tools().__setVarVal("@__ver", "substring(@__ver,1,@__pos) + cast(@__subver as " + f.varTypes().BigIntVarchar() + ")")
2543 + f.tools().If().__addElseBlock()
2544 + f.tools().__setVarVal("@__ver", "@__ver + '-' + cast(@__subver as " + f.varTypes().BigIntVarchar() + ")")
2545 + f.tools().If().__closeIfBlock()
2546 + f.tools().__setVarVal("@__buf", "@__buf + @__n")
2547 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_4107_%')")
2548 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_4107_'+ cast(len(@__ver) as " + f.varTypes().BigIntVarchar() + ") + '_' + @__ver + ','")
2549 + f.tools().__setVarVal("@__buf", "@__buf +','+ cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_4107_'+ cast(len(@__ver) as " + f.varTypes().BigIntVarchar() + ") + '_' + @__ver + ','")
2550 + f.tools().If().__closeIfBlock()
2551 + f.tools().If().__closeIfBlock()
2552 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@__ver='+isnull(@__ver,'')+',@__n='+isnull(@__n,'')+',@__buf='+isnull(@__buf,'')")
2553 + f.tools().If().__closeIfBlock()
2554 + f.tools().If().__closeIfBlock()
2555
2556 + f.indent() + " -- copying data to new opened saledoc"
2557
2558 + f.tools().If().__openIfBlock("isnull(@__rollb,0)=0 and isnull(@__copy,0)>0 and ((@_ft in (7166,7104,2056)) or (@_ft=7292 and isnull(@__followup_doc,0)<>0))")
2559/*
2560 * TRIGGER: Update of fields: Type of document, Stage, Copy-Flag
2561 * Copying a document record data
2562 * Copying a data of items and tax summary
2563 * Copying a data of linked accounts
2564 * Update a linked stage records
2565 * Copying a linked tags
2566 * Copying a payment dates
2567 * Create or link to existing Join record
2568 */
2569 + f.indent() + " -- generate new saledoc record"
2570 + f.tools().__setVarVal("@__val", "@__val"
2571 + " + cast(@__copy as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy_rt as " + f.varTypes().BigIntVarchar() + ") +'_7104_'+ cast(@__stg_opn as " + f.varTypes().BigIntVarchar() + ") + ','" // add stage
2572 + " + cast(@__copy as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy_rt as " + f.varTypes().BigIntVarchar() + ") +'_3009_'+ @__mdts + ','") // add main date
2573 //reset @__v parametr
2574 + f.tools().__setVarVal("@__v", "'1001,3009,7104,7153,2051,2056,4107'") + " -- add to list 1001 to prevent copying DM.F101"
2575 + f.tools().If().__openIfBlock("@_ft=2056")
2576 + f.tools().__setVarVal("@__v", "@__v + ',7152'") //DON'T COPY of link to join record
2577 + f.tools().If().__addElseBlock()
2578 + f.tools().__setVarVal("@__val", "@__val + cast(@__copy as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy_rt as " + f.varTypes().BigIntVarchar() + ") +'_7153_'+ cast(@_recid as " + f.varTypes().BigIntVarchar() + ") + ','") // add source activity
2579 + f.tools().If().__openIfBlock("(isnull(@__debit_order_created_from,0)=isnull(@__is_not_credit_doc,0)) and "
2580 + "((isnull(@__debit_order_created_from,0)=@__sd_order and @__copy_rt not between 2111401060200+@__rtfb and 2111401060299+@__rtfb) "
2581 + " OR (isnull(@__debit_order_created_from,0)=@__sd_waybill and @__copy_rt not between 2111401060600+@__rtfb and 2111401060699+@__rtfb)"
2582 + " OR (isnull(@__debit_order_created_from,0)=@__sd_tax_invoice and @__copy_rt<>2111401060301+@__rtfb)"
2583 + " OR (isnull(@__debit_order_created_from,0)=@__sd_transaction_invoice and @__copy_rt<>2111401060302+@__rtfb))")
2584 + f.tools().__setVarVal("@__v", "@__v + ',2179'")
2585 + f.tools().If().__closeIfBlock()
2586 + f.tools().If().__closeIfBlock()
2587 + f.tools().If().__openIfBlock("@__val like '%'+cast(@__copy as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@__copy_rt as " + f.varTypes().BigIntVarchar() + ")+'_7166_%'")
2588 + f.tools().__setVarVal("@__v", "@__v + ',7166'") //DON'T COPY of document type when specified
2589 + f.tools().If().__closeIfBlock()
2590
2591 + f.tools().If().__openIfBlock("(@_ft=7292 and isnull(@__stage,0) in (@__stg_cls,@__stg_exec)) or (@_ft=7104 and isnull(@__stage,0)=@__stg_cls)")
2592 + f.tools().__setVarVal("@__v", "@__v + ',7292,5056,5057,5058,6002,6010,6026,6027,2179'")
2593 + f.tools().If().__openIfBlock("@__copy_rt = 2111401060301+@__rtfb") + " -- tax-invoice"
2594 + f.tools().If().__openIfBlock("@_rt between 2111401060500+@__rtfb and 2111401060599+@__rtfb") + " -- receipt"
2595 + f.tools().__setVarVal("@__v", "@__v + ',5015,5016,5028,5032'")
2596 + f.tools().If().__addElseIfBlock("@_rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb") + " -- billing instruction"
2597 + f.tools().__setVarVal("@__v", "@__v + ',5015,5016,5028,5032'")
2598 + f.tools().If().__closeIfBlock()
2599 + f.tools().__setVarVal("@__v", "@__v + ',7273,3041'")
2600 + f.tools().If().__addElseIfBlock("@__copy_rt = 2111401060303+@__rtfb") + " -- tax-receipt invoice"
2601 + f.tools().__setVarVal("@__v", "@__v + ',3041'")
2602 + f.tools().If().__openIfBlock("@_rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb") + " -- follow-up tax-invoice/receipt from billing instruction"
2603 + f.tools().__setVarVal("@__v", "@__v + ',5015,5016,5028,5032'")
2604 + f.tools().If().__closeIfBlock()
2605 + f.tools().If().__addElseIfBlock("@__copy_rt between 2111401060500+@__rtfb and 2111401060599+@__rtfb") + " -- receipt"
2606 + f.tools().If().__openIfBlock("@_ft=7104")
2607 + f.tools().__setVarVal("@__v", "@__v + ',7163,5015,5016,1107,3041'")
2608 + f.tools().If().__addElseIfBlock("@_ft=7292")
2609 + f.tools().__setVarVal("@__v", "@__v + ',3041,5015,5016,5028,5032'")
2610 + f.tools().If().__closeIfBlock()
2611 + f.tools().If().__addElseIfBlock("@__copy_rt between 2111401060600+@__rtfb and 2111401060699+@__rtfb") + " -- waybill"
2612 + f.tools().__setVarVal("@__v", "@__v + ',7273'")
2613 + f.tools().If().__addElseIfBlock("@__copy_rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb") + " -- billing instruction"
2614 + f.tools().If().__openIfBlock("@_ft=7104")
2615 + f.tools().__setVarVal("@__v", "@__v + ',5016,1107,3041'")
2616 + f.tools().If().__addElseIfBlock("@_ft=7292")
2617 + f.tools().__setVarVal("@__v", "@__v + ',1107,3041'")
2618 + f.tools().If().__closeIfBlock()
2619 + f.tools().If().__closeIfBlock()
2620
2621 + f.tools().If().__openIfBlock("@_ft=7292")
2622 + f.tools().__setVarVal("@__v", "@__v + ',5065,5066,5067,5063'")
2623 + f.tools().If().__openIfBlock("@_rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb") + " -- billing instruction"
2624 + f.tools().__setVarVal("@__v", "@__v + ',7306,2162,2160'")
2625 + f.tools().If().__closeIfBlock()
2626 + f.tools().If().__closeIfBlock()
2627 + f.tools().If().__closeIfBlock()
2628
2629 + f.indent() + " -- copying current saledoc"
2630
2631 + f.tools().__setVarVal("@__i", "1") + " -- ignore fields from Field ID List"
2632 + f.tools().__setVarVal("@__c", "1") + " -- copy links"
2633 + f.tools().__procedureCallCreator("sp_copy_record", 0, "@_recid", "@_rt", "@__copy", "@__copy_rt", "@__v", "@__i", "@__c")
2634 + f.tools().__setVarVal("@__rval", f.tools().__getOutVarVal("@__val", f.varTypes().Varchar(db_factory.FactoryUtils.__outParamsValSize)))
2635 + __add_debug_line("'sp_copy_record('+cast(isnull(@_recid,0) as " + f.varTypes().BigIntVarchar() + ")+') @__rval=['+isnull(@__rval,'')+']'")
2636 + f.tools().__setVarVal("@__val", "@__val + isnull(@__rval,'')")
2637 + f.tools().If().__openIfBlock("@_ft not in (2056,7166,7292,7104)") + " -- cancel current sale document: overwrite [opened] stage with [canceled]"
2638 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_7104_%')") // check whether a record exists already of stage
2639 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_7104_'+ cast(@__stg_cnc as " + f.varTypes().BigIntVarchar() + ") + ','") // update field stage to canceled
2640 + f.tools().__setVarVal("@__stage", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7104", "1"))
2641 + f.tools().If().__openIfBlock("isnull(@__stage,0)>0 and isnull(@__stage,0)=@__stg_cnc") + " -- if previous stage value was <canceled>"
2642 + f.tools().__setVarVal("@__buf", "@__buf + ',' + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_7104_0' + ','")
2643 + f.tools().If().__addElseIfBlock("isnull(@__stg_cnc,0)>0") // check if exist a variable 'cancel'
2644 + f.tools().__setVarVal("@__buf", "@__buf + ',' + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_7104_'+ cast(@__stg_cnc as " + f.varTypes().BigIntVarchar() + ") + ','")
2645 + f.tools().If().__closeIfBlock()
2646 + f.tools().__setVarVal("@__stage", "@__stg_cnc")
2647 + f.tools().If().__closeIfBlock()
2648 + f.tools().If().__closeIfBlock()
2649
2650 + f.indent() + " -- copying items and tax summary from current saledoc"
2651
2652 + f.indent() + "delete from @__items;"
2653 + f.tools().If().__openIfBlock("@_ft=7292 and isnull(@__stage,0)=@__stg_cls and @__copy_rt between 2111401060500+@__rtfb and 2111401060599+@__rtfb"
2654 + " and @_rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb") + " -- follow-up receipt from billing instruction"
2655
2656 + f.indent() + "insert into @__items (recid,rt,ft)"
2657 + f.indent() + " select l.RECID,d.RT,l.FT from DMLKPS l left join DM d on d.RECID=l.RECID and d.RT between 2111408000000+@__rtfb and 2111408999999+@__rtfb where l.FT=7273 and l.VAL=@_recid and d.RECID is not null order by l.RECID;"
2658 + __copying_items("intakes")
2659
2660 + f.tools().If().__addElseIfBlock("@_ft=7292 and isnull(@__stage,0)=@__stg_cls and @__copy_rt = 2111401060301+@__rtfb"
2661 + " and @_rt between 2111401060500+@__rtfb and 2111401060599+@__rtfb") + " -- follow-up tax-invoice from receipt"
2662
2663 + f.indent() + " -- add to table the related saledoc documents"
2664 + f.indent() + "delete from @__objects;"
2665 + f.indent() + "insert into @__objects (recid,rt) select b.val,rt from dmlkps a join dmlkps b on a.recid=b.recid "
2666 + "join dm on b.val=dm.recid where a.ft=7149 and b.ft=7150 and a.val=@_recid and (rt in (2111401060600+@__rtfb,2111401060302+@__rtfb,2111401060200+@__rtfb,2111401060100+@__rtfb));"
2667
2668 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2669 + f.tools().If().__openIfBlock("isnull(@__id,0)>0")
2670 + __related_doc_rt_by_hierarchy()
2671
2672 + f.indent() + " -- add items of the related saledocs"
2673 + f.indent() + "insert into @__items (recid,rt,ft)"
2674 + f.indent() + " select dm.recid,dm.rt,dmlkps.ft from dmlkps join (select b.val from dmlkps a join dmlkps b on a.recid=b.recid " +
2675 "join dm on b.val=dm.recid where a.ft=7149 and b.ft=7150 and a.val=@_recid and dm.rt = @__rt_link) as a " +
2676 "on dmlkps.val=a.val join dm on dmlkps.recid=dm.recid where dmlkps.ft=7163 and dm.rt between 2111410000000+@__rtfb and 2111419999999+@__rtfb " +
2677 "and dm.RECID is not null order by dmlkps.RECID;" // add items of the related saledocs
2678
2679 + __calculate_sum_summary()
2680
2681 + f.tools().__setVarVal("@__sum_of_taxes", "0")
2682 // + f.indent() + "delete from @__discount_items;"
2683
2684 + f.indent() + " -- add to table the picked intakes"
2685 + f.indent() + "delete from @__objects;"
2686 + f.indent() + "insert into @__objects (recid,rt) select dmlkps.recid,dm.rt from dmlkps join dm on dmlkps.recid=dm.recid where ft=7273 and val=@_recid;"
2687 + f.tools().__setVarVal("@__sum_of_total_intakes", "0")
2688 + f.tools().__setVarVal("@__flag", "0")
2689 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2690 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0") + " -- find if exists related saledocs by hierarchy"
2691 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2692 + f.tools().__setVarVal("@__rt_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__objects where id = @__id") + ")")
2693 + f.tools().If().__openIfBlock("@__postlogic=10") // 10 means to direct call from 'spcrm_saledoc_create_tax_invoice_for_selected_intakes'
2694 + f.tools().__setVarVal("@__exists", __fetch_val("@_userid", "@__recid_intake", "2185", "0", "@_stmp", "@_draft"))
2695 + f.tools().__setVarVal("@__count_tax_invoices", "@__count_tax_invoices+1")
2696 + f.tools().If().__addElseBlock()
2697 + f.tools().__setVarVal("@__exists", __fetch_val("@_userid", "@__recid_intake", "2160", "0", "@_stmp", "@_draft"))
2698 + f.tools().If().__closeIfBlock()
2699 + f.tools().If().__openIfBlock("isnull(@__exists,0)=1")
2700 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_intake", "5042", "0", "@_stmp", "@_draft"))
2701 + f.tools().If().__openIfBlock("isnull(@__rt_intake,0)=2111408040000+@__rtfb")
2702 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_intake", "5044", "0", "@_stmp", "@_draft"))
2703 + f.tools().__setVarVal("@__rate", __fetch_val("@_userid", "@__recid_intake", "5045", "0", "@_stmp", "@_draft"))
2704 + f.tools().__setVarVal("@__sum", "@__sum*@__rate")
2705 + f.tools().If().__closeIfBlock()
2706 + f.tools().If().__openIfBlock("@__postlogic=10") // 10 means to direct call from 'spcrm_saledoc_create_tax_invoice_for_selected_intakes'
2707 + f.indent() + " -- in this case we will create tax invoice for each intake, so the sum of the tax invoice will be only for ONE intake"
2708 + f.tools().__setVarVal("@__sum_of_total_intakes", "@__sum")
2709 + f.tools().__setVarVal("@__round_intakes", "@__sum")
2710 + f.tools().If().__addElseBlock()
2711 + f.tools().__setVarVal("@__sum_of_total_intakes", "@__sum_of_total_intakes + @__sum")
2712 + f.tools().__setVarVal("@__round_intakes", "@__round_intakes + @__sum")
2713 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "2160", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2714 + f.tools().If().__closeIfBlock()
2715 + f.tools().__setVarVal("@__flag", "1")
2716 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "7355", "@__copy", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2717 + f.tools().If().__closeIfBlock()
2718 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2719 + f.tools().While().__closeWhileBlock()
2720 + f.tools().__setVarVal("@__total_sum", __fetch_val("@_userid", "@_recid", "5015", "0", "@_stmp", "@_draft"))
2721 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@_recid", "5057", "0", "@_stmp", "@_draft"))
2722 + f.tools().If().__openIfBlock("@__flag=0 and @__sum<@__total_sum")
2723 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_cant_create_tax_invoice_from_receipt")
2724 + f.tools().If().__addElseIfBlock("@__flag=0")
2725
2726 + f.indent() + " -- add to table intakes that its current dates are bigger or eqaul to the payment date"
2727 + f.indent() + "delete from @__objects;"
2728 + f.indent() + "insert into @__objects (recid,rt) select a.recid,dm.rt from dmlkps a join dm on a.recid=dm.recid join dmdates b on a.recid=b.recid "
2729 + "where a.ft=7273 and a.val=@_recid and b.ft=3037 and b.val<=getdate();"
2730
2731 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2732 + f.tools().If().__openIfBlock("isnull(@__id,0)=0")
2733 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_payment_date_is_future")
2734 + f.tools().If().__closeIfBlock()
2735 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0") + " -- find if exists related saledocs by hierarchy"
2736 + f.tools().__setVarVal("@__recid_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2737 + f.tools().__setVarVal("@__rt_intake", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__objects where id = @__id") + ")")
2738 /*
2739 + f.tools().__setVarVal("@__exists", __fetch_val("@_userid", "@__recid_intake", "7355", "0", "@_stmp", "@_draft")) + " -- pointer to tax invoice"
2740 + f.tools().If().__openIfBlock("isnull(@__exists,0)<>0")
2741 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_exist_tax_invoice")
2742 + f.tools().If().__closeIfBlock()
2743 */
2744 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_intake", "5042", "0", "@_stmp", "@_draft"))
2745 + f.tools().If().__openIfBlock("isnull(@__rt_intake,0)=2111408040000+@__rtfb")
2746 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_intake", "5044", "0", "@_stmp", "@_draft"))
2747 + f.tools().__setVarVal("@__rate", __fetch_val("@_userid", "@__recid_intake", "5045", "0", "@_stmp", "@_draft"))
2748 + f.tools().__setVarVal("@__sum", "@__sum*@__rate")
2749 + f.tools().If().__closeIfBlock()
2750 + f.tools().__setVarVal("@__sum_of_total_intakes", "@__sum_of_total_intakes + @__sum")
2751 + f.tools().__setVarVal("@__round_intakes", "@__round_intakes + @__sum")
2752 + updateBulkValBuilder("@__recid_intake", null, "@__rt_intake", "7355", "@__copy", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2753 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2754 + f.tools().While().__closeWhileBlock()
2755 + f.tools().If().__closeIfBlock()
2756 + __copying_items("items_from_related_doc")
2757
2758 /* // NOT used, maybe in the future
2759 + f.tools().__setVarVal("@__flag", "0")
2760 + f.tools().__setVarVal("@__total_sum", "@__sum_of_total_saledocs")
2761 + f.tools().If().__openIfBlock("@__sum_of_total_intakes<@__sum_of_total_saledocs")
2762
2763 + f.tools().__setVarVal("@__count", "(select count(*) from @__items)") + " -- counting the number of the regular items to know which number the 'discount' item will be"
2764
2765 + f.indent() + "delete from @__taxs;"
2766 + f.indent() + "insert into @__taxs (recid) select b.recid from dmlkps join (select b.val from dmlkps a join dmlkps b on a.recid=b.recid \n" +
2767 "join dm on b.val=dm.recid where a.ft=7149 and b.ft=7150 and a.val=@_recid and dm.rt = @__rt_link) as a \n" +
2768 "on dmlkps.val=a.val join dmlkps b on dmlkps.recid=b.val where dmlkps.ft=7163 and b.ft=7223 \n" +
2769 "and b.RECID is not null order by b.RECID;"
2770
2771 + __discount_items_taxs("tax_receipt_invoice")
2772 + __discount_items("tax_invoice")
2773
2774 + f.tools().If().__addElseBlock()
2775
2776 + f.indent() + " -- add tax summary of the related items"
2777 + f.indent() + "delete from @__items;"
2778 + f.indent() + "insert into @__items (recid,rt,ft)"
2779 + f.indent() + " select dm.recid,dm.rt,dmlkps.ft from dmlkps join (select b.val from dmlkps a join dmlkps b on a.recid=b.recid " +
2780 "join dm on b.val=dm.recid where a.ft=7149 and b.ft=7150 and a.val=@_recid and dm.rt = @__rt_link) as a " +
2781 "on dmlkps.val=a.val join dm on dmlkps.recid=dm.recid where dmlkps.ft=7221 and dm.rt between 2110728000000+@__rtfb and 2110728999999+@__rtfb " +
2782 "and dm.RECID is not null order by dmlkps.RECID;" //add tax summary
2783 + __copying_items("items_from_related_doc")
2784 + f.tools().If().__closeIfBlock()
2785 */
2786 + f.tools().If().__openIfBlock("isnull(@__round_intakes,0)=isnull(@__round_items,0)")
2787 + f.tools().If().__openIfBlock("isnull(@__sum_of_total_saledocs_no_tax,0) <> 0")
2788 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5016", "@__sum_of_total_saledocs_no_tax/@__rate_saledoc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2789 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5032", "@__sum_of_total_saledocs_no_tax", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2790 + f.tools().If().__closeIfBlock()
2791 + f.tools().If().__openIfBlock("isnull(@__total_sum,0) <> 0")
2792 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5015", "@__sum_of_total_saledocs/@__rate_saledoc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2793 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5028", "@__sum_of_total_saledocs", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2794 + f.tools().If().__closeIfBlock()
2795 + f.tools().If().__addElseBlock()
2796 + f.tools().If().__openIfBlock("isnull(@__relative_saledoc_sum_no_tax,0) <> 0")
2797 + f.tools().__setVarVal("@__round", "@__relative_saledoc_sum_no_tax")
2798 + f.tools().If().__openIfBlock("@__round<>@__total_round_sum")
2799 + f.tools().__setVarVal("@__difference", "1")
2800 + f.tools().__setVarVal("@__round", "@__total_round_sum-@__round")
2801 + f.tools().__setVarVal("@__relative_saledoc_sum_no_tax", "@__relative_saledoc_sum_no_tax+@__round")
2802 + f.tools().If().__closeIfBlock()
2803 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5016", "@__relative_saledoc_sum_no_tax/@__rate_saledoc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2804 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5032", "@__relative_saledoc_sum_no_tax", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2805 + f.tools().If().__closeIfBlock()
2806 + f.tools().If().__openIfBlock("isnull(@__relative_saledoc_sum,0) <> 0")
2807 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5015", "@__relative_saledoc_sum/@__rate_saledoc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2808 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5028", "@__relative_saledoc_sum", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2809 + f.tools().If().__closeIfBlock()
2810 + f.tools().If().__closeIfBlock()
2811
2812 + f.indent() + "delete from @__taxs;"
2813 + f.indent() + "insert into @__taxs (recid) select b.recid from dmlkps join (select b.val from dmlkps a join dmlkps b on a.recid=b.recid \n" +
2814 "join dm on b.val=dm.recid where a.ft=7149 and b.ft=7150 and a.val=@_recid and dm.rt = @__rt_link) as a \n" +
2815 "on dmlkps.val=a.val join dmlkps b on dmlkps.recid=b.val where dmlkps.ft=7163 and b.ft=7223 \n" +
2816 "and b.RECID is not null order by b.RECID;"
2817 + f.tools().__setVarVal("@__flag", "0")
2818 + __discount_items_taxs("tax_receipt_invoice")
2819
2820 + f.tools().If().__closeIfBlock()
2821
2822 + f.tools().If().__addElseIfBlock("@_ft=7292 and isnull(@__stage,0)=@__stg_exec and @_rt between 2111401060700+@__rtfb and 2111401060799+@__rtfb") + " -- billing instruction"
2823 + f.tools().If().__openIfBlock("@__copy_rt in (2111401060301+@__rtfb,2111401060303+@__rtfb)") + " -- follow-up tax-invoice or tax-receipt invoice"
2824 + f.tools().__setVarVal("@__count", "0")
2825 + f.indent() + " -- inserting all the items of the order debit to table"
2826 + f.indent() + "delete from @__objects;"
2827 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7163 and val=@_recid;"
2828
2829 + f.indent() + "delete from @__items;"
2830 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2831 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
2832 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2833 + f.tools().__setVarVal("@__exists", __fetch_val("@_userid", "@__recid_link", "2162", "0", "@_stmp", "@_draft"))
2834 + f.tools().If().__openIfBlock("isnull(@__exists,0)=1 or @__copy_all_items=1")
2835 + f.tools().__setVarVal("@__count", "@__count + 1")
2836 + f.indent() + "insert into @__items (recid,rt,ft) select @__recid_link,2111410000000+@__rtfb,7163;"
2837 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__recid_link", "5011", "0", "@_stmp", "@_draft")) + " -- sum of item price"
2838 + f.tools().__setVarVal("@__rate", __fetch_val("@_userid", "@__recid_link", "5031", "0", "@_stmp", "@_draft"))
2839 + f.tools().__setVarVal("@__sum", "@__sum * @__rate")
2840 + f.tools().__setVarVal("@__sum_of_total_saledocs_no_tax", "@__sum_of_total_saledocs_no_tax + @__sum")
2841 + f.tools().__setVarVal("@__round_items", "@__round_items + @__sum")
2842
2843 + f.indent() + "delete from @__taxs;"
2844 + f.indent() + "insert into @__taxs (recid) select recid from dmlkps where ft=7223 and val=@__recid_link;"
2845 + f.tools().__setVarVal("@__tid", "(select min(id) from @__taxs)")
2846 + f.tools().While().__openWhileBlock("isnull(@__tid,0)>0")
2847 + f.tools().__setVarVal("@__tax_recid", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__taxs where id = @__tid") + ")")
2848 + f.tools().__setVarVal("@__include_tax", __fetch_val("@_userid", "@__tax_recid", "2085", "0", "@_stmp", "@_draft"))
2849 + f.tools().__setVarVal("@__sum", __fetch_val("@_userid", "@__tax_recid", "5037", "0", "@_stmp", "@_draft")) + " -- sum of taxes"
2850 + f.tools().If().__openIfBlock("isnull(@__include_tax,0) <> 0") + " -- if the tax included in the price of the item"
2851 + f.tools().__setVarVal("@__sum_of_total_saledocs_no_tax", "@__sum_of_total_saledocs_no_tax - @__sum")
2852 + f.tools().If().__closeIfBlock()
2853 + f.tools().__setVarVal("@__sum_of_taxes", "@__sum_of_taxes + @__sum")
2854 + f.tools().__setVarVal("@__round_items", "@__round_items + @__sum")
2855 + f.tools().__setVarVal("@__tid", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__taxs where id > @__tid order by id") + ")")
2856 + f.tools().While().__closeWhileBlock()
2857 + updateBulkValBuilder("@__recid_link", null, "2111410000000+@__rtfb", "2162", "0", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2858 + f.tools().If().__closeIfBlock()
2859 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2860 + f.tools().While().__closeWhileBlock()
2861 + f.tools().__setVarVal("@__sum_of_total_saledocs", "@__sum_of_total_saledocs_no_tax + @__sum_of_taxes")
2862 + f.tools().__setVarVal("@__sum_of_taxes", "0")
2863 + f.tools().__setVarVal("@__total_sum", "@__sum_of_total_saledocs")
2864
2865 + f.tools().If().__openIfBlock("@__copy_rt=2111401060303+@__rtfb")
2866 + f.tools().__setVarVal("@__sum_of_total_intakes", "0")
2867 + f.indent() + " -- checking if the sum of the intakes is lower than the sum of the items"
2868 + f.indent() + "delete from @__objects;"
2869 + f.indent() + "insert into @__objects (recid) select recid from dmlkps where ft=7306 and val=@_recid;"
2870
2871 + f.tools().__setVarVal("@__id", "(select min(id) from @__objects)")
2872 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
2873 + f.tools().__setVarVal("@__recid_program_debit", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__objects where id = @__id") + ")")
2874 + f.indent() + "delete from @__intakes;"
2875 + f.indent() + "insert into @__intakes (recid) select recid from dmlkps where ft=7272 and val=@__recid_program_debit;"
2876
2877 + f.tools().__setVarVal("@__id_intakes", "(select min(id) from @__intakes)")
2878 + f.tools().While().__openWhileBlock("isnull(@__id_intakes,0)>0")
2879 + f.tools().__setVarVal("@__recid_link", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__intakes where id = @__id_intakes") + ")")
2880 + f.tools().__setVarVal("@__exists", __fetch_val("@_userid", "@__recid_link", "2160", "0", "@_stmp", "@_draft"))
2881 + f.tools().__setVarVal("@__recid_intake", __fetch_val("@_userid", "@__recid_link", "7276", "0", "@_stmp", "@_draft"))
2882
2883 + f.tools().If().__openIfBlock("isnull(@__exists,0)=1 and isnull(@__recid_intake,0)=0")
2884 + f.tools().__setVarVal("@__sum_of_intake", __fetch_val("@_userid", "@__recid_link", "5042", "0", "@_stmp", "@_draft"))
2885 + f.tools().__setVarVal("@__sum_of_total_intakes", "@__sum_of_total_intakes + @__sum_of_intake")
2886 + f.tools().__setVarVal("@__round_intakes", "@__sum_of_total_intakes")
2887 + f.tools().If().__closeIfBlock()
2888 + f.tools().__setVarVal("@__id_intakes", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__intakes where id > @__id_intakes order by id") + ")")
2889 + f.tools().While().__closeWhileBlock()
2890 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1, "select id from @__objects where id > @__id order by id") + ")")
2891 + f.tools().While().__closeWhileBlock()
2892 /* // NOT used, maybe in the future
2893 + f.tools().If().__openIfBlock("@__sum_of_total_intakes<@__sum_of_total_saledocs")
2894 + __discount_items("tax_receipt_invoice")
2895 */
2896 + f.tools().If().__openIfBlock("@__round_intakes>@__round_items")
2897 + rollbackWithMessage(FactoryEnums.RollBack.SAVE_UPDATES, "plc_imp_sum_items_bigger_than_intakes")
2898 + f.tools().If().__closeIfBlock()
2899 + f.tools().If().__closeIfBlock()
2900
2901 + __copying_items("items_from_debit_order")
2902
2903 + f.tools().If().__openIfBlock("isnull(@__round_intakes,0)=isnull(@__round_items,0) or @__copy_rt=2111401060301+@__rtfb")
2904 + f.tools().If().__openIfBlock("isnull(@__sum_of_total_saledocs_no_tax,0) <> 0")
2905 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5016", "@__sum_of_total_saledocs_no_tax/@__rate_saledoc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2906 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5032", "@__sum_of_total_saledocs_no_tax", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2907 + f.tools().If().__closeIfBlock()
2908
2909 + f.tools().If().__openIfBlock("isnull(@__sum_of_total_saledocs,0) <> 0")
2910 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5015", "@__sum_of_total_saledocs/@__rate_saledoc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2911 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5028", "@__sum_of_total_saledocs", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2912 + f.tools().If().__closeIfBlock()
2913 + f.tools().If().__addElseBlock()
2914 + f.tools().If().__openIfBlock("isnull(@__relative_saledoc_sum_no_tax,0) <> 0")
2915 + f.tools().__setVarVal("@__round", "@__relative_saledoc_sum_no_tax")
2916 + f.tools().If().__openIfBlock("@__round<>@__total_round_sum")
2917 + f.tools().__setVarVal("@__difference", "1")
2918 + f.tools().__setVarVal("@__round", "@__total_round_sum-@__round")
2919 + f.tools().__setVarVal("@__relative_saledoc_sum_no_tax", "@__relative_saledoc_sum_no_tax+@__round")
2920 + f.tools().If().__closeIfBlock()
2921 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5016", "@__relative_saledoc_sum_no_tax/@__rate_saledoc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2922 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5032", "@__relative_saledoc_sum_no_tax", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2923 + f.tools().If().__closeIfBlock()
2924
2925 + f.tools().If().__openIfBlock("isnull(@__relative_saledoc_sum,0) <> 0")
2926 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5015", "@__relative_saledoc_sum/@__rate_saledoc", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2927 + updateBulkValBuilder("@__copy", null, "@__copy_rt", "5028", "@__relative_saledoc_sum", "@_res", "@__val", FactoryEnums.ValBuilder.BY_RECID_VALUE)
2928 + f.tools().If().__closeIfBlock()
2929 + f.tools().If().__closeIfBlock()
2930
2931 + f.indent() + " -- inserting all the taxs of the order debit to table"
2932 + f.indent() + "delete from @__taxs;"
2933 + f.tools().If().__openIfBlock("@__copy_all_items=1")
2934 + f.indent() + "insert into @__taxs (recid) select b.recid from dmlkps a "
2935 + "join dmlkps b on a.recid=b.val where a.val=@_recid and a.ft=7163 and b.ft=7223 order by a.recid;"
2936 + f.tools().If().__addElseBlock()
2937 + f.indent() + "insert into @__taxs (recid) select b.recid from dmlkps a join dmlkps b on a.recid=b.val "
2938 + "join dmints c on a.recid=c.recid where a.val=@_recid and a.ft=7163 and b.ft=7223 and c.ft=2162 and c.val=1 order by a.recid;"
2939 + f.tools().If().__closeIfBlock()
2940 + f.tools().__setVarVal("@__flag", "0")
2941 + __discount_items_taxs("tax_receipt_invoice")
2942 + f.tools().If().__closeIfBlock()
2943
2944 + f.tools().If().__openIfBlock("@__copy_rt = 2111401060303+@__rtfb or @__copy_rt between 2111401060500+@__rtfb and 2111401060599+@__rtfb") + " -- follow-up tax-receipt invoice or receipt"
2945 + __create_intakes_from_debit_order("'new_receipt'")
2946 + f.tools().If().__closeIfBlock()
2947
2948 + f.tools().If().__addElseIfBlock("isnull(@__copy_rt,0) not between 2111401060500+@__rtfb and 2111401060599+@__rtfb")
2949
2950 + f.indent() + "insert into @__items (recid,rt,ft)"
2951 + f.indent() + " select l.RECID,d.RT,l.FT from DMLKPS l left join DM d on d.RECID=l.RECID and d.RT between 2111410000000+@__rtfb and 2111419999999+@__rtfb where l.FT=7163 and l.VAL=@_recid and d.RECID is not null order by l.RECID;" // add items
2952
2953 + f.indent() + "insert into @__items (recid,rt,ft)"
2954 + f.indent() + " select l.RECID,d.RT,l.FT from DMLKPS l left join DM d on d.RECID=l.RECID and d.RT between 2110728000000+@__rtfb and 2110728999999+@__rtfb where l.FT=7221 and l.VAL=@_recid and d.RECID is not null order by l.RECID;" //add tax summary
2955 + __copying_items("items_and_tax_summary")
2956
2957 + f.tools().If().__closeIfBlock()
2958
2959 + f.indent() + " -- copying linked accounts"
2960
2961 + f.indent() + "delete from @__items;"
2962 + f.indent() + "insert into @__items (recid,rt,ft,twin)"
2963 + f.indent() + " select T.RECID,T.RT,T.FT,T.TWIN from ("
2964 //<link to account>
2965 + f.indent() + " select l1.RECID,d.RT,l1.FT,tl.VAL TWIN from DMLKPS l1 join DMLKPS l2 on l2.RECID=l1.RECID and l2.FT in (7148,7187) and l2.VAL>0 join DMLKPS tl on tl.RECID=l1.RECID and tl.FT=7142 left join DM d on d.RECID=l1.RECID and d.RT between 2111102000000+@__rtfb and 2111102999999+@__rtfb where l1.FT in (7147,7186) and l1.VAL=@_recid and d.RECID is not null"
2966 + f.indent() + " union all"
2967 //<link to activity> twin (*) of <link to account>
2968 + f.indent() + " select l1.RECID,d.RT,7150 FT,tl.VAL TWIN from DMLKPS l1 join DMLKPS l2 on l2.RECID=l1.RECID and l2.FT=7149 and l2.VAL>0 join DMLKPS tl on tl.RECID=l1.RECID and tl.FT=7142 left join DM tld on tld.RECID=tl.VAL and tld.RT between 2111102000000+@__rtfb and 2111102999999+@__rtfb left join DM d on d.RECID=l1.RECID and d.RT between 2111103000000+@__rtfb and 2111103999999+@__rtfb where l1.FT=7150 and l1.VAL=@_recid and tld.RECID is not null and d.RECID is not null"
2969 + f.indent() + " ) T order by T.RECID;"
2970 + f.tools().__setVarVal("@__id", "(select min(id) from @__items)")
2971 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
2972 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select recid from @__items where id = @__id") + ")")
2973 + f.tools().__setVarVal("@__rt", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__items where id = @__id") + ")")
2974 + f.tools().__setVarVal("@__ft", "(" + f.tools().__addLimitToSelectStmt(1, "select ft from @__items where id = @__id") + ")")
2975 + f.tools().__setVarVal("@__v", "'7142,'+cast(@__ft as " + f.varTypes().BigIntVarchar() + ")")
2976 + f.tools().__setVarVal("@__lnk2stg", "@__newrid")
2977 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
2978 + f.tools().__setVarVal("@__i", "1") + " -- ignore fields from Field ID List"
2979 + f.tools().__setVarVal("@__c", "1") + " -- copy links"
2980 + f.tools().__procedureCallCreator("sp_copy_record", 0, "@__rid", "@__rt", "@__lnk2stg", "@__rt", "@__v", "@__i", "@__c")
2981 + f.tools().__setVarVal("@__rval", f.tools().__getOutVarVal("@__val", f.varTypes().Varchar(db_factory.FactoryUtils.__outParamsValSize)))
2982 + __add_debug_line("'sp_copy_record('+cast(isnull(@__rid,0) as " + f.varTypes().BigIntVarchar() + ")+') @__rval=['+isnull(@__rval,'')+']'")
2983 + f.tools().__setVarVal("@__val", "@__val + isnull(@__rval,'')"
2984 + " + cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__ft as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__copy as " + f.varTypes().BigIntVarchar() + ") + ','"
2985 )
2986 //fix twin link
2987 + f.indent() + "update @__items set newrecid=@__lnk2stg where id = @__id;"
2988 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1,"select id from @__items where id>@__id order by id") + ")")
2989 + f.tools().While().__closeWhileBlock()
2990 + f.tools().__setVarVal("@__id", "(select min(id) from @__items)")
2991 + f.tools().While().__openWhileBlock("isnull(@__id,0)>0")
2992 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1, "select newrecid from @__items where id = @__id") + ")")
2993 + f.tools().__setVarVal("@__rt", "(" + f.tools().__addLimitToSelectStmt(1, "select rt from @__items where id = @__id") + ")")
2994 + f.tools().__setVarVal("@__twin", "(" + f.tools().__addLimitToSelectStmt(1, "select twin from @__items where id = @__id") + ")")
2995 + f.tools().__setVarVal("@__lnk2stg", "(" + f.tools().__addLimitToSelectStmt(1, "select newrecid from @__items where recid = @__twin") + ")")
2996 + f.tools().__setVarVal("@__rval", "cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@__rt as " + f.varTypes().BigIntVarchar() + ") +'_7142_'+ cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ") + ','")
2997 + __add_debug_line("'spcrm_reset_saledoc -> add twin link('+cast(isnull(@__id,0) as " + f.varTypes().BigIntVarchar() + ")+') @__rval=['+isnull(@__rval,'')+']'")
2998 + f.tools().__setVarVal("@__val", "@__val + isnull(@__rval,'')")
2999 + f.tools().__setVarVal("@__id", "(" + f.tools().__addLimitToSelectStmt(1,"select id from @__items where id>@__id order by id") + ")")
3000 + f.tools().While().__closeWhileBlock()
3001 + __btest_items("linked_accounts")
3002
3003 + f.tools().If().__openIfBlock("@_ft not in (2056,7166,7292,7104)") + " -- copying linked stages: completed only (3012) or not canceled"
3004 + f.indent() + "delete from @__items;"
3005 + f.indent() + "insert into @__items (recid,rt,ft)"
3006 + f.indent() + " select T.RECID,T.RT,T.FT from ("
3007 + f.indent() + " select l1.RECID,d.RT,7149 FT from DMLKPS l1 join DMLKPS l2 on l2.RECID=l1.RECID and l2.FT=7150"
3008 + f.indent() + " left join DM ds on ds.RECID=l2.VAL and ds.RT between 2111401010500+@__rtfb and 2111401010599+@__rtfb left join DMDATES dsd on dsd.RECID=ds.RECID and dsd.FT=3012 join DMLKPS dsl on dsl.RECID=ds.RECID and dsl.FT=7104 and (dsl.VAL<>@__stg_cnc or dsd.VAL is not null)"
3009 + f.indent() + " left join DM d on d.RECID=l1.RECID and d.RT between 2111103000000+@__rtfb and 2111103999999+@__rtfb"
3010 + f.indent() + " where l1.FT=7149 and l1.VAL=@_recid and ds.RECID is not null and d.RECID is not null and d.RECID not in (select RECID from DMLKPS where FT=7142)"
3011 + f.indent() + " ) T order by T.RECID;"
3012 + __copying_items("linked_stages")
3013 + f.tools().If().__closeIfBlock()
3014
3015 + f.indent() + " -- generate new stage records: canceled && opened"
3016 // canceled stage
3017 + f.tools().If().__openIfBlock("@_ft not in (2056,7166,7292,7104)") // case: update type document or stage
3018 + f.tools().__setVarVal("@__v", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__type", "1087", "0")) // title of type document
3019 + f.tools().__setVarVal("@__n", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@_recid", "2051", "0")) // join Tax Authority (if exist)
3020 + f.tools().If().__openIfBlock("isnull(@__n,'')<>''")
3021 + f.tools().__setVarVal("@__v", "isnull(@__v,'') + ' ' + @__n")
3022 + f.tools().If().__closeIfBlock()
3023 + f.tools().__setVarVal("@__n", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@_recid", "4107", "0")) // join version (if exist)
3024 + f.tools().If().__openIfBlock("isnull(@__n,'')<>''")
3025 + f.tools().__setVarVal("@__v", "isnull(@__v,'') + ' (' + @__n + ')'")
3026 + f.tools().If().__closeIfBlock()
3027 + f.tools().__setVarVal("@__n", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__stg_cnc", "1044", "0")) // join title of stage
3028 + f.tools().If().__openIfBlock("isnull(@__n,'')<>''")
3029 + f.tools().__setVarVal("@__v", "isnull(@__v,'') + ' ' + @__n")
3030 + f.tools().If().__closeIfBlock()
3031 + f.tools().__setVarVal("@__rid", "@__newrid")
3032 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
3033 + f.tools().__setVarVal("@__val", "@__val"
3034 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_1033_'+ cast(len(@__v) as " + f.varTypes().BigIntVarchar() + ") + '_' + @__v + ','"
3035 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_7104_'+ cast(@__stg_cnc as " + f.varTypes().BigIntVarchar() + ") + ','"
3036 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_3013_'+ @__mdts + ','"
3037 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_3009_'+ @__mdts + ','"
3038 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_3012_'+ @__mdts + ','"
3039 )
3040 + f.indent() + " -- link new stage record to current record (one side)"
3041 + f.tools().__setVarVal("@__lnk2stg", "@__newrid")
3042 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
3043 + f.tools().__setVarVal("@__val", "@__val"
3044 + " + cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111103000000+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_7149_'+ cast(@__copy as " + f.varTypes().BigIntVarchar() + ") + ','"
3045 + " + cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111103000000+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_7150_'+ cast(@__rid as " + f.varTypes().BigIntVarchar() + ") + ','"
3046 )
3047 + f.tools().If().__closeIfBlock()
3048
3049/* will be added by POST logic
3050 // opened stage
3051 + f.tools().__setVarVal("@__v", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__type", "1087", "0"))
3052 + f.tools().If().__openIfBlock("isnull(@__num,'')<>''")
3053 + f.tools().__setVarVal("@__v", "isnull(@__v,'') + ' ' + @__num")
3054 + f.tools().If().__closeIfBlock()
3055 + f.tools().If().__openIfBlock("isnull(@__ver,'')<>''")
3056 + f.tools().__setVarVal("@__v", "isnull(@__v,'') + ' (' + @__ver + ')'")
3057 + f.tools().If().__closeIfBlock()
3058 + f.tools().__setVarVal("@__n", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__stg_opn", "1044", "0"))
3059 + f.tools().If().__openIfBlock("isnull(@__n,'')<>''")
3060 + f.tools().__setVarVal("@__v", "isnull(@__v,'') + ' ' + @__n")
3061 + f.tools().If().__closeIfBlock()
3062 + f.tools().__setVarVal("@__rid", "@__newrid")
3063 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
3064 + f.tools().__setVarVal("@__val", "@__val"
3065 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_1033_'+ cast(len(@__v) as " + f.varTypes().BigIntVarchar() + ") + '_' + @__v + ','"
3066 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_7104_'+ cast(@__stg_opn as " + f.varTypes().BigIntVarchar() + ") + ','"
3067 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_3013_'+ @__mdts + ','"
3068 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_3009_'+ @__mdts + ','"
3069 )
3070 + f.indent() + " -- link new stage record to current record (one side)"
3071 + f.tools().__setVarVal("@__lnk2stg", "@__newrid")
3072 + f.tools().__setVarVal("@__newrid", "@__newrid + 1")
3073 + f.tools().__setVarVal("@__val", "@__val"
3074 + " + cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111103000000+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_7149_'+ cast(@__copy as " + f.varTypes().BigIntVarchar() + ") + ','"
3075 + " + cast(@__lnk2stg as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111103000000+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_7150_'+ cast(@__rid as " + f.varTypes().BigIntVarchar() + ") + ','"
3076 )
3077*/
3078 + f.indent() + " -- copying linked tags"
3079 + f.indent() + "delete from @__items;"
3080 + f.indent() + "insert into @__items (recid,rt,ft)"
3081 + f.indent() + " select T.RECID,T.RT,T.FT from ("
3082 + f.indent() + " select l.RECID,d.RT,7022 FT from DMLKPS l left join DM d on d.RECID=l.RECID and d.RT between 2110600000000+@__rtfb and 2110699999999+@__rtfb where l.FT=7022 and l.VAL=@_recid and d.RECID is not null"
3083 + f.indent() + " ) T order by T.RECID;"
3084 + __copying_items("linked_tags")
3085
3086 + f.indent() + " -- copying payment dates"
3087 + f.indent() + "delete from @__items;"
3088 + f.indent() + "insert into @__items (recid,rt,ft)"
3089 + f.indent() + " select T.RECID,T.RT,T.FT from ("
3090 + f.indent() + " select l.RECID,d.RT,7165 FT from DMLKPS l left join DM d on d.RECID=l.RECID and d.RT between 2112200000000+@__rtfb and 2112299999999+@__rtfb where l.FT=7165 and l.VAL=@_recid and d.RECID is not null"
3091 + f.indent() + " ) T order by T.RECID;"
3092 + __copying_items("linked_payment_dates")
3093
3094 + f.tools().If().__openIfBlock("@_ft not in (2056,7166) or (@_ft in (7104,7166) and isnull(@__stage,0) = @__stg_cls)")
3095 + __link_current_saledoc_to_chosen_saledoc("@__copy", "@__copy_rt")
3096 + f.tools().If().__closeIfBlock()
3097
3098 + f.indent() + " -- use functionality on update stage of saledoc"
3099 + __insert_into_post_logic("@__copy","@__copy_rt","7104")
3100
3101 + f.tools().If().__openIfBlock("(@_ft = 7104) and (isnull(@__stage,0) = @__stg_cls) and (isnull(@__recid_doc,0)=0)")
3102 + f.tools().If().__openIfBlock("@__different_values = 1")
3103 + successfullMessage("plc_imp_debit_order_created_without_debit_program")
3104 + f.tools().If().__addElseIfBlock("@__flag_default_credit = 1")
3105 + successfullMessage("plc_imp_pick_payment_method")
3106 + f.tools().If().__closeIfBlock()
3107 + f.tools().If().__closeIfBlock()
3108
3109 + f.tools().If().__closeIfBlock() //@_ft in (7166,7104,2056,7292)
3110/*
3111 * Fetch and reset a sale profile and currency details
3112 */
3113 //+ __get_field_valint("@_recid", "@_rt", "7222", "@__prf") // fetch from input buffer, when another ALF updated sale profile
3114 + f.tools().__setVarVal("@__prf", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7222", "3"))
3115 + f.tools().If().__openIfBlock("isnull(@__prf,0)=0")
3116 + f.tools().__setVarVal("@__prf", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7222", "0"))
3117 + f.tools().__setVarVal("@__pprf", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7222", "1"))
3118 + f.tools().If().__openIfBlock("isnull(@__pprf,0)=0 and isnull(@_draft,0)=1")
3119 + f.tools().__setVarVal("@__pprf", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7222", "2"))
3120 + f.tools().If().__closeIfBlock()
3121 + f.tools().If().__addElseBlock()
3122 + f.tools().__setVarVal("@__pprf", f.tools().__functionCallCreator("sf_fetch_valint", "@_userid", "@_recid", "7222", "0"))
3123 + f.tools().If().__closeIfBlock()
3124 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@__prf='+cast(isnull(@__prf,0) as "+f.varTypes().BigIntVarchar()+")+',@__pprf='+cast(isnull(@__pprf,0) as "+f.varTypes().BigIntVarchar()+")")
3125 + f.tools().If().__openIfBlock("(@_ft=7222 or isnull(@__prf,0)=0) and isnull(@__rollb,0)=0 and @_ft > 0") + " -- reset sale profile"
3126 + __fetchIdeVariable("@__dprf", "sale_profile_default")
3127 + f.tools().If().__openIfBlock("isnull(@__prf,0)=0 and not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_7222_%')")
3128 + f.tools().__setVarVal("@__prf", "@__dprf")
3129 + f.tools().If().__openIfBlock("isnull(@__prf,0)>0")
3130 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_7222_'+ cast(@__prf as " + f.varTypes().BigIntVarchar() + ") + ','")
3131 + f.tools().If().__closeIfBlock()
3132 + f.tools().If().__closeIfBlock()
3133 + f.tools().If().__openIfBlock("@_ft=7222 and isnull(@__prf,0)>0 and isnull(@__pprf,0)>0 and @__prf<>@__pprf") + " -- verify items"
3134 + f.tools().__setVarVal("@__dprf", "(" + f.tools().__addLimitToSelectStmt(1,"select count(*) from DMLKPS l left join DM d on d.RECID=l.RECID and d.RT between 2111410000000+@__rtfb and 2111419999999+@__rtfb where l.FT=7163 and l.VAL=@_recid and d.RECID is not null") + ")")
3135 + f.tools().__setVarVal("@__pprf", "(" + f.tools().__addLimitToSelectStmt(1,"select count(*) from ("
3136 + "select i.recid from plcd_updates i where i.rt between 2111410000000+@__rtfb and 2111419999999+@__rtfb and i.ft=7163 and i.valint=@_recid and i.mark is null and i.userid=@_userid group by i.recid"
3137 + ") T"
3138 ) + ")")
3139 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',sd items count='+cast(isnull(@__dprf,0) as "+f.varTypes().BigIntVarchar()+")+',sd draft items count='+cast(isnull(@__pprf,0) as "+f.varTypes().BigIntVarchar()+")")
3140 + f.tools().If().__openIfBlock("isnull(@__dprf,0)>0 or isnull(@__pprf,0)>0")
3141 + __set_rollback("1", "'crm_sd_upd_impossible;core_colon;core_space;crm_sd_items_inside'") // rollback is performed if a 'sale profile' field is changed and there are items in the saledoc
3142 + f.tools().If().__closeIfBlock()
3143 + f.tools().If().__closeIfBlock()
3144 + f.tools().If().__openIfBlock("isnull(@__rollb,0)=0 and isnull(@__prf,0)>0")
3145 + f.indent() + "-- reset attendants of sale profile"
3146 + f.tools().__setVarVal("@__sval", "@_res + @__val")
3147 + f.tools().__setVarVal("@__s", f.tools().__functionCallCreator("sfcrm_fetch_saleprof_attendants","@_userid","@_recid","@_rt","@__prf","@_import_call","@__sval"))
3148 + f.tools().__setVarVal("@__val", "@__val + @__s")
3149 + f.tools().If().__closeIfBlock()
3150 + f.tools().If().__addElseIfBlock("@_ft in (5033,7218) and isnull(@__rollb,0)=0") + " -- currency"
3151 + f.indent() + "-- reset currency details"
3152 + f.tools().__setVarVal("@__sval", "@_res + @__val")
3153 + f.tools().__setVarVal("@__s", f.tools().__functionCallCreator("sfcrm_fetch_currency_attendants","@_userid","@_recid","@_rt","@_ft","@_import_call","@__sval"))
3154 + f.tools().__setVarVal("@__val", "@__val + @__s")
3155 + f.tools().__setVarVal("@__rollb", f.tools().__getOutVarVal("@_rollback", f.varTypes().Int()))
3156 + f.tools().If().__closeIfBlock()
3157
3158/*
3159 * Reset a sale document reference (DM.F101) (creating/updating main string of saledoc)
3160 */
3161 + f.indent()+ "-- update reference = [document_type [number] [(version-subver)]]"
3162 + __add_debug_line("'spcrm_reset_saledoc -> @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@__num='+isnull(@__num,'')+',@__ver='+isnull(@__ver,'')")
3163 + f.tools().If().__openIfBlock("(isnull(@__rollb,0)=0)and((isnull(@__num,'')<>'')or(isnull(@__ver,'')<>''))"
3164 +"and(@_ft in (7166,7104))and(isnull(@_draft,0) in (0,2))" // or (@_ft=2056 and isnull(@__copy,0)>0)
3165 )
3166 + f.tools().If().__openIfBlock("@_ft=7166 and @__flag_order_plist=0")
3167 + f.tools().__setVarVal("@__v", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__ptype", "1087", "0"))
3168 // conversion impossible, restore changed saledoc type
3169 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_7166_'+ cast(@__ptype as " + f.varTypes().BigIntVarchar() + ") + ','")
3170 + f.tools().If().__addElseBlock()
3171 + f.tools().__setVarVal("@__v", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__type", "1087", "0"))
3172 + f.tools().If().__closeIfBlock()
3173 + f.tools().If().__openIfBlock("isnull(@__num,'')<>''")
3174 + f.tools().__setVarVal("@__v", "isnull(@__v,'') + ' ' + @__num")
3175 + f.tools().If().__closeIfBlock()
3176 + f.tools().If().__openIfBlock("isnull(@__ver,'')<>''")
3177 + f.tools().__setVarVal("@__v", "isnull(@__v,'') + ' (' + @__ver + ')'")
3178 + f.tools().If().__closeIfBlock()
3179 + f.tools().If().__openIfBlock("isnull(@__v,'')<>''")
3180 + f.tools().If().__openIfBlock("not (@_res like '%'+cast(@_recid as " + f.varTypes().BigIntVarchar() + ")+'_'+cast(@_rt as " + f.varTypes().BigIntVarchar() + ")+'_1033_%')")
3181 + f.tools().__setVarVal("@__val", "@__val + cast(@_recid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(@_rt as " + f.varTypes().BigIntVarchar() + ") +'_1033_'+ cast(len(@__v) as " + f.varTypes().BigIntVarchar() + ") + '_' + @__v + ','")
3182 + f.tools().If().__closeIfBlock()
3183 + f.tools().If().__closeIfBlock()
3184
3185 //TODO: verify creating stage (2111401010500) in Fac_spcrm_stage_changed ???
3186 + f.tools().If().__openIfBlock("@_ft=7166 and @__flag_order_plist=1")
3187 + f.tools().__setVarVal("@__rid", "(" + f.tools().__addLimitToSelectStmt(1,"select dm.recid from dmlkps a join dmlkps b on a.recid=b.recid join dm on b.val=dm.recid where a.ft=7149 and b.ft=7150 and a.val=@_recid and dm.rt= 2111401010500+@__rtfb") + ")")
3188 + f.tools().__setVarVal("@__n", f.tools().__functionCallCreator("sf_fetch_valstr", "@_userid", "@__stg_opn", "1044", "0"))
3189 + f.tools().If().__openIfBlock("isnull(@__n,'')<>''")
3190 + f.tools().__setVarVal("@__v", "isnull(@__v,'') + ' ' + @__n")
3191 + f.tools().If().__closeIfBlock()
3192 + f.tools().__setVarVal("@__val", "@__val"
3193 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_1033_'+ cast(len(@__v) as " + f.varTypes().BigIntVarchar() + ") + '_' + @__v + ','"
3194 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_7104_'+ cast(@__stg_opn as " + f.varTypes().BigIntVarchar() + ") + ','"
3195 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_3013_'+ @__mdts + ','"
3196 + " + cast(@__rid as " + f.varTypes().BigIntVarchar() + ") +'_'+ cast(2111401010500+@__rtfb as " + f.varTypes().BigIntVarchar() + ") +'_3009_'+ @__mdts + ','"
3197 )
3198 + f.tools().If().__addElseIfBlock("((@_ft = 7104) and (isnull(@__stage,0) = @__stg_opn) and @__postlogic=1 and "
3199 + "(@_rt not between 2111401060700+@__rtfb and 2111401060799+@__rtfb)) OR (@_ft=7166 and @__flag_order_plist=0)")
3200 + successfullFreeMessage("@__v + ' נוצרה בהצלחה.'")
3201 + f.tools().If().__closeIfBlock()
3202 + f.tools().If().__closeIfBlock()
3203
3204 + f.tools().If().__closeIfBlock()
3205 + f.indent()
3206 // add the next condition ONLY in case you have a call to updateBulkValBuilder !!
3207 + f.tools().If().__openIfBlock("isnull(@__val_is_null,0)=1")
3208 + updateBulkValBuilderNullException("@__ft_of_null_val")
3209 + f.tools().If().__closeIfBlock()
3210
3211 + __add_debug_line("'spcrm_reset_saledoc -> OUTPUT @_recid='+cast(isnull(@_recid,0) as "+f.varTypes().BigIntVarchar()+")+',@__rollb='+cast(isnull(@__rollb,0) as "+f.varTypes().BigIntVarchar()+")+',@_alf_recid='+cast(isnull(@__newrid,0) as "+f.varTypes().BigIntVarchar()+")+',@_alf_buffer=['+isnull(@__buf,'')+'],@__val=['+isnull(@__val,'')+']'")
3212 + f.tools().__setOutVarVal("@_alf_recid", "@__newrid")
3213 + f.tools().__setOutVarVal("@_alf_buffer", "@__buf")
3214 + f.tools().__setOutVarVal("@__val", "@__val")
3215 + f.sp().__endOfSPSyn();
3216
3217 String __s1 = f.sp().__spHeaderCreator(_spName, "@_userid "+f.varTypes().BigInt() + " ,@_recid " + f.varTypes().BigInt() + " ,@_rt " + f.varTypes().BigInt() + " ,@_ft " + f.varTypes().Int() + " ,@_draft " + f.varTypes().Int() + " ,@_import_call " + f.varTypes().Bit() + " ,@_res " + f.varTypes().Varchar(db_factory.FactoryUtils.__outParamsValSize)+ ",@_stmp "+f.varTypes().BigInt()+ " ,@_plogic "+f.varTypes().LargestVarchar() + " ,@_profid " + f.varTypes().Int() )
3218 + __sbody;
3219 return __s1;
3220 }
3221
3222 public static void main(String[] args) {
3223 //compileProc(ServerType.TSQL, __allocations, __dbt);
3224 new Fac_spcrm_reset_saledoc().compileProc( __allocationsEnum, __allocations, __dbt);
3225 }
3226}