403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.51
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/PHP83/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/PHP83//AutoCount.ManageAccountBook.dll
MZ����@���	�!�L�!This program cannot be run in DOS mode.

$PEL��h�" 0�I6�I �I@  J��J`���IO�I|�I8gJ��I  H.text<�I �I `.rsrc|�I�I@@.relocJ�I@B�IH�H����@{
*{
*{
*r(
}
}
}
*0[u
.N,H( 
{
{
o!
,0("
{
{
o#
,($
{
{
o%
++*0K �b_� )UU�Z( 
{
o&
X )UU�Z("
{
o'
X )UU�Z($
{
o(
X*0�rp�%{

%q�-&+�o)
�%{
%q�-&+�o)
�%{
%q�-&+�o)
�(*
*0X}(+
s,

(
(-
(.
(/
o0
%-&+(1
-rep+o)
~2

�,N(3
o4
o5
r�po)
(6
o7
��,(3
o4
�o8
o9

r�p}{r<p(+(;
(6
}{r~p(<
(6
}{r�p(+(;
(6
}{rpr�p(=
(<
(6
}{r�pr�p(=
(<
(6
}{r#p(+(;
(6
}{rQp(<
(6
}{r�p(<
(6
}{r
p(+(;
(6
}r3p(>
,'{r9p�:(<
(6
}8�r�p(>
,'{r�p�:(<
(6
}8�rYp(>
-*r_p(>
-rep(>
-rkp(>
+		,${rqp�:(<
(6
}+"{r�p�:(<
(6
}{rRp�:(<
(6
}{r�p(+(;
(6
}�

,{rp	(<
(6
},{r�p(<
(6
}
9�{rp�:(<
(6
}{r�p�:(<
(6
}{r	p�:(<
(6
}{rw	p�:(<
(6
}{r�	p�:(<
(6
}{ra
p	(<
(6
}{	{o?
o@
*0+,{�+
,{oA
(B
*0��(C
sD

sE
}sF
}sF
}sG
}	sE
}
{oH
{oI
{
oH
{
oI
(J
{oK
{oL
{oM
{oL
{oM
{r�
poN
{r�
poO
{oP
{r�
poN
{r�
poO
{oP
{rpoN
{rpoO
{	oQ
{	oR
oS
oT
{	oR
oS
oU
{	oR
oV
oW
{	rpoN
{	oX
{	rpoO
{
oK
{
oL
{	oM
{
r+poN
{
r+poO
rGpoN
(Y
{(Z
(L
{
oM
(L
{oM
([
(\
(]
(^
rSp(O
(_
{o`
{oa
{
o`
{
oa
(b
*&(
*0@
oc
�,s3
+od
}(e
�(f
�
(g
�(h
�(i
�(j
�(k
�(l
�(m
�(n
�(o
�(p
�~oq
~
or
~os
~ot
~ou
~ov
~ow
~ox
~oy
~oz
~o{
~o|
+*
*0�


	r�p(}


(~
9�
s
s�
8)o�
o�
�P%=�o�
�i�9��o�
��r�p(�
(�
�,4�iY�(�

12�+,�&�8��r�p(�
(�
�,4�iY�(�

12�+,�&�8D�r�p(�
(�
�,3�iY�(�

	1	2�+,
�&�8��r�p(�
(�
�,7�iY�(�
12�+,�&�8��rp(�
(�
�,8�iY�(�
12�+,�&�8K�rp(�
(�
�,8�iY�(�
12�+,�&�8��r)p(�
(�
�  ,7�iY�(�
12�+!!,�&�8��r1p(�
(�
�"",5�iY�(�
1�+##,�&�+P�r=p(�
(�
�$$,3�iY�(�
		1	2�+%%,	�&�o�
��&&:����o�
o�
�
,oA
��
,oA
��''9�	�%rOpds�
�%rcpds�
�%rqpds�
�%r�pds�
�%r�pds�
�%r�p<ds�
�%r�pds�
�%r�p<s�
�%r�pds�
�(()*8�)*�+r�p+o�
rY
p(�
(+o�
(�
,,+o�
1,+o�
0,[+,+o�
rOp(>
--,,�..,,8^+o�
rcp(>
//,,�00,,82+o�
rqp(>
11,,	�22,,
8+o�
r�p(>
33,,�44,,8�+o�
r�p(>
55,,�66,,8�+o�
r�p(>
77,,�88,,++o�
r�p(>
99,,�::,,+T+o�
r�p(>
;;,,�<<,,+)+o�
r�p(>
==,,	�>>,,	�&�*X**)�i?����&�(�

r]
p(%0(0$	0 00000	�+??9#�(+(�
(�
(�
(�
@�AA,)@.��%�U�(�
(�
(�
@�BB,)@/��%�U�(�
(�
(�
@	�CC,)@0��%	�U�(�
(�
(�
@�DD,*@1��%�U�(�
(�
(�
@�EE,*@2��%�U�(�
(�
(�
@�FF,*@3��%�U�(�
(�
(�
@�GG,*@4��%�U�(�
(�
(�
@�HH,*@5��%�U�(�
(�
(�
@	�II,*@6��%	�U�(�
(�
(�
@@(�
JJ,KK9v�LL,ry
pr�
p�U(<
o�
�MM,r7pr�p�U(<
o�
	�NN,r�prGp	�U(<
o�
�OO,r�pr	p�U(<
o�
�PP,rmpr�p�U(<
o�
�QQ,r/pr�p�U(<
o�
�RR,r�prEp�U(<
o�
�SS,r�pr�p�U(<
o�
	�TT,rSpr�p	�U(<
o�

o�
rp(%
o�

U+U*A<�(�(+T'{�+��,$M,y�+��,"H,tMX�
Cr�
��]]x0%~2
~2
~2
(
+*0`s�
}D}E(�
�,$(�
&�&�		o�
	s�
zr9pr?ps�
(�
o�
r9ps�
(�

(
	�

,8�(�
o�
o�
o�
o�
o�
rApo�
	(�
�,o�
o�
o�
rYp	o�
(�


(�
o�
(e
�(f
�
(g
�(h
�(o
�(i
�(j
�(k
�(l
�(m
�~oq
~
or
~os
~ot
~o{
~ou
~ov
~ow
~ox
~oy
{Do�
�,~��s�
o�
{Eo�
�,~��s�
o�
~~I%-&~H��s�
%�Io�
~~J%-&~H��s�
%�Jo�
~~K%-&~H��s�
%�Ko�
(�
s�
rypo�
o�
~~L%-&~H��s�
%�Lo�
~~M%-&~H��s�
%�Mo�
s�
}Fs�
}G~��s�
o�
((&~oy
(�
{Eo0
o�
rYp(>
,-~~N%-&~H��s�
%�No�
{Eo0
o�
r3p(�
o�
(>
,5r�p(+o�
�U�,rp(+o�
&+*'25'730|	r�ps�

s�
s�
o�
s�

	o�
&	�L%	o�
r�po�
�o�
o�
o�
8�o�
t	o�
r�po�
o)
o�
�,~	o�
	o�
o�
++o�
tL		o�
	o�
o�
o�
o�
-��uM

,
oA
�o�
	o�
o�
+4r�pr�po�
o�
r	pr	po�
o�
o�
:	����uM

,
oA
�	o�
&*�8�_�]0]
rps�

s�
s�
o�
s�

	o�
&o�
o�
8�o�
t	o�
rCpo�
o)
o�
�9�	o�
	o�
o�
+_o�
tL		o�
r]p(�
,	o�
ryp(�
�+

,	o�
	o�
o�
o�
o�
-��uM,oA
�o�
	o�
o�
o�
:����uM,oA
�	o�
&*�l?�>0l	rps�

s�
s�
o�
s�

	o�
&o�
o�
8�o�
t	o�
rCpo�
o)
o�
�,~	o�
	o�
o�
++o�
tL		o�
	o�
o�
o�
o�
-��uM

,
oA
�o�
	o�
o�
+Do�
r]pr]po�
o�
ryprypo�
o�
o�
o�
:�����uM

,
oA
�	o�
&*A4�8�?M0]
r�ps�

s�
s�
o�
s�

	o�
&o�
o�
8�o�
t	o�
r1po�
o)
o�
�9�	o�
	o�
o�
+_o�
tL		o�
r�p(�
,	o�
r�p(�
�+

,	o�
	o�
o�
o�
o�
-��uM,oA
�o�
	o�
o�
o�
:����uM,oA
�	o�
&*�l?�>0l	r�ps�

s�
s�
o�
s�

	o�
&o�
o�
8�o�
t	o�
r1po�
o)
o�
�,~	o�
	o�
o�
++o�
tL		o�
	o�
o�
o�
o�
-��uM

,
oA
�o�
	o�
o�
+Do�
r�pr�po�
o�
r�pr�po�
o�
o�
o�
:�����uM

,
oA
�	o�
&*A4�8�?M0�
r�ps�

s�
s�
o�
s�

	o�
&	�L%	o�
rpo�
�o�
o�
o�
8o�
t	o�
rpo�
o)
o�
�9�	o�
	o�
o�
8�o�
tL	o�
	o�
o�
,9	o�
r�p(�
,&	o�
r+p(�
,	o�
r9p(�
+

,	o�
	o�
o�
o�
o�
:s����uM,oA
�o�
	o�
o�
o�
:���uM,oA
�	o�
&*A4��J_'�0c
rGps�

s�
s�
o�
s�

	o�
&	�L%	o�
rwpo�
�o�
o�
o�
8�o�
t	o�
rwpo�
o)
o�
�9�	o�
	o�
o�
+Eo�
tL	o�
	o�
o�


,	o�
	o�
o�
o�
o�
-��uM,oA
�o�
	o�
o�
o�
:"����uM,oA
�	o�
&*�R_�D0r�ps�

o�
&r�po�
s�
o�
s�
o�
&�L%o�
rpo�
�o�
r�po�
s�

	o�
&	�L%	o�
rwpo�
�o�
r5po�
s�
s�
o�
&�L%o�
ripo�
�%o�
rpo�
�o�
o�
o�
8�o�
trpo�
o)
o�
o�
-	o�
o�
�+		9�o�

o�
o�
+Eo�
tLo�
o�
o�


,
o�
o�
o�
o�
o�
-��uM,oA
�
o�
o�

o�
o�
:
����uM,oA
�o�
&*jR����0�rup(6
s�

s�
s�
o�
s�

	o�
&,G	o�
o�
+o�
to�
o�
-��uM,oA
�o�
o�
8�o�
t		o�

	o�
o�
+[o�
tLo�
o�
o�
,o�
r�p(�
+

,
o�
	o�
o�
o�
o�
-��uM,oA
�	o�
r�po�
,
r�po�
~�
�+,
r�p(�
�Co�

o�
	o�

o�
o�
:�����uM,oA
�	o�
&*ALM#p�h&��6(*0�
r�ps�

s�
s�
o�
s�

	o�
&	o�
o�
�,+	o�
	o�
o�
Yo�
rpo�
(�
Xo�
o�
8�o�
t	o�
rp%X�Uo�
	o�
o�
	+_	o�
tL
o�

o�
o�
,
o�
rp(�
�+,
o�

o�
o�
o�
	o�
-��	uM,oA
�o�
	o�
o�
o�
:����uM,oA
�	o�
&*�l0��k0�s�
}Q~{��s�
o�
s�
}O{Qrp{Oo�
�U(<
o7
}P{P��,~{��s�
o�
*0�r?p
+,o�
(�
,(�
(6

Xo�
2�r?p
8�o�
L�		,?	o�
(�


,	%X
o�
(�
(6
+r5p(6
+@A.0�+,	%X
o�
(�
(6
+(�
(6
Xo�
/	o�
�+

:H���+Zo�
L�,r5p(6
+1A.0�+,r9p(6
+(�
(6
Xo�
�-�+*0�o�
o�

8�o�
to�

+d	�o�
~�
��,Ao�
o�
o)
o�
�,r=po�
o)
o�
	X
	�i2�o�
o�
:h����uM,oA
�*��0Cs�

(�
rOp(6
o�
�,�	�%�(�
s�
zo�
&�
,oA
�o�
r�po�
,Ko�
r�po�
,9o�
r�po�
,'o�
r�po�
,o�
r�po�
�+,s4zrp(�
9�o�
r�po�
o�
o�
8�o�
t		rCpo�
o)
rp(�
,C	rCpo�
o)
r3p(�
o�
(�
,	rCpo�
o)
o�
�+

,	rCpo�
o�
:n����uM,oA
�o�
r�po�
o�
o�
+Wo�
t

rpo�
~�
.
rpo�
o)
o�
�+,
rp~�
o�
o�
-��uM,oA
�o�
�9�s�
o�
r#p�3(C
o�
&o�
r=p�3(C
o�
&�L%o�
r#po�
�o�
o�
r�po�
o�
o�
+Ko�
tr1po�
o)
(o�
�%�%�o�
&o�
-��uM,oA
�r?pr=po�
r?ps�
+Q�r=po�
o)
(�
(�
�,�r#po�
o�
&X�i�-�8_o�
o�
o)
o�
�9-r=po�
o)
o�
 ! Y"8�#8�0#X(�
$"o�
$��%%9�s�
&)+4)"��**,&)o�
o�
&+
&$o�
&)X))o�
�++-�&o)
'r5p'(�
(<
o7
((��,,,r=p'o�
!+#X##	��--:*���!..,+"Y""��//:����Xo�
�00:����o�
r�po�
�3%r1p�%rp�( o�
r�po�
�3%rWp�%rop�( o�
r�po�
�3%r�p�%r�p�( o�
r�po�
�3%r�p�%r�p�%r�p�( o�
r
po�
�11,'o�
r
po�
�3%rp�( {o�
s�

	o�
	o�
r�po�
(	r�po�
r�po�
(	r�po�
r�po�
(	r�po�
r�po�
(	o�
r�po�
(o�
r
po�
�22,o�
r
po�
(�33(�
��	o
	o
�*L"7Y
���d4�X3_�!S_�10#s�
}R{o�
s�
o�
rps�
s�

s�
	o�
&o�
o�
�,o�
o�
o�
+o�
o�
rCp{Ro�
r1po�
rOpo�
ripo�
o�
	s�
	o�
&~{��s�
o�
�(�
��o
o
�*�S�0�r�p(�
�
,r�p8�r�p(�
�,r�p8�r�p(�
�
	,r+p8trAp(�
�,rap8Trwp(�
�,r�p84r�p(�
�,r�p8r�p(�
�,rp8�r+p(�
�,rap8�rwp(�
�		,r�p8�r�p(�
�

,r�p8�rp(�
�,r9p8trOp(�
�,r}p8Tr�p(�
�

,r�p84r�p(�
�,rp8r)p(�
�,rUp8�rkp(�
�,r�p8�r�p(�
�,r�p8�r p(�
�,r- p8�rC p(�
�,r� p8tr� p(�
�,r� p8Tr� p(�
�,r!p84r7!p(�
�,ri!p8r�!p(�
�,r�!p8�r�!p(�
�,r�!p8�r"p(�
�,r1"p8�rK"p(�
�,ry"p8�r�"p(�
�,r�"p+wr�"p(�
�,r#p+Zr#p(�
�,rK#p+=ra#p(�
�,r�#p+ o�
�,o
++*0�r�#ps�

s�
s�
o�
s�

	o�
&	�L%	o�
r�#po�
�o�
	o�
o�
+o�
to�
o�
-��uM,oA
�o�
o�
8	o�
t	o�
		o�
o�

8�
o�
tLo�
r�#p(�
�,*	o�
o�
o�
o)
(#o�
+Oo�
r�#p(�
�

,	o�
�Uo�
+	o�
o�
o�
o�

o�
:P����
uM,oA
�	o�
	o�
	o�
o�
:���uM,oA
�	o�
&*AL_#������0�r�#ps�

s�
s�
o�
s�

	o�
&	�L%	o�
r�#po�
�%	o�
rG$po�
�o�
	o�
o�
+o�
to�
o�
-��uM,oA
�o�
o�
8o�
t	o�
		o�
o�

8�
o�
tLo�
r�#p(�
�,*	o�
o�
o�
o)
(#o�
+Qo�
r�#po
��

,	o�
�Uo�
+	o�
o�
o�
o�

o�
:N����
uM,oA
�	o�
	o�
	o�
o�
:���uM,oA
�	o�
&*ALr#������0�rQ$ps�

s�
s�
o�
s�

	o�
&	�L%	o�
r�po�
�o�
o�
o�
8o�
t	o�
	o�
o�
8�o�
tLo�
r�$p(�
,o�
r�$p(�
�+		,*o�
o�
o�
o)
(#o�
+5o�
o�
o�


,o�
o�
o�
o�
o�
:S����uM,oA
�o�
	o�
o�
o�
:���uM,oA
�	o�
&*A4��=_x0�r�$ps�

o�
&r%ps�
s�
s�

o�
s�
o�
&�L%o�
rC%po�
�o�
r[%ps�
o�
o�
8.o�
to�
�%rC%po�
�o
�		,8�o
o
o
r*prC%po�
o
&o
r.*pr�#po�
o
&o
r:*prR*po�
o
&o
rh*prz*po�
o
&o
r�*pr�*po�
o
&o
r�*pr�*po�
o
&o
r�*pr�*po�
o
&o
r�*pr+po�
o
&o
r+pr$+po�
o
&o
r0+prL+po�
o
&o
rf+pr�+po�
o
&o
r�+pr�+po�
o
&o
r�+pr�+po�
o
&o
r,pr*,po�
o
&o
rF,prd,po�
o
&o
r�,pr�,po�
o
&o
r�,pr-po�
o
&o
r,-pr@-po�
o
&o
rR-pr^-po�
o
&o
rh-pr~-po�
o
&o
r�-pr�-po�
o
&o
r�-pr�-po�
o
&o
r�-po
o�
r�po�
-(�
�C+r�po�
o
&o�
&o�
:����uM

,
oA
�r.po�
o�
&r%ps�
s�
s�

o�
s�
o�
&�L%o�
rC%po�
�o�
o�
o�
8o�
to�
�%rC%po�
�o


�9�
o�
o�
o�
8�o�
tLo�
r�p(�
-o
o�
r�po�
�+,+9o�
rC%p(�
�,
o�
o�
o�
o�
o�
:t����uM

,
oA
�
o�
o�
:���uM

,
oA
�o�
&*AL�A���?Om0irJ.ps�

s�
s�
o�
s�

	o�
&	�L%	o�
rv.po�
�o�
	o�
o�
+o�
to�
o�
-��uM,oA
�o�
o�
8�o�
t	o�
		o�
o�

8,
o�
tLo�
r�.p(�
�,wo�
r�.po	
��

,	o�
r�.po�
o�
+7o�
r�.po	
��,	o�
r�.po�
o�
8�o�
r�.p(�
�,Ro�
r�.po	
��,	o�
r�.po�
o�
+	o�
(

o�
+	o�
o�
o�
o�

o�
:����
uM,oA
�	o�
	o�
	o�
o�
:c����uM,oA
�	o�
&*AL_#��?��J0�r�ps�

s�
o�
s�
o�
&�L%o�
rpo�
�o�
r�.po�
s�

s�
o�
&�L%o�
r�.po�
�%o�
rpo�
�o�
o�
o�
+o�
to�
o�
-��uM,oA
�o�
o�
8�o�
t	o�
	rpo�
o�
�

,To�
r�.p	r�.po�
o�
rp	rpo�
o�
o�
o�
o�
o�
:p����uM,oA
�o�
&*�#����0dr/ps�

s�
s�
o�
s�

	o�
&	�L%	o�
rB/po�
�o�
	o�
o�
+o�
to�
o�
-��uM,oA
�o�
o�
8�o�
t	o�
		o�
o�

+-
o�
tL	o�
o�
o�
o�

o�
-��
uM,oA
�	o�
	o�
	o�
o�
:h����uM,oA
�	o�
&*(_#��:
��E0�o�
s�

o�
(o
o
rh/p(+o�
�U�r�ps�

	s�
s�
r�po
&_,	rW0po�
+E-�+,	r�0po�
+$�		,	rR1po�
+	r�1po�
r�po
&o�
r�po�
o�
o�

+@
o�
trCpo�
o)
(�
�,rCpo�

o�
-��
uM

,
oA
�	r�#po�
rd2po
&	r�#po�
r|2po
&�&�	r�2po�
r�2po
&	rQ$po�
r�po
&	r�2po�
r�po
&	r3po�
r�po
&	rF3po�
rl3po
&	rv3po�
r�3po
&	rpo�
r�3po
&	r�3po�
r�3po
&	r�po�
r4po
&	rGpo�
r4po
&	r04po�
r�4po
&	r�4po�
r5po
&	r55po�
rw5po
&	r5po�
r�5po
&	rJ.po�
rv.po
&	r/po�
r�5po
&,	r�5po�
r�5po
&r�2po�
r�2po�
(o�
r�po�
(,r�5po�
r�5po�
(o�
r�3po�
(o�
r�po�
(o�
r�3po�
(o�
rd2po�
($,o�
r|2po�
(%o�
rv.po�
((o�
r�5po�
(*o�
r�po�
(o�
r�po�
(&r�po�
r�po�
(rl3po�
rl3po�
(r�3po�
r�3po�
(r�3po�
r�3po�
(o�
r4po�
(o�
r4po�
(r�4po�
r�4po�
(r5po�
r5po�
(rw5po�
rw5po�
(o�
r�5po�
(o�
r�po�
(�o
o
�*AL�M;o"�
��0o�
s�

o�
(o
o
r6ps�
s�

s�
	r56po
&o�
r56po�
o�
o�
+?o�
trCpo�
o)
(�
�,rCpo�
o�
-��uM,oA
�rC6po�
	r~7po
&r�7po�
	r�7po
&r�7po�
	r8po
&r"8po�
	r�8po
&r�8po�
	r.9po
&o�
r~7po�
('r�7po�
r�7po�
(r8po�
r8po�
(r>9po�
r56po�
(r�8po�
r�8po�
(r.9po�
r.9po�
(�o
o
�*A4gL�
��0�o�
s�

o�
(o
o
rL9ps�
s�

s�
	rz9po
&o�
rz9po�
o�
r�9po�
�,-o�
rz9po�
o�
r�9p�3(C
o�
&o�
rz9po�
o�
o�
+ko�
trCpo�
o)
(�
�,rCpo�
r�9po�
~�
�		,r�9p(

o�
o�
-��uM

,
oA
�r�9po�
	r~7po
&r�:po�
	r!;po
&r=;po�
	rs;po
&r�;po�
	r�8po
&r<po�
	r.9po
&o�
r~7po�
('r!;po�
r!;po�
(rs;po�
rs;po�
(rz9po�
rz9po�
(r�8po�
r�8po�
(r.9po�
r.9po�
(�o
o
�*A4�x5
r0mo�
o�

+2o�
tr�<p{(

�oo�
o�
o�
-��uM,oA
�r�<p(*>L0mo�
o�

+2o�
tr�<p{(

�oo�
o�
o�
-��uM,oA
�r�<p(*>L0|o�
s�

o�
r�<ps�
s�
s�

	r�<po
&r=po�
	r-=po
&r==po�
	ri=po
&ry=po�
	r�<po
&r�=po�
	r�po
&�9&	o�
r�po�
o�
o�
8�o�
to�
r�=p~�
o�
r�=p~�
o�
r	>p~�
o�
r)>p~�
o�
rM>p~�
o�
rw>p~�
o�
o
o�
r�>po�
,r�>p~�
o�
r�>p~�
o�
r�>p~�
o�
o�
o�
:����uM,oA
�r�>po�
	rpo
&r)?po�
	rY?po
&rm?po�
	r�?po
&r�?po�
	r�?po
&r@po�
	r=@po
&r�p	o�
r�po�
(rp	o�
rpo�
(rY?p	o�
rY?po�
(r�?p	o�
r�?po�
(r�?p	o�
r�?po�
(	o�
r�<po�
(.r-=p	o�
r-=po�
(ri=p	o�
ri=po�
(	o�
r�<po�
(/r=@p	o�
r=@po�
(�o
o
�*A4���
]j0�o�
s�

o�
r]@ps�
s�
s�

	r�@po
&r�@po�
	r�@po
&r�.po�
	r�@po
&	o�
r�@po�
o�
o�
�9(�
s
o
r�@p(
�9��T(C
(
tT	o�
o�

8�
o�
tr�@po�
o)
	s
o


,
o
�+,+7s

(
r	Apo
o�
�
,oA
�
o�
:o����
uM,oA
�r�@p(r�@p	o�
r�@po�
(	o�
r�@po�
()�o
o
�*ALG"i
���
��0� {o�
s�

o�
,(+,(,
	,(-,
(0,	(1�(�
��o
o
�*btSr�"(*z��%�(�
(�
*0$!r9pr?ps

(�
o
&*09"s�

o�
r'AprAAp(
o�
&o�
rAprAAp(
o�
&o�
r]AprAAp(
o�
&o�
rkApr�Ap(
o�
&o�
r�AprAAp(
o�
&r9pr?ps
(�
o

	o�
o�
8Jo�
tr9pr�#po�
o)
s
(�
s
o
r�Ap(>
9�s
o
		r�Ap(
��

9�r�Ap(+o
�9�o�


r'Apr�#po�
o)
o�

rAprApo�
o)
o�

r]Apr]Apo�
o)
o�

rkAprkApo�
o�

r�Ap	o�
o�

o�
�&�o�
:�����uM,oA
�+*A4��]0z#o�
�
9h(6o�
o�

8�	o�
t8B(3
o4
o
o
(�
-#o
r'Apo�
o)
(�
�+9�rkApo�
(�
( 
	o9
rApo�
o)
(�
-No!
r]Apo�
o)
(�
-/o"
	(#
-o$
r�Apo�
o)
(�
+

,YrApo�
o)
o%
r]Apo�
o)
o&
	o'
r�Apo�
o)
o(
X(3
o4
o)
�:����,{(3
o4
r9pr'Apo�
o)
r?pr?prApo�
o)
r]Apo�
o)
rkApo�
(�
r�Apo�
o)
o*
	o�
:�����	uM

,
oA
�(3
o4
o)
Y8�(3
o4
o
o
(�
�9�o�
o�
+=o�
to
r'Apo�
o)
(�
�,+
o�
-��uM

,
oA
��,(3
o4
o+
Y��:&���,(3
o4
o,
� &��%�(�
(-
�*AL*
7�J�FX �(3
o4
o.
(3
o4
o/
(7*0#$s<
}(0
}(1
*04%(2
u
�,+{Q{(3
Q+*"(
*0�&}(+
s,

(G(-
(.
(/
{07��%(4
o5
�(�
o?
s6
r_Bp(7
{%-&+o8
o@
*0P's9

o:
��,2��%(4
o5
�%o;
�(�
(-
++*0({'o<
o�

{&o<
o�
o�
�		,�(+(�
(=
8�o�
�

,	�(+(�
(=
8�{o>
,r9pr�Bp
+${)o<
o�
{(o<
o�

	r?ps�
(�
o?
�5
�z�%
o�
�(�
(-
(@
��(>�,8�	s�
r?pr?p(�
s
o
s
o
�So�
(=
(@
�n&
��%(4
o5
�(�
(=
(@
�9,r�Ap(�
+,4
��%(4
o5
�(�
(=
(@
8�oA
(B
�&�r�Bp(+o
�,lrkApo�
(�
(3
o4
	r?pr?prApo�
o)
r]Apo�
o)
o*
(3
o4
o,
+#"�(+(�
(=
(@
�%�o�
(-
(@
�(@
*@��5dO,{dO,�5.4��Y�{07��%(4
o5
�(�
o?
*0�){'o<
o�

o�
�
	,�(+(�
(=
+f{o>
,r�Bp+{(o<
o�
r9psC
oD
�,{&oE
o?
�
o
�*p%�
05*sF

oD
�,{'oG
o?
�
o
�*#*
�{){o>
�oH
{({o>
�oH
*0K{){o>
oH
{({o>
oH
{(oI

,{(oJ
&*0>+{'o<
{o>
{(o<
sH
oD
&�
o
�*(3
0,,
,{�,{oA
(B
*0��
(C
sD

sF
}"sF
}%sK
}-sL
}(sK
},sK
}+sK
}0sF
}#sF
}$sL
}'sL
}&sM
}sF
}!sE
}sL
})sK
}*sM
}sE
} sK
}/sG
}.{(oN
oH
{'oN
oH
{&oN
oH
{oO
oH
{oH
{oI
{)oN
oH
{oO
oH
{ oH
{ oI
(J
{"oP
{"r!CpoN
{"r!CpoO
{%oP
{%r�
poN
{%r�
poO
{%�?sP
oQ
{-r7CpoN
{-r7CpoO
{(rECpoN
{(rECpoO
{(oN
*oR
{,riCpoN
{,riCpoO
{+rwCpoN
{+rwCpoO
{0r�CpoN
{0r�CpoO
{#r�CpoN
{#r�CpoO
{#�AsP
oQ
{$r�CpoN
{$r�CpoO
{$�BsP
oQ
{'r�CpoN
{'r�CpoO
{&r�CpoN
{&r�CpoO
{rDpoN
{rDpoO
{oO
rADpoS
oT
{oO
oU
{�CsP
oV
{!r�DpoN
{!r�DpoO
{!�EsP
oQ
{oK
{oL
{)oM
{oL
{*oM
{oL
{oM
{oL
{ oM
{oL
{#oM
{oL
{$oM
{oL
{'oM
{oL
{&oM
{oL
{oM
{oL
{"oM
{oL
{%oM
{oL
{-oM
{oL
{(oM
{oL
{,oM
{oL
{+oM
{oL
{0oM
{r�
poN
{r�
poO
{)r�DpoN
{)r�DpoO
{*r�DpoN
{*r�DpoO
{r�DpoN
{r�DpoO
{oO
rEpoS
oT
{oO
oU
{oW
{�DsP
oV
{ oL
{/oM
{ oL
{.oM
{ oL
{!oM
{ r+poN
{ r+poO
{/r[EpoN
{/(X
oY
{/r[EpoO
{.oZ
{.oR
oV
o[
{.oR
oV
oW
{.(X
oY
{.riEpoN
{.riEpoO
rGpoN
(Y
(L
{oM
([
(]
(^
r�Ep(O
(_
(\
�@sP
(]
{(oN
o`
{'oN
o`
{&oN
o`
{oO
o`
{o`
{oa
{o^
{)oN
o`
{oO
o`
{ o`
{ oa
{ o^
(b
*0�-}1(+
s,

(Q(-
(.
(/
{>o?
{3o_
�,
{=o?
s6
r�Ep(7
{1%-&+o8
o@
*0�.s`

r�Epoa
ob
�9�{;oc
o?
oc
(d
o�
��
	,B{<oc
(e
~f
(�
o�
Yo
r9Fp(g
o?
+!{<{;o<
rKFp(h
o?
�
o
�*��
0A/s`

rUFpoa
ob
�,{<oc
o?
�
o
�*/6
00{>o<
o�

{:o<
o�
o�
�,�(+(�
(=
8�o�
�,	�(+(�
(=
8�{;o<
o�
o�
�,�(+(�
(=
8`{3o>
,r�Bp+{=o<
o�
r9pr?ps�

	(�
o?
		

,*�(+(�
(=
{:oJ
&���5�z�%o�
�(�
(-
(@
ݦ	(>�

,8�{2o>
,+{;o<
o�
{<o<
o�
oi
+{;o<
o�
r?poi
�o�
(=
� 8�(+(�
(j
(@
*�@=5d�^�d05*sF

oD
�,{>oG
o?
�
o
�*#*
07{={3o>
�oH
{=oI

,{=oJ
&*R{3~k
(M*0Q1{;o<
(d
ol

r�Fpom
,{:o�
Yo
o?
+
{:o?
*0,,
,{1�,{1oA
(B
*0��(C
sD

sK
}@sL
};sL
}<sF
}5sF
}9sF
}8sF
}6sL
}:sK
}AsM
}3sL
}>sF
}7sK
}BsL
}=sK
}CsE
}4sG
}?sM
}2{;oN
oH
{<oN
oH
{:oN
oH
{3oO
oH
{>oN
oH
{=oN
oH
{4oH
{4oI
{2oO
oH
(J
{@rwCpoN
{@rwCpoO
{;r�FpoN
{;r�FpoO
{;�OsP
on
{<r�FpoN
{<r�FpoO
{5r�FpoN
{5r�FpoO
{5�IsP
oQ
{9r�FpoN
{9r�FpoO
{9�JsP
oQ
{8oP
{8r�
poN
{8r�
poO
{8�KsP
oQ
{6oP
{6r!CpoN
{6r!CpoO
{:r�CpoN
{:r�CpoO
{Ar7CpoN
{Ar7CpoO
{3rGpoN
{3rGpoO
{3oO
r?GpoS
oT
{3�MsP
oV
{>r�CpoN
{>r�CpoO
{7r�CpoN
{7r�CpoO
{7�LsP
oQ
{Br�GpoN
{Br�GpoO
{=r�GpoN
{=r�GpoO
{=oN
*oR
{Cr[EpoN
{Cr[EpoO
{4oK
{4oL
{?oM
{4oL
{2oM
{4oL
{@oM
{4oL
{AoM
{4oL
{3oM
{4oL
{>oM
{4oL
{7oM
{4oL
{BoM
{4oL
{=oM
{4oL
{CoM
{4oL
{;oM
{4oL
{<oM
{4oL
{5oM
{4oL
{9oM
{4oL
{8oM
{4oL
{6oM
{4oL
{:oM
{4r�
poN
{4r�
poO
{?oZ
{?oR
oV
o[
{?oR
oV
oW
{?(o
oY
{?r�GpoN
{?r�GpoO
{2r�GpoN
{2r�GpoO
{2oO
r�GpoS
oT
rGpoN
(Y
(L
{4oM
([
(]
(^
rMHp(O
(_
�NsP
(]
{;oN
o`
{<oN
o`
{:oN
o`
{3oO
o`
{>oN
o`
{=oN
o`
{4o`
{4oa
{4o^
{2oO
o`
(b
*0~2}H}I}J�3%rsHp�%r{Hp�%r�Hp�%r�Hp�}O}P}Q(+
s,

(�(-
(.
(/
}D{D-+{Dop
}Er�Hp(}
(~
}P{E(�
}N{�9��%(4
o5
�(�
o?
�i%{��%{��%{��%{��}F{��`s�oq
{��as�oq
{��bs�oq
{��ds�oq
{�(r
o?
([~2
(\(s
ot
ou
r�Hp(>

	,+{bov
ow
r�Hpox
{boy
{�ov
ow
oz
{�ov
ow
Љ(C
({
o|
{�oy
{�o}
{vo}
s6
r�Hp(7
{Q%-&+o8
o@
*0�3r�Hp(~
u

�9�{�,{Zo_
+m{Yo_
{s{�o?
{�
	,{_o_
+3{`o_
{u{�o?
{t{�o?
*0�4s�
{Zo>
}�{Yo>
,U{so<
}�{_o>
}�{��,${uo<
}�{to<
}�r�Hp(
*^(X(](V*0g5{E�
,{d(W{c(W{Es�
{do�
r%Ipo�
{co�
r%Ipo�
*0ro�
o�
o�
o�
o�
r�po�
o�
 's�
o�
o�
 �s�
o�
o�
o�
r/Ipo�
*0q6{d(�

(�
s�
o�
{c{do�
o�
{fo�
{�rQIpo�
{�o}
{�o�
*0F7{fo�
%-&+o)

rWIp(>
,{�o�
%-&+o)

+*�([(Y(\{�o�
*0T{Ds�
}K{K{fo�
o�
&{Ds�
}L{L{�o�
o�
&*0,�
,!{�o}
{�o}
8�{�o}
{�o}
{Ds�
}M{M{�o�
{Oo�
&{�o�
{�o�
�,D{�o�
o�
o�
{N{N{�o�
o)
o�
o0
o�
+&{�o�
o�
o�
rsIp(�
o�
*08{rryIpo?
{eo�

rApo�
r�Ipo�
r?po�
(3
o4
o5
o�
o�
oz
o�
rApr�Ip s�
o�
&o�
r]Apr]ApPs�
o�
&o�
r�Apr�Ip<s�
o�
&o�
r�Ipr�Ipds�
o�
&o�
r'Apr�Ipds�
o�
& Xo�
*0�9{Zo>

,>{P,rJpQr?pQr?pQ+r+JpQr9pQr�BpQ+[{so<
o�
Q{_o>
,r9pQr�BpQ+&{uo<
o�
Q{to<
o�
Q*0N:(^(�
r?ps�

	(>�,��&�+*1?30�;{_o>
-{to<
o�
o�
�+,7$�(+(�
(�
�,{toJ
&84(_�,!�(+(�
(=
8(^�P%\�o�
��P%,�o�
�
	o�
rGJp(>
-
	rWJp(>
+,(�
ol

{���%�(�
o?
{E�		9{E(�
o�

{E	
s�
o�
}G{�{Go�
o?
{�o�
{�o_
{���%	�(�
o?
{��(+(�
o?
�i&{�o�
{�o_
{�oH
{���%	�(�
o?
{��(+(�
o?
��o�
�+K{�o�
{�o_
{�oH
{�~2
o?
{�~2
o?
+*P��iP�;0w<{�o<
o�
o�
�,-
�(+(�
(�
{�oJ
&8({�o<
o�
o�
�,-�(+(�
(�
{�oJ
&8�{�o<
o�
o�
�		,-�(+(�
(�
{�oJ
&8�{�o<
o�

(^r?ps�
(�
	o?


,.��%	�(�
(-
{�oJ
&��o�
(=
�+*@Yd0={do�

(�
��,-�(+(�
(=
{doJ
&8�{co�
(�
,-�(+(�
(=
{coJ
&8u(�
��,-�(+(�
(=
{coJ
&85(�
Z(�
X(�
Z(�
X
	Y��		,-�(+(�
(=
{coJ
&8�(Y�

,--�(+(�
(=
{foJ
&8�{ao>
,{vo<
o�
o�
�+,-�(+(�
(=
{voJ
&87{Jo�
{No0
o�
(�
,r�p(�
+,@*��%{No0
o�
�(�
(�
�

,8�{Jo�
r�p(�
o�
(>
,C{bov
ow
r[Jpo�
�,{bov
ow
r[Jpox
+D{bov
ow
o�
o)
r[Jp(>
,{bov
ow
o�
{boy
+*0^,{\o>
-{^o>
-{]o>
�+
,(�(+(�
(-
{\oJ
&++*0�>{ro<

r�Jp
+A	o�
o�
�,!�(+(�
(=
8�	X
	o�
2�{Vo>
9z{So>
-{Xo>
-
{Wo>
+9{eo�
�		,,�(+(�
(-
{eoJ
&8{Wo>


9�(3
o4
o5
r�p{eo�
�U(�
(6
o7
��

,(3
o4
�o8
o
o�
o�
o
s�
(�
s
o
r�@p(
�,;�(+(�
(j
+):�(+(�
(-
{SoJ
&++*0"?r�Jpo�
o�
o�
(�

+*0=2
{F�i�+
,%{F�s�
o�
{F�o�
*0n(f{p�oH
{F�iY�
,{oG�(+(�
o?
+{oH�(+(�
o?
}H*0K@{F{H�o�
�
,+{F{H�o�
tAo��,
+
+	*0VA(h�
,8B{H{F�iY�9{�o<
{do�
{co�
{N(Y{Jo�
o)
{ao>
{�o>
{ro<
{Ro>
{[o>
{bo�
%-&+o)
{Vo>
{So>
{Uo>
{To>
{Xo>
{Wo>
{eo�
%-&+o)
soD

	��,�'�,oA
�}I+{HX(g*10{H�
,{HY(g*02B{N{Eo�
�
o�
(=
�(Z*3&(j*0#(i{I
,(�&(�
*0;{P
,(o{Z~k
(u(U(S(g*0�{�~2
o?
{Yo}
{{o}
{so}
{no}
{_o}
{`o}
{yo}
{uo}
{�o}
{to}
*0,{�o<
(r
(�

,{�o<
(�
*0$%�(+(�
(�

,(�
*0.{]o>
,
{^o>
+
,
{^o_
*0.{]o>
,
{^o>
+
,
{]o_
*0�C{�o<

r?p
+;	o�
(�
,(�
(6
+(�
,+	X
	o�
2�o�
�,{�r�Jp(6
o?
*0P{soH
{noH
{_oH
{`oH
{uoH
{toH
*0�{soH
{noH
{_oH
{`oH
{u{_o>
�oH
{t{_o>
�oH
{soI

,{soJ
&*0Z,{�{�o>
o�
{�oI

,{�oJ
&{�o>
,{�{Go�
o?
*0C*sF

oD
�, {soG
o?
{toJ
&�
o
�*18
0Q{u{_o>
�oH
{t{_o>
�oH
{uoI

,{uoJ
&*04{v{ao>
oH
{ao>

,{voJ
&*0*D(Y
(\�9�{�o�
o�
o�
{No0
o�
{�o�
o�
o�
{No0
(eo�
{No0
}J{�o�
{Jo�
rYp(>
,-{�oy
{�{a%
o_
	o_
++{�oy
{�{a%
o_
	o_
r3p(>
,){�r�Jpo?
{ar5Kpo?
8�r�p(>
,){�ryKpo?
{ar�Kpo?
8�rYp(>
-'r_p(>
-rep(>
-
rkp(>
+,&{�r1Lpo?
{ar�Lpo?
+${�r�Lpo?
{arSMpo?
{�{fo�
%-&+o)
rWIp(>
o}
*0�{�o�
�
9�{�oH
{�o}
{�{N{N{�o�
o)
o�
o0
(eo?
{�o�
o�
o�
{N{N{�o�
o)
o�
o0
o�
+{�oH
{�o}
{�o�
tk}J*0�,{�o�

,8{�{N{N{�o�
o)
o�
o0
(eo?
{�o�
o�
o�
{N{N{�o�
o)
o�
o0
o�
{�o�
,?{�{�o�
o�
o�
o�
o�
{�o�
tk}J*0>(_
,<�(+(�
(�
+�(+(�
(=
*0�{U{So>
oH
{T{So>
oH
{So>

,8{Uo_
{To_
{Xo_
{Wo_
+{Uo_
{To_
{r{So>
�oH
*f{c{do�
o�
*0�{b{[o>
oH
{w{Vo>
oH
{wo�

,+{So_
{Xo_
{Wo_
+){So_
{Xo_
{Wo_
*f{�{�o>
o}
*0�E(^{�o<
o�

{�o<
o�
~2
{E�,&{EriMp�%�:�o�
o)
{Vo>
9�(3
o4
o5
r�p{eo�
�U

(�
(6
o7
		��,;(3
o4
	�o8
o
o�
o�
o
s�
	{�o<
{do�
{co�
{Jo�
o)
(Y(�

,�E݇o�
(=
�&o�
(=
�
o�
(=
��o�
(�
u�,to�
(=
ݸ	s�
(�(�(�(�{Jo�
o)
(�(�(�{�o<
o�
(3
o4
	r?pr?pr?p(�
(�
r�@po*
(3
o4
o,
�o�
(-
��>�(+(�
(�
(�
�9�	s�
r�Bp(�
�,~2
+�(+(�
(�
,b{E{�o<
o�
	s�
o�
�,=�(+(�
(j
�
,oA
�+*A�12cw12|512�x12�<Y���Y^/�
0WF(
{Jo�
{Jo�
{Jo�
r?po{N(Yo0
o�
{Jo�
(�
9�{N(Yo0

	�9�r�Mpo�
o�
rCp	o�
o�
r1p	o�
o�
rOp	o�
o�
r�Mps�
�o�
r�Mp �s�
�o�
rNp�Uo�
r�p(�
�Co�
o�
o�
o�
&*0cG(�

(f
(g
o�
or
��s�
o�
��s�
o�
��s�
o�
*0�Hs�
s�
}S{So�
{So�
{So�
{Jo�
{N(Yo0
o�
(�
,{So�
(�
o�
��s�
o�
*06I{So>
,+#(�

o�
��s�
o�
*0�J{[o>
�
	,8z(
r?prep{bo�
�,{bo�
o)
r�Hp(>
,r'Np8mrep(>
,)r�p(�
o�
(>
-rKNp+rcNp83rNp(>
,)r�p(�
o�
(>
-r�Np+r�Np8�r�Np(>
,)r�p(�
o�
(>
-rOp+r?Op8�rcOp(>
		,)r�p(�
o�
(>
-r�Op+r�Op8�r�Op(>


,&r�p(�
o�
(>
-rPp+rPp+Nr?Pp(>
,&r�p(�
o�
(>
-riPp+r�Pp+r[Jp(>
,r�Ppr�Hp(>


9sr�Pp(+o�
&r~Qp(+o�
&r!Rp(+o�
&r�Rp(+o�
&rgSp(+o�
&r�Sp(+o�
&rrTp(+o�
&rAUp(+o�
&rmUp(+o�
&r.Vp(+o�
&r�Vp(+o�
&r�Wp(+o�
&ruXp(+o�
&rXYp(+o�
&r!Zp(+o�
&r�Zp(+o�
&r�[p(+o�
&r�\p(+o�
&rQ]p(+o�
&r^p(+o�
&r�^p(+o�
&r�_p(+o�
&r�_p(+o�
&r5`p(+o�
&(�
(�
(�
(�
(n
(�
(�
(�
o�
o�
o�
o�
oz
o�
o�
o�
~U%-&~T��s�
%�Uo�
~V%-&~T�s�
%�Vo�
~W%-&~T�s�
%�Wo�
~X%-&~T�s�
%�Xo�
~Y%-&~T�s�
%�Yo�
~Z%-&~T�s�
%�Zo�
~[%-&~T�s
%�[o
~\%-&~T�s
%�\o
r�`p(+o�
&o�
�,#{Jo�
o)
{ro<
o
*0�K(h

(
(
ot
o
o
~]%-&~T�s�
%�]o�
~^%-&~T�s
%�^o	
~_%-&~T�	s

%�_o
*0�L{Vo>
�,8k{eo
t�
r�Apo

o)
r�ap(
�,�(+(�
s�
z{So>
-{Xo>
-{Wo>
�+,8�{eo�
�U(3
o4
o5
r�p(�
(6
o7
��		,8�(3
o4
�o8

	o
	o�
	o�
	o
s�
({So>
{Uo>
{To>
{Xo>
{Wo>
{Jo�
o)
o�

o�
(-
�*UrY03,(T
,{Q�,{QoA
(B
*0
lB�(C
sD

sE
}ls
}�sL
}usK
}ysM
}`sF
}qsE
}jsK
}�sM
}ZsM
}YsK
}{sF
}nsL
}tsK
}�sL
}ssG
}�sK
}�sM
}_s
}�s
}�s
}�sM
}�sF
}�sK
}�s
}�sK
}�s
}�sK
}�s
}fsK
}zsE
}isK
}�sK
}�sK
}}sG
}�sL
}vsK
}�sM
}asK
}�s
}csK
}�s
}dsK
}|sK
}~sK
}sK
}�s
}�sM
}Rs
}wsM
}SsM
}UsM
}TsM
}WsM
}XsK
}�s
}esM
}Vs
}bsG
}�sM
}[sK
}�s
}�sL
}rsK
}�sE
}ksK
}�sK
}�s
}�sG
}�sM
}]sG
}�sM
}^sE
}hsK
}�sG
}�sM
}\sK
}�s
}�sM
}�s
}�sG
}�sG
}�sG
}�sE
}�sK
}�sL
}�sK
}�sL
}�sK
}�sL
}�sK
}�sK
}�sE
}gsF
}osF
}psF
}ms6
}x{loH
{loI
{�oI
{uoN
oH
{`oO
oH
{joH
{joI
{ZoO
oH
{YoO
oH
{toN
oH
{soN
oH
{_oO
oH
{�oI
{�ov
oH
{�o�
oH
{�oO
oH
{�o�
oH
{�o�
oH
{fo�
oH
{ioH
{ioI
{voN
oH
{aoO
oH
{co�
oH
{co�
o
oH
{do�
oH
{do�
o
oH
{�oI
{RoO
oH
{woI
{SoO
oH
{UoO
oH
{ToO
oH
{WoO
oH
{XoO
oH
{eo�
oH
{VoO
oH
{bov
oH
{[oO
oH
{�oH
{roN
oH
{koH
{koI
{�oI
{]oO
oH
{^oO
oH
{hoH
{hoI
{\oO
oH
{�oI
{�oO
oH
{�oI
{�oH
{�oI
{�oN
oH
{�oN
oH
{�oN
oH
{goH
{goI
(J
{loK
{loL
{�oM
{loL
{�oM
{loL
{�oM
{loL
{�oM
{loL
{�oM
{lr�apoN
{lr�apoO
{x{lr�apo
�:o
{�(�
o
{�oL
{uoM
{�oL
{yoM
{�oL
{`oM
{�oL
{qoM
{�oL
{joM
{�oL
{ZoM
{�oL
{YoM
{�oL
{{oM
{�oL
{noM
{�oL
{toM
{�oL
{�oM
{�oL
{soM
{�oL
{�oM
{�oL
{�oM
{�oL
{_oM
{�rbpoN
{�rbpoO
{x{�r#bpo
�:o
{ur�DpoN
{ur�DpoO
{x{urEbpo
�:o
{yr{bpoN
{y(
o
{yr{bpoO
{x{yr�bpo
�:o
{`r�DpoN
{`r�DpoO
{`oO
rEpoS
oT
{`oO
oU
{x{`r�bpo
�:o
{`oW
{qr�bpoN
{qr�bpoO
{x{qr!cpo
�:o
{q�~sP
oQ
{jo
(�
o
{jo
rYcpo
�4o
{jo
r�cpo
��o
{jo
o
o
{joK
{joL
{�oM
{jr�cpoN
{jo 
o!
{jr�cpoO
{x{jr	dpo
�:o
{�(
o
{�r7dpoN
{�8s �("
oY
{�r7dpoO
{x{�rGdpo
�:o
{ZridpoN
{ZridpoO
{ZoO
r�dpoS
oT
{ZoO
oU
{x{Zr�dpo
�:o
{Z�usP
oV
{YrepoN
{YrepoO
{YoO
r1epoS
oT
{YoO
oU
{x{Yruepo
�:o
{YoW
{Y�vsP
oV
{{r�epoN
{{(
o
{{r�epoO
{x{{r�epo
�:o
{nr�CpoN
{nr�CpoO
{x{nr�epo
�:o
{n�xsP
oQ
{trECpoN
{trECpoO
{toN
*oR
{x{tr'fpo
�:o
{�r]fpoN
{�(
o
{�r]fpoO
{x{�ryfpo
�:o
{sr�CpoN
{sr�CpoO
{x{sr�fpo
�:o
{�oR
(
o
{�oR
8s �("
o#
{�oR
oS
o
{�oR
oS
o$
{�oR
oS
oU
{�oR
oV
o[
{�oR
oV
oW
{�r�fpoN
{�r�fpoO
{x{�r�fpo
�:o
{�(
o
{�r7gpoN
{�(o
oY
{�r7gpoO
{x{�rEgpo
�:o
{_rDpoN
{_rDpoO
{_oO
rADpoS
oT
{_oO
oU
{x{_regpo
�:o
{_�ysP
oV
{�(�
o
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{foM
{�oL
{zoM
{�oL
{ioM
{�oL
{�oM
{�oL
{}oM
{�oL
{�oM
{�oL
{voM
{�oL
{�oM
{�oL
{aoM
{�oL
{�oM
{�oL
{coM
{�oL
{�oM
{�oL
{doM
{�oL
{|oM
{�oL
{~oM
{�oL
{oM
{�oL
{�oM
{�r�gpoN
{�r�gpoO
{x{�r�gpo
�:o
{�r�gpoN
{�r�gpoO
{�ov
o%
��%rhpo
��s&
�o'
{�ov
o(
{�r]hpoN
{�r]hpoO
{�o�
o)
{�o�
o%
��%r}hpo
��s&
�o'
{x{�r�hpo
�:o
{��{sP
on
{�r�hpoN
{�r�hpoO
{�oO
r
ipoS
oT
{x{�rKipo
�:o
{���sP
oV
{�o*
o
oT
{�ruipoN
{�ruipoO
{��ksP
oQ
{�r�ipoN
{�(
o
{�(((("
oY
{�r�ipoO
{x{�r�ipo
�:o
{�rjpoN
{�rjpoO
{�o�
o)
{�o�
o%
��%r7jpo
��s&
�o'
{x{�r�jpo
�:o
{��}sP
on
{�r�jpoN
{�(
o
{�8s �("
oY
{�r�jpoO
{x{�r�jpo
�:o
{�r�jpoN
{�r�jpoO
{�o�
o+
{�o�
o�
��%rkpo
rkkpoS
r�kpo
�:rlpo
ralpoS
s,
�%r�lpo
rmpoS
rWmpo
�:r�mpo
r�mpoS
s,
�o-
{��|sP
o.
{�(
o
{�r�DpoN
{�(o
oY
{�r�DpoO
{x{�rMnpo
�:o
{frmnpoN
{frmnpoO
{fo�
o)
{fo�
o%
��%r�npo
��s&
�o'
{x{fr�npo
�:o
{f�{sP
on
{zr�npoN
{z(
o
{zr�npoO
{x{zr�npo
�:o
{io
(�
o
{io
r'opo
�4o
{io
roopo
��o
{io
o
o
{ioK
{ioL
{�oM
{ir�opoN
{io 
o!
{ir�opoO
{x{ir�opo
�:o
{�(
o
{�rppoN
{�8s �("
oY
{�rppoO
{x{�rppo
�:o
{�r7ppoN
{�(
o
{�8s �("
oY
{�r7ppoO
{x{�rMppo
�:o
{}ruppoN
{}(
o
{}8s �("
oY
{}ruppoO
{x{}r�ppo
�:o
{�oR
(
o
{�oR
8s �("
o#
{�oR
oS
o
{�oR
oS
o$
{�oR
oS
oU
{�oR
oV
o[
{�oR
oV
oW
{�r�ppoN
{�r�ppoO
{x{�r�ppo
�:o
{vrIqpoN
{vrIqpoO
{x{vruqpo
�:o
{�r�qpoN
{�(
o
{�r�qpoO
{x{�r�qpo
�:o
{ar�qpoN
{ar�qpoO
{aoO
rrpoS
oT
{x{arKrpo
�:o
{a�zsP
oV
{�(
o
{�r}rpoN
{�(o
oY
{�r}rpoO
{x{�r�rpo
�:o
{cr�rpoN
{cr�rpoO
{co�
o%
��%r�rpo
��s&
�o'
{co�
o
o%
��%r1spo
��s&
�o'
{x{cr�spo
�:o
{�r�spoN
{�(
o
{�8s �("
oY
{�r�spoO
{x{�rtpo
�:o
{dr&tpoN
{dr&tpoO
{do�
o%
��%rTtpo
��s&
�o'
{do�
o
o%
��%r�tpo
��s&
�o'
{x{dr+upo
�:o
{d��sP
on
{|rkupoN
{|(
o
{|rkupoO
{x{|r{upo
�:o
{~r�upoN
{~(
o
{~r�upoO
{x{~r�upo
�:o
{(
o
{r�upoN
{(o
oY
{r�upoO
{x{r�upo
�:o
{�(
o
{�rvpoN
{�(o
oY
{�rvpoO
{x{�rvpo
�:o
{�(�
o
{�oL
{RoM
{�oL
{woM
{�oL
{VoM
{�oL
{boM
{�oL
{�oM
{�oL
{[oM
{�oL
{�oM
{�oL
{�oM
{�oL
{roM
{�oL
{�oM
{�oL
{koM
{�oL
{�oM
{�r3vpoN
{�r3vpoO
{x{�rCvpo
�:o
{RrevpoN
{RrevpoO
{RoO
r�vpoS
oT
{RoO
oU
{x{Rr�vpo
�:o
{RoW
{woL
{SoM
{woL
{UoM
{woL
{ToM
{woL
{WoM
{woL
{XoM
{woL
{�oM
{woL
{eoM
{wr!wpoN
{wr!wpoO
{x{wrWwpo
�:o
{wo/
{Sr�wpoN
{Sr�wpoO
{SoO
r�wpoS
oT
{x{Sr)xpo
�:o
{S�sP
oV
{UrmxpoN
{UrmxpoO
{UoO
r�xpoS
oT
{x{Ur�xpo
�:o
{Tr5ypoN
{Tr5ypoO
{ToO
riypoS
oT
{x{Tr�ypo
�:o
{Wr	zpoN
{Wr	zpoO
{WoO
r5zpoS
oT
{x{Wr�zpo
�:o
{Xr�zpoN
{Xr�zpoO
{XoO
r�zpoS
oT
{x{Xr;{po
�:o
{�ru{poN
{�(
o
{�ru{poO
{x{�r�{po
�:o
{er�{poN
{er�{poO
{eo�
o)
{eo�
o0
(
o
{eo�
o0
o
o
{eo�
o%
��%r�{po
��s&
�o'
{x{er1|po
�:o
{Vru|poN
{Vru|poO
{VoO
r�|poS
oT
{VoO
oU
{x{Vr�|po
�:o
{VoW
{V��sP
oV
{br%}poN
{br%}poO
{bov
o%
��%rU}po
��s&
�o'
{bov
ow
�%r�}poS
�%r�}poS
�%rQ~poS
�%r�~poS
�%r�~poS
�%rMpoS
�o|
{bov
o(
{x{br�po
�:o
{�oR
(
o
{�oR
(1
o#
{�oR
oS
o
{�oR
oS
o$
{�oR
oS
oU
{�oR
oV
o[
{�oR
oV
oW
{�r�poN
{�r�poO
{x{�r�po
�:o
{[ra�poN
{[ra�poO
{[oO
r��poS
oT
{[oO
oU
{x{[r�po
�:o
{[��sP
oV
{�r_�poN
{�(
o
{�(o
oY
{�r_�poO
{x{�ro�po
�:o
{�r��poN
{�r��poO
{x{�r��po
�:o
{�o2
{rrӁpoN
{rrӁpoO
{roN
o3
{roN
o4
{x{rr��po
�:o
{�r1�poN
{�(
o
{�r1�poO
{x{�rA�po
�:o
{ko
(�
o
{ko
rc�po
�4o
{ko
r��po
��o
{ko
o
o
{koK
{koL
{�oM
{kr��poN
{ko 
o!
{kr��poO
{x{kr�po
�:o
{�(
o
{�rA�poN
{�8s �("
oY
{�rA�poO
{x{�rQ�po
�:o
{�rs�poN
{�(
o
{�(o
oY
{�rs�poO
{x{�r��po
�:o
{�(�
o
{�oL
{�oM
{�oL
{]oM
{�oL
{�oM
{�oL
{^oM
{�oL
{hoM
{�oL
{�oM
{�oL
{\oM
{�oL
{�oM
{�r��poN
{�r��poO
{x{�r��po
�:o
{�oR
(
o
{�oR
8s �("
o#
{�oR
oS
o
{�oR
oS
o$
{�oR
oS
oU
{�oR
oV
o[
{�oR
oV
oW
{�r׃poN
{�r׃poO
{x{�r�po
�:o
{]rm�poN
{]rm�poO
{]oO
r��poS
oT
{x{]rׄpo
�:o
{]�rsP
oV
{�oR
(
o
{�oR
8s �("
o#
{�oR
oS
o
{�oR
oS
o$
{�oR
oS
oU
{�oR
oV
o[
{�oR
oV
oW
{�r�poN
{�r�poO
{x{�rS�po
�:o
{^r��poN
{^r��poO
{^oO
rՅpoS
oT
{x{^r#�po
�:o
{^�ssP
oV
{ho
(�
o
{ho
r]�po
�4o
{ho
r��po
��o
{ho
o
o
{hoK
{hoL
{�oM
{hr�
poN
{ho 
o!
{hr�
poO
{x{hr�po
�:o
{�(
o
{�r�poN
{�8s �("
oY
{�r�poO
{x{�r7�po
�:o
{�oR
(
o
{�oR
8s �("
o#
{�oR
oS
o
{�oR
oS
o$
{�oR
oS
oU
{�oR
oV
o[
{�oR
oV
oW
{�ra�poN
{�ra�poO
{x{�r��po
�:o
{\r��poN
{\r��poO
{\oO
r�poS
oT
{x{\ri�po
�:o
{�(
o
{�r��poN
{�(o
oY
{�r��poO
{x{�r��po
�:o
{�(�
o
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�rшpoN
{�rшpoO
{x{�r�po
�:o
{�r�poN
{�r�poO
{�oO
r5�poS
oT
{��wsP
oV
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�r��poN
{�r��poO
{x{�r��po
�:o
{�o/
{�rljpoN
{�rljpoO
{x{�r�po
�:o
{�oR
(1
o#
{�oR
oS
o$
{�r�poN
{�r�poO
{x{�rK�po
�:o
{�r��poN
{�r��poO
{x{�rÊpo
�:o
{�o
(�
o
{�o
r
�po
�4o
{�o
rU�po
��o
{�o
o
o
{�oK
{�oL
{�oM
{�r+poN
{�o 
o!
{�r+poO
{x{�r��po
�:o
{�(
o
{�rϋpoN
{�8s �("
oY
{�rϋpoO
{x{�rߋpo
�:o
{�r�poN
{�r�poO
{x{�r%�po
�:o
{�r[�poN
{�(
o
{�r[�poO
{x{�rk�po
�:o
{�r�CpoN
{�r�CpoO
{x{�r��po
�:o
{�r��poN
{�(
o
{�r��poO
{x{�rόpo
�:o
{�r�poN
{�r�poO
{x{�r�po
�:o
{��tsP
on
{�r?�poN
{�(
o
{�r?�poO
{x{�rO�po
�:o
{�(
o
{�rq�poN
{�(o
oY
{�rq�poO
{x{�r��po
�:o
{goK
{goL
{ooM
{goL
{poM
{goL
{moM
{gr��poN
{gr��poO
{x{gr��po
�:o
{or�poN
{or�poO
{x{or��po
�:o
{o�msP
oQ
{pr�poN
{pr�poO
{x{pr5�po
�:o
{p�lsP
oQ
{mr!CpoN
{mr!CpoO
{x{mra�po
�:o
{m�qsP
oQ
rGpoN
(Y
(L
{loM
(L
{goM
([
{xr��poS
o5
{xr��po
��o6
(]
(^
rՎp(O
{xr
�po
�:o
(_
�psP
(7
�nsP
(]
{lo`
{loa
{�oa
{�o^
{uoN
o`
{`oO
o`
{jo`
{joa
{ZoO
o`
{YoO
o`
{toN
o`
{soN
o`
{_oO
o`
{�oa
{�o^
{�ov
o`
{�o�
o`
{�oO
o`
{�o�
o`
{�o�
o`
{fo�
o`
{io`
{ioa
{voN
o`
{aoO
o`
{co�
o
o`
{co�
o`
{do�
o
o`
{do�
o`
{�oa
{�o^
{RoO
o`
{woa
{wo^
{SoO
o`
{UoO
o`
{ToO
o`
{WoO
o`
{XoO
o`
{eo�
o`
{VoO
o`
{bov
o`
{[oO
o`
{�o`
{roN
o`
{ko`
{koa
{�oa
{]oO
o`
{^oO
o`
{ho`
{hoa
{\oO
o`
{�oa
{�o^
{�oO
o`
{�oa
{�o^
{�o`
{�oa
{�oN
o`
{�oN
o`
{�oN
o`
{go`
{goa
(b
*R{ao>
o8
*�{�o>
o9
{�o:
o;
*0d,{ao>

,{vo<
o<
{Jo�
r_p(>
,&r+�po=
r+�po>
r+�po?
*R{ro<
o@
*0�&}�(+
s,

(�(-
(.
(/
}�{�o
o?
{�o
o?
s6
r=�p(7
{�%-&+o8
o@
*0�M{�o<
o�

{�o<
o�
{�o<
o�
o�
�		,�(+(�
(=
8,o�
�

,	�(+(�
(=
8�o�
�,{�o�
r9pr?ps�

	(�
o?
�5
�z�%
o�
�(�
(-
(@
݆	(>�,8rr9ps�

r?pr?p	(�
s
o
s
o
�o�
(=
(@
�	,r�Ap(�
+,4
��%(4
o5
�(�
(=
(@
8�	ra�p(+o
{�oA
{�oB
{�oC
{�rApo�
o)
o%
{�r]Apo�
o)
o&
{�o(
{�rkApo�
(�
( 
o'
{�oD
o,
(@
*��5d:+ed05*sF

oD
�,{�oG
o?
�
o
�*#*
0�){�o<
o�

{�o<
o�
o�
�
	,�(+(�
(=
+Wo�
�,{�o�
r9psC
oD
�,{�oE
o?
�
o
�*r%�
0,,
,{��,{�oA
(B
*0��(C
sD

sF
}�sF
}�sK
}�sL
}�sK
}�sK
}�sK
}�sF
}�sF
}�sL
}�sL
}�sE
}�{�oN
oH
{�oN
oH
{�oN
oH
{�oH
{�oI
(J
{�oP
{�r!CpoN
{�r!CpoO
{�oP
{�r�
poN
{�r�
poO
{���sP
oQ
{�r7CpoN
{�r7CpoO
{�r�GpoN
{�r�GpoO
{�oN
*oR
{�riCpoN
{�riCpoO
{�rwCpoN
{�rwCpoO
{�r�GpoN
{�r�GpoO
{�r�CpoN
{�r�CpoO
{���sP
oQ
{�r�CpoN
{�r�CpoO
{���sP
oQ
{�r�CpoN
{�r�CpoO
{�r�CpoN
{�r�CpoO
{�oK
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�r�
poN
{�r�
poO
rGpoN
(Y
(L
{�oM
([
(]
(^
rϏp(O
(_
(\
{�oN
o`
{�oN
o`
{�oN
o`
{�o`
{�oa
{�o^
(b
*0�&}�(+
s,

(�(-
(.
(/
}�{�op
}�{�s�
}�{�(3
o4
o5
oE
{�{�{�oF
sG
}�{�{�oH
{�(I
(�(3
o4
o,
݅&{�oJ
{�oH
{�oH
{�oH
{�oH
{�oH
{�oJ
{�oJ
E�(+(�
(K
�s6
r��p(7
{�%-&+o8
o@
*���0W(3
o4
o.
o�
�
,{�(3
o4
o.
o?
+{�I�(+(�
o?
*0XN{�oL
, {�(M
r�pr?poN
�+
,+"{�sRoD
&�,oA
�*AL0RO{�oL
, {�(M
rQ�pr?poN
�+
,+s=oD
&�,oA
�*;F0-P{�oL
�,8{�oO
r��p(�

	,�(+(�
(-
8�{�{�oP
oQ
�,(3
o4
o8

+(3
o4
{�oP
o

�9�(R
,(o
o
(>
,o
o
(>
+,�(+(�
(=
8)o
o�
o�
o
s
(�
		s
o


r��p(
��-(l
oS
+	sT
oU


,�(+(�
(-
ݖ&��%oV
�(�
(�
9U'��%oV
�(�
(�
9)B�(+(�
C�(+(�
r��psW
o�
�,BoX
oY
(Z
�,  ���(+(�
(-
�+ݹ�
,oA
�(
o[
r��p(>
,5(\
o]
,F�(+(�
(^
�Y{�o_
o
o�
o�
r?ps�
(�
o
o`
�o�
(=
�oA
(B
�&�oV
o
{�(�
oa
(�
-	oa
+{�(b
(3
o4
oc
od
(3
o4
o,
?�(+(�
(j
(�
�,9 ,L-	o�
+	se
of
�&�(��o�
(-
�*A|\v

d3E�Y02Q
sg

�oh
&�&��-+(i
�*"09R{�oL
�,8 {�oO
r��p(�

	,�(+(�
(-
8�{�{�oP
oQ
�,(3
o4
o8

+(3
o4
{�oP
o

�9�(R
,(o
o
(>
,o
o
(>
+,�(+(�
(=
85(��%oV
�(�
(�
9
o
o�
o�
o
s
	B�(+(�
C�(+(�
r��psW


o�
�,?	
oX

oY
(Z
�, ���(+(�
(-
�m+�h�

,
oA
�	oA
(B
�&�(3
o4
oc
od
(3
o4
o,
@�(+(�
(j
*}V�
��0�Soj
ok
r]Ap(>

,r{�ol
oQ
�,Vom
rkApo�
(�
( 
o
om
om
on
o
om
om
on
(o
o#
*0�T{�oL
, {�(M
r��pr?poN
�+,+}
{�{�oP
oQ
�
	,(3
o4
o8

+(3
o4
{�oP
o

�,$s�o�
&�
,oA
�*�
�
0�U
{�{�oP
oQ
�,(3
o4
o8

+(3
o4
{�oP
o

�
	,>o
o�
s�o�
�,(��
,oA
�*l�
0MV(3
op
oq
�
,5(3
op
or
A��%os
�(�
(�
*0W{�oO
r��p(�

, �(+(�
(=
s`
rӐp(4
o5
(<
oa
ot
ou
ov
�9�rI�pr�Apsw

	oc
ox
(3
o4
oc
ox
(3
op
oq
�,2(3
op
or
oc
oy
(3
op
oz
�o�
(-
��,oA
�*x��3:�0�X{�oO
r��p(�

, �(+(�
(-
s{
rg�po|
rӐp(4
o5
(<
oa
o}
ov
�,v(3
o4
oc
o~
�
	o�
(-
�Y(3
op
oq
�,2(3
op
or
oc
oy
(3
op
oz
�,oA
�*x�39��0�Yo
{���,+v{�(�

o�
,V{�{�oP
oQ

	�,1{�J��%	r�Ipo�
o)
�(�
o�
+
o�
*0PZ{�{�oP
oQ

�,/r{�po�
o)
(3
r�Ipo�
o)
(7*0#[{�s�
o�
&�,oA
�*

0V,o�
u:�
,Bo�
�:- ���(+(�
+ ���(+(�
o�
*0<V(3
op
oq
�
,$(3
op
or
r��pos
(�
&*0,,
,{��,{�oA
(B
*0�s�
}��(C
sD

s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�{�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�sF
}�sF
}�sF
}�sF
}�sF
}�sF
}�sE
}�sE
}�sF
}�sK
}�sK
}�{�s�
}�{�oH
{�oH
{�oH
{�oH
{�oH
{�oI
{�oH
{�oI
{�oH
(J
{�r��poN
{�o�
o�
o�
o�
{�o�
o�
o�
o�
{�o�
o�
o�
o�
{�o�
o�
o�
o�
{�o�
o�
o�
o�
{�{�o�
{�{�o�
{�r��poO
{�o�
��%{��o�
{�o�
{�o�
��%{��o�
{�o�
o�
 � � �("
o
{�o�
o�
rǑpo
�4o
{�o�
o�
 � � �("
o�
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o�
{�o�
o�
o
o$
{�o�
o�
(�
o
{�o�
o�
r-�po
�4o
{�o�
o�
(�
o�
{�o�
o�
o
o
{�o�
o�
o
o�
{�o�
o�
 � � �("
o
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
r��po
�4o
{�o�
o�
(�
o#
{�o�
o�
r�po
��o
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
rC�po
�4o
{�o�
o�
 � � �("
o�
{�o�
o�
(�
o#
{�o�
o�
r��po
��o
{�o�
o�
o
o
{�o�
o�
o
o�
{�o�
o�
o
o$
{�o�
o�
###("
o
{�o�
o�
r�po
�4o
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
:Q("
o
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
(�
o
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
U � �("
o
{�o�
o�
rg�po
�4o
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
 � � �("
o�
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o�
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
 � � �("
o�
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o�
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
 � � �("
o�
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o�
{�o�
o�
o
o$
{�o�
o�
AAA("
o
{�o�
o�
r��po
�4o
{�o�
o�
r�po
t�o�
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
oT
{�o�
o�
o
o$
{�o�
o�
U � �("
o
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
 � � �("
o�
{�o�
o�
r]�po
t�o�
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o�
{�o�
o�
o
oT
{�o�
o�
o
o$
{�o�
o�
(�
o
{�o�
o�
 � � �("
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
U � �("
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
r��po
�4o
{�o�
o�
(�
o#
{�o�
o�
r��po
��o
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
rI�po
�4o
{�o�
o�
U � �("
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
(�
o
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
(�
o
{�o�
o�
r��po
�4o
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
_ � �("
o
{�o�
o�
(�
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
o�
 � � �("
o
{�o�
o�
U � �("
o#
{�o�
o�
o
o
{�o�
o�
o
o$
{�o�
��%{��%{��%{��%{��%{��%{��o�
{�{�o�
{�r�po�
{�o�
o�
{�o�
o�
{�o�
o�
{���s�
o�
{�r�poN
{�rApo�
{�r�po�
{�r%�poN
{�r]Apo�
{�r%�po�
{�r9�poN
{�r�Apo�
{�r9�po�
{�r_�poN
{�{�o�
{�r�po�
{�r_�po�
{�o�
o�
{�r��poN
{�r��po�
{���s�
o�
{�rɗpoN
{�r�Ipo�
{�rɗpo�
{�r�poN
{�r'Apo�
{�r�po�
{�o�
{�o�
��%{��o�
{�o�
{�o�
&{�o�
{�o�
&{�o�
{�o�
&{�o�
{�o�
&{�o�
{�o�
��%{��%{��%{��%{��%{��%{��%{��o�
{�{�o�
{�o�
{���s�
o�
{�r�po�
{�o�
{�o�
{�o�
{�o�
��%{�s�
�%{�s�
�o�
{�o�
o�
{�o�
o�
{�o�
o�
{�o�
o�
{�r�poN
{�r!�poN
{�o�
{�o�
��%{�s�
�%{�s�
�%{�s�
�%{�s�
�o�
{�r!�po�
{�r9�poN
{�o�
{�r9�po�
{���s�
o�
{�rs�poN
{�o�
{�rs�po�
{���s�
o�
{�r��poN
{�o�
{�r��po�
{���s�
o�
{�rŘpoN
{�o�
{�rŘpo�
{���s�
o�
{�r�poN
{�o�
{�r�po�
{���s�
o�
{�o�
{�r�poN
{�{�o�
{�o�
{�rC�poN
{�{�o�
{�o�
{�rm�poN
{�{�o�
{�o�
{�r��poN
{�{�o�
{�r��poN
{�o�
{�r��po�
{���s�
o�
{�rpoN
{�oP
{�rpoO
{�rיpoN
{�rיpoO
{���sP
oQ
{�r�poN
{�o*
(1
o#
{�o*
o
o$
{�r�poO
{���sP
oQ
{�r/�poN
{�r/�poO
{���sP
oQ
{�r[�poN
{�r[�poO
{���sP
oQ
{�r��poN
{�r��poO
{���sP
oQ
{�oK
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�r�
poN
{�r�
poO
{�oK
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�r+poN
{�r+poO
{�r��poN
{�r��poO
{���sP
oQ
{�rӚpoN
{�(�
oY
{�rӚpoO
{�rwCpoN
{�rwCpoO
{�o�
��%{�s�
�o�
{�{�o�
{�r�po�
rGpoN
(Y
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
([
(]
(^
r�p(O
(_
(\
{�o`
{�o`
{�o`
{�o`
{�o`
{�oa
{�o`
{�oa
{�o^
{�o`
(b
(^
*0\\}�(+
s,

(�(-
(.
(/
(3
o4
o.
o�
�,	(�o@
*0\{�o?
r�Bp(�

,{�o_
{�o?
+ {�o_
{�r?po?
*0�]{�o<
o�
QPo�
�,�(+(�
(=

8�{�o>
,	r�BpQ+{�o<
o�
QPr9pPr?ps�

(�
(>�,
�3�,�z�%o�
�(�
(-

�
+	*��,d0�^r?p
r?p(��,(@
+p(3
o4
o�
(3
o4
r9po�
(3
o4
o�
(3
o4
o,
)�(+(�
(�

	,(8(@
*05*sF

oD
�,{�oG
o?
�
o
�*#*
07{�{�o>
�oH
{�oI

,{�oJ
&*0l_s`

r1�p(4
o5
(<
oa
ov
�,,r?pr?p
oc
(:,		(��,oA
�*Y`0%`r?p
r?p(��,8s{

	r1�p(4
o5
(<
oa
	ov
�9��P%,�%\�o�
�rWJp(�
�,3o�
�,(�
o�
Yo
(6

+(�

�rGJp(�
�,3o�
�		,(�
o�
Yo
(6

+(�

	oc
(9�	,	oA
�*)�0,,
,{��,{�oA
(B
*0��(C
sD

sF
}�sF
}�sL
}�sK
}�sK
}�sF
}�sL
}�sM
}�sE
}�sF
}�sF
}�{�oN
oH
{�oN
oH
{�oO
oH
{�oH
{�oI
(J
{�oP
{�r!CpoN
{�r!CpoO
{�oP
{�r�
poN
{�r�
poO
{���sP
oQ
{�r�GpoN
{�r�GpoO
{�oN
*oR
{�riCpoN
{�riCpoO
{�rwCpoN
{�rwCpoO
{�r�CpoN
{�r�CpoO
{���sP
oQ
{�r�CpoN
{�r�CpoO
{�rGpoN
{�rGpoO
{�oO
r?GpoS
oT
{���sP
oV
{�oK
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�r�
poN
{�r�
poO
{�r��poN
{�r��poO
{���sP
oQ
{�r��poN
{�r��poO
{���sP
oQ
rGpoN
(Y
(L
{�oM
([
(]
(^
r͛p(O
(_
(\
{�oN
o`
{�oN
o`
{�oO
o`
{�o`
{�oa
{�o^
(b
*09a~G�
,"r�p�(C
o�
s�
�G~G+*0b~H
+*"�H*0Lcoc
�,s�
+)rS�poc
��o)
ro�p(�
s�
z}K
+	*0�do�{Lo�
r��po�
o�
r��po�
�
,8�{Lo�
r��po�
o�
o�
8`o�
t{Lo�
r��po�
o�

	o�
	r�<p{K(

�oo�
	rϜpr�<po�
o�
	rݜprݜpo�
o�
	r�pr�po�
o�
	r�pr�po�
o�
	r�pr�po�
o�
	r#�pr#�po�
o�
	rprpo�
o�
	r5�pr5�po�
o�
	rM�prM�po�
o�
	re�pre�po�
o�
	r��pr��po�
o�
	r�pr�po�
o�
	r��pr��po�
o�
	r��pr��po�
o�
	rםprםpo�
o�
	rNp�Uo�
	o�
{Lo�
r��po�
o�
	o�
o�
r�po�
~�
3r��po�
(�
+,r��pr�po�
+r��pr�po�
rNprNpo�
(�
X�Uo�
o�
o�
:�����uM,oA
�o�*AYr�&(�*0Qs�
}L{K{Lr��pr!�p(+o
&{K{Lr��prY�p(+o
&*0d{K{Lo�
r��po�
r!�po�
&{K{Lo�
r��po�
rY�po�
&{Kr��p(+o�
&*0e{T
+*0�f~2
}U}W(+
s,

(�(-
}Qop
}R{R(�
}S}U(.
(/
{Q{R(
}V(�o@
*0�?r"�p
{^�3%r0�p�%{U�%rb�p�%�%r��p�%{U�%r��p�(
o?
{_{Uo?
{Zr��p{Urڠp(�
o?
{Xr�p{Ur<�p(�
o?
{Qs�
}P{P{[o�
{Uo
&*0Jg{[o�
�
,&�(+(�
(=
(@
8{V{Uo
�9{S{[o�
o)
o0
�
	9T��%{S{[o�
o)
o0
o1
�%{U�(�
(�
9�r�Mp{Ro�
o�
rCpo�
o�
r1po�
o�
rOpo�
o�
r�Mps�
�o�
r�Mp �s�
�o�
rNp�Uo�
r�p(�
�Co�
o�
o�
{Ro�
&{S{[o�
o)
o0
}T+(@
+v��%{S{[o�
o)
o0
o1
�%{U�(�
(�
,#{S{[o�
o)
o0
}T+(@
*0ZB{S{Ro�
�
o�
(=
�{Qs�
}P{P{[o�
{Uo
&*30+,{W�+
,{WoA
(B
*0~�(C
sD

sK
}XsK
}YsK
}Zs
}[sF
}\sF
}]sK
}^sK
}_sF
}`{[o�
oH
(J
{XriCpoN
{X(1
oY
{XriCpoO
{Yr�poN
{Yr�poO
{ZrQ�poN
{ZrQ�poO
{[rmnpoN
{[rmnpoO
{[o�
o)
{[o�
o%
��%r�npo
��s&
�o'
{\r}�poN
{\oP
{\r}�poO
{\��sP
oQ
{]r��poN
{]oP
{]r��poO
{^r��poN
{^r��poO
{_r�poN
{_r�poO
{`ruipoN
{`ruipoO
{`��sP
oQ
{\(
rGpoN
(Y
{](Z
(L
{`oM
(L
{_oM
(L
{]oM
(L
{\oM
(L
{[oM
(L
{ZoM
(L
{YoM
(L
{XoM
(L
{^oM
([
(]
(^
r�p(O
{[o�
o`
(b
(^
*0e{g
+*0�f~2
}h}k(+
s,

(�(-
}h}eop
}f(.
(/
{e{f(
}j{f(�
}i(�o@
*0y{t~2
o?
{s{ho?
{r��%{h�(�
o?
{es�
}d{d{oo�
~2
o
&*0 h{oo�
�
,&�(+(�
(=
(@
8�{j{ho
-0{j{i{oo�
o)
o0
o�
o
�+9y{i{oo�
o)
o0
�
	9K��%{i{oo�
o)
o0
o�
�(�
(�
9�r�Mp{fo�
o�
rCpo�
o�
r1po�
o�
rOpo�
o�
r�Mps�
�o�
r�Mp �s�
�o�
rNp�Uo�
r�p(�
�Co�
o�
o�
{fo�
&{i{oo�
o)
o0
}g+(@
8���%{i{oo�
o)
o0
o�
�(�
(�
9�{j{ho
,0{j{i{oo�
o)
o0
o�
o
�+		,2{j{h{i{oo�
o)
o0
o�
o
&{i{oo�
o)
o0
}g+(@
�0
�.�%
o�
�(�
(=
(@
�*A��030�i{i{oo�
o)
o0
o�

{j{ho
-0{j{i{oo�
o)
o0
o�
o
�+,0{t��%�%{h�%�(�
o?
+d{ho�
,{jo
�+,0{t��%�%{h�%�(�
o?
+{t~2
o?
*0YB{i{fo�
�
o�
(=
�{es�
}d{d{oo�
~2
o
&*30+,{k�+
,{koA
(B
*0��(C
sD

sK
}lsK
}msK
}ns
}osF
}psF
}qsK
}rsK
}ssK
}tsF
}u{oo�
oH
(J
{lriCpoN
{l(1
oY
{lriCpoO
{mr�poN
{mr�poO
{nrU�poN
{nrU�poO
{ormnpoN
{ormnpoO
{oo�
o)
{oo�
o%
��%r�npo
��s&
�o'
{o��sP
on
{pr}�poN
{poP
{pr}�poO
{p��sP
oQ
{qr��poN
{qoP
{qr��poO
{rr��poN
{rr��poO
{sr��poN
{sr��poO
{tr��poN
{t(
oY
{tr��poO
{uruipoN
{uruipoO
{u��sP
oQ
{p(
rGpoN
(Y
{q(Z
(L
{uoM
(L
{toM
(L
{soM
(L
{qoM
(L
{poM
(L
{ooM
(L
{noM
(L
{moM
(L
{loM
(L
{roM
([
(]
(^
r�p(O
{oo�
o`
(b
(^
*02j}}s

o�
 �Xs	
(�-�+,8� �s	

{}�,Uo

+,(
	r�po
&	o
&	r)�po

&(
-���oA
�+Go

	+ 	(

	r-�po
&	
o

&	(
-��	�oA
�	o�o
�,	o
&	o)
o
&o)
+*g9��-�0�k
{}�
	,r?�prv.p(
rO�pr_�p(
ro�pr�p(
r��pr��p(
r��pr��p(
(�,(+o
o
&+o
&-	(�
++*0�l{}�,
rϤps

+r�ps

o
+Go
rI�po
o
o
�
	,o
rI�po
o
o
o
o
-�{}�,r]�pr?p(
+r��pr?p(
+*0?(�
+*"(�*0Rmo
�,r�ps
zo 

rS�p(!
}~o
�
	,(�+*0.,{~
,+ o"
�,o
&rͦpo

&**(�*0anr��p
s#
o$
o%
+o�
t�
	(�o�
-��uM,oA
�o&
�9�o'
+w((
o)
(�o*
u��,Gt�		o+
r)�po,


�,

o-

o.
(�o/
(0
-���
oA
�o1
o2
+5o3



o4
(�o5


o6
(�o7
o�
-��
,oA
�*($>o��BS
0�oo)
o�
o8

,o9
o:
(�u��,rt�o$
o%

+;	o�
t�o)
o�
o8
,	o9
(�	o�
-��	uM,oA
�*OG�0�po%

8�o�
t�u��,Kt�
	o+
r)�po,
�,%o.
o�
o8
,	o9
+Ko)
o�
o8
,o9
u��,t�		o:
(�o�
:G����uM

,
oA
�*	��0hq
r?�prv.p(
rO�pr_�p(
ro�pr�p(
r��pr��p(
r��pr��p(
+*^}�(
}*0Or{��
9${r3�p(+o
rApo�
o)
r]Apo�
o)

	(;
s`
8�(<
r��p(=
(<
r��p(>
r��p(=
(?
(=
}�{�s@
}��]&��%{��(�
(-
{�o|
ou
ob
�		,
oc
}��{��

::����o
�{�oA
{�oB
*aU�]Z�)00{��
,!{�oC
{�oD
}�*0s{r!�p(+o�
�U
�,8�
r��pr��pr1p(�X
r��pr��pr1p(�X
r˨prߨpr1p(�X
r��pr�pr1p(�X
r!�pr+�pr1p(�X
rI�pr]�pr1p(�X
ru�pr�pr1p(�X
r��pr��pr1p(�X
rǩprͩprp(�X
r�pr�prp(�X
r��pr�prp(�X
r#�pr)�prp(�X
rE�prK�prp(�X
r_�pre�prp(�X
r}�pr��prp(�X
r��pr��prp(�X
r��pr��prp(�X
r۪pr�prp(�X
r�pr�prp(�X
r)�pr/�prp(�X
rW�pr]�prp(�X
r�pr��prp(�X
r��pr��prp(�X
rǫprͫprp(�X
r�pr�prp(�X
{(E
,0{r�p(+o�
&rv�prv�prp(�X
(��
	,/��%�U�(�
(-
{�(F
&*0�t{r~�p(<
�%�:�o�
&{rݯp(<
(+oG

o�
o�
�9rr?p(���%o�
o�
�U�%�(�
(�o�
o�
8o�
t
	rB�po�
o)
(�{rN�p(?
�%	r�<po�
(H
�o�oG
+zo�
o�
rE�po�
(�
��%X�U�%-rY�p+rE�p�%o�
o�
oI
o)
�(�
(�Xo�
o�
�:m���r?p(�o�
:��uM,oA
�o�
o�
	+	*A��0jur?p}�}�(+
s,

(�(-
(.
(/
rm�p(�
r��p(�
(J
(<
}�o@
*0�,{�o<
o�
�
,.�E(+(�
(-
{�oJ
&(@
+>{�o<
{�(�
�, �E(+(�
(-
(@
*0+,{��+
,{�oA
(B
*0��(C
sD

sL
}�sG
}�sF
}�sF
}�{�oN
oH
(J
{�r��poN
{�r��poO
{�oN
*oR
{�r��poN
{�r��poO
{�r}�poN
{�oP
{�r}�poO
{���sP
oQ
{�r��poN
{�oP
{�r��poO
{�(
rGpoN
(Y
{�(Z
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
([
(]
(^
rdzp(O
{�oN
o`
(b
(^
*0
v}�(+
s,

(�(-
(.
(/
}�{�s
}�}�}�{�r�po�
{�o�
r+�po�
�, {�o�
r+�p�3(C
o�
&{�o�
r+�po�
�, {�o�
r+�p�3(C
o�
&{�o�
o�

+L	o�
trG�po�
(�
,r+�prU�po�
+r+�pre�po�
	o�
-��	uM,oA
�{�o�
o�
+Mo�
trG�po�
(�
		,r+�prU�po�
+r+�pre�po�
o�
-��uM,oA
�{�{�oE
{�{�oE
o@
*�XIqZ�0�w{�ro�po7
�-{�ro�po7
��+
,+S�!(+(�
(�
,1s�o�
�
	,�!(@
�,oA
�+(@
*Rn0xx{�o<
o�

{�o<
o�
{�o<
o�
o�
�,(�!(+(�
(-
{�oJ
&�o�
�,(�!(+(�
(-
{�oJ
&��o�
�,(�!(+(�
(-
{�oJ
&ݝr?p
�P%;�o�
sK
r��psL
oM
+!�oN
sL
oO
X�i2�{�(P
	{�(�
oQ

r?pr?p
o�
�,
o

{�rɴp(+o
�,RrApo�
�,rApo�
o)
r]Apo�
�,r]Apo�
o)
�&�r�p(<
oR
r��p�%�%�%
�%{�oS
�%{�oT
�%�%�(;

(<
r��p{�oT
(>
r�p(=
(?
(=

{�o�
o�
8�o�
tr�po�
o)

(�~2
(�
,#(~
,oU
sV
oW
	r�prp�po�
o)
r�po�
o)
r+�po�
o)
(�
(6

o�
:P����uM,oA
�(<
r��p{�oT
(>
r�p(=
(?
(=

{�o�
o�
8�o�
tr�@po�
o)

(�~2
(�
  ,Z(~
!!,IoU
sV
oW
	rҷpr�@po�
o)
r+�po�
o)
(?
(6

+OrG�po�
(�
�"",3	rҷpr�@po�
o)
r+�po�
o)
(?
(6

o�
:����uM,oA
�	r�p(6

	oX
oY
rl�p KsZ
#r��pr��ps[
$#$o\
# @Bo]
#o^
�
#,#oA
��
,oA
��!(+(�
(�
�%%o�
(-
�*A��x��\����6-
�C=
cd30}y~2

(_
{�o
o`
oa
ob
�
	,2(�
�,(�
&r��p(<
(=

(c
�&~2

�+*cj0z~2

{�sd
oe
�,
~2

8�of

s�
r?p	(�sg
r̸psh
oi
oj
&ok
r��psl
om
ok
r�psl
om
ok
r�psl
om
on
+$o�
t3ok
sl
om
o�
-��uM,oA
�rD�pso
op
oq
&or
ss
ot
&	ou
�,sv
	+	sw
		(x

~2
ou
�,rN�pof
(<
+r��pof
(<

oy
ob
�9�s�
sz
	({

oy
o%
+o�
o|
o�
-��uM,oA
�ou
�,rĻpo)
(?
++o)
r�pr�po�
r�p(?
{�o>
-!{�o>
-
oy
ob
�++,o(�
�,(�
&r?pou
�,rR�po}
(<
+r`�po}
(<
(=

s~
o

+
*�1�� 0�{�P%
�o�

8��o�
o�
�
	,+crv�po�
,Orv�po
X;o�
Y�,"o
o�
o�
&r?p�++++X�i�:q���r�p(�
(+o
Q*0m|{�{�oP
oQ

�,8E{�r�po�
o)
rp�po�
o)
s�
(D
&{�sd
r�po�
o)
oe
�,)rG�p(

o�
r+�prU�po�
8�of

s�
r?p	(�sg
r̸psh
oi
oj
&ok
r��psl
om
ok
r�psl
om
ok
r�psl
om
on

+$
o�
t3ok
sl
om

o�
-��
uM,oA
�rD�pso
op
oq
&or
ss
ot
&	ou
�,sv
	+	sw
		(x


oy
ob
�,'rG�p(

o�
r+�pre�po�
+%rG�p(

o�
r+�prU�po�
r��pou
��o)
o�
*B1s0}{�{�oP
oQ

�,8�r�@po�
o)
{�(�
&(_
r�@po�
o)
{�o

	o`
oa
ob
�,'rG�p(

o�
r+�prU�po�
+%rG�p(

o�
r+�pre�po�
�6rG�p(

o�
r+�pre�po�
o�
(-
�*&��63N{�r�po�
*N{�r��po�
*N{�r��po�
*N{�rܾpo�
*0+,{��+
,{�oA
(B
*0N� (C
sD

s�
}�sE
}�sG
}�sF
}�sF
}�sE
}�s�
}�s�
}�s�
}�s�
}�sG
}�sM
}�sL
}�sG
}�sL
}�sG
}�sK
}�sK
}�sF
}�sL
}�sG
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�s�
}�{�oH
{�oI
{�oH
{�oI
{�o�
oH
{�o�
oH
{�o�
oH
{�o�
oH
{�oO
oH
{�oN
oH
{�oN
oH
{�oN
oH
{�oH
{�oH
{�oH
{�oH
{�oI
{�oI
{�oI
{�oH
{�oH
{�oH
(J
{�r�poN
{�r�poO
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�r+poN
{�r+poO
{�r�poN
{�r�poO
{�r}�poN
{�oP
{�r}�poO
{���sP
oQ
{�r��poN
{�oP
{�r��poO
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�oL
{�oM
{�r�
poN
{�r�
poO
{�r:�poN
{�r:�poO
{�o�
o0
rT�po
�4o
{�o�
o0
o
o
{�o�
o+
{���s�
o�
{�r��poN
{�r��poO
{�o�
o0
rҿpo
�4o
{�o�
o0
o
o
{�o�
o+
{���s�
o�
{�r6�poN
{�r6�poO
{�o�
o0
rP�po
�4o
{�o�
o0
o
o
{�o�
o+
{���s�
o�
{�r��poN
{�r��poO
{�o�
o0
r�po
�4o
{�o�
o0
o
o
{�o�
o+
{���s�
o�
{�oR
r2�po
t�o�
{�rn�poN
{�rn�poO
{�r��poN
{�r��poO
{�oO
r��poS
oT
{�r�poN
{�r�poO
{�r2�poN
{�r2�poO
{�rN�poN
{�rN�poO
{�rh�poN
{�rh�poO
{�riCpoN
{�riCpoO
{�(1
oY
{�rwCpoN
{�rwCpoO
{�r��poN
{�r��poO
{���sP
oQ
{�r��poN
{�r��poO
{�r��poN
{�r��poO
{�r��poN
{�{�o�
{�r��poO
{�o�
��%{��o�
{�o�
��%{��o�
{�o�
��%{��%{��%{��%{��%{��o�
{�{�o�
{�r�po�
{�r��poN
{�r�po�
{�r��po�
{�o�
o�
{�r��poN
{�rp�po�
{�r��po�
{�o�
o�
{�r��poN
{�r+�po�
{�r��po�
{�o�
o�
{�r�poN
{�r��po�
{�r�po�
{�o�
o�
{�r�poN
{�{�o�
{�r�po�
{�r:�poN
{�o%
��%s�
�o'
{�r:�po�
{�o(
{���s�
o�
{�rn�poN
{�rn�poO
{�{�o�
{�o�
��%{��%{��o�
{�oL
{�oM
{�r��poO
{�r��poN
{�oL
{�oM
{�r��poO
{�r��poN
{�r��poN
{�{�o�
{�r��poO
{�o�
��%{��o�
{�o�
��%{��o�
{�o�
��%{��%{��%{��%{��o�
{�{�o�
{�r��po�
{�r��poN
{�r�@po�
{�r��po�
{�o�
o�
{�r�poN
{�r �po�
{�r�po�
{�o�
o�
{�r6�poN
{�r+�po�
{�r6�po�
{�o�
o�
{�rN�poN
{�{�o�
{�rN�po�
{�rf�poN
{�o%
��%s�
�o'
{�rf�po�
{�o(
{���s�
o�
{�(
rGpoN
(Y
{�(Z
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
([
(]
(^
r��p(O
{�o`
{�oa
{�o^
{�o`
{�oa
{�o^
{�o�
o`
{�o�
o`
{�o�
o`
{�o�
o`
{�oO
o`
{�oN
o`
{�oN
o`
{�oN
o`
{�o`
{�o`
{�o`
{�o`
{�oa
{�oa
{�oa
{�o`
{�o`
{�o`
(b
*0�\~2
}�}�(+
s,

((-
(.
(/
}�}�(o
}�r��p(>
,r��p}�s�
}�{��$�%{��(�
o�
o@
*08~s

(�
}g}h}f|g(+|g(�
*0�
{�(o
o�
{�(P
{�(�

	s�
o
	s�
o
o�
r��p(>
,.o�
r�p(>
,r>�p(>
,rn�p(>
+,
+*0T�
{�(P
{�(�
s�
o

s�
o
{�(�	s�
+*0;�s

(�
}t}w}u}v}s|t(+*0Z,{�o�
,{�o�
o)
o�
�+
,'�$(+(�
(-
{�oJ
&++*0��{�o�
o)

{�(P
o�
{�(�

{�r��p(>
,<o
ol
o�
�,�$(+(�
(-
++*0c�(�

s�
o
o�
,
(�
�+,)(�

�Co)
o�
o�
o�
	+*0+,{��+
,{�oA
(B
*0`�"(C
sD

s�
}�sF
}�sF
}�sL
}�sG
}�{�oN
oH
(J
{�r�poN
{�r�poO
{�oP
{�r}�poN
{�r}�poO
{���sP
oQ
{�oP
{�r��poN
{�r��poO
{�r��poN
{�r��poO
{�oN
o�
r��poS
o�
{�oN
o�
r(�po
��o�
{�oN
rv�poS
o�
{�r��poN
{�r��poO
rGpoN
(Y
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
([
(\
(]
(^
r��p(O
{�oN
o`
(b
(^
*0{�
+*0�f}�}�(+
s,

((-
(.
(/
}�{�s
}�}�{��&�%�%�(�
o�
o@
*0��{�r��p(>

9�(({�ro�po7
{�ro�po7
�-��+
	,F{�{�{�s�oD
��,}��
,oA
�{�r��p(>
9�(({�ro�po7
{�ro�po7
�-��+		,F{�{�{�s�

oD
��,}��

,
oA
�{�r�p(>
9�(({�ro�po7

{�ro�po7

�-��+,F{�{�{�s�oD
��,}��
,oA
�*(s�
8
��
0�s�
s�s�{�sd
{�r�p(+oG
}�{�o�
o�
({�o�
o�
8�o�
tr��p%X(	r�po�
o)
oe

rp�p	o}
(�
o�
r��p	ou
��o)
o�
{�r�p(>
,!		ou
,+	of
o�o�
+V{�r��p(>
,!		ou
,+	of
o�o�
+		ou
,+	of
o�o�
	of
s�
	r?p
	
(sg
r̸psh
oi
oj
&ok
r��psl
om
ok
r�psl
om
ok
r�psl
om
	on
+$o�
t3ok
sl
om
o�
-��uM,oA
�rD�pso

op

oq
&
or

ss
ot
&	ou
�,sv
+	sw
(x
oy
ob
�,rG�p(

o�
+rG�p(

o�
	o�
o�
:r����uM,oA
�*A414i��0�{�P%
�o�

8��o�
o�
�
	,+crv�po�
,Orv�po
X;o�
Y�,"o
o�
o�
&r?p�++++X�i�:q���r�p(�
(+o
Q*0��s#
{�(�
(_
{�r��p(+oG
}�{�o�
o�
(
{�ra�p(+o�
�U�{�o�
o�
8�o�
tr �p	%X
(	r�@po�
o)
{�o
o`
oa
ob
�		,rG�p(

o�


,r�@po�
o)
o�
+r�@po�
o)
o�
�&rG�p(

o�
�o�
:'����uM,oA
��,#s

o�
&�

,
oA
�*(��9��c�
�
0L{�o�
o�
{�o�
{�o�
{�(�
o?
{�o�
*0t�{�o?
{�o�
{�o�
{�o�
{�rV�p�U{�o�
o�

(�
(?
o?
{�o�
*0+,{��+
,{�oA
(B
*0��%(C
sD

sK
}�sK
}�sK
}�s�
}�s�
}�{�o�
oH
(J
{�rwCpoN
{�rwCpoO
{�rf�poN
{�rf�poO
{�rz�poN
{�rz�poO
{�r��poN
{�r��poO
{�o�
o�
{�r�poN
{�r�poO
rGpoN
(Y
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
([
(\
(]
(^
r��p(O
{�o�
o`
(b
*08f}�(+
s,

((-
(.
(/
o@
*:r��po�
*0+,{��+
,{�oA
(B
*0�'(C
sD

sK
}�sF
}�s�
}�sK
}�{�o�
oH
(J
{�rwCpoN
{�rwCpoO
{�oP
{�r��poN
{�r��poO
{�r�poN
{�r�poO
{�o�
o0
r/�po
�4o
{�o�
o0
o
o
{�o�
o+
{�r?poq
{��
s�
o�
{�riCpoN
{�riCpoO
rGpoN
(Y
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
([
(]
(^
r��p(O
(_
{�o�
o`
(b
*0~�
+*0
(&
+*0�O�Pr��p(>

,"r��p(�,8kOr�pQPr�p(>

	,$r'�p(�,87OrY�pQPrY�p(>
,$ri�p(�,8Or��pQPr��p(>
,$r��p(�,8�Nr��pQPr��p(>
		,$r��p(�

,8�Nr�pQPr�p(>
,$r/�p(�,8_Nra�pQPra�p(>


,$rq�p(�,8)Nr��pQPr��p(>
,$r��p(�,8�Mr��pQPr��p(>
,$r��p(�,8�Mr'�pQPr'�p(>
,$r7�p(�,8�Mri�pQPri�p(>
,$ry�p(�,8QMr��pQPr��p(>
,$r��p(�,8Mr��pQPr��p(>
,$r��p(�,8�Lr/�pQPr/�p(>
,$r?�p(�,8�Lrq�pQPrq�p(>
,$r��p(�,8yLr��pQPr��p(>
,$r��p(�  ,8CLr��pQPr��p(>
!!,$r�p(�"",8
Lr7�pQPr7�p(>
##,$rG�p(�$$,8�Kr{�pQPr{�p(>
%%,$r��p(�&&,8�Kr��pQPr��p(>
'',$r��p(�((,8kKr�pQPr�p(>
)),$r�p(�**,85KrM�pQPrM�p(>
++,$r_�p(�,,,8�Jr��pQPr��p(>
--,$r��p(�..,8�Jr��pQPr��p(>
//,$r��p(�00,8�Jr�pQPr�p(>
11,$r1�p(�22,8]Jre�pQPre�p(>
33,$rw�p(�44,8'Jr��pQPr��p(>
55,$r��p(�66,8�Ir��pQPr��p(>
77,$r�p(�88,8�Ir7�pQPr7�p(>
99,$rI�p(�::,8�Ir}�pQPr}�p(>
;;,$r��p(�<<,8OIr��pQPr��p(>
==,$r��p(�>>,8Ir	�pQPr	�p(>
??,$r�p(�@@,8�HrO�pQPrO�p(>
AA,$ra�p(�BB,8�Hr��pQPr��p(>
CC,$r��p(�DD,8wHr��pQPr��p(>
EE,$r��p(�FF,8AHr!�pQPr!�p(>
GG,$r3�p(�HH,8Hrg�pQPrg�p(>
II,$ry�p(�JJ,8�Gr��pQPr��p(>
KK,$r��p(�LL,8�Gr��pQPr��p(>
MM,$r�p(�NN,8iGr9�pQPr9�p(>
OO,$rK�p(�PP,83Gr�pQPr�p(>
QQ,$r��p(�RR,8�Fr��pQPr��p(>
SS,$r��p(�TT,8�Fr�pQPr�p(>
UU9�r�p(�WW,8�FrQ�pQrc�p(+o�
�UVV�_XX,O���7�%V�U�(�
(�
YY, r��pZZ(+o�
&�&�PrQ�p(>
[[,$rV�p(�\\,8�Er��pQPr��p(>
]],$r��p(�^^,8�Er��pQPr��p(>
__,$r��p(�``,8yEr�pQPr�p(>
aa,eo�
bbr(�p(�dd,�9Eb(�cco�r\�pQbo�
�ee(�
��bo�
�Pr\�p(>
-8Prn�p(>
-*Pr��p(>
-Pr��p(>
-Pr��p(>
+ff,uo�
ggr��p(�ii,݇Dg(Eg(@sJhhgoFr��pQgo�
�jj(�
��go�
�Pr��p(>
kk,To�
llr��p(�mm,�Dr*�pQlo�
�nn(�
��lo�
�Pr*�p(>
oo,To�
ppr:�p(�qq,ݚCrl�pQpo�
�rr(�
��po�
�Prl�p(>
ss,To�
ttr|�p(�uu,�4Cr��pQto�
�vv(�
��to�
�Pr��p(>
ww,To�
xxr��p(�yy,��Br��pQxo�
�zz(�
��xo�
�Pr��p(>
{{,To�
||r�p(�}},�hBr2�pQ|o�
�~~(�
��|o�
�Pr2�p(>
,To�
��rB�p(���,�Brt�pQ�o�
���(�
���o�
�Prt�p(>
��,To�
��r��p(���,ݜAr��pQ�o�
���(�
���o�
�Pr��p(>
��,To�
��r��p(���,�6Ar��pQ�o�
���(�
���o�
�Pr��p(>
��,To�
��r�p(���,��@r:�pQ�o�
���(�
���o�
�Pr:�p(>
��,To�
��rJ�p(���,�j@r~�pQ�o�
���(�
���o�
�Pr~�p(>
��,To�
��r��p(���,�@r��pQ�o�
���(�
���o�
�Pr��p(>
��,To�
��r��p(���,ݞ?r
�pQ�o�
���(�
���o�
�Pr
�p(>
��,To�
��r�p(���,�8?rP�pQ�o�
���(�
���o�
�PrP�p(>
��,To�
��rb�p(���,��>r��pQ�o�
���(�
���o�
�Pr��p(>
��,\o�
��r��p(���,�l>�(r��pQ�o�
���(�
���o�
�Pr��p(>
��,To�
��r��p(���,�=r"�pQ�o�
���(�
���o�
�Pr"�p(>
��,To�
��r4�p(���,ݘ=rh�pQ�o�
���(�
���o�
�Prh�p(>
��,\o�
��rz�p(���,�2=�(r��pQ�o�
���(�
���o�
�Pr��p(>
��,bo�
��(�(�(�r��p(+o�
&r4�pQ�o�
���(�
���o�
�Pr4�p(>
��,Fo�
��rF�p(���,�P<rz�pQ�o�
�
�,�oA
�Prz�p(>
��,Fo�
��r��p(���,�;r��pQ�o�
�
�,�oA
�Pr��p(>
��,To�
��r��p(���,ݠ;r�pQ�o�
���(�
���o�
�Pr�p(>
��,To�
��r�p(���,�:;rL�pQ�o�
���(�
���o�
�PrL�p(>
��,To�
��r^�p(���,��:r��pQ�o�
���(�
���o�
�Pr��p(>
��,To�
��r��p(���,�n:r��pQ�o�
���(�
���o�
�Pr��p(>
��,To�
��r��p(���,�:r�pQ�o�
���(�
���o�
�Pr�p(>
��,To�
��r0�p(���,ݢ9rd�pQ�o�
���(�
���o�
�Prd�p(>
��,To�
��rv�p(���,�<9r��pQ�o�
���(�
���o�
�Pr��p(>
��,\o�
��r��p(���,��8�(r��pQ�o�
���(�
���o�
�Pr��p(>
��9�o�
��r�p(���,�e8�Pr�@ps�
��o�
�o�
�o�
�
�,�oA
��r6�p(���,�8r~�pQ�o�
���(�
���o�
�Pr~�p(>
��,To�
��r��p(���,ݪ7r��pQ�o�
���(�
���o�
�Pr��p(>
��,To�
��r��p(���,�D7r
�pQ�o�
���(�
���o�
�Pr
�p(>
��,To�
��r�p(���,��6rP�pQ�o�
���(�
���o�
�PrP�p(>
��,To�
��rb�p(���,�x6r��pQ�o�
���(�
���o�
�Pr��p(>
��,To�
��r��p(���,�6r��pQ�o�
���(�
���o�
�Pr��p(>
��9�o�
��Pr�@ps�
��o�
�o�
�o�
�
�,�oA
��r��p(���,�p5r"�pQ�o�
���(�
���o�
�Pr"�p(>
��,To�
��r4�p(���,�
5rh�pQ�o�
���(�
���o�
�Prh�p(>
����,to�
��rz�p(���,݌4r��pQ�o�
���(�
���o�
�Pr��p(>
��9�o�
��r��p(���,�3�s���o�r��pQ�o�
���(�
���o�
�Pr��p(>
��,to�
�	�	r�p(��
�
,�P3r:�pQ�	o�
���(�
���	o�
�Pr:�p(>
��9co�
�
�
rL�p(���,ݿ2�
Pr�@ps�
��o�
�o�
�o�
��,�oA
�r��p��
�(+o�
�U���,�
rA�p(+o�
&r��p��
�(+o�
�U���,�
rd�p(+o�
&r��pQ�
o�
���(�
���
o�
�Pr��p(>
��,to�
��r��p(���,�B1r�pQ�o�
���(�
���o�
�Pr�p(>
��,to�
��r�p(���,ݴ0rR�pQ�o�
���(�
���o�
�PrR�p(>
��9�o�
��rd�p(���,�#0�(E
��9Es� � �(�
}��r��p(+o�
�!�!��#�#,E� s�
}�� {��!o�
� {�� {�o�
�r�p(+o�
�!�!��$�$,E� s�
}�� {��!o�
� {�� {�o�
�(�
�"�"�� �s�
o�
rt�pQ�o�
��%�%(�
���o�
�Prt�p(>
�&�&,to�
�'�'r��p(��(�(,�4.r��pQ�'o�
��)�)(�
���'o�
�Pr��p(>
�*�*9�r��p�%r�p�o�
�U�+�+��/�/,>�7�%(4
o5
�(�
(�
��0�0,8`-rV�p�%r�p�oG
�, �s	
�-�,o�
o�
�1+f�1o�
t�2�-o"
��3�3,�-r��po
&�-�2r��po�
o)
o
&�1o�
-��&�1uM�4�4,�4oA
�,o�
o�
��5�5,L�7�%(4
o5
�%�-o)
�(�
(�
��6�6,8,o�
�.�.Pr�@ps�7�7o�
�7o�7o�8�7o�
�8��9�9,ݕ+��7,�7oA
�.r��p(��:�:,�U+r��pQ�.o�
��;�;(�
���.o�
�Pr��p(>
�<�<9�o�
�=�=r��p(��>�>,��*�=Pr�@ps�
�?�?o�
�?o�
�?o�
��?,�?oA
�r,�pQ�=o�
��@�@(�
���=o�
�Pr,�p(>
�A�A9�o�
�B�Br>�p(��D�D,��)�Brr�p(+o�
&�Br��p(+oG
�C�Co�
o�
�E8��Eo�
t�Fs�
�Gs�
�H�Fr��po�
t�I�I���J�J,S�Is�
�Ks�
�H�H�Ko�
tN�G��K,�KoA
��G��L�L,8��Go�
r�po�
,.�Go�
r5�po�
,�Go�
rS�po�
+�M�M,b�Go�
r�po�
re�po�
�Go�
r5�po�
r}�po�
�Go�
rS�po�
r��po�
�Go�
r��po�
,.�Go�
r��po�
,�Go�
r��po�
+�N�N,b�Go�
r��po�
r�po�
�Go�
r��po�
r?�po�
�Go�
r��po�
re�po�
s�
�H�Is�
�O�H�O�Go�
�Fr��p�Oo�
o�
��O,�OoA
��Eo�
:K����&�EuM�4�4,�4oA
�B�Cr��po�
&r�pQ�Bo�
��P�P(�
���Bo�
�Pr�p(>
�Q�Q9�o�
�Rs�S�Rr��p(��W�W,�%�R(o
�T�S�R(�
}��Ur?p�V�S{�s�
oU
�U�S{�s�
o
�V�&��Vo�
��X�X,�To
�V�Vrp(>
-�Vr3p(�
o�
(>
+�Y�Y9M�U�\�\,G�Ss�
}��S{��Uo�
�S{��S{�o�
+E�Ss�
}��S{��Uo�
�S{��S{�o�
�Ss�
}��S{��:o�
�S{��S{�o�
�R(�
�Z�R(�
�[�Z�R�S�s�
o�
�[�R�S�s�
o�
r��pQ�Ro�
��]�](�
���Ro�
�Pr��p(>
�^�^,to�
�_�_r��p(��`�`,�?#r�pQ�_o�
��a�a(�
���_o�
�Pr�p(>
�b�b9�o�
�cs�d�cr�p(��e�e,ݣ"�d�c(�
}��d{�s�
oU
�f�d{�s�
oU
�g�f�j�j,E�ds�
}��d{��Uo�
�d{��d{�o�
�g�k�k,E�ds�
}��d{��Uo�
�d{��d{�o�
�c(�
�h�c(�
�i�h�c�d�s�
o�
�i�c�d�s�
o�
�&�rQ�pQ�co�
��l�l(�
���co�
�PrQ�p(>
�m�m,to�
�n�nrc�p(��o�o,ݦ r��pQ�no�
��p�p(�
���no�
�Pr��p(>
�q�q,to�
�r�rr��p(��s�s,� r��pQ�ro�
��t�t(�
���ro�
�Pr��p(>
�u�u9o�
�v�vr��p(��y�y,݇�vr#�p(+o�
�w�vrq�p(+o�
�x�w,�x�+�z�z9��vs
�{�w(�
�|�x(�
�}�{�{op
(�
�~�~�|�}o�
�~o�
o�
o�
�+-�o�
t����r��p�:o�
�o�
-��&�uM�4�4,�4oA
�~o�
�vPr�@ps�
����o�
��o�
��o�
���,��oA
�r��pQ�vo�
�����(�
���vo�
�Pr��p(>
����9o�
��s����r��p(�����,�F������(�
}���{�s�
of
���������,����s�
}���{����Uo�
��{���{�o�
��r�p(+oG
����o�
o�
��8���o�
t������r]�po�
(�
���������,	��+�������,����r]�p���Uo�
��o�
:\����&��uM�4�4,�4oA
����r�po�
&��r{�p(+oG
����o�
o�
��8���o�
t������r]�po�
(�
���������,	��+�������,����r]�p���Uo�
��o�
:\����&��uM�4�4,�4oA
����r{�po�
&��s�
}���{��:o�
��{���{�o�
��(�
����(�
���������s�
o�
�������s�
o�
r��pQ��o�
�����(�
����o�
�Pr��p(>
����,to�
����r��p(�����,�7r�pQ��o�
�����(�
����o�
�Pr�p(>
����,to�
����r)�p(�����,ݩr]�pQ��o�
�����(�
����o�
�Pr]�p(>
����,to�
����ro�p(�����,�r��pQ��o�
�����(�
����o�
�Pr��p(>
����,to�
����r��p(�����,ݍr�pQ��o�
�����(�
����o�
�Pr�p(>
����,to�
����r��p(�����,�r/�pQ��o�
�����(�
����o�
�Pr/�p(>
����9�o�
����(o
��r?p����(�
����s�
o
o�
���&���o�
�����,��o
o�
����r3p(�
o�
o�
����,*��rA�p(�����,����r��p(�����,ݙ��Pr�@ps�
����o�
��o�
��o�
���,��oA
�r�pQ��o�
�����(�
����o�
�Pr�p(>
����,to�
����r�p(�����,ݶr�pQ��o�
�����(�
����o�
�Pr�p(>
����9�o�
����r!�p(�����,�%��Pr�@ps�
����o�
��o�
��o�
���,��oA
��rU�p(�����,ݨr��pQ��o�
�����(�
����o�
�Pr��p(>
����9�o�
����r�p(�����,���Pr�@ps�
����o�
��o�
��o�
���,��oA
�r�pQ��o�
�����(�
����o�
�Pr�p(>
����9o�
����r�p(�����,�1r?p����(o
o
����(�
s�
o
���&���o�
�����,������rI�p�%���o�
&��r�p(+o�
&rd�pQ��o�
�����(�
����o�
�Prd�p(>
����9�o�
����rv�p(�����,���Pr�@ps�
����o�
��o�
��o�
���,��oA
��r��p(+o�
&r�pQ��o�
�����(�
����o�
�Pr�p(>
����,to�
����r+�p(�����,�r_�pQ��o�
�����(�
����o�
�Pr_�p(>
����,to�
����rq�p(�����,�vr��pQ��o�
�����(�
����o�
�Pr��p(>
����9�o�
����r��p(�����,����Pr�@ps�
����o�
��o�
��o�
���,��oA
�r�pQ��o�
�����(�
����o�
�Pr�p(>
����9�o�
����r��p(�����,�
��Pr�@ps�
����o�
��o�
��o�
���,��oA
�r��pQ��o�
�����(�
����o�
�Pr��p(>
����9�o�
����(�
����(o
��r?p��s�
�����:o�
����o�
��s�
o
o�
���&���o�
�����,��o
o�
����r3p(�
o�
o�
����9Y��r1�p(+oG
������o�
o�
�����9���o�
o�
��+x��o�
t����r?�po�
o)
����r�p(>
����,����r�p�%���o�
&��o�
:x����&��uM�4�4,�4oA
�+J��rg�p(+o�
�U�����,��r�p(+o�
&����-��o�
o�
�+����,Ks�
������o�
o�
r?�po�
o)
o�
����o�
��rNp(+o�
�U�����,��r�p(+o�
&��rWp(+o�
�U�����,��r�p(+o�
&��rfp(�����,��	r�pQ��o�
�����(�
����o�
�Pr�p(>
����,to�
����r�p(�����,�U	r�pQ��o�
�����(�
����o�
�Pr�p(>
����9�o�
����r�p(�����,����Pr�@ps�
����o�
��o�
��o�
���,��oA
�r&pQ��o�
���(�
����o�
�Pr&p(>
��,to�
��r8p(���,��rlpQ�o�
���(�
���o�
�Prlp(>
��9�o�
��r~p(��	�	,�P�(�
��s�
oU
���
�
9#�s�
o
��r?p(>
�
�
,) �	s�
��
r��p(=
��
�o
(�
�o
(�
(�
�r�p�%���o�
&�r�p�%���o�
&�r
p�%���o�
&�rQp�%���o�
&r�pQ�o�
���(�
���o�
�Pr�p(>
��9o�
��r�p(���,�^�r�p�%�:�o
��(�
�����,P�r&
po�
(�
 ���,$��rpo�
o)
o�
r2
pQ�o�
���(�
���o�
�Pr2
p(>
��9o�
��rD
p(���,�0�r�p�%�:�o
��(�
�����,P�r&
po�
(�
 ���,$��rpo�
o)
o�
rx
pQ�o�
���(�
���o�
�Prx
p(>
� � ,to�
�!�!r�
p(��"�",�r�
pQ�!o�
��#�#(�
���!o�
�Pr�
p(>
�$�$,to�
�%�%r�
p(��&�&,�wrpQ�%o�
��'�'(�
���%o�
�Prp(>
�(�(,to�
�)�)rp(��*�*,��rJpQ�)o�
��+�+(�
���)o�
�PrJp(>
�,�,,to�
�-�-r\p(��.�.,�[r�pQ�-o�
��/�/(�
���-o�
�Pr�p(>
�0�0,to�
�1�1r�p(��2�2,��r�pQ�1o�
��3�3(�
���1o�
�Pr�p(>
�4�4,qo�
�5�5r�p(��6�6,�Br��pQ�5o�
��7�7(�
���5o�
�+*ALi	{	@
@�
S@
P�
�
PBS�
`Ry/�Sy?��/S�?E/tSE?��/�S�?�
/@
S
?P
w
/�
Sw
?�
�
/S�
?C/rSC?��/�S�?�/>S?Nu/�Su?��/
S�?A/pSA?��/�S�?�
7DS
GT{/�S{?��/S�? G7~SGG��=�S�M)/X
�/�
�/S�??/nS??~�/�S�?�/:S?Jq/�Sq?��/S�?=/lS=?|�7�S�G�A]
��S���/�S�?5/dS5?t�/�S�?�/0S?@g/�Sg?���
�h8S�xHo/�So?��? S�W8r\�Srt�?\SWt�(�.�S�F�+?jS+W��?�S�WJ�� SJ�!9!?x!S9!W�!~"w�"&�#W$�#�W$S�#�o$�$(%�$�=%S�$�U%x&+�&](8�(&��(&�%�)S�%�))�):
*c)|�+Sc)��+.,?m,S.,W�,	-T].�,�x.S�,��.�.?/S�.W/U/?�/SU/W�/�0>,1&w1(�1�/��1S�/��1!3��3&=4��4&2��5S2��566?u6S66W�6�6?7S�6W7R7?�7SR7W�7�7?8S�7W78n8?�8Sn8W�890L9:(=:�8ih:S�8��:�:?�:S�:W;�;(�;H;�<SH;�<�<(�<V<��<SV<�=�=�=<=�>S<=�6>�>(�>p>�?Sp>�2?i??�?Si?W�?�??6@S�?WN@�@(�@�@�AS�@�4A�A(�AnA�BSnA�B�B�B�C�D&TBu�ESTB��EF?WFSFWoF�F(G�F�=GS�F�UG�G?�GS�GW�GH��ISH��IJ��JSJ�K=K�LS=K�1LhL?�LShLW�L�L?5MS�LWMM�M?�MS�MW�MN?QNSNWiN�N?�NS�NW�N.O<jOS.OT�O0��rp
(+o�
�U�,$r�p(+o�
&rqp(+o�
&r�p
(+o�
&rdp(+oG
s�

o�
o�
8o�
tr
po�
o)
rW�p(>
		9�r#p�%rkpo�
(H
�o�o�


�,H	
o)
o�
�,0rB�p
o)
o�
o�
	
o)
o�
8�r�p(>


9�rp�%rkpo�
(H
�o�o�
�,H	o)
o�
�,0rB�po)
o�
o�
	o)
o�
�9�r�prB�po�
o)
(�
(<
o7
�i�,br�p%Xr�p(�
(<
r�p(<
o7
��-�rB�po�
o�
	o�
+	rB�po�
o)
o�
o�
:���uM,oA
�o�
�,
r�po�
&rsp
(+o�
&*A�&�0Q�rNp
(+o�
�U�,$rp(+o�
&r{p(+o�
&r�p
(+o�
&r<p(+oG
s�

o�
o�
8xo�
tr
po�
o)
r��p(>
		9�r�p�%rkpo�
(H
�o�o�


�,H	
o)
o�
�,0rB�p
o)
o�
o�
	
o)
o�
�

9�r�prB�po�
o)
(�
(<
o7
�i�,br�p%Xr�p(�
(<
r�p(<
o7
��-�rB�po�
o�
	o�
+	rB�po�
o)
o�
o�
:|����uM,oA
�o�
�,
r#po�
&r�p
(+o�
&*A��0��rVp
(+o�
�U�
	,$r!p(+o�
&r�p(+o�
&r�p
(+o�
&rDp(+o�
�U�,r�p(+o�
&rop(+oG
o�
o�
8�o�
tr
po�
o)
r�prB�po�
o)
(�
(<
o7
�i�,Vr�p%X

r�p(�
(<
	r�p	(<
o7
��-�rB�p	o�
o�
o�
:J����uM,oA
�o�
�

,
rpo�
&rzp
(+o�
&*��f0��rA p(+oG

jr?p
o�
o�
8�o�
trkpo�
(H
r
po�
o)
3
	(�
+

9�
rN!p(>
-rT!p(>
+,#rZ!p�%�o�oG
8hr��p(>
,#r%"p�%�o�oG
83r<#p(>


,#rB#p�%�o�oG
8�r!$p(>
,#r'$p�%�o�oG
8�r�$p(>
,#r%p�%�o�oG
8�r�%p(>
, r�%p�%�o�oG
+br�&p(>
, r�&p�%�o�oG
+0r�'p(>
,r�'p�%�o�oG
r�(pr�(po�
(�
�(<
o7
		��,Pr�(p	�r�(po�
o�
r�(p	�r�(po�
o�
	�r�(pT�Po�
+Xo�
:f����uM,oA
�r
)po�
&*A/��0L�(�

rr)p(+oG
(
o�
o�

8�	o�
tr�)po�
~�
�9�r�<po�
(H
r�)po�
(�
r�)p�%�o�oG
	�
���
������������o�
o�
8o�
tr��po�
(�
r$*po�
(�
(�
(�
(�
o�
(�
(�
o�
(�
r**po�
(�
r6*po�
(�
	(�
	
(�

(�
o�
(�
(�
o�
(�
rB*po�
(�
rV*po�
(�
 (�
 (�
(�
o�
(�
 (�
o�
(�
r?�po�
o)
!!o�
1
!o�
+"",J(�
(�
(�
o�
(�
(�
o�
(�
+H
(�

(�
(�
o�
(�
(�
o�
(�
o�
:���uM##,#oA
�rj*p�o�
rz*p�o�
rB*p�o�
rV*p�o�
r**p	�o�
r6*p
�o�
r�*p
�o�
r�*p�o�
r�)p
(�
�o�
r�*p(�
�o�
r�*p�o�
r�*p�o�
r�*p�o�
r+p�o�
r0+p�o�
rF+p�o�
r\+p�o�
rv+p�o�
r�+p(�
�o�
r�+p(�
�o�
	o�
:����	uM##,#oA
�rr)po�
&*A41'X.�)0���3%rǩp�%r�p�%r��p�%r#�p�%rE�p�%r_�p�%r}�p�%r��p�%r��p�%	r۪p�%
r�p�%r)�p�%rW�p�%
r�p�%r��p�%rǫp�%r�p�
+�
	(X�i2�*0�r�+p(<
(+o�
�U�
9�(�
r@,p(<
(+oG
o�
o�

8d	o�
tr�<po�
(H
r�,p(<
�%�o�oG
r�-p(<
�%�o�oG
o�
o�
8�o�
t		r?�po�
o)


o�
1

o�
+,=	r�.p	r�.po�
(�
	r/po�
(�
(�
�o�
+	r�.p	r�.po�
o�
	r(/po�
o)
o�
�,
	(o�
:2����uM

,
oA
�o�
o�
+No�
trD/p(<
�%r�.po�
�%r�(po�
(H
�o�o�
&o�
-��uM

,
oA
�o�
o�
+No�
trD/p(<
�%r�.po�
�%r�(po�
(H
�o�o�
&o�
-��uM

,
oA
�	o�
:�����	uM

,
oA
�+0r�/p(<
(+o�
&r�0p(<
(+o�
&*Ad����[%J[�Sv�0�r�(po�
(H

r�1p�o(<
r�(po�
��,8�r�1po�
(�
r2po�
(�

	8��r22po�
(�
~�
(�
-(
(�
(�
o�
+~�
	�iY�

,r�.p	�o�
+r�.p	�o�
		(�

X�i�:^���*0s�o
�
	,r�ps
zo 

rD2p(!
}�rD2pr?p(

r�2pr?p(

o�
o�
,o�
o�
o�
�+,Nr(3po�
o�
rL3p(�
s
o�
,�s�
o�

�,x �s	
	o�
�

,	o
&	r�3po

&	r�4po

&	r�4po

&	r5po

&	o)
(6

o�
r5po�
o
�,(U+*0O�o�
dXs	

o)
o
&o
&r�4po
&{��,o
&o)
+*0"o"
�
,o
&rͦpo

&*0?rB5p
+*0?rh5p
+*0?r�5p
+*0?r�5p
+*>}�(�*0��r?p
(�
r6p(6
o�

	�,�.�%�(�
s�
z	s�
o

�
,oA
��	,	oA
�+*Q]
!Mn0J�(%
(�
o�
�,
	r:6p(
	o�
(=
	o�
(=
�*,0��r�6p(+o�

�,r�6p(+o�

�,nr07p(+o�
�U�
	,r!8p�%�o�
&r�8p(+o�
�U�
	,r�9p�%�o�
&*0�M� 0*o
(�

s
o
r�Ap(�
�,*	�7�%r�Ap�(�
(=
8TMs
o
r�@p(

	�,		,()8M	�

,-�7�%�%r�@p�(�
(
8�L9S(E


,r�.�%(4
o5
�%r:p�(�
(�
�,8�L�.�%(4
o5
�(�
(�
�,8YL(o
o
rp(�
,r3p(�
o�
(�
+,_(P
o�
o�
,o
r3p(>
+,)�7(+(�
(�
�,8�Kr�@psOoD
��,ݕK�
,oA
�r�@p(�
(�,8]Kr��p(>
9�o�
('r:p(&�,�K(*r�@ps�
o�
o�
o�
�
,oA
�r<:po�
�(�
��o�
�r<:p(>
9�o�
rH:p(&�  ,�rJ(l
ox
~�%-&~��%s�
%��o�
rp:po�
�!!(�
��o�
�rp:p(>
""9�o�
##r|:p(&�$$,��I#r�@ps�
%%o�
%o�
%o�
�
%,%oA
�r�:p#o�
�&&(�
��#o�
�r�:p(>
'',To�
((r�:p(&�)),�1Ir��p(o�
�**(�
��(o�
�r��p(>
++9�o�
,,r�:p(&�--,��H,r�@ps..o�
.o.o/.o�
/�00,݅H�
.,.oA
�,r�@ps�
11o�
1o�
1o�
�
1,1oA
�r�ap,o�
�22(�
��,o�
�r�ap(>
33,To�
44r;p(&�55,��Gr(;p4o�
�66(�
��4o�
�r(;p(>
77,To�
88r4;p(&�99,�sGr\;p8o�
�::(�
��8o�
�r\;p(>
;;9Uo�
<s=<rh;p(&�AA,�G<(o
>>o
o�
o�
??r3p(�
o�
o�
BB9<r�;p(+o�
�U�CCDD9�<rg�p(+o�
�U�EE,<rg<p(+o�
&+<r4?p(+o�
&<rNp(+o�
�U�FF,<r�?p(+o�
&<rWp(+o�
�U�GG,<r�Bp(+o�
&8�<rg�p(+o�
�U�HH,<r�Ep(+o�
&+<r4?p(+o�
&<rNp(+o�
�U�II,<rXHp(+o�
&<rWp(+o�
�U�JJ,<rKp(+o�
&=<(�
}�<r�Mp(+o�
&<(l
@@<=�s�
o�
rHNp<o�
�KK(�
��<o�
�rHNp(>
LL,To�
MMrTNp(&�NN,ݥDr|NpMo�
�OO(�
��Mo�
�r|Np(>
PP,To�
QQr�Np(&�RR,�@Dr�NpQo�
�SS(�
��Qo�
�r�Np(>
TT9�o�
UUr�Np(+o�
�U�VVWW,[Ur�p(&�XX,ݴCUr�pr�@ps�
YYo�
Yo�
Yo�
�
Y,YoA
�Ur�Op(&�ZZ,�ZCr�OpUo�
�[[(�
��Uo�
�r�Op(>
\\9�o�
]]r�Op(+o�
�U�^^__,]r8p(&�``,��B]r�Pp(&�aa,ݰBrQp]o�
�bb(�
��]o�
�rQp(>
cc9�o�
ddr"Qp(+o�
�U�eeff9dr~p(&�hh,�!Bd(�
o
ggii9�d(
o
jjr?p(>
ll, �	s�
mmr��p(=
jkjo
(�
jo
(�
(�
dr�p�%k��o�
&dr�p�%k��o�
&dr
p�%k��o�
&drQp�%k��o�
&dr�Qp(&�nn,�ArRpdo�
�oo(�
��do�
�rRp(>
pp9o�
qqr)Rp(+o�
�U�rrss9�qr�p(&�vv,݄@qr�p�%�:�o
tq(�
ut�ww,<tr&
po�
(�
 �xx,utrpo�
o)
o�
qrSp(&�yy,�?r6Spqo�
�zz(�
��qo�
�r6Sp(>
{{9o�
||rDSp(+o�
�U�}}~~9�|rD
p(&���,�j?|r�p�%�:�o
|(�
����,<r&
po�
(�
 ���,�rpo�
o)
o�
|r%Tp(&���,��>rOTp|o�
���(�
��|o�
�rOTp(>
��9�o�
��r]Tp(&���,�w>�r�@ps�
��o�
�o�
�o�
�
�,�oA
�r�Tp�o�
���(�
���o�
�r�Tp(>
��9�o�
��r�Tp(+o�
�U�����,�r�
p(&���,ݳ=�rtUp(&���,ݕ=r�Up�o�
���(�
���o�
�r�Up(>
��9�o�
��r�Up(+o�
�U�����,�r�
p(&���,�	=�r�Vp(&���,��<r�Vp�o�
���(�
���o�
�r�Vp(>
��,To�
��r�Vp(&���,݆<r�Vp�o�
���(�
���o�
�r�Vp(>
��9�o�
��r�Vp(+o�
�U�����,�rp(&���,�;�r�Wp(&���,��;r$Xp�o�
���(�
���o�
�r$Xp(>
��,To�
��r2Xp(&���,�w;r\Xp�o�
���(�
���o�
�r\Xp(>
��9�o�
��rjXp(+o�
�U�����,�r\p(&���,��:�r[Yp(&���,��:r�Yp�o�
���(�
���o�
�r�Yp(>
��9�o�
��r�Yp(&���,�e:�r�Yp(	
�rZp�%��C�o�
�U�����9Es
��rcZpo
�roZpo
�r{Zpo
�r�Zpo
�r�Zpo
�r�Zpo
�r�Zpo
�r�Zpo
�r�Zpo
�r�Zpo
�r�Zpo
�r�Zpo
�r�Zpo
�r�Zpo
�r[po
�r[po
�r#[po
�ri=po
�r/[po
�r=[po
�rK[po
�rY[po
�ri[po
�r[po
�r�[po
���o

�8��(
���s

��r�[po
�����,^�ri=p(�
,�ri[p(�
+��, �r�[p��o
(?
(+o�
&��o
o

&�o
�(
:g������oA
��r�[p�%��C�o�
&�rC\p�%��C�o�
&r�\p�o�
���(�
���o�
�r�\p(>
��9�o�
��r�\p(+o�
�U�����,�r�p(&���,�W7�rb]p(&���,�97r�]p�o�
���(�
���o�
�r�]p(>
��,To�
��r�]p(&���,��6r�]p�o�
���(�
���o�
�r�]p(>
��,To�
��r�]p(&���,�o6r�]p�o�
���(�
���o�
�r�]p(>
��,To�
��r
^p(&���,�
6r4^p�o�
���(�
���o�
�r4^p(>
��,To�
��rB^p(&���,ݥ5rl^p�o�
���(�
���o�
�rl^p(>
��,To�
��rz^p(&���,�@5r�^p�o�
���(�
���o�
�r�^p(>
��,To�
��r�^p(&���,��4r�^p�o�
���(�
���o�
�r�^p(>
��,To�
��r�^p(&���,�v4r_p�o�
���(�
���o�
�r_p(>
��,To�
��r"_p(&���,�4rL_p�o�
���(�
���o�
�rL_p(>
��,To�
��rZ_p(&���,ݬ3r�_p�o�
���(�
���o�
�r�_p(>
��,To�
��r�_p(&���,�G3r�_p�o�
���(�
���o�
�r�_p(>
��,To�
��r�_p(&���,��2r�_p�o�
���(�
���o�
�r�_p(>
��,To�
��r`p(&���,�}2r,`p�o�
���(�
���o�
�r,`p(>
��,To�
��r:`p(&���,�2rd`p�o�
���(�
���o�
�rd`p(>
��,To�
��rr`p(&���,ݳ1r�`p�o�
���(�
���o�
�r�`p(>
��,do�
��r�`p(&�����,�F1r�`p�o�
���(�
���o�
�r�`p(>
��9no�
��r�`p(&���,ݾ0�rap(+oG
��o�
o�
�+v�o�
t��r?�po�
o)
��r8apo�
o)
��rPap���(
o�
�o�
:z����&�uM�	�	,�	oA
��rapo�
&rdap�o�
��
�
(�
���o�
�rdap(>
��,to�
��rrap(&��
�
,�7/r�ap�o�
���(�
���o�
�r�ap(>
��,to�
��r�ap(&���,ݪ.r�ap�o�
���(�
���o�
�r�ap(>
��,to�
��r�ap(&���,�.rbp�o�
���(�
���o�
�rbp(>
��,to�
��rbp(&���,ݐ-rDbp�o�
���(�
���o�
�rDbp(>
��,to�
��rRbp(&���,�-r|bp�o�
���(�
���o�
�r|bp(>
��,wo�
� � r�bp(&��!�!,�v,r�bp� o�
��"�"(�
��� o�
�r�bp(>
�#�#,to�
�$�$r�bp(&��%�%,��+r�bp�$o�
��&�&(�
���$o�
�r�bp(>
�'�'9�o�
�(�(r�bp(&��*�*,�V+�((o
�)�)o
��+�+9s�,�((P
o�
�-�(s
�.�((f
o
�/�)o
�0�((�
�1�/o�
,�/+�0�2�,�((�
�2o�
}��-o�
,�-o
r$cp(>
-�-o�
�+�3�39;�2r,cp(�
o�
(>
�4�4,x�.�2s��5�5oD
��6�6,�,�5o�o�
}�+ݰ)��5,�5oA
�8��,{�o�
��7�7,s�.�/s��8�8oD
��9�9,�,�8o�o�
}�+�)��8,�8oA
�8��1�-o
o0
�:�:��;�;,1�1�(o�
�1�-o
o0
�:�:��<�<,�,r3p}�+�,�-o
}��)�(�,�s�
o�
�((o
�(o{
r2cp�(o�
��=�=(�
���(o�
�r2cp(>
�>�>9;o�
�?�?r@cp(&��A�A,݈'�?(o
�@�@o
o�
r_p(�
o�
(>
�B�B9�s
��rjcpo
�r�cpo
��C�Co

�D8�
D(
�E�?r�cp�%�E�o�
%-&+o)
�F�F(�
��G�G9��?r$dp�%�E�o�
�U�H�H��I�I,+�?r�dp�%�F�%�E�o�
&+)�?r�dp�%�E�%�F�o�
&�?rTep�%�E�o�
&�
D(
:�����
D�oA
�r�ep�?o�
��J�J(�
���?o�
�r�ep(>
�K�K,to�
�L�Lr�ep(&��M�M,�4%r�p�Lo�
��N�N(�
���Lo�
�r�p(>
�O�O9Lo�
�P�Pr�ep(&��Q�Q,ݤ$�Pr�@ps�R�Ro�
�Ro�Ro�S�Ro�
�S��T�T,�8$��R,�RoA
�Pr�@ps�
�U�Uo�
�Uo�
�Uo�
��U,�UoA
�rfp�Po�
��V�V(�
���Po�
�rfp(>
�W�W9?o�
�X�Xrfp(&��[�[,�<#�X(
�Y�Yo
�Z�Z(�
�\�\,�Yr<fpo
�Xr�@ps�
�]�]o�
�]o�
�]o�
��],�]oA
�Xr\fp(&��^�^,�q"r�fp�Xo�
��_�_(�
���Xo�
�r�fp(>
�`�`9�o�
�a�ar�fp(&��c�c,��!r�fp(+o�
�b�b��d�d98s�e�bo)
�f�f(+�g�e�gr@gpo
%-&+o)
}��e�grlgpo
%-&+o)
}��e�gr�gpo
%-&+o)
}��e�grhpo
%-&+o)
}��e�grJhpo
%-&+o)
}��a(f
�h�h�aor
�h�a�e� s�
o�
r�hp�ao�
��i�i(�
���ao�
�r�hp(>
�j�j9�o�
�k�kr�hp(&��l�l,���kr�@ps�
�m�mo�
�mo�
�mo�
��m,�moA
�kr�hp(&��n�n,�lrip�ko�
��o�o(�
���ko�
�rip(>
�p�p9@o�
�q�qrip(&��s�s,���q(o
�r�ro
rYp(>
�t�t9��qr8ips�
�(<
r�ip(6
(+o�
&�qr�ip
s�
�(<
rPjp(6
(+o�
&�qr�ips�
�(<
rmp(6
(+o�
&rxop�qo�
��u�u(�
���qo�
�rxop(>
�v�v9wo�
�w�wr�op(&��x�x,݀�w(o
o
r3p(>
�y�y9��ws
�z�zo
o
���{�{,
�zo+�zo
o
���|�|,
�zo+�zo
o
���}�},
�zo+�zo
o 
���~�~,
�zo	+r�op�wo�
���(�
���wo�
�r�op(>
����,to�
����r�op(&�����,��r�op��o�
�����(�
����o�
�r�op(>
����,to�
����r�op(&�����,�cr pp��o�
�����(�
����o�
�r pp(>
����9�o�
��s!����r.pp(&�����,�����3%rXpp�%(!
�%r�pp�%(!
�%rY
p�(
(+o�
�����3%r�pp�%(!
�%r�pp�%(!
�%rY
p�(
(+o�
������(�
�}�����(�
�}���("
������o#
�������"s$
o%
r6qp��o�
�����(�
����o�
�r6qp(>
����,to�
����rDqp(&�����,�-rnqp��o�
�����(�
����o�
�rnqp(>
����,to�
����r|qp(&�����,ݠr�qp��o�
�����(�
����o�
�r�qp(>
����9Zo�
����r�qp(&�����,���r�qp(+o�
%-&+o)
����(�
�����9���s&
����o'
��o(
��(o
������~�%-&~��&s�
%��o�
�&���s&
����o(
�&�rrp��o�
�����(�
����o�
�rrp(>
����9_o�
����r(rp(&�����,ݚ��rRrp(+o
���������9�s)
������rspo�
%-&+o)
o*
����rspo�
%-&+o)
o+
����r1spo�
%-&+o)
o,
������rSsp�%��(-
�o�
&r�sp��o�
�����(�
����o�
�r�sp(>
����,to�
����r�sp(&�����,�"r�sp��o�
�����(�
����o�
�r�sp(>
����,to�
����r�sp(&�����,ݕr'tp��o�
�����(�
����o�
�r'tp(>
����9�o�
����r5tp(&�����,���r�@ps�
����o�
��o�
��o�
���,��oA
�r_tp��o�
�����(�
����o�
�r_tp(>
����9�o�
����rmtp(&�����,�!��r�@ps�
����o�
��o�
��o�
���,��oA
�r�tp��o�
�����(�
����o�
�r�tp(>
����,to�
����r�tp(&�����,�@r�tp��o�
�����(�
����o�
�r�tp(>
����9�o�
����r�tp(&�����,ݰ��r�@ps�
����o�
��o�
��o�
���,��oA
�rup��o�
�����(�
����o�
�rup(>
����,to�
����rup(&�����,��r?up��o�
�����(�
����o�
�r?up(>
����9�o�
����rMup(&�����,�?��r�@ps�
����o�
��o�
��o�
���,��oA
�rwup��o�
�����(�
����o�
�rwup(>
����9�o�
����r�@ps�
����o�
��o�
��o�
���,��oA
��r�up(&�����,�r�up��o�
�����(�
����o�
�r�up(>
����,to�
����r�up(&�����,�zr�up��o�
�����(�
����o�
�r�up(>
����9�o�
����r�up(&�����,��
��r�@ps�
����o�
��o�
��o�
���,��oA
�rvp��o�
�����(�
����o�
�rvp(>
����9�o�
����r-vp(&�����,�
��r�qp(+o�
%-&+o)
����(�
�����,)��s&
����o(
�&�rWvp��o�
�����(�
����o�
�rWvp(>
����,to�
����revp(&�����,�
r�vp��o�
�����(�
����o�
�r�vp(>
����9o�
����r�vp(&�����,�}��("
o.
����r�vp�%���U�%�*�%�*�%�*�(;
(+o�
&��r�wp�%���U�%�*�%�*�%�*�(;
(+o�
&r�xp��o�
�����(�
����o�
�r�xp(>
����9�o�
����r�xp(&�����,�C
��r
yp(+o
���������,j��rzpo�
%-&+o)
(
+����rLzp�%��o/
�%��o0
�%��o1
�o�
&�&���(g
������os
����~�%-&~��'s�
%��o�
��r�@ps�
����o�
��o�
��o�
���,��oA
��r�qp(+o�
%-&+o)
����(�
�����,)��s&
����o(
�&���(2
o3
����9f��(4
o5
����r	{p�%����o�
�U��s�
��~6
s7
����(8
�����,��rc{po9
&��o

��8�
�(
����(:
����rc{p(>
-ri{p+r�{p����r�{p(�
,6��rc{p(�
,$��rE�p(�
,��r�p(�
+��,��r�{p(6
�����3%r|p�%���%r=|p�%���%r[|p�%���%r�|p�(
o
&�
�(
:����
��oA
�����o"
Yo;
��r�|p��(<
�%r�|p���s<
�o�
�U������,�.(+(�
(=
��r�|p(&���,��r3}p��o�
���(�
����o�
�r3}p(>
��,to�
��rA}p(&���,�Lrk}p�o�
���(�
���o�
�rk}p(>
�	�	94o�
�
�
r�@ps�
��o�
�o�
�o�
��,�oA
�
ry}p(&��
�
,�h�
r�qp(+o�
%-&+o)
��(�
���,)�
s&
��o(
�&�r�}p�
o�
���(�
���
o�
�r�}p(>
��9�o�
��r�@ps�
��o�
�o�
�o�
��,�oA
�r�}p(&���,�r�}p�o�
���(�
���o�
�r�}p(>
��,to�
��r�}p(&���,݋r~p�o�
���(�
���o�
�r~p(>
��,to�
��r!~p(&���,�rK~p�o�
���(�
���o�
�rK~p(>
��9�o�
��r�@ps�
� � o�
� o�
� o�
�� ,� oA
�rY~p(&��!�!,�r�@p�o�
��"�"(�
���o�
�r�@p(>
�#�#,�$�$,()+&
�7�%�(�
(=
8��%�%,(.�&�&o/�'�',E(
�(�(o
�(o[
r��p(>
�)�),(,+*A�!
��
sw�Ss��#k�S#{��
�g.S�w>d/�Sd?��81
Mi
���S����/�S�?�"/QS"?a�0�S�@��/	S�?/	U	/�	SU	?�	
.

�	�j
S�	�z
�
qS�
�$Md�SMt����
S���
��S��Kg
g�Sw��q/S��?hq�Sh��/>S?Nwq�Sw��/MS?]�q�S�����0��S0��q�S���/�S�?&/US&?e�/�S�?��/S�?/U/�SU?��/�S�?�/NS?^�/�S�?��/S�?(N/}SN?��/�S�?�/GS?W}/�S}?��/S�?!G7~SGO�(��&�9S�QR?�SRW��?S�W6l?�SlW��?8 S�WP � ?� S� W� !BU!S!Zm!�!?�!S�!W�!�#E$Z$E�$3"}�%S3"��%�&1�'&(S&(U(?�(SU(W�(&)X~)�)(�)�(�)S�(/*�*(+M*
W+SM*"o+�+�O-S�+�g-�-(	.�-�\.S�-�t.�.�/S�.#�/	0BK1S	0Zc1�1?�1S�1W�1&2?e2S&2W}2�2X4S�2p&4\4?�4S\4W�4�4?(5S�4W@5�5q[6a6"�6y5%�6Sy5=�6�6*8S�6B18g8?�8Sg8W�8�8?39S�8WK9�9(�9�9�:S�9�/:�:(�:h:��:Sh:�;I;?�;SI;W�;<(B<�;�l<S�;��<�<?�<S�<W=�=(�=J=��=SJ=��=F>(n>.>��>S.>��>??N?S?Wf?�?(@�?�2@S�?�J@�@"A�@�.AS�@�FA|A?�AS|AW�AB��BSB
CqC�D�D(�DE"$E�E	GFC��GSFC�H=H?|HS=HW�H�H(
I�I"�I�H��IS�H�I5J(]JJ��JSJ��J�J?=KS�JWUK�K?�KS�KW�K3L([LL��LSL��L0�(R

,o$
r�@p(�
+,#r�@po(
oD
o,
�&��9�r�Ap(+o

	�9�o9
	rApo�
o)
(�
-o!
	r]Apo�
o)
(�
+,X	rApo�
o)
o%
	r]Apo�
o)
o&
	rkApo�
(�
( 
o'
oD
o,
�&�*.>P�
0��s

r�~p(+oG
o�
o�

8�	o�
tr�~p�%r�<po�
�oG
rapo�
(�
9I(

rwp
�%�o�%r�<po�
�%r�po�
�%r�po�
�%r �po�
�%r:�po�
�%r��po�
�%rםpo�
�%r��po�
�%	r�po�
�o�
&(>
rX�pr�<po�
(H
o?
rX�pr^�po�
(H
s@
	(A
rn�po�
o)
oB

	oC
	
oD
r:�po�
o)

oE
r+po�
r9po�
rCpo�
o)
r��po�
(�
r��po�
(�
r��po�
(�
r �po�
(�
r�po�
(�
r�po�
o)
rB�po�
o)
r?pr�<po�
(H
oF
	oG
1
	oH
j�+,	(+oI
	r�po�
o)
oJ
rʁpo�
(�


9�(

rށp
�%�o�%r�<po�
�%r��po�
�%r��po�
�%r��po�
�%r�po�
�%rуpo�
�%r�po�
�%�U�%	r��po�
�%
rםpo�
�%r��po�
�%r�po�
�o�
&r��p�%�o�%r��p�%r�<po�
�o�
&r��p�%�o�%r��p�%r�<po�
�o�
&r�p�%r�<po�
�oG
o�
o�
8Io�
t(

rw�p�%�o�%�o�%r�(po�
�%r�po�
�%r�po�
�%r.�po�
�%rD�po�
�%rV�po�
�%rh�po�
�%	r~�po�
�%
r��po�
�%r��po�
�%r��po�
�%
rֈpo�
�%r��po�
�%r�po�
�%r>�po�
�%rb�po�
�%r~�po�
�o�
&o�
:�����uM,oA
�	o�
:b����	uM,oA
�r��po�
&rԉp(+oG
o�
o�
8�o�
trP�p�%r�<po�
�oG
rapo�
(�
9N(

r��p
�%�o�%r�<po�
�%r�po�
�%r�po�
�%r �po�
�%r:�po�
�%r��po�
�%rםpo�
�%r��po�
�%	r�po�
�o�
&(>
r?�pr�<po�
(H
o?
r?�pr^�po�
(H
s@
(A
rn�po�
o)
oB
oC
oD
r:�po�
o)
oE
r+po�
r9po�
rCpo�
o)
r��po�
(�
r��po�
(�
r��po�
(�
r �po�
(�
(K
r�po�
(�
r�po�
o)
rB�po�
o)
r?pr�<po�
(H
oF
oG
1
oH
j�+,(+oI
r�po�
o)
oJ
rʁpo�
(�
9�(

rE�p
�%�o�%r�<po�
�%r��po�
�%r��po�
�%r��po�
�%r�po�
�%rуpo�
�%r�po�
�%�U�%	r��po�
�%
rםpo�
�%r��po�
�%r�po�
�o�
&r��p�%�o�%r�p�%r�<po�
�o�
&r��p�%�o�%r�p�%r�<po�
�o�
&r��p�%r�<po�
�oG
  o�
o�
!8I!o�
t"(

#rZ�p�%#�o�%�o�%"r�(po�
�%"r�po�
�%"r�po�
�%"r.�po�
�%"rD�po�
�%"rV�po�
�%"rh�po�
�%	"r~�po�
�%
"r��po�
�%"r��po�
�%"r��po�
�%
"rֈpo�
�%"r��po�
�%"r�po�
�%"r>�po�
�%"rb�po�
�%"r~�po�
�o�
&!o�
:�����!uM,oA
�o�
:[����uM,oA
�r��po�
&*AdK\�'��8
\���0V�oL
�
,j+Ar^�po�
~�
�,r^�p(M
�oo�
r^�po�
(H
+*0*�o�

r-�p(+oG
o�
(+~�%-&~��(sO
%��(+(
+o
�
	9�r��p~�%-&~��)sR
%��(+(
+(S
r��p�%rH�ps<
�o�
&r^�po�
oT
(�
sU
o
oV
o

8�(
o�
		r��p%jX�oo�
	rpo�
	r��p	�Uo�
	rؒp(�
�o�
	r�p�:o�
	r�p�:o�
	r��p(>
�o�
	r4�p�Uo�
	rJ�p�:o�
o�
	o�
(
:�����oA
�r^�po�
&o�
�,oA
��

(�
��
(W
&�*Ad���	�S
08�
oc
�,s7
+od
}�(X
}�+*0��s*
{�{�oY
(Z
}�{�o[
r��p}�{�r?p(�
,{�(�
+,'o0{�{��+s\
o]
*0N�o1
o2o�
rr�prz�p(
o�
&{��L%o�
rwpo�
�o�
o�
o�

8%	o�
tr��po�
(^
�9�r��po�
o)
�P%,�o�
8��	o�
	o�
�

9�o�
�%ripo�
o)
�%	�o
�,@o�
ripripo�
o�
rp	o�
o�
o�
rr�p�:o�
o�
X�i?9���	o�
:����	uM

,
oA
�o�
o�
+Yo�
to�
rpo�
o)
o�
�,$rr�po�
(^
�,o�
o�
-��uM

,
oA
�o�
rr�po_
o3*A4^7��f0�
+*0�
+*0o�s�

{�o�
s�
o�
rGps�
s�

	o�
	o�
&�(�
��o
o
�+*.FS>V0��s�

{�o�
s�
o�
r5ps�
s�

	o�
	o�
&�L%o�
ripo�
�%o�
rpo�
�o�
�(�
��o
o
�+*aySq�0a�{�o�
s�

o�
r5ps�
s�
s�

o�
&�(�
��o
o
�*-?S=O"(-*08�
oc
�,s.
+od
}�(`
}�+*B{�oa
&*B{�ob
*B{�oc
*0
+*0���{�(�

sd
o

rʓp(>
,8z�r?p(>
,,rԓpr�p(:r�pr�p(:rB�p
rB�p(>
-
rJ�p(>
+9�rR�prv�p(:r��prv�p(:r��prv�p(:r�prv�p(:r�prv�p(:r6�prv�p(:rl�prv�p(:r��prv�p(:rޕprv�p(:r�prv�p(:rP�p
rP�p(>
9�rX�pr��p(:rʖpr��p(:r
�pr,�p(:rH�pr,�p(:rj�pr,�p(:r��pr,�p(:r��pr,�p(:rҗpr,�p(:r�pr,�p(:r2�prb�p(:r��prb�p(:r��prb�p(:r�prb�p(:r�prb�p(:rJ�prb�p(:rz�prb�p(:r��prb�p(:rڙprb�p(:r
�pr@�p(:rp�pr@�p(:r��pr@�p(:rܚpr@�p(:r�pr@�p(:rH�pr@�p(:r~�pr@�p(:r��pr@�p(:r�prb�p(:r&�prb�p(:rR�prb�p(:r��prb�p(:rœprb�p(:r��pr@�p(:r<�pr@�p(:rn�pr@�p(:r��pr@�p(:r�pr@�p(:r(�prX�p(:r��prX�p(:r��prb�p(:rԞprb�p(:r��prb�p(:r(�prb�p(:rR�prb�p(:r|�prb�p(:r��prb�p(:rПprb�p(:r��prb�p(:r$�pr@�p(:rT�pr@�p(:r��pr@�p(:r��pr@�p(:r�pr@�p(:r�pr@�p(:rD�pr@�p(:rt�pr@�p(:r��pr@�p(:rԡpr@�p(:r�p
r�p(>
,_r�pr,�p(:r@�pr,�p(:rt�pr,�p(:r��pr,�p(:r�pr,�p(:r�p
r�p(>
		9�r$�prX�p(:rF�prX�p(:rh�prX�p(:r��prX�p(:r��prX�p(:ṛpr,�p(:r�pr,�p(:r �prX�p(:r^�prX�p(:r��prX�p(:rԤpr,�p(:r�pr,�p(:r\�pr,�p(:r��pr,�p(:r�pr,�p(:r*�pr,�p(:rP�pr,�p(:r��pr,�p(:rƦpr,�p(:r��pr,�p(:r.�pr,�p(:rf�pr,�p(:r��pr,�p(:rЧpr,�p(:r��pr,�p(:r,�pr,�p(:r`�pr,�p(:r��pr,�p(:r¨p
r¨p(>


,_rʨpr�p(:r��pr�p(:r"�pr�p(:rT�pr�p(:r��pr�p(:r��p
r��p(>
9]r��pr�p(:rΩpr�p(:r�pr�p(:r�pr�p(:r�pr�p(:r �pr�p(:r@�pr�p(:rr�pr�p(:r��pr�p(:rΪpr�p(:r��pr,�p(:r�pr,�p(:r8�pr,�p(:rT�pr,�p(:rr�pr,�p(:r��pr,�p(:r��pr,�p(:rܫpr,�p(:r�pr,�p(:rL�pr,�p(:r��pr,�p(:rƬpr,�p(:r�pr,�p(:rD�pr,�p(:r��pr,�p(:rĭpr,�p(:r�pr,�p(:r&�pr,�p(:rb�pr,�p(:r��pr,�p(:r��prv�p(:rڮprv�p(:r�prv�p(:r0�prv�p(:rZ�prv�p(:r��p
r��p(>
9�r��prX�p(:r��prX�p(:r¯prX�p(:rگprX�p(:r�pr,�p(:r�prX�p(:rP�prX�p(:r��prX�p(:rưp
rưp(>


,o=rΰp
rΰp(>
9�rְprv�p(:r�prv�p(:rB�prv�p(:r~�prv�p(:r��prv�p(:r�prv�p(:r&�prv�p(:r\�prv�p(:r��prv�p(:rвprv�p(:ryp
ryp(>
9�r
�prv�p(:r@�prv�p(:rv�prv�p(:r��prv�p(:r�prv�p(:r$�prv�p(:rZ�prv�p(:r��prv�p(:r̴prv�p(:r�prv�p(:r>�p
r>�p(>
,rH�pr�p(:rl�p
rl�p(>
9�rv�pr,�p(:r��pr,�p(:r��pr,�p(:rеpr,�p(:r�pr,�p(:r�pr,�p(:r*�pr,�p(:rJ�pr,�p(:rj�pr,�p(:r��pr,�p(:r��pr,�p(:rĶpr,�p(:r�p
r�p(>
9�r�prv�p(:r�prv�p(:rD�prv�p(:rv�prv�p(:r��prv�p(:rԷpr,�p(:r�pr,�p(:r\�pr,�p(:r��p
r��p(>
,,r��pr�p(:rиpr�p(:r��p
r��p(>
,_r�prv�p(:r0�prv�p(:r`�prv�p(:r��prv�p(:rȹprv�p(:r��p
r��p(>
,,r�pr,�p(:r4�pr,�p(:rb�p
rb�p(>
,_rl�pr,�p(:r��pr,�p(:r�pr,�p(:r �pr,�p(:r\�pr,�p(:r��p
r��p(>
,_r��pr��p(:rƻpr��p(:r�pr��p(:r�pr��p(:r*�prv�p(:rP�p
rP�p(>
,_rZ�prv�p(:rr�prv�p(:r��prv�p(:r��prv�p(:r޼prv�p(:r�p
r�p(>
,,r�pr�p(:r<�pr�p(:rl�p
rl�p(>
,_rv�prX�p(:r��prX�p(:r��prX�p(:r<�prX�p(:r~�prX�p(:r¾p
r¾p(>
9�r̾pr,�p(:r�pr,�p(:r�pr,�p(:r@�pr,�p(:rp�pr,�p(:r��pr,�p(:r��pr,�p(:rڿpr,�p(:r��pr,�p(:r&�p
r&�p(>
,=r0�pr�p(:rd�pr�p(:r��pr�p(:r��p
r��p(>
9�r�pr�p(:r�pr�p(:r�pr�p(:r4�pr�p(:rX�pr�p(:r��pr�p(:r��pr�p(:r�pr�p(:r�pr�p(:r�p
r�p(>
,Nr�pr�p(:rZ�pr�p(:r��pr�p(:r��pr�p(:r6�p
r6�p(>
9or@�pr�p(:rn�pr�p(:r��pr�p(:r��pr�p(:r��pr�p(:r
�pr�p(:r<�pr�p(:rn�pr�p(:r��pr�p(:r��pr�p(:r�pr,�p(:rL�pr,�p(:r��pr,�p(:r��pr,�p(:r�pr,�p(:rH�pr�p(:rp�prv�p(:r��prv�p(:r��prv�p(:rH�prv�p(:r��prv�p(:r��p
r��p(>
  ,_r��prv�p(:r�prv�p(:rP�prv�p(:r��prv�p(:r��prv�p(:r��p
r��p(>
!!,,r�pr�p(:r@�pr�p(:rt�p
rt�p(>
""9<r~�pr��p(;r��pr��p(;r�prL�p(;rn�prL�p(;r��pr��p(;r��pr��p(;r�pr<�p(;r^�pr<�p(;r��pr��p(;r��pr��p(;r��pr2�p(;rZ�pr��p(;r��pr��p(;r�pr��p(;r@�prt�p(;r��prt�p(;r��pr��p(;r&�pr��p(;rT�p
rT�p(>
##,r^�pr��p(;r��p
r��p(>
$$9Mr��pr��p(;r~�pr��p(;r��pr��p(;r�prL�p(;rn�prL�p(;r��pr��p(;r��pr��p(;r�pr<�p(;r^�pr<�p(;r��pr��p(;r��pr��p(;r��pr2�p(;rZ�pr��p(;r��pr��p(;r�pr��p(;r@�prt�p(;r��prt�p(;r��pr��p(;r&�pr��p(;r&�p
r&�p(>
%%9�r0�pr,�p(:rl�pr,�p(:r��pr,�p(:r��pr,�p(:r �pr,�p(:r\�pr,�p(:r��pr,�p(:r��p
r��p(>
-
r��p(>
+&&9;r��pr��p(;r�pr��p(;rR�pr��p(;rz�pr��p(;r��pr��p(;r��pr��p(;r,�pr��p(;r^�pr��p(;r��pr��p(;r��pr��p(;r��pr@�p(:r�pr8�p(;rR�prx�p(;r��pr��p(;r��pr��p(;r�pr>�p(;rZ�pr��p(;r��pr�p(;r&�prh�p(;r��pr��p(;r��pr4�p(;rX�pr��p(;r��pr�p(;r$�prf�p(;r��pr��p(;r��pr8�p(;rb�pr��p(;r��pr�p(;rF�pr��p(;r��pr�p(;r*�prr�p(;r��pr��p(;r�prV�p(;r��p
r��p(>
'',=r��pr��p(;r��pr�p(;r&�pr�p(;rX�p
rX�p(>
((,rb�pr�p(:r��p
r��p(>
)),,r��pr��p(;r��pr�p(;rH�p
rH�p(>
**,,rR�pr��p(;rp�pr��p(;r��p
r��p(>
++,,r��pr�p(:r��pr��p(;r@�p
r@�p(>
,,,_rJ�pr��p(;r��pr��p(;r�pr`�p(;r��pr��p(;r�prB�p(;rt�p
rt�p(>
--,=r~�pr�p(:r��pr�p(:r��pr�p(:r��p
r��p(>
..9�r�pr�p(:r,�pr�p(:rR�pr�p(:rx�pr�p(:r��pr�p(:r��pr�p(:r��pr�p(:r��pr�p(:r��pr�p(:r��pr�p(:r�pr�p(:rD�pr�p(:rt�pr�p(:r��pr�p(:r��p
r��p(>
//,Nr��pr��p(:r�pr��p(:rJ�pr��p(:r��pr��p(:r��p
r��p(>
00,_r��prv�p(:r�prv�p(:r`�prv�p(:r��prv�p(:r��prv�p(:rJ�p
rJ�p(>
11,,rT�pr�p(:rl�pr�p(:r��p
r��p(>
229�r��pr��p(;r�pr��p(;rZ�pr��p(;r��pr��p(;r&�prh�p(;r��prh�p(;r��pr2�p(;rx�pr2�p(;r��pr��p(;rB�pr��p(;r��pr��p(;r�pr��p(;rP�pr��p(;r��pr��p(;r�pr\�p(;r��pr\�p(;r��pr$�p(;rl�pr$�p(;r��pr��p(;r8�pr��p(;rz�pr��p(;r�pr��p(;rF�pr��p(;r��pr��p(;r�prN�p(;r��prN�p(;r��pr�p(;rb�pr�p(;r��pr��p(;r.�pr��p(;rp�pr��p(;r��pr��p(;r<�pr~�p(;r��pr~�p(;r�prJ�p(;r��prJ�p(;r��pr�p(;r^�pr�p(;r��pr��p(;r*�pr��p(;rl�pr��p(;r��pr��p(;r8�prz�p(;r�prz�p(;r�prF�p(;r��prF�p(;r�pr�p(;rZ�pr�p(;r��pr�p(;r2�pr�p(;rz�pr�p(;r�pr�p(;r
�prR�p(;r��prR�p(;r�prR�p(;r0�prR�p(;rx�pr��p(;r�pr��p(;rV�pr��p(;r�pr��p(;r.�prv�p(;r�prv�p(;r�prv�p(;rT�prv�p(;r��pr�p(;r2�pr�p(;rz�pr��p(;rpr��p(;rRpr�p(;r�pr�p(;r0pr�p(;rxpr�p(;r�prp(;rVprp(;r�prp(;r�prp(;r.prvp(;r�prvp(;rprvp(;rTprvp(;r�pr�p(;r2pr�p(;rzpr�p(;r�pr�p(;r
prRp(;r�prRp(;r�prRp(;r0prRp(;rxp
rxp(>
33,,r�pr��p(;r�pr�p(;r�p
r�p(>
44,_r�prҗp(;r�pr�p(;r,pr�p(;rdpr�p(;r�pr�p(;r�p
r�p(>
55,,r�pr�p(:r	pr�p(:rD	p
rD	p(>
669�rN	prf�p(;r�	pr��p(;r�	pr8�p(;r�	pr��p(;r:
pr�p(;rx
pr��p(;r�
pr�p(;r�
prr�p(;r2pr��p(;rpprV�p(;r�p
r�p(>
77,r�pr�p(;r�p
r�p(>
88,rprh�p(;r4p
r4p(>
99,Nr>prR�p(;r>pr~�p(;r>prdp(;r�pr>p(;r�p
r�p(>
::,_r�prv�p(:r
prv�p(:rX
prv�p(:r�
prv�p(:r�
prv�p(:rHp
rHp(>
;;9�rRpr�p(;r�pr�p(;rpr8p(;rvpr8p(;r�pr�p(;r$pr�p(;r\pr�p(;r�pr�p(;r
prBp(;r�prBp(;r�pr�p(;r.pr�p(;rfpr�p(;r�pr�p(;rprTp(;r�prTp(;r�prp(;rHprp(;r�pr�p(;r�pr�p(;r6prrp(;r�prrp(;r�pr,p(;rnpr,p(;r�pr�p(;r(pr�p(;rdpr�p(;r�pr�p(;rp
rp(>
<<9�r(prHp(;r^pr�p(;r�pr�p(;r�pr�p(;r pr@p(;rVprxp(;r�pr�p(;r�prn�p(;r�pr��p(;r*pr^�p(;r\pr��p(;r�pr�p(;r�pr��p(;r�pr&�p(;r6p
r6p(>
==,r@pr�p(:rnp
rnp(>
>>,,rxpr�p(:r�pr�p(:r�p
r�p(>
??9�rpr,�p(:r pr,�p(:r>pr,�p(:rZpr,�p(:rxpr,�p(:r�pr,�p(:r�pr,�p(:r�pr,�p(:r
pr,�p(:r4pr,�p(:rNpr,�p(:rfpr,�p(:r�pr,�p(:r�p
r�p(>
@@,,r�pr,�p(:r�pr,�p(:r�p
r�p(>
AA,pr�pr�p(:r&pr�p(:rZpr�p(:r�pr�p(:r�pr�p(:r�pr�p(:rp
rp(>
BB,Nr$pr,�p(:rTpr,�p(:r�pr,�p(:r�pr,�p(:r�p
r�p(>
CC,,r�pr,�p(:r pr,�p(:r> p
r> p(>
DD,,rH pr,�p(:r� pr,�p(:r� p
r� p(>
EE9�xFF�o)
rv�p(:|FF�o)
rv�p(:}FF�o)
rv�p(:{FF�o)
rv�p(:yFF�o)
rv�p(:zFF�o)
rv�p(:r� p
r� p(>
GG,J FF�o)
r,�p(:  FF�o)
r,�p(:r� p
r� p(>
HH9* �FF�o)
r,�p(: �FF�o)
r,�p(: $FF�o)
r,�p(: eFF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: FF�o)
r,�p(: BFF�o)
r,�p(: iFF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: 	FF�o)
r,�p(: IFF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: FF�o)
r,�p(: �FF�o)
r,�p(:r� p
r� p(>
II9� <FF�o)
r,�p(: AFF�o)
r,�p(: @FF�o)
r,�p(: ?FF�o)
r,�p(: >FF�o)
r,�p(: =FF�o)
r,�p(:r� p
r� p(>
JJ,j ;
FF�o)
rv�p(: <
FF�o)
rv�p(: =
FF�o)
rv�p(:r� p
r� p(>
KK,j v
FF�o)
rv�p(: w
FF�o)
rv�p(: x
FF�o)
rv�p(:r!p
r!p(>
LL,j >
FF�o)
rv�p(: ?
FF�o)
rv�p(: @
FF�o)
rv�p(:r!p
r!p(>
MM9J �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 
	FF�o)
r,�p(: 	FF�o)
r,�p(: 		FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 
	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(:r!p
r!p(>
NN,
r !p
r !p(>
OO94 A
FF�o)
rv�p(: B
FF�o)
rv�p(: C
FF�o)
rv�p(: D
FF�o)
rv�p(: E
FF�o)
rv�p(: F
FF�o)
rv�p(: G
FF�o)
rv�p(: n
FF�o)
o)
rv�p(: o
FF�o)
o)
rv�p(:r*!p
r*!p(>
PP,T H
FF�o)
o)
rv�p(: I
FF�o)
o)
rv�p(:r4!p
r4!p(>
QQ,T l
FF�o)
o)
rv�p(: m
FF�o)
o)
rv�p(:r>!p
r>!p(>
RR,* �
FF�o)
rv�p(:rH!p
rH!p(>
SS9� �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(;rR!p
rR!p(>
TT,J y
FF�o)
rv�p(: z
FF�o)
rv�p(:r\!p
r\!p(>
UU9$ �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(;rf!p
rf!p(>
VV9
 �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(:rp!p
rp!p(>
WW9� �
FF�o)
 v
FF�o)
(; �
FF�o)
 w
FF�o)
(; �
FF�o)
 x
FF�o)
(;rz!p
rz!p(>
XX,* �
FF�o)
rv�p(:r�!p
r�!p(>
YY9� J
FF�o)
 v
FF�o)
(; K
FF�o)
 w
FF�o)
(; L
FF�o)
 x
FF�o)
(; �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(;r�!p
r�!p(>
ZZ9� U
FF�o)
rv�p(: V
FF�o)
rv�p(: W
FF�o)
rv�p(: X
FF�o)
rv�p(: Y
FF�o)
rv�p(: Z
FF�o)
rv�p(: [
FF�o)
rv�p(: \
FF�o)
rv�p(: ]
FF�o)
rv�p(: ^
FF�o)
rv�p(: _
FF�o)
rv�p(: a
FF�o)
rv�p(: b
FF�o)
rv�p(: c
FF�o)
rv�p(: e
FF�o)
rv�p(: f
FF�o)
rv�p(: g
FF�o)
rv�p(: i
FF�o)
rv�p(: j
FF�o)
rv�p(: k
FF�o)
rv�p(:r�!p
r�!p(>
[[9� �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r�p(:r�!p
r�!p(>
\\,
r�!p
r�!p(>
]]9� �
FF�o)
 v
FF�o)
(; �
FF�o)
 w
FF�o)
(; �
FF�o)
 x
FF�o)
(; �
FF�o)
 y
FF�o)
(; �
FF�o)
 z
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(;r�!p
r�!p(>
^^9� 5
FF�o)
r,�p(: :
FF�o)
r,�p(: 9
FF�o)
r,�p(: 8
FF�o)
r,�p(: 7
FF�o)
r,�p(: 6
FF�o)
r,�p(:r�!p
r�!p(>
__,* �FF�o)
r�p(:r�!p
r�!p(>
``,* �FF�o)
r,�p(:r�!p
r�!p(>
aa,j {
FF�o)
rv�p(: |
FF�o)
rv�p(: }
FF�o)
rv�p(:r�!p
r�!p(>
bb,* �FF�o)
rv�p(:r�!p
r�!p(>
cc,J �
FF�o)
rv�p(: �
FF�o)
rv�p(:r�!p
r�!p(>
dd,* 
FF�o)
r��p(:r�!p
r�!p(>
ee9� �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: FF�o)
r��p(: FF�o)
r��p(: 
FF�o)
r��p(:r"p
r"p(>
ff,* FF�o)
r,�p(:r"p
r"p(>
gg,j ~
FF�o)
rv�p(: 
FF�o)
rv�p(: �
FF�o)
rv�p(:r"p
r"p(>
hh9�2o>ii9{ �FF�o)
r$"p(< �FF�o)
rB"p(< �FF�o)
rj"p(< �FF�o)
r�"p(< �FF�o)
r�"p(< �FF�o)
r�"p(< �FF�o)
r#p(< �FF�o)
r4#p(< �FF�o)
r`#p(< �FF�o)
r�#p(< �FF�o)
r�#p(< �FF�o)
r$p(< �FF�o)
rP$p(< �FF�o)
r�$p(< �FF�o)
r�$p(< �FF�o)
r%p(< �FF�o)
rR%p(< �FF�o)
r�%p(< �FF�o)
r�%p(< �FF�o)
r0&p(< �FF�o)
rv&p(< �FF�o)
r�&p(< �FF�o)
r�&p(< �FF�o)
rD'p(< �FF�o)
r�'p(< �FF�o)
r�'p(< �FF�o)
r(p(< �FF�o)
rb(p(< �FF�o)
r�(p(< �FF�o)
r�(p(< �FF�o)
r)p(< �FF�o)
r@)p(< �FF�o)
r~)p(< �FF�o)
r�)p(< �FF�o)
r�)p(< �FF�o)
r�)p(< �FF�o)
r�)p(< �FF�o)
r�)p(< �FF�o)
r&*p(< �FF�o)
rh*p(< �FF�o)
r�*p(< �FF�o)
r�*p(< �FF�o)
r"+p(< �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; 6FF�o)
r^+p(< 7FF�o)
r�+p(< 8FF�o)
r�+p(< 9FF�o)
r�+p(< :FF�o)
r
,p(< ;FF�o)
r8,p(< <FF�o)
rf,p(< ?FF�o)
r�,p(< @FF�o)
r�,p(< BFF�o)
r-p(< CFF�o)
rP-p(< DFF�o)
r�-p(< EFF�o)
r�-p(< FFF�o)
r.p(< GFF�o)
rb.p(< HFF�o)
r�.p(< IFF�o)
r�.p(< JFF�o)
rD/p(< KFF�o)
r�/p(< LFF�o)
r�/p(< MFF�o)
r,0p(< NFF�o)
rn0p(< OFF�o)
r�0p(< PFF�o)
r1p(< QFF�o)
r^1p(< RFF�o)
r�1p(< `FF�o)
r�1p(< aFF�o)
r*2p(< bFF�o)
rl2p(< cFF�o)
r�2p(< dFF�o)
r�2p(< eFF�o)
r03p(< fFF�o)
rp3p(< SFF�o)
r�3p(< TFF�o)
r�3p(< UFF�o)
r24p(< VFF�o)
rv4p(< WFF�o)
r�4p(< XFF�o)
r�4p(< YFF�o)
 SFF�o)
(; ZFF�o)
 TFF�o)
(; [FF�o)
 UFF�o)
(; \FF�o)
 VFF�o)
(; ]FF�o)
 WFF�o)
(; ^FF�o)
 XFF�o)
(;8� �FF�o)
r,�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; 7FF�o)
r,�p(: ?FF�o)
r@�p(: <FF�o)
r@�p(: :FF�o)
r@�p(: 9FF�o)
r@�p(: 8FF�o)
r@�p(: ;FF�o)
r@�p(: BFF�o)
r@�p(: @FF�o)
r@�p(: DFF�o)
r@�p(: HFF�o)
r@�p(: NFF�o)
r@�p(: TFF�o)
r@�p(: ZFF�o)
r@�p(: EFF�o)
r@�p(: IFF�o)
r@�p(: OFF�o)
r@�p(: UFF�o)
r@�p(: [FF�o)
r@�p(: FFF�o)
r@�p(: JFF�o)
r@�p(: PFF�o)
r@�p(: VFF�o)
r@�p(: \FF�o)
r@�p(: KFF�o)
 HFF�o)
(; LFF�o)
 HFF�o)
(; QFF�o)
 NFF�o)
(; RFF�o)
 NFF�o)
(; WFF�o)
 TFF�o)
(; XFF�o)
 TFF�o)
(; ]FF�o)
 ZFF�o)
(; ^FF�o)
 ZFF�o)
(; �FF�o)
r,�p(: �FF�o)
rb�p(: �FF�o)
r,�p(: �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; AFF�o)
r,�p(: gFF�o)
r@�p(: iFF�o)
r,�p(: jFF�o)
 8FF�o)
(; _FF�o)
 8FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; rFF�o)
 6FF�o)
(; sFF�o)
 7FF�o)
(; tFF�o)
 8FF�o)
(; uFF�o)
 9FF�o)
(; vFF�o)
 :FF�o)
(; wFF�o)
 ;FF�o)
(; xFF�o)
 <FF�o)
(; yFF�o)
 =FF�o)
(; {FF�o)
 ?FF�o)
(; |FF�o)
 @FF�o)
(; }FF�o)
 AFF�o)
(; ~FF�o)
 BFF�o)
(; �FF�o)
 _FF�o)
(; �FF�o)
 gFF�o)
(; �FF�o)
 hFF�o)
(; �FF�o)
 iFF�o)
(; �FF�o)
 jFF�o)
(; �FF�o)
 kFF�o)
(; �FF�o)
 lFF�o)
(; �FF�o)
 mFF�o)
(; �FF�o)
 nFF�o)
(; �FF�o)
 oFF�o)
(; �FF�o)
 pFF�o)
(; �FF�o)
 qFF�o)
(; FF�o)
 CFF�o)
(; �FF�o)
 DFF�o)
(; �FF�o)
 EFF�o)
(; �FF�o)
 FFF�o)
(; �FF�o)
 GFF�o)
(; �FF�o)
 HFF�o)
(; �FF�o)
 IFF�o)
(; �FF�o)
 JFF�o)
(; �FF�o)
 KFF�o)
(; �FF�o)
 LFF�o)
(; �FF�o)
 MFF�o)
(; �FF�o)
 NFF�o)
(; �FF�o)
 OFF�o)
(; �FF�o)
 PFF�o)
(; �FF�o)
 QFF�o)
(; �FF�o)
 RFF�o)
(; �FF�o)
 `FF�o)
(; �FF�o)
 aFF�o)
(; �FF�o)
 bFF�o)
(; �FF�o)
 cFF�o)
(; �FF�o)
 dFF�o)
(; �FF�o)
 eFF�o)
(; �FF�o)
 fFF�o)
(; �FF�o)
rb�p(: �FF�o)
rb�p(: eFF�o)
r@�p(: �FF�o)
r@�p(: "	FF�o)
rX�p(: #	FF�o)
rX�p(: $	FF�o)
rX�p(: %	FF�o)
rX�p(: &	FF�o)
rX�p(: '	FF�o)
r,�p(: (	FF�o)
r,�p(: )	FF�o)
r,�p(: *	FF�o)
r,�p(: E	FF�o)
rX�p(: F	FF�o)
rX�p(: G	FF�o)
rX�p(: -	FF�o)
rX�p(: .	FF�o)
rX�p(: /	FF�o)
r,�p(: 1	FF�o)
r,�p(: 2	FF�o)
r,�p(: 3	FF�o)
r,�p(: 4	FF�o)
r,�p(: 5	FF�o)
r,�p(: 7	FF�o)
r,�p(: 8	FF�o)
r,�p(: 9	FF�o)
r,�p(: :	FF�o)
r,�p(: ;	FF�o)
r,�p(: =	FF�o)
r,�p(: >	FF�o)
r,�p(: ?	FF�o)
r,�p(: @	FF�o)
r,�p(: A	FF�o)
r,�p(: B	FF�o)
r,�p(: JFF�o)
r@�p(: KFF�o)
r@�p(: LFF�o)
r@�p(: MFF�o)
r@�p(: NFF�o)
r@�p(: OFF�o)
r,�p(: PFF�o)
r,�p(: RFF�o)
r,�p(: SFF�o)
r,�p(: TFF�o)
r,�p(: xFF�o)
r@�p(: yFF�o)
r,�p(: VFF�o)
r@�p(: WFF�o)
r@�p(: XFF�o)
r,�p(: ZFF�o)
r,�p(: [FF�o)
r,�p(: \FF�o)
r,�p(: ]FF�o)
r,�p(: ^FF�o)
r,�p(: `FF�o)
r,�p(: aFF�o)
r,�p(: bFF�o)
r,�p(: cFF�o)
r,�p(: dFF�o)
r,�p(: fFF�o)
r,�p(: gFF�o)
r,�p(: hFF�o)
r,�p(: iFF�o)
r,�p(: jFF�o)
r,�p(: lFF�o)
r,�p(: mFF�o)
r,�p(: nFF�o)
r,�p(: oFF�o)
r,�p(: pFF�o)
r,�p(: rFF�o)
r,�p(: sFF�o)
r,�p(: tFF�o)
r,�p(: uFF�o)
r,�p(: vFF�o)
r,�p(: wFF�o)
r,�p(: FF�o)
r@5p(: FF�o)
r@5p(: 
FF�o)
r@5p(: kFF�o)
r�p(: lFF�o)
r�p(: mFF�o)
r�p(:rr5p
rr5p(>
jj9* �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
r,�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
r,�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
r,�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(: �
FF�o)
rX�p(:rz5p
rz5p(>
kk9�r�5prX�p(:r�5prX�p(:r�5prX�p(:r�5prX�p(:r�5prX�p(:r�5pr,�p(:r6pr,�p(:r86prX�p(:rl6prX�p(:r�6prX�p(:r�6pr,�p(:r
7pr,�p(:rB7pr,�p(:r|7pr,�p(:r�7pr,�p(:r�7pr,�p(:r*8pr,�p(:rF8pr,�p(:r|8pr,�p(:r�8pr,�p(:r�8pr,�p(:r�8pr,�p(:r*9pr,�p(:rT9pr,�p(:r�9pr,�p(:r�9pr,�p(:r:pr,�p(:rR:pr,�p(:r�:pr,�p(:r�:p
r�:p(>
ll,,r�:pr�p(:r0;pr�p(:rx;p
rx;p(>
mm9�$FF�o)
r��p(:FF�o)
r��p(: FF�o)
r��p(:!FF�o)
r��p(:"FF�o)
r��p(:#FF�o)
r��p(:>FF�o)
r��p(:?FF�o)
r��p(:@FF�o)
r��p(:AFF�o)
r��p(:BFF�o)
r��p(:CFF�o)
r��p(:DFF�o)
r��p(: 8FF�o)
r��p(: 9FF�o)
r��p(: :FF�o)
r��p(: ;FF�o)
r��p(: <FF�o)
r��p(: =FF�o)
r��p(: RFF�o)
r��p(: SFF�o)
r��p(: TFF�o)
r��p(: UFF�o)
r��p(: VFF�o)
r��p(: WFF�o)
r��p(: yFF�o)
r��p(: zFF�o)
r��p(: {FF�o)
r��p(: |FF�o)
r��p(: }FF�o)
r��p(: ~FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: mFF�o)
r��p(: nFF�o)
r��p(: oFF�o)
r��p(: pFF�o)
r��p(: qFF�o)
r��p(: rFF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: FF�o)
r��p(: FF�o)
r��p(: FF�o)
r��p(: FF�o)
r��p(: FF�o)
r��p(: FF�o)
r��p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: FF�o)
rb�p(: FF�o)
rb�p(: FF�o)
rb�p(: FF�o)
rb�p(: FF�o)
rb�p(: FF�o)
rb�p(: FF�o)
rb�p(: SFF�o)
rb�p(: TFF�o)
rb�p(: UFF�o)
rb�p(: VFF�o)
rb�p(: WFF�o)
rb�p(: XFF�o)
rb�p(: YFF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: FF�o)
rb�p(: FF�o)
rb�p(: FF�o)
rb�p(: FF�o)
rb�p(: FF�o)
rb�p(: 1FF�o)
rb�p(: 2FF�o)
rb�p(: 3FF�o)
rb�p(: 4FF�o)
rb�p(: 5FF�o)
rb�p(: 6FF�o)
rb�p(: 7FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: zFF�o)
r@�p(: {FF�o)
r@�p(: |FF�o)
r@�p(: }FF�o)
r@�p(: ~FF�o)
r@�p(: FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: 7FF�o)
r@�p(: 8FF�o)
r@�p(: 9FF�o)
r@�p(: :FF�o)
r@�p(: ;FF�o)
r@�p(: <FF�o)
r@�p(: =FF�o)
r@�p(: pFF�o)
r@�p(: qFF�o)
r@�p(: rFF�o)
r@�p(: sFF�o)
r@�p(: tFF�o)
r@�p(: uFF�o)
r@�p(: vFF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r�;p(: �FF�o)
r�;p(: �FF�o)
r�;p(: �FF�o)
r�;p(: �FF�o)
r�;p(: �FF�o)
r�;p(: �FF�o)
r�;p(: kFF�o)
r@�p(: lFF�o)
r@�p(: mFF�o)
r@�p(: nFF�o)
r@�p(: oFF�o)
r@�p(: pFF�o)
r@�p(: qFF�o)
r@�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: 	FF�o)
r,�p(: H	FF�o)
rX�p(: I	FF�o)
rX�p(: J	FF�o)
rX�p(: K	FF�o)
rX�p(: L	FF�o)
rX�p(: M	FF�o)
rX�p(: N	FF�o)
rX�p(: r	FF�o)
rX�p(: s	FF�o)
rX�p(: t	FF�o)
rX�p(: u	FF�o)
rX�p(: v	FF�o)
rX�p(: w	FF�o)
rX�p(: x	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: �	FF�o)
rX�p(: 
FF�o)
r,�p(: 
FF�o)
r,�p(: 
FF�o)
r,�p(: 
FF�o)
r,�p(: 
FF�o)
r,�p(: 
FF�o)
r,�p(: 
FF�o)
r,�p(: B
FF�o)
r,�p(: C
FF�o)
r,�p(: D
FF�o)
r,�p(: E
FF�o)
r,�p(: F
FF�o)
r,�p(: G
FF�o)
r,�p(: H
FF�o)
r,�p(: l
FF�o)
rX�p(: m
FF�o)
rX�p(: n
FF�o)
rX�p(: o
FF�o)
rX�p(: p
FF�o)
rX�p(: q
FF�o)
rX�p(: r
FF�o)
rX�p(: _FF�o)
rX�p(: `FF�o)
rX�p(: aFF�o)
rX�p(: bFF�o)
rX�p(: cFF�o)
rX�p(: dFF�o)
rX�p(: eFF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(: �FF�o)
rX�p(:r�;p
r�;p(>
nn9� �FF�o)
r�p(: �FF�o)
r�p(: �FF�o)
r�p(: �FF�o)
r�p(:r�;p
r�;p(>
oo9� ,FF�o)
rX�p(: -FF�o)
rX�p(: .FF�o)
rX�p(: /FF�o)
rX�p(: 0FF�o)
rX�p(:r�;p
r�;p(>
pp9� qFF�o)
r,�p(: tFF�o)
r,�p(: rFF�o)
r,�p(: sFF�o)
r,�p(: uFF�o)
r,�p(: vFF�o)
r,�p(: wFF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(: �FF�o)
r@5p(:r�;p
r�;p(>
qq,j ~
FF�o)
rv�p(: 
FF�o)
rv�p(: �
FF�o)
rv�p(:r�;p
r�;p(>
rr9� `FF�o)
rb�p(: aFF�o)
rb�p(: bFF�o)
rb�p(: cFF�o)
rb�p(: dFF�o)
rb�p(: eFF�o)
r,�p(: fFF�o)
r,�p(: gFF�o)
r,�p(: hFF�o)
r,�p(: jFF�o)
r,�p(: kFF�o)
r,�p(: lFF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
rb�p(: �FF�o)
r,�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: nFF�o)
rb�p(: oFF�o)
rb�p(: pFF�o)
r,�p(: rFF�o)
r,�p(: sFF�o)
r,�p(: tFF�o)
r,�p(: uFF�o)
r,�p(: vFF�o)
r,�p(: xFF�o)
r,�p(: yFF�o)
r,�p(: zFF�o)
r,�p(: {FF�o)
r,�p(: |FF�o)
r,�p(: ~FF�o)
r,�p(: FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
rb�p(:r�;p
r�;p(>
ss9
 iFF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(:  FF�o)
r,�p(: aFF�o)
r,�p(: �FF�o)
r,�p(: FF�o)
r,�p(: �FF�o)
r,�p(: QFF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: FF�o)
r,�p(: EFF�o)
r,�p(: ~FF�o)
r,�p(: =FF�o)
r,�p(: yFF�o)
r,�p(:r�;p
r�;p(>
tt9� CFF�o)
r,�p(: DFF�o)
r,�p(: EFF�o)
r,�p(: FFF�o)
r,�p(: GFF�o)
r,�p(:r�;p
r�;p(>
uu,J �FF�o)
r,�p(: �FF�o)
r,�p(:r<p
r<p(>
vv,j �FF�o)
r�p(: �FF�o)
r�p(: �FF�o)
r�p(:r<p
r<p(>
ww,J 
FF�o)
r�p(: 
FF�o)
r�p(:r<p
r<p(>
xx,* 
FF�o)
r�p(:r&<p
r&<p(>
yy,j 
FF�o)
r��p(: 
FF�o)
r��p(: 
FF�o)
r��p(:r0<p
r0<p(>
zz,J C	FF�o)
rX�p(: D	FF�o)
rX�p(:r:<p
r:<p(>
{{,J �FF�o)
rb�p(: �FF�o)
r@�p(:rD<p
rD<p(>
||,h t
FF�o)
 r
FF�o)
(; u
FF�o)
 q
FF�o)
(;rN<p
rN<p(>
}},9 �
FF�o)
 �
FF�o)
(;rX<p
rX<p(>
~~9;r�prb<p(; ~FF�o)
r��p(: FF�o)
r��p(: �FF�o)
r��p(: �FF�o)
r��p(: uFF�o)
r�p(: wFF�o)
r�p(: xFF�o)
r�p(: yFF�o)
r�p(: |FF�o)
r�p(:r�<p
r�<p(>
,DkFF�o)
rv�p(:jFF�o)
rv�p(:r�<p
r�<p(>
��9� �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(;r�<p
r�<p(>
��,_r�<pr,�p(:r�<pr,�p(:r<=pr,�p(:r�=pr,�p(:r�=pr,�p(:r&>p
r&>p(>
��,r0>prX�p(:rX>p
rX>p(>
��,* �FF�o)
r,�p(:rb>p
rb>p(>
��9� �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
rb�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(: �FF�o)
r@�p(:rl>p
rl>p(>
��9�rv>prv�p(:r�>prv�p(:r�>prv�p(:r�>prv�p(:r"?prv�p(:rP?prv�p(:rz?prv�p(:r�?prv�p(:r�?prv�p(:r�?prv�p(:r@prv�p(:rJ@prv�p(:rr@prv�p(:r�@prv�p(:r�@prv�p(:r�@prv�p(:rAprv�p(:rLAprv�p(:rvAprv�p(:r�Aprv�p(:r�Aprv�p(:r�Aprv�p(:rBprv�p(:rFBprv�p(:rnBp
rnBp(>
��,rxBprX�p(:r�Bp
r�Bp(>
��9� �
FF�o)
r@5p(: \FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: 3FF�o)
r,�p(: jFF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: 
FF�o)
r,�p(: 2FF�o)
r,�p(: �FF�o)
r,�p(: +	FF�o)
r,�p(: Y	FF�o)
r,�p(: �	FF�o)
r,�p(: �	FF�o)
r,�p(: �	FF�o)
r,�p(: 
FF�o)
r,�p(: *
FF�o)
r,�p(: S
FF�o)
r,�p(:r�Bp
r�Bp(>
��,* �FF�o)
r�p(:r�Bp
r�Bp(>
��9� �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(;r�Bp
r�Bp(>
��9m �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(;r�Bp
r�Bp(>
��9F �FF�o)
r�p(: �FF�o)
r�p(: �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
rv�p(: �
FF�o)
rv�p(: �
FF�o)
rv�p(: /
FF�o)
 )
FF�o)
(; 0
FF�o)
 +
FF�o)
(; 1
FF�o)
 +
FF�o)
(; 2
FF�o)
 ,
FF�o)
(; 3
FF�o)
 -
FF�o)
(; 4
FF�o)
 .
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(;r�Bp
r�Bp(>
��9� �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(; �
FF�o)
 �
FF�o)
(;r�Bp
r�Bp(>
��,J �FF�o)
r�p(: �FF�o)
r�p(:r�Bp
r�Bp(>
��9� �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; kFF�o)
 cFF�o)
(; FF�o)
 wFF�o)
(; �FF�o)
 �FF�o)
(; fFF�o)
 cFF�o)
(; �FF�o)
 �FF�o)
(; 1FF�o)
 .FF�o)
(; EFF�o)
 BFF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(;	FF�o)
FF�o)
(;+FF�o)
(FF�o)
(; �FF�o)
 �FF�o)
(; !FF�o)
 FF�o)
(; bFF�o)
 ^FF�o)
(; �FF�o)
 �FF�o)
(; 
FF�o)
 	FF�o)
(; ?FF�o)
 <FF�o)
(; fFF�o)
 cFF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; FF�o)
 FF�o)
(; FFF�o)
 BFF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; FF�o)
 FF�o)
(; >FF�o)
 :FF�o)
(; zFF�o)
 vFF�o)
(; �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(:r�Bp
r�Bp(>
��9� �FF�o)
r�Bp(: �FF�o)
r�Bp(: �FF�o)
r�Bp(: �FF�o)
r�Bp(: �FF�o)
r�Bp(: �FF�o)
r�Bp(:rCp
rCp(>
��,* �FF�o)
r�Bp(:r(Cp
r(Cp(>
��,J FF�o)
r�Bp(: FF�o)
r�Bp(:r2Cp
r2Cp(>
��,* �FF�o)
r<Cp(:rjCp
rjCp(>
��9* �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r�Bp(: FF�o)
r�p(: FF�o)
r�p(: FF�o)
r�p(: FF�o)
r�p(: FF�o)
r�p(: FF�o)
r�p(:rtCp
rtCp(>
��9* 2FF�o)
rv�p(: 3FF�o)
rv�p(: 4FF�o)
rv�p(: 5FF�o)
rv�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(:r~Cp
r~Cp(>
��9� �FF�o)
 �FF�o)
(; �FF�o)
 �FF�o)
(; �FF�o)
r,�p(: �FF�o)
r,�p(: �FF�o)
r,�p(:r�Cp
r�Cp(>
��9j FF�o)
r,�p(: FF�o)
r,�p(: FF�o)
r,�p(: FF�o)
r,�p(: FF�o)
r,�p(: FF�o)
r,�p(: FF�o)
r,�p(: FF�o)
r,�p(:  FF�o)
r,�p(: "FF�o)
r,�p(: #FF�o)
r,�p(: %FF�o)
r,�p(: &FF�o)
r,�p(: (FF�o)
r,�p(: )FF�o)
r,�p(: +FF�o)
r,�p(: ,FF�o)
r,�p(: .FF�o)
r,�p(: /FF�o)
r,�p(:r�Cp
r�Cp(>
��,J �FF�o)
r�Bp(: �FF�o)
r�Bp(:r�Cp
r�Cp(>
��9� FF�o)
r��p(: 	FF�o)
r��p(: FF�o)
r��p(: FF�o)
r��p(: 
FF�o)
r��p(: �FF�o)
r�p(:r�Cp
r�Cp(>
��,J FF�o)
r��p(: FF�o)
r��p(:rʓp
	��,o�
o�
*0��o�

r˨pr�Cp(Ar!�pr�Cp(Ar��pr�Cp(ArI�pr�Cp(Ar��prDp(Aru�prDp(Ar$Dpr8Dp(BrRDprdDp(Br|Dpr�Dp(Br�Dpr�Dp(Bo�
�(�
��
o�
�*��S��
0*�(�

�3%r�Dp�%�%rHEp�%�%rREp�(
(+oe
tHs�
s�

	o�
&	o�
o�
8o�
toI
�ooI
o)
o�
�,
o�
-oI
�+oI
�oI
�(�
	(
	oI
�(�
o�

r�Epr�Ep(�
(+oe
tHo
r/Fp�oo
&o
r?Fp	�o
&o
rSFp
�o
&o�
&o�
:����uM

,
oA
�rqFp(6
(+oe
tHs�
s�

	o�
&	o�
o�
8o�
t��r�Fpr>Gp(�
(+oe
tHo
rjGpoI
�o�oo
&of
+]og
�(�
og
o)
o�
1
o�
�+,og
�(�
oh
-�oi
oI
�oI
�(
oI
�(�
o�
oI
�(�
r�EprzGp(�
(+oe
tHo
rjGpoI
�o�oo
&o
r�Hp�o
&o
r�Hp�o
&o
r�Hp�o
&o
r�Hp�o
&o
r�Hp�o
&o
r�Hp�o
&o�
&o�
:����uM

,
oA
�*A4g(��/0-��3%rIp�%�%rHEp�%�%rREp�(
(+oe
tH
s�
s�
o�
&o�
o�

8�	o�
toI
�o(
oI
�oI
�(�
o�
r�EprkIp(�
(+oe
tHo
r/Fp�oo
&o
r�Ip�o
&o�
&	o�
:O����	uM,oA
�*_�0�rJp(+o�
&r]Jp(+oG

rKp(+oe
tHr/Fpsj
rtKpsj

o
ok
&o
	ok
&o�
o�
+vo�
t(
r�(po�
(�
r�)po�
(�
(�
o�
r�(po�
(H
�ool
	�ol
o�
&o�
-��uM,oA
�*z��0���3%rǩp�%r�p�%r��p�%r#�p�%rE�p�%r_�p�%r}�p�%r��p�%r��p�%	r۪p�%
r�p�%r)�p�%rW�p�%
r�p�%r��p�%r�p�%rǫp�
o�

+	�(G(I	X
	�i2�o�
�(�
��
o�
�*�7�S�G�
0��(H
(�
(
o�
o�
8�o�
tr�)po�
(�
r�Kpo�
o)
r�Kpo�
(�
om
r�Kpon
�o�
r�Kpon
(�
o�
�o�
r�Kpo�
o)
rLpo�
(�
om
r&Lpon
�o�
r<Lpon
(�
o�
�o�
r\Lpo�
o)
rzLpo�
(�
om
r�Lpon
�o�
r�Lpon
(�
o�
�o�
r�Lpr�(po�
o�
r�Lpr/po�
o�
o�
:a����uM,oA
�r�Lp(6

	o�
&*A&��0!�rMp
(<

(+oG
+*0��rNp(<

(+oG
o�
o�
+fo�
t
	rOp	r22po�
o�
	r/p(
	r�(po�
(�
	r�)po�
(�
(�
o�
�o�
o�
-��uM,oA
�r.Op(<
o�
&*(r�0�f}�(+
s,

(T(-
(.
(/
}�{�s
}�{��7�%(o
�%�%�%(4
o5
�(�
o?
{�o?
{�o?
o@
*0-�(p

(q
"�B[kZl(r
�@(�
+*0)�{�(R
ss

oD
&�,oA
�*0%
�7(+(�
(�

,(@
*0,,
,{��,{�oA
(B
*0Y�3(C
sD

sG
}�sF
}�sF
}�sF
}�sK
}�sK
}�sK
}�sK
}�sK
}�(J
{�oR
oV
o[
{�oR
oV
oW
{�r�OpoN
{�r�OpoO
{�r�OpoN
{�r�OpoO
{��RsP
oQ
{�r�OpoN
{�oP
{�r�OpoO
{�r�OpoN
{�r�OpoO
{��QsP
oQ
{�rwCpoN
{�(1
oY
{�rwCpoO
{�riCpoN
{�riCpoO
{�r7CpoN
{�r7CpoO
{�r�OpoN
{�(
oY
{�r�OpoO
{�r�OpoN
{�(
oY
{�r�OpoO
{�(
rGpoN
(Y
{�(Z
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
(L
{�oM
([
(]
(^
rPp(O
(b
(^
*02j}s

o�
 �Xs	
(W-�+,8� �s	

{�,Uo

+,(
	r�po
&	o
&	r)�po

&(
-���oA
�+Go

	+ 	(

	r-�po
&	
o

&	(
-��	�oA
�	oVo
�,	o
&	o)
o
&o)
+*g9��-�0u
�
(X(Yr6Ppot
��,rbPpou

r�Ppot
��,ov
}r�Ppo
}�r�Ppo
}�r�Ppo
}r Qpo
}rHQpo
}rjQpo
}{�r�Ppo�
,	}�+{�rjQpo�
,}
{�		,
r�Qpr�Qp	(
{�

,){-r�Qp+r,Rp�Zs�
	(w
{-rxRp+r�Sp�[s�
	(w
{-r�Tp+r]Up�\s�
	(w
{-r,Vp+rWp�as�
	(w
{-rXp+rpXpr�Xp	(
rYp{�-rdYp+r�Yp	(
{-r$Zp+r�Zp�is�
(x
r�[p�hs�
	(w
{�,{,{+,rq\p8	{�,{,{�+,r]p8�{�,{-{+

,r�]p8�{�,{-{�+,rN^p8�{�-{,{+,	r�^p+Z{�-{,{�+,	rf_p+/{�-{-{+,	r�_p+r|`p�js�
	(w
{�,{+,	rap+J{�,{�+,	r�ap+'{�-{+,	rbp+r�bp�ks�
	(w
{�,{+,	r�bp+J{�,{�+,	r�cp+'{�-{+,	r&dp+r�dp�ls�
	(w
{�,{+,	rFep+J{�,{�+,	r�ep+'{�-{+,	rMfp+r�fp��s�
	(w
{�-rGgp+r�gp�ms�
	(w
{�-r�gp+rEhp�ns�
	(w
{�-r�hp+rbip�os�
	(w
{�-rjp+r�jp�os�
	(w
{�-r�kp+r-lp�ps�
	(w
{�-r�lp+rnp�as�
	(w
{�-r�op+r�op�ds�
	(w
{�-r3pp+rqp�cs�
	(w
{�-r�qp+rKrp�es�
	(w
{�-r�rp+rsp�~s�
	(w
{�-rosp+r�sp�~s�
	(w
{�-rrtp+r�tp�~s�
	(w
{�-r8up+r�up�~s�
	(w
{�-rTvp+r�vp�~s�
	(w
{�-rSwp+r�wp�~s�
	(w
{�-rwxp+r�xp�fs�
	(w
{�-rMyp+r�yp�xs�
	(w
{�-r/zp+r�zp�qs�
	(w
{�-r{p+r}{p�rs�
	(w
{�-r�{p+r[|p�ss�
	(w
{�-r�|p+r�}p�ts�
	(w
{�-r�~p+r�p�us�
	(w
{�-r��p+rL�p�ws�
	(w
{�-r��p+r��p�ys�
	(w
{�-rQ�p+r��p�{s�
	(w
{�-r�p+ry�p�|s�
	(w
{�-r�p+rE�p�}s�
	(w
{�-r��p+r��p�zs�
	(w
{�,{�+,	ra�p+J{�,{��+,	r�p+'{�-{�+,	ry�p+r�p�gs�
	(w
{�,{�+,	r��p+J{�,{��+,	r�p+'{�-{�+  ,	r��p+r�p�~s�
	(w
{�,{�+!!,	r��p+J{�,{��+"",	r�p+'{�-{�+##,	r��p+r�p�~s�
	(w
{�,{+$$,	rp�p+J{�,{�+%%,	r�p+'{�-{+&&,	rZ�p+r̐p�~s�
	(w
{�,{+'',	r8�p+J{�,{�+((,	r��p+'{�-{+)),	r;�p+r��p�~s�
	(w
{�,{+**,	r1�p+J{�,{�+++,	r��p+'{�-{+,,,	r�p+r��p�s�
	(w
{�,{+--,	r��p+J{�,{�+..,	r��p+'{�-{+//,	r��p+rB�p�vs�
	(w
00,(+o
o
&+o
&-	(�
+1+1*0W�{�,
r��ps

+rI�ps

o
o

	,o
rI�po
o
}�*0�l{�,
rϤps

+r�ps

o
+Go
rI�po
o
o
�
	,o
rI�po
o
o
o
o
-�{�,r]�pr?p(
+r��pr?p(
+*0F�o)

ds	
r��pr?p(y

r٘po

&oz
o
&o)
+*0f�o)

(br-�po
&re�po{
�,r��po{
X+Xoz

	o
&o)
+*0f�o)

(br��po
&re�po{
�,r��po{
X+Xoz

	o
&o)
+*0�{�
,r�p+r
�p+*03�{�
,rO�po](<
+r��po](<
+*03�{�
,r�po](<
+rY�po](<
+*03�{�
,r��po](<
+r%�po](<
+*0&�o)

(br��po
&re�po{
�,r��po{
X+Xoz

	rݜp(�
�,r��p
+U	r�p(�
�,r/�p
+8	rI�p(�
�,rm�p
+	r��p(�
�,r��p
	o
&	r՝p(�
,	r��p(�
�+		,({�

,r�po
&+rM�po
&o)
+*0P�ds	

+o�
o�
&Xo�
Y/(|
-o�
.��+-�
+	*0��o)

(b{�,r��po
&+r��po
&r��po{
Xoz

	r��p(�
�,r!�p
+8	rG�p(�
�,rg�p
+	r��p(�
�,r��p
	o
&o)
+*0>�o)

(b{�,rϟpo
&+r=�po
&o)

+	*0?�o)

(bo_o
&rWJpo
&r֠po
&o)
+*0J�o)

(b{�,r�po
&+r��po
&r0�po
&o)

+	*0d�o)

(b{�,rR�po
&+${�
	,rr�po
&+r��po
&r�po
&o)
+*0a�o)

(b{�,r�po
&+r.�po
&rb�po{
Xoz

	o
&o)
+*0r�o)

(b{�,r�po
&+r.�po
&r��po{
�,+Xoz

	o
&o)
+*0>�o)

(b{�,rn�po
&+r��po
&o)

+	*0X�o)

(b{,r�po
&+${�
	,r\�po
&+r�po
&o)
+*0X�o)

(b{,r��po
&+${�
	,r�po
&+r��po
&o)
+*0>�o)

(b{�,r�po
&+r.�po
&o)

+	*0��o)

(b{�,r
�po
&+r!�po
&r[�po{
ra�po{
XYo

	o
&{�,r�po
&+rM�po
&o)
+*0|�o)

(b{�,ry�po
&+r��po
&r��po{
Xoz

	r�p(�
�,r5�p
	o
&o)
+*0J�o)

(b{�,ry�po
&+r��po
&rk�po
&o)

+	*0>�o)

(b{�,r��po
&+r�po
&o)

+	*0��o)

(br��po{
Xoz

	r�p(�
,	r�p(�
�+,*{�,rG�po
&+r��po
&+({�,r^�po
&+r��po
&	o
&o)
+*0>�o)

(b{�,r
�po
&+r��po
&o)

+	*0p�o)

(bo^o
&rWJpo
&r��po{
Xoz

	r1�p(�
�,rQ�p
	o
&o)
+*0p�o)

(bo_o
&rWJpo
&r��po{
Xoz

	ru�p(�
�,r��p
	o
&o)
+*0Z�o)

(br��po
&rͭpo{
��,X+oz

	o
&o)
+*0U�o)

(bo`o
&rWJpo
&rݭpo{

Xoz

	o
&o)
+*0?�o)

(bo`o
&rWJpo
&r�po
&o)
+*0��o)

(br��po{
Xoz

	r�p(�
�,r7�p
+Z	rW�p(�
�,*{�,rq�po
&+r��po
&+o`o
&rWJpo
&	o
&o)
+*0p�o)

(bo^o
&rWJpo
&r��po{
Xoz

	r�p(�
�,r+�p
	o
&o)
+*0{�o)

(bo^o
&rWJpo
&rO�po{
Xoz

	r]�p(�
�,ri�p
rO�po
&	o
&o)
+*0��o)

(bo^o
&rWJpo
&r�po{
Xo�
Y	Yo

	r]�p(�
�,ri�p
r�po
&	o
&r��po
&o)
+*0{�o)

(bo^o
&rWJpo
&r��po{
Xoz

	r]�p(�
�,ri�p
r��po
&	o
&o)
+*0�o)

o]r��p(�
+*0�o)

o](6
+*0��o)

 �s	
+Ro�

	o�
&	(�,1o]o
&Xo�
)��,r��po
&Xo�
�-�o)
+*Nr?p}�(
*0?(U
+*"(�*0x�o
�,r�ps
zo 

rS�p(!
} �s	
r��p(!

o�
o�
,o�
o�
o�
�+9�r(3po�
o�
rL3p(�
s
		o�
,	�+

,	��s�
o�

+cr(3po�
o�
r8�p(�
s
	r߰p(!

	o�
,	�+,	��s�
o�

-	�+,fo�
�

,o
&r�3po

&r�4po

&r�4po

&r5po

&o)
(6

o�
r5po�
o"
�,
o)
(6

o
�,�,(�
r]�p��s�
(w

rz�pr�p(

r�p��s�
(w

rճp��s�
(x

r��p��s�
(w

+*0.,{
,+ o"
�,o
&rͦpo

&*0?r��p
+*0?rB5p
+*0@�s�

o)
r,�po
o
r0�p(6
o
&o)

+	*0I�o)

rO�po
r,�po
Yo

o)
r^�p	(<
(�+*0O�o�
dXs	

o)
o
&o
&r�4po
&{�,o
&o)
+*"(�*02j}'s

o�
 �Xs	
(�-�+,8� �s	

{'�,Uo

+,(
	r�po
&	o
&	r)�po

&(
-���oA
�+Go

	+ 	(

	r-�po
&	
o

&	(
-��	�oA
�	o�o
�,	o
&	o)
o
&o)
+*g9��-�0�k
{'�
	,r��p��s�
(w
(�r��po
}#r�Ppo
}$r�Ppo
}&rbPpo
}%r��p��s�
(w
ra�p��s�
(w
r�p��s�
(w
rW�p��s�
(w
r��p��s�
(w
r�p��s�
(w
r|�p��s�
(w
r�p��s�
(w
rg�p��s�
(w
r�p��s�
(w
rP�p��s�
(w
rƺp��s�
(w
r<�p��s�
(w
r|�p��s�
(w
r�p��s�
(w
r]�p��s�
(w
r�p��s�
(w
rH�p��s�
(w
r��p��s�
(w
r̽p��s�
(w
r0�p��s�
(w
rp�p��s�
(w
r��p��s�
(w
ri�p��s�
(w
r��p��s�
(w
rJ�p��s�
(w
r��p��s�
(w
r�p��s�
(w
r��p��s�
(w
r�p��s�
(w
rN�p��s�
(w
r'�p��s�
(w
r��p��s�
(w
r��p��s�
(w
r��p��s�
(w
r��p��s�
(w
r�p��s�
(w
r��p��s�
(w
r�p��s�
(w
rx�p��s�
(w
r��p��s�
(w
r2�p��s�
(w
r��p��s�
(w
r��p��s�
(w
r;�p��s�
(w
rq�p��s�
(w
r��p��s�
(w
r��p��s�
(x
rf�p��s�
(w
r��p��s�
(w
r��p��s�
(w
r��p��s�
(w
rR�prr�p(
r��p��s�
(w
r��p��s�
(w
r@�p��s�
(w
rb�p��s�
(w
r��p��s�
(w
rm�p��s�
(w
r^�p��s�
(w
r��p��s�
(w
rD�p��s�
(w
,(+o
o
&+o
&-	(�
++*0^�s�

o�
(�
r��p(!

	,o
&{$�,r��po
&o
&o)
+*0s�o)

o�
Yo
r��po8
,r��pr��po�

+1r�po8
�
	,r8�pr�Ppo�

+r�Pp(6

+*0"�o)

o�
s	
�P% �o�

+E�o�
1r@�po8
�+,o
o�
X
+X�i2�	��,o�
	Y			o

{%

,	3r@�p+r@�p(6
o
&+H{$,	3rX�p+rX�p(6
o
&+	3r��p+r��p(6
o
&o)
+*0P�o)

s�
r,�pom
,r��p(�o
&+r4�p(�o
&o)

+	*0?o)
rp�p(�
+*0?o)
r��p(�
+*0?o)
r��p(�
+*0?o)
r*�p(�
+*0?o)
r\�p(�
+*0p�o)

o�
s	
{$�,r��po
&r��po
&r��po8

	,r��po
&+r��po
&o)
+*0N�o)

r��p(�s}
r
�po8
,r
�po
&+r&�po
&o)

+	*0��o)

s�
r@�po�
Yo�
(�

rn�po8
,rn�p	(?
(�o
&+tr��po8
,r��p	(?
(�o
&+Gr��po8
,r��p	(?
(�o
&+r��p	(?
(�o
&o)
+*0�o)

r��pr"�po�

+*0�o)

rH�pr��po�

+*0?o)
r��p(�
+*0?o)
r.�p(�
+*0?o)
rV�p(�
+*0?o)
r~�p(�
+*0?o)
r��p(�
+*0?o)
r��p(�
+*0?o)
r(�p(�
+*0?o)
rR�p(�
+*0��o)

o�
s	
{$�,r��po
&r��po
&r��po8

	,r��po
&+r��po
&o�
Yo�
o�
&o)
+*0?o)
r(�p(�
+*0?o)
rN�p(�
+*0?o)
rx�p(�
+*0?o)
r��p(�
+*0?o)
r��p(�
+*0?o)
r�p(�
+*0?o)
r$�p(�
+*0?o)
rX�p(�
+*0?o)
r��p(�
+*0t�o)

s�
r��p(�o
&r��po8
,r��po
&+)r�po8

	,r�po
&+r8�po
&o)
+*0?o)
rV�p(�
+*0?o)
rd�p(�
+*0��o)

s�
o)
r|�p(�o
&r��po8
,r��po
&+gr�po8

	,r.�po
&+JrJ�po8
,r^�po
&++rt�po8
,r��po
&+r��po
&o)
+*0A7o)

r��po8
,o)
r
�p(�+o)
r��p(�+*0I�o)

rO�po
r,�po
Yo

o)
r �p	(<
(�+*0?o)
r��p(�
+*04�o)

r��po�
Yo�
(�
(6
(�+*0?o)
r��p(�
+*0R�o)

r��pr�po�

r>�po
Xr��po
XYo~

rJ�p(6


+	*0?7o)

rj�pr��po�

r��pom
,r��pr��po�

+*0��o)

s�
o�

(�
r��p(!
,o
&r��po8
,r�po
&+Ar.�po8
-{&,{#�+,rL�po
&+rb�po
&o)
+*04�o)

r��po�
Yo�
(�
(6
(�+*0��o)

o�
s	
r��po8
,r��po
&r��po8

	,r��po
&r��po8
,r
�po
&r�po8
,r2�po
&r>�po8
,rN�po
&r\�po8
,rl�po
&rv�po8
,r��po
&r��po
&o)
	+	*0��s�

o)
r��po8
,r��po
&r��po8

	,r��po
&r�po8
,r"�po
&rL�po8
,rf�po
&r��po8
,r��po
&r��po8
,r��po
&r�po8
,r�po
&o)
	+	*0��s�

o)
r<�po8
,rp�po
&r��po8

	,r��po
&r��po8
,r,�po
&r`�po8
,r��po
&r��po8
,r
�po
&r8�po8
,rl�po
&r��po8
,r��po
&r�po8
		,r@�po
&rl�po8


,r��po
&r��po8
,r�po
&r8�po8
,r~�po
&r��po8


,r�po
&rH�po8
,r��po
&r��po8
,r�po
&rd�po8
,r��po
&r��po8
,rD�po
&o)
+*0Y�s�

o)
r��po{
Xr��po
Y
	o
o�
�,o
&o)
+*0Y�s�

o)
r��po{
	Xr��po
Y
	o
o�
�,o
&o)
+*0?o)
r��p(�
+*0.�o)

s�
r��po8

	,r��po
&8�r�po8
,r4�po
&8yrz�po8
,r��po
&8Wr��po8
,r�po
&85rR�po8
,rr�po
&8r��po8
,r��po
&8�r*�po8
		,rH�po
&8�r��po8


,r��po
&8�rͩpo8
,r�po
&8�rH�po8
,r^�po
&8ir��po8


,r��po
&8Gr�po8
,r�po
&8%rD�po8
,rV�po
&8r��po8
,r��po
&8�r��po8
,r��po
&8�r.�po8
,rL�po
&8�r��po8
,r��po
&+~r�<po8
,r��po
&+_r�po8
,r�po
&+@rP�po8
,rj�po
&+!r��po8
,r��po
&+,+Tr��po8
,r$�po
&++rX�po8
,r��po
&+r��po
&o)
+*0��s�

o)
�P%,�o�

+C	�,r��po
&	�o�
�,+	�r��p(6
o
&	X
	�i�-�o)
+*0?o)
rJ�p(6

+*0b�s�

o)
�P%,�o�
��,
�o
&{$
	,r��po
&+rB�po
&o)
+*0?o)
r��p(�
+*0?o)
r�pr�po�

+*0?o)
r�pr�po�

+*077o)

r�po8
,rD�p(�+rz�p(�+*0A7o)

r��po8
,o)
r�p(�+o)
r�p(�+*0b�o)

r<�po8
,-r<�po�
Yo�
(�
(6
(�
8rR�po8
,-rj�po�
Yo�
(�
(6
(�
8�r��po8
,-r��po�
Yo�
(�
(6
(�
8�r��po8
,*r�po�
Yo�
(�
(6
(�
+er�po8
,*r�po�
Yo�
(�
(6
(�
+*r�3po�
Yo�
(�
(6
(�
+	*04�o)

r�po�
Yo�
(�
(6
(�+*04�o)

r@�po�
Yo�
(�
(6
(�+*04�o)

rz�po�
Yo�
(�
(6
(�+*0W�{'�,
r��ps

+rI�ps

o
o

	,o
rI�po
o
}(*0�l{'�,
rϤps

+r�ps

o
+Go
rI�po
o
o
�
	,o
rI�po
o
o
o
o
-�{'�,r]�pr?p(
+r��pr?p(
+*0?(�
+*0�f},(+
s,

(�(-
(.
(/
}*{*-+{*op
}+(�
-+r��p}){9rO�p(4
o�
r��p(�
o�
{9{)o�
o@
*0m�o�
{)s�
(�
-!o�
o)
(+o�
r��pom
+,8(o�
o)
(+o�
ol
r��pom
�
	,3�7�%(4
o5
�(�
(=
o�
8�{)o)
r��p(>
-{)o)
r��p(>
+,`(�
r�Pp(=
(�
�,(�
&o�
o)
(�
�P%/�o�
�iY�(=

+o�
o�

{)o)
r��p(>
-{)o)
r��p(>
+,2o�
o)
s�
		oD
�
	,	oA
�+�

,2{*s�
o�
o�
�
,oA
��,"�7(+(�
(j
(@
�G{)o)
r��p(>
-{)o)
r��p(>
,(~
+

,(�
�o�
*(��
��
F�G0@o�
o)
(+o�
r��pom

,{8{)o?
(�*0vir?p
{9o�
(�
,{9o�
o�
(�
+,{9o�
o�
o)

{8o<
(�
�,{8o?
*:{9o�
*0Uo�
-o�
j�+
,{3�7(+(�
o�
+{3�7(+(�
o�
*0,,
,{,�,{,oA
(B
*0*s�
},�:(C
sD

sE
}5sF
}7sL
}8sG
}4{,s�
}2s�
}-s�
}3s�
}1s�
}.s�
}/s�
}0sE
}6s�
}9{5oH
{5oI
{8oN
oH
{2oH
{6oH
{6oI
(J
{5oK
{5oL
{7oM
{5oL
{8oM
{5oL
{4oM
{5r�
poN
{5r�
poO
{7r��poN
{7r��po
tFo�
{7r��poO
{7��sP
oQ
{8r��poN
{8r��poO
{8oN
o�
{4r��poN
{4r��poO
{2o�
��%{-�o�
{2o�
{1o�
&{2o�
{.o�
&{2o�
{/o�
&{2o�
{0o�
&{2o�
{2o�
��%{3�o�
{2o�
{2{-o�
{-r�po�
{-o�
{-o�
{-o�
{-o�
{-o�
��%{3s�
�o�
{-o�
o�
{-o�
o�
{-o�
o�
{-r�poN
{3o�
{3o�
{3r�po�
{3o�
{1o�
{1r�poN
{.o�
{.rC�poN
{/o�
{/rm�poN
{0o�
{0r��poN
{6oK
{6oL
{9oM
{6r+poN
{6r+poO
{9r�poN
{9o�
{9r�poO
{9��s�
o�
{9��s�
o�
{9��s�
o�
rGpoN
(Y
(L
{6oM
(L
{5oM
(L
{/oM
(L
{0oM
(L
{.oM
(L
{1oM
([
(]
(^
r(�p(O
(_
{5o`
{5oa
{5o^
{8oN
o`
{2o`
{6o`
{6oa
(b
*0�&}<(+
s,

(�(-
(.
(/
}:{:-+{:op
};{>�7�%(4
o5
�(�
o?
{@r@�p(4
o5
(<
oa
s6
r��p(7
{<%-&+o8
o@
*0:�{:r��ps�o�

�,oA
��,(@
*0�(�
o�
�,�7(+(�
(=
8�r?pon

+;	o�
r�po)
(<
(~
,r�po)
(<
+		o�
-��	uM,oA
�o�
�,@{:s�		o�
�
	,	oA
��

,(@
+%�7�%(4
o5
�(�
(=
*?G���
0U�{@ov
�
,@{:{@oc
s�o�
�,oA
��
	,(@
*,80��{@oc
s�

+"rT�po
��,o�
�Ko�
%�
	-��,oA
�o�
�7�%(4
o5
�(�
(=
*7I0o�
�
,(�
*08,
,){@o
{<�,{<oA
(B
*0��;(C
sD

sF
}=sF
}>sF
}?s`
}@(J
{=o*
r��po
t�o�
{=o*
o
oT
{=o�
r�po
tFo�
{=r�FpoN
{=r�FpoO
{=��sP
oQ
{>o*
r"�po
t�o�
{>o*
o
oT
{>o�
rP�po
tFo�
{>r��poN
{>r��poO
{>��sP
oQ
{?o*
r��po
t�o�
{?o*
o
oT
{?o�
r�po
tFo�
{?r�poN
{?r�poO
{?��sP
oQ
{@r�poN
{@��s�
o�
rGpoN
(Y
(L
{?oM
(L
{>oM
(L
{=oM
([
(\
(]
(^
r:�p(O
��s�
(�
(b
*0��rb�ps�

s�
s�
o�
o�

+M	o�
t1r�po�
-r�po�
�+,r�po�
o)
o�
&	o�
-��	,	oA
�+*&Y>{Do�
*>{Eo�
*�{Fo�
o�
{Go�
o�
*.s��H*Jo�
o�
**o�
**o�
*0!�(�

�Co)
o�
o�
*0!�(�

�Co)
o�
o�
*:r�po�
*0��s�
}O{Qrp{Oo�
�U(<
o7
}P{P��
,{P�rpo�
o)
o�
s�
}O{Qrp{Oo�
�U(<
o7
}P{P��,{P�rpo�
o)
o�
s�
}O{Qrp{Oo�
�U(<
o7
}P{P��,{P�rpo�
o)
o�
s�
}O{Qrp{Oo�
�U(<
o7
}P{P��
	,{P�rpo�
o)
o�
s�
}O{Qrp{Oo�
�U(<
o7
}P{P��,>{P�rpo�
o)
o�
{P�rpo�
o)
o�
s�
}O{Qrp{Oo�
�U(<
o7
}P{P��,{P�rpo�
o)
o�
s�
}O{Qrp{Oo�
�U(<
o7
}P{P��,{P�rpo�
o)
o�
*�{P�rpo�
o)
o�
*>{Ro�
*R{So�
o�
*.s��T*:r*�po�
*:r0�po�
*:r0�po�
*:r>�po�
*:r*�po�
*:rT�po�
*:rT�po�
*:rb�po�
**o�
**o�
*:rx�po�
*0��{f
,++,+83{h{�r��p(>
,]{h(�
	,L{h{�(�
}ls�
}m{mr|�po�
{l{mo�
�{h{�(P
}i{io�
o�
�,��{h(�}j{h{�{jo�
{jo�
{jo�
{h{�o�
o�
(�
-F%
}f}r|g(+�Y{r|r�%
}f(�
}n{n}k}n{k~2
(�
9�{h{�r��p(>
,N{ko
ol
}q{qr��p(�
,
{jo�
+		,݌}q{h{�(�
}os�
}p{p{ko�
{o{po�
�;}i}j}k�&��
�}f|g
(�
��}f|g(�
*A4^npw3*0��{s
,++,+8�{w(��,{w(@
�b{w(��,{w(@
�={w{�o�
o)
}x{w{�(�
}y{w(�}z{w{�r��p(>

	,p{xo
ol
}|{|r��p(�
,
{zo�
+,)�$(+(�
(-
{w(@
�z}|{w{�{zo�
{zo�
{zo�
{w{�{xo�
o�
(�
-F%
}s}|t(+�{|�%
}s(�
}}{}�,)�$(+(�
(-
{w(@
ݕs�
}{{{{xo�
{y{{o�
}x}y}z}{�+}~{~o�
(-
{w(@
���}s|t(�
��}s|t(�
*A4K[+3��30Hs�
}�{�{�of
o�
s�
}�{�{�o
o�
*�s�
}�{�{�of
o�
*�s�
}�{�{�oU
o8
*�s�
}�{�{�of
o�
*�s�
}�{�{�of
o�
*�s�
}�{�{�of
o�
*�s�
}�{�{�oU
o�
*0w�(�

�Co)
o�
o�
sT
}�{�{�oU
o�
s�
}�{�{�of
o�
o�
o�
*>{�o�
*0u{�%-&o�
o=
{�%-&o�
o>
{�%-&o�
o�
{�%-&o
o
{�%-&o
o?
*r{�o
{�o
*.s$��*0)�(�

�Co)
o�
o�
o�
**o
*Jo�
o
*Frpo�
(
*.%-&r?p*>{�o
*0��{�r��p(+o�

�,=(�
�,.{�r9�p(+o�
&{�r��p(+o�
&{�rqp(+o�

�
	,?(�
�,.{�r�p(+o�
&{�rwp(+o�
&�&�*��0-{�r,p(+o�
�U�
�	&�
+*!""(8*BSJBv4.0.30319lh�#~ԉ��#Strings�e�#USLh#GUID\h�a#BlobW�	�3\T�.����	
	e��l� m�k����tk�}l�^l�m��l��l��k�`k��j�Al�l�q�j��l������i��,k��)l��
P���e�]�
ꉎ�����݉���b������۵��iCY�]��tuC"|z��"&u��"�t��"Gw��"�x��hy���x���w���v��"�u��}x��"Gz���uCފ�A
��A&pS�\��uC�uC��*���z���"�N�Ax��Ny����}��}��}��}��}��}"�t��"]z��".w���x���L��w���v������<ZiCEM��%���}�����o�x�iC�[�8�iC�����Aa�o����s�����t�~it����A")z��"|u������͑�k2�����k2��Ď��Ŏ�.�X�.`�X�Z�uC-����uC�fuC\�uC.8{X�i�Ȑ.!�X��y�w��2�}�Ŏ�mĎ�;Ŏ�.�X�.��X�����3��-�����t�.l�X��T�
��A6O��x��}v��"Nz��"�z��"�u��"�v��"w��"�u��"�v��"�v��x��"vw��z�iC�x��"u��"z��ci�[���}��i�Kv����}��}��}�}��}�}�}�}�}�}"�z��"�u��"�v��"w��"�u��"�v��"�v���w��"Xw�����:4���:����:����:����:.���:ѯ�>����>�HL>0�)L����.��X�wv���PȐ"��s
�t�>s�)L:����>�͑v�͑.){X�:���>ٜ
�󴍶�j���j��b�Z�����i]�Gk]�^euC6U�T�YD$�X������{���t�B��+B��+B�L+B�+B�p+�YDB�L+B�L+Bv�+B͆+,���ؠ��������C�W�C�Ď��X'�J�i��'�x���˒sNΒs����Q����G���B���ب�A稲�7����Y�s����6��c]�e��k��k���A�T]���xLkuc�����׳D�������t�6bT�"�u��j�l�"�t��"v��"�u��6��`�"z��L�DJU�D"3M?u�[o�"�e��Յ�"�u��"�t��"v��"�u���M�D_}�D"�y���uCZ��L�"!M�tFq��"��R"�z��"���R"��o�"PM�"z��"g۔"�z����}��*y��y����Ȑ�EȐ������"VO��*��z6���e:9���.t�X�.��X��F�C6�N�e.N�X�.�X�̴]�.*�X�J���J���J�ǿ�J����YD�r�m��H�X�X���*���z0�͑Y����.0�X�\�Dp]�
�����x�����yŽ�⸎�
�ʵ
��ʵ
L�ʵN��ʵy���.'�X�.xWX�.�X�.�]X�[����\�A�W�A��Aܟ�:��7����2����w�6Y��ٰA2��AI�iC�k�uC��}(�'���iC�'�ӓiCrfiC	M'���䋳�}\�hWiCN�iCN�۵��'���uCo�]�������'�Vx���
���k>��B��+�t�JkZ�I�cA��`�۵U�]�.x�X�EuC����y�����VĎ��W��N��ʵ.�]X�.<{X�.G{X��|�AnF�p��������~fo�"�%�_���ϋ��T���d��N˜ʵ"X�n��������������f��I���I���v��sv��*s��z61��e��}��}��}��}�f��?���
4���*�W�
���
��s�2���/���
ɲ������N�ʵX���.�rX�.۫X�:�f��R��:�����ȐwȐ>O�Sf�w���i���D2�"rw��"ߦ�sX̳D>ܴSf��۵�p͑Ӻ��v�]�ǫ���������f��>9�Sfp�D�
��������>[���>0�)L>D�Sf*���z>蓋�>��)L>ԪSf>j�)L>��)L>����9���:Թ��:�Pq:;���:W���:�]��:����:圯�:*���:����:����:��p���d��˞�Kf�B�Y�����B�f+B�+Bb�+B��+�>��D۵6����۵;�۵ۺ'�Ҕ'�`v���'�l�'�t������ ��������t��/�� ��4���%�tDx�۵�A2���t�����������8��C9U������ʒs����G�_�G���}��iC��iCoU�D�V�D��D��}�Y�D
S�D`��D@��D��}��}��}h}B"`?ux��By�+Bm�+/��@����x��"[u��"Wu��"�U��"u��"`�tF6�:�F��"C��"���"p���"\W�R"����"(���K�}"�z��"1u�p"���YD"���"˦��iiCR�[��[o�GmI��Ȑy��o�}��kMiC�'��ciC��'������{�\�Z���}�VH��C.�X�.�X�*�X�z:�]��:����:^��*���z.��X�.ڤX�.Y�X�._�X����
�ʵ&�]�.v�X�J���J����\��\��\�'\��\��\�\��k��	I�X�Yf��IDA� ;��e4#��I5 �y�I<eE�q=��Y=+g�Y1H�N�YDR 8y�I���q�q�����Y����Y��A��Y���D�q��p��IG��A�AII�N��APM�R�`�YP�`r`�qa�ٳ`�Yd�?�`�qv��
`�I}��
`�h~��
`�h~��`�I��E`�q���P`�Y����`�Y���E`�q����`�Y��Q�`�I�F`�q�
�`�Y��E`�q���`�Y��`�I���`����`�I�$-�`�I�-.A`���4i`�I�8/E`�q�@!q`�I�@q`�I�D4q`�I�F>i`�)�Kg`�Y�O�`�I�U(�`����`���HE`�q��`�I#��`��)����Y)�}���Y:�����IA�ID�!&DIH�'IO�rIR�Mi)S��IS�!&DIT��Yq`
�Eqc
�
If
�Is
�I�MI��I�Z	I�]I� I��I�E	I�!!&DI�#�I�*A��,�Yq�/�Yq�/!�LF!�LJ!�LN^Y�b��.a�.�g�.��.�X�.M�.�t�.zz�.$u/�t/Ew
/�x/fy/�x/�w/�v#/�u(/{x-/Ez2/Ea��O��B7/V�T:/b��.��>/��>/a�.M�.>g�.��.��.t��.��.�_C/&aC/�PC/s`C/�
H//H/+H/M
H/Շ�.�H/�TH/b��.�\>/�P>/a�.�g�.��.t��.��.��.�_C/R\C/�\C/�OC/&aC/���./H/M
H/�H/�H/g�M/�t�.��R/�yX/J�7/�N]/u�`/�e/��e/��e/,�j/R�n/>D]/b��.E�>/��>/,�>/�>/�C>/��>/'�>/*�>/H�>/}�>/�s>/�p>/��>/��>/��>/jU>/�er/9hw/�hw/l�|/��|/��.a�.b
�.��.��.'��.��.t��.	��.��.���.��C/&aC/�PC/s`C/�aC/���/��/�bH/g�H/�`H/H/TH/	H/�H/�H/�
H/WPH/H/H/�DH/	H/{��.Y��.�
H/|H/	H/���.dH/	H/�
H/�H/mH/Ә�.8��.�j�.�DH/�/,
�/��/��/?�/�
H/�Օ/�H/��|/:�H/���.B>/ٱ|/�/M�.�
H/p�C/tH/�_C/\H/:bC/�H/�H/L[�.���.�j�.K�/0|>/�r/M�]/Ea���]/v`��P��B7/V��C�/��/b��.a�.��.��.t��.��.�_C/�OC/&aC//H/+H/M
H/�H/���/�t�.g�M/�/b��.q�/A��/��/��/�|�/C��/��/�÷/�÷/؝�/��/��/%�/a�.M�.��.�g�.���.��.ۃ�.Ƅ�.S��.+b�/�_�/���/�J�/��/�`�/ہ�/0�//H/3�H/
�/B��/b��.�P>/a�.��.t��.�F�.��.0n�.�OC/&aC//H/+H/�B7/V���/V��M�/V��M�/V�4j�/V�Sj�/V�b��/V����/V����/V��`�/V�~_�/V�^g�/V�_�/V�{��/V�Ib�/V��_�/V����/V�;J�/V����/V�U�/V��h�/V���/V�dh�/V���/V��U�/V�;X�/V�.��/V�G��/V���/V�)��/V��[�/V����/V�\��/V����/V�5��/V�E]�/V�"o�/V����/V����/V�ǂ�/V�j�/V����/V�Щ�/V����/V�1��/V�{��/V����/V��o�/V��o�/V�do�/V��o�/V�o�/V�Ko�/V��n�/V��o�/V��n�/V���/V���/V�uj�/V����/V����/V����/V�G�/V�=��/V�h��/V����/V�I|�/V��J�/V��O�/V��O�/V����/V��n�/V��{�/V����/V�P��/V�Q��/Ì�/f�/V���V����t�.6��/Q�\��Q�8��Q�p����e/g�M/�t�.,�j/u�`/.W��T�/b��.+H/]VH/��H/��|/���.��.c{H/WH/���.�B7/V�:�/V���/��e/g�M/�t�.u�`/�V�,�j/�T�/b��.+H/]VH/}VH/��|/���.��.c{H/DVH/{{H/���.�B7/V�V�/V��S�/V��K�/V��U�/V���/V���/�Y�/�]/�t�.�0�b��B7/V�^\	0V�Xn	0V�]n	0V�L	0Q�b��.QC/S�.���.��.[
0&[
0g�M/�t�.b��.�0M�.a�._M�.e�C/S�.F�/0�/���.��.+`�/y��//H/+H/l�C/?�.��C/T
�.�D�/�T�/n�>/�0��.��.�Y�/60�!0�!02�/��/��/e�/z
�/��/�0��&0X�&0p�&0K�&0�B7/V�As+0V��+0V�k�+0V�y�+0V�7�+0c���t�.;��{x-/;S00b��.�0���.��./�C/S�.V����B7/V���50V��J50V���50V���50V�\�50g�M/�t�.;��[
0&[
0}T]/b��./H/��H/��H/o:0�0�B7/V��?0b��./H/ϙ�.
�&0+H/0�]/��]/�t�.�Z
0(yD0�t�.��I0�B7/V�TN0V���N0V�]JN0V�ATN0V���N0g�M/�t�.b��.���.T��.ڬ�./H/+H/M
H/�H/�H/z��.�R�_R]/gQ]/�R]/(R]/�Q]/R]/�Q]/�YS0�]/�B7/V��pX0V��cX0V��X0V��X0V���X0V�]�X0V�}AX0V���X0V�1CX0V��X0V��X0V��X0V���X0V�*TX0V���X0V�X0V�N�X0V�1�X0V��AX0V��sX0V�hYX0V��JX0V�tqX0V��gX0V�cX0V�gAX0V�i�X0�Q]/GR]/�Q]/JQ]/�Y]0�R����g�M/�t�.b��.�
�/��/�÷/�÷/؝�/��/�b0S�.a�.M�.�{�.�C/�g0g�M/�t�.b��.�g�.�.��.l0V����V��|�V����W����Nq0~Nq06�v0�{0	�0�
�0��0
�08�0U�0YΞ0FZ
0W� ��06��0��0b�0�0o	�0
�00�0J
�0�
�0N�0��0G�0�B7/V�B�/V���/�B7/V�eP�0V�:P�0�i7/5��07��0��0{�0�	�M1g1�
�	1a1��x
1�i7/5�1	�1Zp!
7��0�q1�	�0A1s��
]/1x"1U�0
1U�0xp1U�0xp19*1xp1�/1U�0xp1���������������aB��]/c�]/6�41=�091*
{0$>1�H1����B7/V�BS0V��S0�B7/V�B]0V��]0P �Z^�X ��o�` �p�h �^��� �h��� �$U�H!�Wr��!�^�Q1D&��g|&�e�C)�^�P)�7ik1�*����	�*���s1�*���{1!�*�C�1(h6�t��1*�6�t��11$;��c�1<�<�6ʲ1>P>�ֲ1@�?��U�1B�A�1Ͳ1D0C���1FE����1H�F��ò1J�H�yZ�1LK�yZ�1PK�@ò1S�L�F��1UhM�L�V�N����1X�O����	[tW���s1^�X�[a&b�\���1c�^����1e,a�HN�1gc�{۲1i�h��U�1k�k���1m�m�qӲ1o o���1qxu�H��1v�w�k��1y�z����1|({�*S�1~�{�h��1�p���	2������{1����^�����^�����#�2�؂��f2�T���2�(��$�!2�P���y%2�����y,2����^�����^��̉�^��d����=����7~52����F52�D���52����52�T��OG52����zH52���l~52�@���g�x��e��8��^�=2�ԙ��~52����~52���7~52�\���52����OG52����F52����H52�h���g����e��p��^��(�����w�����w�E�����`�����Ԫ�-�D2�T��"
�ԫ�n��&����L����������������̮�PK2������t���	t�����t�H��
t�`���t�̷��t�Թ��rU2���2X�P��X�̺�Xt�$��)X����X�ļ��52����52� ���52�P��~F52����*D�<��K52�t��A52�����G52����G52����H52����XH52����H52�����G52����52�h��OG52���vG52���XI52�@���I52�0��3I52���R52�d��0H52���I52�8��H52����!G52������t�<���������U���sX����3�����׻\2�������@���������g�$��e�����d2���5k2����r2�H��y2����^��`�^��2���7~52���52��52���g��e��#�^��2t%�e�	�%��~52	L&�52�&��~52
t+�i��2�+��~524.��]�2�.�'52�/��52T0�j��2�0�D��2�1�,��23��Ш2 �3����2"4����2$P4�zа2&�4�Ҁ�2(�4��g*45�e�+T�^� +|T�Ba -�T��v�2/�U�7~521|V��523�V�OG525W�D~527�W��~529�X��g;Y�e�<C)�^�<�]�E��2<<^��e�<S^�f�2<C)�^�=\^�7i�2=�^��T>�*��r>�*��r>�a�^�>�a��r>0b��r>�b�@��!>�b�^��2>Pc��@4d�k52@�f��52Bg��gD<g�e�E�j�@��!E�j�^��2Exk��Gl�k52GHo�XI52ITp��52K�p��gMq�e�N�t����2N�*����QTv���2Rw����2V���^�X�w�Y�3Xx�^�Zx���3Zlx����[�x���3\�x��3]Lz��L3^{�Ͷ-3a|��^&dx�^�e�|�^�e�|�{f~��zgT~�~gd��;�=3gl��^�j��k52jx���gl���e�m���^�D3m؈�k52p|��]~52r����\t0���\vt���Q3xD��3K[3{Ж�[K[3}����c3��Q�c3���}�c3�0��g�c3�D���g�|��e��ة�^�\2����H�k3�Ъ�`�t�t���t3�ԫ�k52�����t����'�t���mL�3�����g�ĭ�e�����^��0��nTt�H��^���ذ��T����A��T��ˋ3�$����������X���
�ع��g���e����^��8��1�c3�H���g����e��C)�^������l(�����B�3�о���3�� ��R�3��#��A�3�P&��A�3�(����3�4+�ַ�3��0�ԧ3��1��Ӯ3�5��Ӷ3�$6���3��7����3�8�����08�t��H8�x��`8�ix��x8�R����8�^��C)�^���8��B��L9��B�3��9��ǧ3�d:���3������3�@��Ƨ3����9�3���>m�3�C)�^�����7i�3�ԫ���h��������Z�����Z���*��Z�1� ���Z������Z������Z�1���^��C)�^����7i�3�`���� �q��ɣ ����� ��*���������t����+i�d���A�3�d��:�3�Й���3����^��C)�^����ρ�3�L�����h����\2����A��3����CO\2����^���^�z���Y���Y�3���Y4����^���L��p4����|52�С��52����g�<��e�������4��*���������2����uR������2����u��3������3�����{�3���t�� ��x��`��ix�����R��������3�����!4�p��)��3�4��_��3����w|�3�̺���3�$����3�����C�3������3�������3�м�ա�3�4��S��3������3���g�3����ў�3���u��3�h�����3���'��3t��g��3���]��3<��+x�3����R�3 ����3���v�3������3������3	���B�3
������34���B�3���(t�3
����3��4
�3���^����Y�(4���^������3`��������3��3���@t�3���_t�3���B�3p�����3���^������04�*����0����28���T!�����3#$����3$T�����3%���Ee�3&����e�3'����g�3(�����3)@�����3*d����3+�����3,<��$B�3-$��B��3.P���s�3/|����30�����31���W��32����q�33��E��340��.v�35T�����36x�����37���'��380��R�39T�����3:x����3;������3<���ا�3=���4��3>�����3?,�����3@P�����3At�����3B���m��3C��e��3D<��ì�3E����3FP���B�3G������3H���ù�3I�����3J0�����3K������3L���4��3M���Х�3N����c�3O����c�3P������3Q���b��3R��H��3S���/Y�3T���.p�3U���C��3Vp��*��3W���
��3X��E�3Y(��Ӹ�3ZP��.��3[x�����3\����p�3]�����3^|��)��3_������3`�����3a<��uRb������2c���^�ep��Y�94e���^�g���^��2g@��sA4i����KI4k0���m����~52m���sIQ4o(���gq`��e�r���^��(rp��)~52s��~52u���52wt���}Y4y��Y�a4{8���g}|��e�~C)�^�~H��9ni4~���^�~����o4~�o4�v4�?�d�!2����^��K��k2�^�&	}4�i��
�4�t���4���
�4���B�4����^������4���[�4����^�����o4��^�z���Yt���Y�4���Y�4����^����x�4��d�!2����^�����4�#�l�4�2��4�A�y	�4�P��4�_�:�4�n�T
�4�}��
�4���X�4�����4���Q�4����^���������c4����^���������c4����^���
��5����^���
�C5���d2����^��8��	5�^�l5����^�����!5����
5����^����.�4����^��S��o4����^��d��	r2����^����W(5�
�d�!2����^��
�F�4�E
�o4�P
�3
k2�c
�-/5�u
��&����^���
��55��
����t���t���^��^^�op*nib�hPh<���W\UzU	�
[����e
�C�S�x�v������r�u*_�Vj�W׈1O�Qt�S�x�v���W�uQtPaQ�_٢ib�hPhPaQ�_٢ib�hPhW	�
J�Qt��FZ��FZ��FZ��FZ��FZ��FZ��FZ��FZ���^FZ�C���^FZ��FZFZA�j��[���Z*_�Vj�W׈1O��b��FZ��FZ��FZ��FZ��FZ��FZ��FZ��QtS�x�W��QtW��QtW��FZ��FZ��Qt���QtQt�S�x�v���W*_Pa/PPa/PPa/P*_Pa/P*_Pa/P�u	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp�rPa�P�O	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp�ru�v���Pa�`Q��k�k�	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp�u�u�u�u�uCW�u�u�r�z�z�z�z��	�Zp	�Zp	�Zp�r��u�	�Zp	�Zp	�ZpPa}gi�	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp�rPa/PPa/PPa/P	�Zp	�Zp	�Zp	�Zp	�Zp�r*n�uu�CW	�Zp	�Zp�ru��V	�Zp	�Zp	�Zp�r�Y��m�#D����#D%������Y���#D��M���_t����_�^�u_{��x^B`	�Zp�r�u[:[	�Zp	�Zp�a���a��������	�Zp	�Zp	�Zp	�Zp	�Zp	�Zp�r�uG�	�Zp�u�r�uG����������ޒ���r	�Zp�r�u*_�u�gG��t�t�t�u�u�u�u�c�ug�fZ���#D*_�u*_�u�u�g�u�u]��u�u�u�����u3Ǟ3)3)�u�uK���uK���u�u�u�^�u�^�u�^��]N�u�u�}�����u��
�Wp	�Zp	�Zp�r�Y��m�#D����#D%���������������b��������������������������������������������������������������Y���#D�{�{�{�{���Y��m�#D����#D%��q�r�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�{�������Y��u���	�Zp	�Zp	�Zp	�Zp�ru�	�Zp	�Zp	�Zp	�Zp	�Zp�r�z�z�z�z�z�z�z�z�z�z�z�z��]N�}�����z�z�z�z�z�z�z�z�z�z�z�z�c�c�z�z�z�z�z�z�z�z�z�z�z�z�z�z,�0U�zF�G�	^�^�^�
)^�1^�9^�A^�I^�Q^�Y^�a^�i^�q^�y^��^��^��^��^��^��^��^� �^��^�&Q^�-Y^�����c4�LF�LJ�LN�^�<�gh�q<�gh�q$<�g$h�q$U�$U�$$U��Wr��	A¥�^��^���	`���	��������P��Y`��	����	<���	r����Z��	m��9�����a��	���	A��	A� �Wr&�		�+�	6���bi�g��gI\:�^�-�^��^��^��	���	�������]C�	��J�	�FP�k�W�	o^
h�]�r��Sd	
��j
��
E�!
5�p)
��v�u�}A
tW�iؙ�i�]�i��i��i��ik��	���	�����ke��	2i�2i�2i�!2i�)2i�12i�92i�A2i�I2i�Q2i�Y2ia2i
	�F�F�F!�F)�F1�F9�FA�FI�FQ�FY�Fa�Fa
�\�i
༓q^��y^��y

c��	닛�	�ŧ�#f��	�e��
l�y
��y
�g��gD^��DZ^��	m�����
l�D�o�Dp�i7i��
�r�
Tc
�
Y��	5Qi��
༓�
��?��X��^�F^�Nig �7iY�����F�)]�97�b�
�h�%�n�	�ۓ��it�D��4n�	�|��^�zY4n��^�z4n��^�z	4n��^�z!4n��7i��
^���m���m��^�z94n��^�zA4n��^���
^�z14n��2i�Y�T��^�zI4n�Y�U��_����A^�!I^�)Q^�0�
��79^��
��>9��E�K9x�R	!�ZY��`��d�
�Mi9q�oa3`�Y�t�7��
�Fx�
+i>�	�e��������	�+���?���i$n��L�	���!^�za4n.)^����^�zQ4n8�	ٹX�
��]�
Wr��
z�]q^�y���yĊ��^�q���qc��9���F��
�F�9��^���F���
�^��}MA�q�����Br�1^�I�Qm�!I�gY�g�	�rf�	`p��
�M�AM��i��a�m��Z�`p��
\�q�V��
����=���^���rA-r%��S+A^����3���?�^���E�W�O^�ki���Ize��^��Ѧ�����`��C_��
D��ڄ��K����������b���[���Ў���������ޛ�4n�
AY
	�a���O���P��"w	��u$	��P��YA1	�ra�	^��LD7	��FB	^�g�Q	�}��	-�
AY}	��Iti¼�ih�]|��
�i�	)^��	iT{�	)e_�1^�1�`��	J�	�t�	�t^��^��^��*��	�*��	�^�z�	S~�	a���	��r&�������<G�	����t�	���W�	)
w��	i�]�	iuF�	�	����I9^���T{�	�^�!Ӎ�!ub�!ʟ�	�	m��	!Í�iBg�	�
Y}	��!
�	J���	}���H�	�nmtAt7
�	pp��	��
)cF=
)8fC
�f^�i*�I
1�O
9/�U
i8�A���
^�[
9�Yc
�	�[�zy$	��y	�^�q*�
�ʋ�
a��
a
d�
aG��^��
Q
n�Q�m�Y¡
q�r�6լ
�}��q�b�q�b�
��m��8���m`a^��
y*��
as��
aV��
aF��
y��yu���*��
���
���
�t�&��m��U��E�YO���S�����
�^���F��|i���
Y8�	�����a
q2i@�B���^�I��yRQ]�������g�
RY}	�.�������Q}�9���9�Ad��	`p��
Wr��/^��cO�Y O�YĈ��	A¸�^���	h���	���	hp`iG�`��c�i�g�	��
	�
=Q]�(��&���	�[t�	Jt�}m`a������^�?�T{L'C�!^�!^�f%Zo�2i���F�^�z�4n��^�z4n�i^�i��iZXi�Xiy��2i���F�^�z�4n��2i���F�^�z�4n��2i
�2i
�2i
2i
	2i&
2i/
2i8
��F��F��F�F	�F�F�Fy^�z�4nA
�^�z�4nK
�^�z�4nU
�^�z4n_
�^�z	4ni
�^�z4ns
�^�z4n}
!2i�
)2i�
!�F)�F�^�z!4n�
�^�z)4n�
���`1�dI^�i^�y^��^�q^��^��^�Q9��
���d	̝�
�	,���y�t
�S�
!
,��!
v�!
�W�
!
���

:�
���

���
D�
!
�
���s�)
^�!
�Y�^��mI
�S�
Y�]C�^�%��Y.��I�	��Y�S�
��Ft��a�r6a}	#Q=	ثEiK�	9��X�i&���͖A�aA��A��AZBI���`�T_�rO�-��Q�S�1�p^���zi
�q
J�
�X}	A��
2i��
�[�Af��
=\��
��h�	Ǜ��
�it�
^��݌��b�y^��	y[�y"P�Ai��
���
LS�L��t�
�X
	���iQg�����4a���o�ޛx�
^��t�^�I�S�'��g�
m�NI�^��
/\���S�
!
���

�T�	~p~�
����
;����{���ӼT{L�^� ��F��{�
4n�^��^����4n��зi
֜��%�tq
��Y	��}m`�j��
)���
^�Q^�Y^�I^�a^�1^��^�9^�!^�)^�A^��Q����
s���
yM��[�
����
*���
3���
�n�QB�����D�!�YQ��Q6�)�YY�S1��
!
k���@�t
{�1�n�
�I�t1���
��}t1���
1/��
9���
9��
1c�
1���
1���
1��
1���
1��
1Ն�
!
��#1P��
���t1���
1;��
1`c�
1���
1���
1���
1��
1���
1Gc�
�
��*I�Y0	�8	o^Y��?Q�{Y�[YZ�Ea�i^�zY�]KI�^Io^I��RI��YqY�Yo^y^�zY��_1}�1��f��Yl1޶t��Fz1G�P1����Y�1�Џ1-F�^�z1іg`���q]�����^����Y����a����9c�	�q
�D�����^��q
o^�^�zq
\���	���9���`mta
���a
9��a
o^�a�:^��O�
3_
I���^��^��
όE*�J	7ia�	m�maF�s	5Ϧi<��	�գ�WmtT^��^�T!��\����}M��$c�\�tT����$c��/�)5Q	�	�)^�)^�+)�{31��:��@�}m�T��GT�FM1�{S���tA�Yc^�A�S�)�{+��|�d^�	���A!�Zd���d!��l���If^�Io^I.����a�S`a��a �Wl�tA���t!��|���qf^�qo^q���q���	���d�FMI���1�b��	�
!mc���Ѭ
�	A�/�^�9/c9�{9�g9�gAuJ=I�FD9Zd�
�
n���Wrz�^�Q^�����������FM�2i�a������`�O^��R��q^���FM�i�����^�
�^� �X�����cM��S.���4Ai�:A�����\@�^���˃�z���^��^��⬊��F������^���F��!�Z^��ڲ���F�㹱�^���F���Y��^��^��U���:^���U��/c���a�!^�!j�	&}��	\p��	h���^�'��aC�^��^��^��^��^��*�N�^�z�$�Tq��)
^�^�z��K[��Wb���i	�YoA^��͠�7i��)̎�T��q]�^�^�i�a�i���^���7i��)̎��i�Jty^��g)�	�ƛ!������4n�7i���̻�����*��)�����	�{)����^�9�m�Ԓ7
��Œ�^���	����T1^�9^��2i�A^�z�4n��^��^���"p9���q'�I���9�^I�QV`�p�#�O%ZY^�a^�i^��2i&q^�z�4n/y^��^��^��^��2i9�2iB�^�z�4nK�^�z�4nU�
�b_�7ie��Fq�RZ��4nI^�Q^��2iy�^�z�4n��	h���^�^��^�	7i�	nu�^�P׌�F��
Wr&9�
Ӆ"7i�!ٕ�!ٗ��գKn�!���!���!	�!���A]�!�yɛ)�{��^�z)5Q'�����|�y
�L��{R���
RY
	iOڛY@��!���t�2i�!�h�^�i^��!i��!qf^�i�i�i4n�!ދ�!qOڛ	,V�y7i�!yr�!y�t�!���!���!�^�����!������A�!���	"������#"�������="����I�mW"�2i^"��FY^�z�4ng"�^��ĕ�9�x�^���D��j���q"a@����D����\כi2i|"ik�tq2i�"q!h�
i5Ύ"T^��"Ah[=T�nG��^��}	^�n�
Y
	�7i�"��n#�^�#�7i#�d�$#�r�+#�&ʛ�d��+�0#�����;FN#�GFR#�2QW#!��_#��in#�SF��d�#�^�z�ñ#���#�^�z�	h��#��7
�^���D$�
����2i$��F���#$�t���^�z�4n)$�
ӌE�n�7i�$��Ù$�ɣ �� �^�M�%A���%���^Ft��g	^��%a�F�%��m���&		��&���7&A
�C&	�|I&��MM&	^�X&T`p�T%��&Td�)5Q�&)5Q�&)5Q��	�r�&�	`p�&�
��'�^��	�nf�	\p��	hMl(�|�)	ui1	~��(^�	ێ(�	�L!�|
�W��|�9	^��(A	^��(A	�|i
�i
	I	~��()	�ǩ()ۯ()~��(ێ(Q	.�N#Q	�N#!	^�)	^���X�(Y��1*��]�(�^��(q
\�!	���()	JY^�z)	�K�(a^�z)	s�(i^�z)	�I�(y^�a	PW&)��,)��X�(�^�z�}2)�^�z�	M�9)i	^�q	^�V)q	�])y	!�c)�	��i)��d�	�t��V�[��G����N�dN��g�N1}	݅��!\L)��^�����^��͚�^�����^����^��������^����^��'��y�i��q.�� e�ld��d��d�'d�Jd��d��d	�p�p	?��^�����[��p
�AR��)�ͨ�)��Kt��K�)�������)�ڗ�)���MA�)�ͨ�)��Kt��K�)�����ڗ�)���)[�)�1�9\�A<�Y�M1[}!�i�^�!�!�!LA���A�؛A�ӛA��A�қA��A7B����?��ĕ��M�
Wrq"���lK*�K*�K*�P*�U*�Z*_*d*i*n*s*x*}*�* �*$�*(�*,�*0�*4�*8�*<�*@�*D�*H�*L�*P�*T�*X�*\�*`�*d�*h�*l�*p�*t�*x�*|�*��*�+�	+�+�+�+�+�"+�'+�,+�1+�6+�;+�@+�E+�J+�O+�T+�Y+�^+�c+�h+�m+�r+�w+�|+��+��+��+��+��+��+�+�+�+�+�+�+�+$�+(�+4�+8/,<j,�K*�P*�K*�P*�U*�Z*�_*�d*K*P*U*Z*�K*�P*�U*�Z*�_*(�,0K*4P*8U*<Z*@_*xK*�K*�P*�U*�Z*�_* K*$P*(U*,Z*0_*4d*8i*<n*@s*Dx*H}*L�*P�*T�*X�*\�*`�*d�*h�*l�*p�*t�*x�*|�*��*��*��*	-	�-	8.�	K*�	P*�	K*�	P*l
K*p
P*x
K*|
P*!�D7.e5.n5.�5.#�5.+�5.3�5.;�5.C�5.K
6.S�5.[�5.c;6.ke6.sr6A�D7C{P*C�?aa�D7��P*���a��P*���a��P*��P*#�P*��P*C�P*c��ac�P*c{P*��P*#�P*a�M7��P*#�P*��P*��P*��P*��P*�{P*�{P*�{P*{P*C{P*c{P*��P*�{P*�{P*	{P*#	{P*C	{P*c	{P*�	{P*�	{P*�	{P*�	{P*
{P*#
{P*�{P*�{P*�{P*{P*!�w7��6�P*`�7`�P*���7��!8��H8��s8 ��8! �P9A ��9a ��9� �.:� �Q:� �v:� ��:!��:!!�
;A!�.;a!�S;�!�z;�!��;�!��;�!�<"�f<!"��<A"�=a"�+=�"�L=�"�|=�"��=�"��=#�>!#�M>A#��>a#��>�#�#?�#�V?�#��?�#��?$��@!$��@A$��@a$�0A�$��A�$��A�$�8B�$�4C%��C!%��CA%��Ca%��C�%�,D�%�[D�%��D�%��D&��D!&�EA&�KEa&�wE�&��E�&��E�&�`F�&��F'�FG!'�dGA'��Ga'��G�'��G�'�#H�'�TH�'�qH(��H!(��HA(��Ia(�
J�(�J�(�#J�(�2JA,�nJa,��J�.�gK/��K!/�0LA/��La/�GM�/��Ma0�lN�0��N�0�tO�0��OA7��Oa7�uP�7��P�7��P�7��P�9�dQ�9��Q�9��Q�9��Q:��Q�;�R�=�M7�=�,R�=��R�=�T>��TA�tU!A��UAA��UaA��U�A�P*�A��U�A�1V�A��V�A�P*�A��VB�+W!B�XAB�XaB�9X�B��X�B��Y�B�*Z�B�YZC�[!C��\AC��^aC�p_�C��_�C��_�C��_�C��_D��_!D��_AD�`�L�a�L�)aR��15�~��'Bbu(Cl���$Fj�����Tbw�		)	I	V	�	�	�	�	�	�	�	
&
+
i
q
x
�
�
�
'Yn�������Uw����
�
O���!.G]jw����������
%+6V\}����Yi��6Ns���!H��3w���2Y�������)���/7GZc�"�"h#t#$$3$Y$_$t$�$�$E%N%�%�%�%�%!&(&<&R&b&�&�&�&�&�&�&'''('4'A'K'P']'z'�'�'�'�'�'�'�'�'�'�'�'(('(H(V(a(p(�(�())@)o)u))�)*%(	^^<5�oA5pF5b�K5CfQ5w�W5w�W5T]52�a5�	���
�F5F7G5G7;_y������������}���!"."H"�#�#�)�)**��'*D0*�'*�0*�E'*iC,s�9*�z'*X��`�0*�0*�0*/
B*:�9*�0*�'*�e9*�C� :������X�� 66�`e@������ȯP��� "���:�P�d������z��AK�hsӮ`�?�w��t��r�����He�P���p(}�X�F�0�ƿl	���	M��g
��0�
���'��6�`��(��!8�?(
9&
F*`
�.�#
pP%
�'
�6P\
3�d
W7�
.;�
� �
��
Y! �
�%��
�)��
.|2���U7HX_cz�f� ��%0�
)(�K-8��1P�6��+:�� (-)�F��v�x�#!�f%�s)��-�F2'�6*�:��E(��O:�P}@S�!@�&X�*'�.P��2p�!7X��:8�� �c8��H]"��&�0�*�>B/�h�3��7���;��$��(�-�1�$�5�b�9�u�ОP��������H�$h=Y�E�?�J�>HU�>0��=`��@h��@���-��!�`"E>�"
8."P�3"�"�>"�&�^"�i"�*Xn"x/�v"�3�"�7��"�;`�"�"t�#�P(#�"`)#='p*#J+HD#�/(N#4�#[8��#2<H�#gP�#��#(�#a#�G$�'`$%�+�>%F0�B%�4�K%�8�Y%h<\%��_%�f%�=`�%TЬ%�#(�%X@��%�'�%,��%�0�&J.@�1�=��2  $8@�(8��a8�r8X u8�$ 8�4؀8�(��8�8 �8�<�8�8�,8�8{1X�8x �8�5@�8�h�8�9��8�# �8�x
9A(�9lh69,�P9��_91`j9� x�9R58�95%(�9B)�9_9��9�-�96=h�92��9S6��9k(�9� =:`:`=:��D:	�D:L�]:" p_:�!b:�)Hb:t.�b:�2�b:�6c:�:0d:2�e:�%hi:�(s:�x:,"0y:o&P|:|*P�:/ȏ:O3�:�7 �:d;�:��:C(�:���:�"��:'p�:+H�:�/��:e$��:�3�:*88�:<`�:6��;��<:?�<�(<0#�U<v?`[<s'�y<�+�<0غ<S4��<�+H�<|0�W=�4�o=�8�p=�<�y=�p�=G��=��=�#0�=(��=N,�=�0H�>!58�>.9�>=��>:��>�0�>�p�>4$�?�?�#?w(p�?�, @J1H5@�5��@�9��@l=0�@�p�@��=>?@ABCDEF"G"H(I(J(K(L*M*N*O*P*Q+R-S4T88�I�Z�uu/�A�+�!5"5"57"5Q"+v"��#��#��#��#�	�)�	*label20label30<>c__DisplayClass20_0<>c__DisplayClass11_0<>9__4_0<CheckDBVersion>b__4_0<>c__DisplayClass4_0<>c__DisplayClass15_0<InstallTaxCode>b__65_0<>c__DisplayClass5_0<>c__DisplayClass66_0<InstallAccountCodeFormat>b__67_0<>9__68_0<InstallDefaultSampleChartOfAccounts>b__68_0<>9__8_0<CreateNewStockTransQueue>b__8_0<>9__69_0<InstallDefaultRegistry>b__69_0<InstallMainPackage>b__0<CreateBaseAccountBook>b__0<OldCheckDBVersion>b__0<CheckVersion>b__0<InstallDefaultAccounts>b__0<InstallLocalCurrency>b__0label11label21<>c__DisplayClass4_1<InstallTaxCode>b__65_1<>c__DisplayClass5_1<>9__68_1<InstallDefaultSampleChartOfAccounts>b__68_1<>9__8_1<CreateNewStockTransQueue>b__8_1<>9__69_1<InstallDefaultRegistry>b__69_1<moduleControl>5__1<licenseKey>5__1<CreateBaseAccountBook>b__1<CheckDBVersion>b__1<OldCheckDBVersion>b__1<InstallDefaultAccounts>b__1<>u__1IEnumerable`1Task`1Collection`1AsyncTaskMethodBuilder`1EqualityComparer`1TaskAwaiter`1IEnumerator`1APIResult`1List`1xtraTabPage1ValidatePage1wzPage1openFileDialog1label1xtraTabControl1gridControl1labelControl1panelControl1progressBarControl1get_Item1barSubItem1gridColumn1simpleButton1panelHeader1helpProvider1barManager1webBrowser1get_Address1repositoryItemButtonEdit1repositoryItemTextEdit1popupMenu1gridView1Fix1pictureBox1groupBox1ErrorMessage_FiscalStartDateMustStartFromDay1ErrorMessage_ActualStartDateMustStartFromDay1DevExpress.Data.v22.2DevExpress.XtraGrid.v22.2DevExpress.Utils.v22.2DevExpress.XtraBars.v22.2DevExpress.XtraEditors.v22.2DevExpress.XtraReports.v22.2Line012label12label22label32ToInt32GetInt32AutoCount.XtraUtils.LookupEditBuilderV2<>9__20_2<CreateBaseAccountBook>b__20_2<>c__DisplayClass4_2<InstallTaxCode>b__65_2<>c__DisplayClass5_2<>9__68_2<InstallDefaultSampleChartOfAccounts>b__68_2<>9__69_2<InstallDefaultRegistry>b__69_2<reg>5__2<databaseLicenseInfo>5__2<CheckDBVersion>b__2<OldCheckDBVersion>b__2Func`2countryAlpha2localCurrencyWord2xtraTabPage2ValidatePage2wzPage2reg2ReplaceWithAddDBSetting2label2gridControl2labelControl2panelControl2get_Item2gridColumn2bar2set_BackColor2set_DatabaseGuidStatus2repositoryItemButtonEdit2UpgradeScript2UpgradeApplicationScript2UpgradeReportScript2gridView2Fix2label13label23label33<>9__20_3<CreateBaseAccountBook>b__20_3<>c__DisplayClass4_3<>c__DisplayClass5_3<>9__68_3<InstallDefaultSampleChartOfAccounts>b__68_3<databaseLicenseInfo>5__3<licenseKey>5__3<CheckDBVersion>b__3<OldCheckDBVersion>b__3<>f__AnonymousType0`3ValidatePage3InitPage3wzPage3ReplaceWithAddDBSetting3label3labelControl3panelControl3get_Item3gridColumn3bar3UpgradeScript3UpgradeApplicationScript3UpgradeReportScript3label14label34ToInt64<>9__20_4<CreateBaseAccountBook>b__20_4<>9__68_4<InstallDefaultSampleChartOfAccounts>b__68_4<regID>5__4<reg>5__4<CheckDBVersion>b__4<OldCheckDBVersion>b__4Tuple`4ValidatePage4wzPage4label4labelControl4panelControl4get_Item4label15label25label35<>9__20_5<CreateBaseAccountBook>b__20_5<>9__4_5<CheckDBVersion>b__4_5<>9__68_5<InstallDefaultSampleChartOfAccounts>b__68_5<regID>5__5<prefixLicenseKey>5__5<OldCheckDBVersion>b__5ValidatePage5InitPage5wzPage5label5labelControl5panelControl5gridColumn5label16label26<>9__20_6<CreateBaseAccountBook>b__20_6<>9__4_6<CheckDBVersion>b__4_6<>9__68_6<InstallDefaultSampleChartOfAccounts>b__68_6<OldCheckDBVersion>b__6<CheckLicenseKeyExist>d__6<>s__6label6label17label27<>9__68_7<InstallDefaultSampleChartOfAccounts>b__68_7<reg>5__7<ex>5__7<CreateBaseAccountBook>b__7<>9__20_8<CreateBaseAccountBook>b__20_8<regID>5__8label8label19label29<>9UpgradeTo1_9<prefixLicenseKey>5__9<myOKButton_Click>d__9label9<Module>copyCOAVBIsLocalPCSystem.Drawing.Drawing2DsbtnCDget_IDget_PublicIDset_PublicIDfromCmdIDcmdIDroundingMethodIDDatabaseIDregIDget_UserIDget_LoginUserIDReplaceCurrentUserIDmustProcessARBadDebtIDget_AccountingProductIDCashSaleAccountIDPurchaseAccountIDPurchaseReturnAccountIDSalesReturnAccountIDContraTempAccountIDPurchaseDiscountAccountIDGenerateGLTrxIDAutoCount.RegistryID.PrimaryKeyIDAutoCount.RegistryIDIRegistryIDBaseRegistryIDReplaceBCEDRPROCESSINGTABLEDRPROCESSINGDOTABLEAutoCount.UDFbarBtnSaveDMFbarBtnOpenDMFSizeFAutoCount.Accounting.UIAutoCount.Scripting.UIDevExpress.XtraReports.UIAutoCount.UITo_Controls_FilterUIReplaceFilterUIAccessRightUIsbtnOKget_DDLAutoCount.GLTo_GLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.34 (To be added).SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.1.0.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.0.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.2.0.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.3.0.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.4.0.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.5.0.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.6.0.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.7.0.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.0.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.0.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.10.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.10.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.10.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.20.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.20.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.20.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.30.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.30.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.30.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.40.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.40.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.50.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.50.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.60.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.70.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.70.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.80.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.80.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.90.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.1.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.1.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.1.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.11.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.11.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.11.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.21.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.21.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.21.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.31.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.31.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.31.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.41.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.41.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.51.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.51.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.61.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.71.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.71.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.81.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.81.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.2.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.2.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.2.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.12.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.12.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.12.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.22.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.22.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.22.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.32.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.32.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.32.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.42.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.42.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.52.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.52.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.62.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.72.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.72.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.82.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.82.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.3.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.3.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.3.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.13.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.13.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.13.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.23.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.23.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.23.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.33.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.33.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.33.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.43.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.43.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.53.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.53.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.63.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.73.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.73.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.83.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.83.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.4.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.4.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.4.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.14.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.14.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.14.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.24.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.24.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.24.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.34.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.34.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.34.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.44.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.44.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.54.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.54.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.64.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.74.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.74.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.84.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.5.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.5.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.5.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.15.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.15.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.15.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.25.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.25.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.25.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.35.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.35.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.35.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.45.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.45.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.55.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.55.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.65.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.65.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.75.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.75.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.85.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.6.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.6.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.6.SQLAutoCount.ManageAccountBook.OldSQL.A2006.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.16.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.16.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.16.SQLAutoCount.ManageAccountBook.SQL.A2016.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.26.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.26.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.26.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.36.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.36.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.36.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.46.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.46.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.56.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.56.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.66.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.66.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.76.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.76.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.86.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.7.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.7.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.7.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.17.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.17.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.17.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.27.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.27.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.27.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.37.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.37.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.37.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.47.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.47.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.57.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.57.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.67.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.67.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.77.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.77.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.87.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.8.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.8.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.8.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.18.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.18.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.18.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.28.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.28.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.28.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.38.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.38.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.38.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.48.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.48.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.58.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.68.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.68.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.78.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.78.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.88.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.9.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.9.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.9.SQLAutoCount.ManageAccountBook.SQL.A2016-2.1.19.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.19.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.29.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.29.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.29.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.39.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.8.39.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.39.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.49.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.49.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.59.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.69.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.69.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.79.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.79.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.89.SQLAutoCount.ManageAccountBook.SQL.ExportImportSSP.SQLAutoCount.ManageAccountBook.SQL.A2016Data.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.61.ChangePETaxCode.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.30.DropTable.SQLAutoCount.ManageAccountBook.SQL.ChangePriceAndCostDataType.SQLAutoCount.ManageAccountBook.SQL.AddPurchaseAnalysisNetTotal.SQLAutoCount.ManageAccountBook.SQL.ResizeDisplayTerm.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.51.DropColumn.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.53.DropColumn.SQLAutoCount.ManageAccountBook.SQL.A2016-2.2.84.DropColumn.SQLAutoCount.ManageAccountBook.SQL.AddBankSlip.SQLAutoCount.ManageAccountBook.SQL.A2016-MigrateSettings.SQLAutoCount.ManageAccountBook.OldSQL.A2006-1.0.9.63.UpdateWithholdingTaxTrans.SQLAutoCount.ManageAccountBook.SQL.UnrealizedGainLoss.SQLAutoCount.ManageAccountBook.SQL.UpdateConsignment.SQLAutoAccessRightUpdateSQLAccessRightCheckerSQLAccountBookHelperSQLGetCurrentOEMCode_InstallFromCDROMErrorMessage_InsertToCDROMUpgradeAPCNUpgradeAPDNSystem.IOFixARAPGetLatestListFromAIPAutoCount.BusinessFlow.UpgradeDRPShowMessage_NeitherRMNorMYRCSckEdtUseWHTTo_Tax_MalaysiaGSTget_GSTPayableDescriptionForNonGSTset_GSTPayableDescriptionForNonGSTAutoCount.RegistryID.SSTReplaceRoundXXXXReplaceFormatXXXXTo_DecimalSetting_FormatXXXvalue__ReadEmbeddedDatabaseSchemaRunEmbeddedDatabaseSchemaCreateDatabaseSchemaGetSchemaErrorMessage_DatabaseCannotUpgradeToNewForeignKeySchemaSystem.DataAutoCount.DataReplaceBCEDatadeleteExistingDataFailedCopyMasterDatackEdtCopyMasterDatacopyMasterDataDevExpress.XtraTabSystem.WebAutoCount.WebFromArgbToArgbmscorlibsb<>cEnableUIForAcademicmyForAcademicSetHelpTopicSystem.Collections.GenericMicrosoft.VisualBasicInclblHintDesccolScriptDesclblTaxDescAutoCount.RegistryID.Miscget_Idset_IdBaseStringIdManageAccountBookStringIdTo_Localization_GridGroupSummaryItemStringIdDBVersionCheckerStringIdAccountBookInstallerStringIdAccountBookHelperStringIdDataErrorStringIdFormGetScriptPassworStringIdAccessRightStringIdFormScriptResultStringIdFormUpgradeScriptStringIdCheckInclusiveTaxStringIdFormUpgradeLicenseKeyStringIdset_MaxItemIdget_GLTrxIdset_GLTrxIdNewGLTrxIdReadget_CurrentThreadadd_LoadFormCreateAccountBookWizard_LoadFormAttachDatabase_LoadFormAttachAccountBook_LoadsbtnLoadFormDownloadOpenNotepadAddget_RedShowMessage_ScheduledBackupAddedckEdtUseWHT_CheckedChangedadd_CheckedChangedckEdtUseDefaultPassword_CheckedChangedckEdtUseTaxCode_CheckedChangedckEdtMPInvoicing_CheckedChangedCkEdtSystemRecommendPath_CheckedChangedckEdtMPStockControl_CheckedChangedckEdtCreateSampleChartOfAccounts_CheckedChangedckEdtCopyChartOfAccounts_CheckedChangedckEdtCreateDefault_CheckedChangedckEdtUseMyAccount_CheckedChangedckEdtCreateAny_CheckedChangedadd_EditValueChangededtDataFile_EditValueChangededtCompanyName_EditValueChangededtFiscalYearStartDate_EditValueChangedluOtherHomeCurrency_EditValueChangedluCountry_EditValueChangedwebBrowser1_ProgressChangedadd_ProgressChangedadd_SelectedIndexChangedradioGroupHomeCurrency_SelectedIndexChangedget_Checkedset_Checkedget_Enabledset_Enabledset_IsWebBrowserContextMenuEnabledErrorMessage_TestConnectionFailedAutoCountPOSDBInstalledIsPOSTableInstalledProgress_DownloadStoppedget_IsRegisteredcolIsRegisteredShowMessage_ADMINPasswordRequiredShowErrorMsg_LicenseHasBeenUsedadd_ClosedFormCreateAccountBookWizard_ClosedrepositoryItemButtonEdit1_ButtonPressedrepositoryItemButtonEdit2_ButtonPressedadd_ButtonPressedAwaitUnsafeOnCompletedget_IsCompletedwebBrowser1_DocumentCompletedadd_DocumentCompletedTaxBaseCurrencyCodeIsUnrecognizedset_June1UpdateHasPaidDevExpress.XtraGrid.Views.GridDevExpress.XtraGridset_DatabaseGuidCheckAndSetDatabaseGuidNewGuid<UDTName>i__Field<MinSize>i__Field<MaxSize>i__FieldCalculatedFieldTrimEndReadToEndTraverseBandDetailReportBandbandIDbCommandCreateCommandWHTSettingCommandSSTSettingCommandSqlCommandGLTransCommandsbtnSendget_IsPosBackendget_AppendFindLabel_AutoCountServerFoundLabel_AutoCountServerNotFoundRoundset_DefaultWithholdingTaxInvoiceRoundingMethodset_DefaultDocumentRoundingMethodset_DefaultWithholdingTaxPaymentRoundingMethodInstallPaymentMethodmethodset_ActualDataStartPeriodactualDataStartPeriodset_FiscalYearStartPeriodfiscalYearStartPeriodFormRestoreWizardmyCompleteWizardFormCreateAccountBookWizardFormAddScheduledBackupWizardget_CurrencyWordlocalCurrencyWordUpdateDetailRecordOldTaxRecordget_SAPasswordset_SAPasswordget_MainServerSAPasswordset_MainServerSAPasswordedtSAPasswordShowMessage_EnterADMINPasswordShowMessage_SuccessfullyResetADMINPasswordGetServerName_Passwordget_PasswordsaPasswordShowErrorMsg_InvalidPasswordlabelPasswordShowErrorMsg_PleaseFillInPasswordFormGetUserPasswordedtServerPasswordckEdtUseDefaultPassworduseDefaultPasswordFormGetScriptPasswordDecryptPasswordEncryptPasswordtxtPasswordpasswordSetHelpKeywordAddReplaceIsWhiteSpacemyHasAutoCount_DataNamespacehasAutoCountDataNamespaceCodeNamespacemyHasSystemNamespacehasBCEApplicationNamespacemyHasAutoCount_AuthenticationNamespacehasAutoCountCommonNamespacehasAutoCountCommonFormatInfoNamespacehasAutoCountXtraUtilsNamespacemyHasAutoCountNamespacehasAutoCountNamespaceExtractScriptNamespacemyScriptNamespacescriptNamespacehasAutoCountReportNamespaceReplaceTaxNamespaceAutoCount.Accounting.EInvoiceUpgradeAPInvoiceEnableRoundTo5CentsInInvoiceInstallItemPricemyLicenseServiceRemoveAccountBookFromCostingServiceCompanyProfileMaintenanceCurrencyCodeNotExistInCurrencyMaintenanceget_AppearanceCreateInstanceGetInstanceget_DataSourceset_DataSourceget_ScriptsSourceUnableToGetManifestResourceConfirmMessage_UpgradeSureYouWantToContinueWithUpgradeFormUpgradeget_CanUpgrademyCanUpgradeRunUpgradelblGuideget_Iso3166_1_Alpha2CodeReplaceAutoCountNamespaceCodecolSourceCodeAutoCount.Tools.ChangeCodemyChangeCodeCompileCodeGenerateCodeGetHashCodeitemCodeRegistrationCodeDefaultSR0TaxCodeenableTaxCodeckEdtUseTaxCodeenableWithholdingTaxCodeInstallTaxCodeInstallGLMastWithoutTaxCodeErrorMessage_NotAllowEmptyTaxCodeget_CurrencyCodeConfirmChangeCurrencyCodePleaseSelectATaxBaseCurrencyCodeget_TaxBaseCurrencyCodelabelTaxBaseCurrencyCodelabelCurrentTaxBaseCurrencyCodelabelNewTaxBaseCurrencyCodemyTaxBaseCurrencyCodetaxBaseCurrencyCodeget_LocalCurrencyCodeset_LocalCurrencyCodenewLocalCurrencyCodelocalCurrencyCodelabelSystemCurrencyCodemySystemCurrencyCodecurrencyCodeget_KeyCodeCountryCodeXmlReadModeset_AutoScaleModeFileModeset_AutoSizeModeLabelAutoSizeModeset_GradientModeLinearGradientModeUrlDecodeXtraTabPageset_SelectedTabPageValidateActivePageGoToPagePreviousPageNextPageShowPageErrorMessage_ChooseMainPackageAddAccountingMainPackageInstallMainPackageAddStockControlMainPackageset_Imageget_MessageShowWarningMessageFormConfirmCreateAccountBookMessagelblMessageMailMessageShowConfirmMessageShowInformationMessageReplaceAppMessageShowErrorMessageShowMessagemyMessageProgress_DownloadOutOfPercentageget_LanguagecolLanguageget_ScriptLanguagemyScriptLanguagescriptLanguageAddRangeEndInvokeBeginInvokeEnableRoundTo5CentsInCashSaleUDFTableget_TableSimpleSaveDataTableGetDataTablesourceTableget_PeriodLockTablepackageDetailTableInstallTableget_DatabaseInfoTablemyDefaultAccessRightMapTableaccountMapTableLoadUserGroupTableLoadAccessRightTableSaveAccessRightTablemyAppScriptTableappScriptTablemyReportScriptTablereportScriptTablelblAutoCountServerAvailableIsPOSTableInstalledAndEnableIEnumerableIDisposableErrorMessage_AccountBookMarkAsNonDeletableHashtableset_Editableget_Visibleset_VisibleIsAccessibleDoubleRuntimeTypeHandleGetTypeFromHandleget_RowHandleget_FocusedRowHandleedtDataFileWindowSecurityDoesNotAllowToCreateLogFileckEdtPhysicalLogFileedtLogFileGetStartupFileGenerateAttachmentFileGenerateReportFileSaveReportFileAutoCount.GeneralMaint.CompanyProfileget_CompanyProfileget_DataTableCompanyProfileErrorMessage_NoCompanyProfileDealerConsoleset_DockStyleset_CanDockStyleBarCanDockStyleBarDockStylegridView1_RowCellStyleadd_RowCellStyleset_SizeGripStyleset_BorderStyleset_FormBorderStyleset_TextEditStyleBarItemPaintStyleget_SANameset_MainServerSANameget_DBNameget_UDTNameget_Nameset_NamedocNameget_FieldNameset_FieldNameReplaceTaxCodeNametaxCodeNameset_TableNameGetDocumentTableNametableNameget_FileNameset_FileNameErrorMessage_SpecifySQL2000DataFileNamefileNameget_MachineNameget_DatabaseNameset_DatabaseNameget_SelectedDatabaseNameErrorMessage_ProvideDatabaseNamecolDatabaseNameedtDatabaseNameErrorMessage_SpecifyDatabaseNamedatabaseNamecontainWordingNameWHTSettingNameSSTSettingNameget_FullNamecolNameget_ColumnNamedetailKeyColumnNameset_RelationNameset_BarNameedtServerUserNameuserNameget_ServerNameset_ServerNameget_SelectedServerNameErrorMessage_ProvideServerNamelabelServerNamecolServerNameget_MainServerNameset_MainServerNameedtServerNameGetServerNameSetServerNameserverNameConvertDocNoFormatNameget_ProductNameget_ScriptNamescriptNamereportNameGetHostNameDesignUserReportByNameset_TaxCodeDisplayNameedtTaxCodeDisplayNameget_CompanyNameset_CompanyNameget_FullCompanyNamecolCompanyNameedtCompanyNameErrorMessage_SpecifyCompanyNamecompanyNameGetDirectoryNamemyLogFilenameConvertCompanyNameRemarkToFilenamelabelUsernameget_DateTimeset_DateTimeToDateTimeCaptureConstructorTimeCode_ResumeReadLineget_FixedLineAppendLineWriteLineset_MultiLineget_VertLineget_NewLineget_HorzLineCombineIAsyncStateMachineSetStateMachinestateMachineReloadCountriesFromOnlineDoneReplaceDBTypeReplaceToDBTypeSqlDbTypeInstallAccTypedocTypeOfTypeset_MaskTypeget_JournalTypeset_LastSavedARAPContraJournalTypeset_LastSavedAPInvoiceJournalTypeset_LastSavedARInvoiceJournalTypeset_LastSavedAPDebitNoteJournalTypeset_LastSavedARDebitNoteJournalTypeset_LastSavedAPCreditNoteJournalTypeset_LastSavedARCreditNoteJournalTypeset_LastSavedJournalEntryJournalTypeTo_AuditTrail_ColumnTypeDBServerTypeget_ServerTypeGetTypeTo_AuditTrail_EventTypeOldTaxTypecomboBoxEditCompanyTypecompanyTypeCompareSystem.CoreAutoCount.Tools.BackupRestoreget_Cultureset_CultureresourceCultureget_InvariantCultureget_CurrentCultureCaptureDevExpress.XtraGrid.Views.BaseInternalDataCollectionBaseNavigatorButtonBaseRepositoryItemLookUpEditBaseXtraReportBasePopupMenuBaseGetAllA2006DatabaseFormAvailableSQLDatabaseFormUpgradeDatabaseCreateDatabaseFormAttachDatabasesbtnAttachDatabaseDropDatabaseErrorMessage_IncorrectDatabasedatabaseverbosesbtnCloseDisposeTryParseCode_PausesbtnBrowseReplaceCheckTransactionDateset_KnockOffDateMustGreaterThanOrEqualToDocumentDateget_SSTStartDateget_ActualDataStartDateedtActualDataStartDateactualDataStartDateErrorMessage_ActualStartDateCannotMoreThan1yearFromFiscalStartDateErrorMessage_ActualStartDateCannotEarlierThanFiscalStartDateedtFiscalYearStartDatefiscalYearStartDateAuthenticateAutoAccessRightUpdateGetOrCreateBackupDelegatePageValidatorDelegateMulticastDelegateNavigateReportTemplateDebuggerBrowsableStateEditorBrowsableStateget_RowStateDataRowState<>1__stateget_BlockDeleteset_BlockDeleteget_WhiteWriteConfirmMessage_DeleteAccountBook_NoteLabel_AutoCountServerFoundNoteLabel_AutoCountServerNotFoundNoteShowMessage_StandaloneNotelabelStandaloneNotelblAutoCountServerNoteCompilerGeneratedAttributeGuidAttributeGeneratedCodeAttributeDebuggerNonUserCodeAttributeDebuggableAttributeDebuggerBrowsableAttributeEditorBrowsableAttributeComVisibleAttributeAssemblyTitleAttributeAsyncStateMachineAttributeLocalizableStringAttributeDefaultStringAttributeDebuggerStepThroughAttributeAssemblyTrademarkAttributeTargetFrameworkAttributeDebuggerHiddenAttributeAssemblyFileVersionAttributeAssemblyConfigurationAttributeAssemblyDescriptionAttributeCompilationRelaxationsAttributeAssemblyProductAttributeAssemblyCopyrightAttributeDebuggerDisplayAttributeAssemblyCompanyAttributeRuntimeCompatibilityAttributeCreateNewStockTransQueueget_Blueget_RoyalBlueget_MediumBlueget_Valueset_ValueAddWithValueset_MinValueDocStatusToValueSetValueget_EditValueset_EditValueset_NewValueset_AcceptEditorTextAsNewValueset_MaxValueGetCountryValuevaluesbtnSaveGetLoadedRomDriveGetInclusiveTotalDocumentsHaveBothInclusiveAndExclusiveWarningMessage_CostingServiceActiveget_ColumnFilterButtonActiveget_RemoveShowMessage_ItemUOMCodeSizeShowMessage_AreaCodeSizeShowMessage_ItemTypeCodeSizeConfirmMessage_CreateAccountBookCodeSizeShowMessage_ItemCodeSizeShowMessage_LocationCodeSizeShowMessage_AccNoCodeSizeShowMessage_ItemGroupCodeSizeShowMessage_ProjectCodeSizeShowMessage_DepartmentCodeSizeget_MinSizeCalcNewSizeget_MaxSizeSerializeDeserializeReplaceFormInitializeISupportInitializesizeLastIndexOfget_Tagset_TagdbRegget_AppConfigAutoCount.InvoicingckEdtMPInvoicingTo_Invoicingset_UseFontStyleInInvoicingSystem.ThreadingLoadingXRBindingset_BankerRoundingFixGLNewRoundingFixARAPNewRoundingFixSalesPurchaseNewRoundingDevExpress.XtraBars.Helpers.DockingProgress_DownloadResumingSystem.Runtime.VersioningTo_Utils_StringHelper_IListToCommaStringToSingleQuoteStringmatchStringAccountBookStringset_AllowHtmlStringGetWHTSettingInStringCompareVersionStringget_ConnectionStringToStringSetCountryForEuroCurrencyUserStringset_FormatStringGetStringnewStringHomeCurrencyStringSubstringset_CharacterCasingdisposingLoadDRProcessingSaveDRProcessingwebBrowser1_Navigatingadd_NavigatingAutoCount.AccountingSomeAppScriptsOrUserReportsWillNotRunInThisVersionACAccountingckEdtMPAccountingAutoCount.ScriptingProgress_DownloadStartingTo_Tax_WithholdingTax_WithholdingTaxTransactionListingAutoCount.Stock.IntelligentCostingget_DBSettingReplaceWithAddDBSettingReplaceDBSettingfromDBSettingReplaceReportDrillDownDBSettingGetDBSettingnewDBSettingmyDBSettingSimpleARAPSettingmyARAPSettingAutoCount.GL.WHTSettingSetWHTSettingSimpleMalaysiaGSTSettingSimpleGSTSettingBaseGSTSettingmyGSTSettingIPHISTSettingAutoCount.GL.SSTSettingBaseMalaysiaSSTSettingSetSSTSettingSimpleContraSettingmyContraSettingdbSettingLoadSettingSimpleAPInvoiceSettingSimpleARInvoiceSettingSimpleInvoiceSettingSimpleMemberMaintenanceSettingSimpleCashSaleSettingTo_Serialization_BaseSettingSimpleLicenseSettingBaseLicenseSettingBaseRemoteLicenseSettingSimpleDateSettingmyDateSettingValidateSettingSimpleAPDebitNoteSettingSimpleARDebitNoteSettingSimpleAPCreditNoteSettingSimpleARCreditNoteSettingSaveSettingSimpleInvoicingSettingmyInvoicingSettingSimpleStockCostingSettingBaseStockCostingSettingSimpleAccountBookSettingBaseAccountBookSettingmyAccountBookSettingLoadLocalSettingSaveLocalSettingSimpleDecimalSettingBaseDecimalSettingGetDecimalSettingReplaceGeneralSettingSimpleGeneralSettingBaseGeneralSettingGetGeneralSettingmyGeneralSettingSimpleModuleControlSettingBaseModuleControlSettingSimpleLicenseControlSettingmyLicenseControlSettingmyItemSettingSimpleSystemSettingBaseSystemSettingmySystemSettingServerLocationSettingSimpleFiscalYearSettingmyFiscalYearSettingLoadUserSettingSaveUserSettingLoadMainServerSettingSaveMainServerSettingGetServerSettingAutoCountServerSettingmyServerSettingSimpleDocumentSettingSimpleAccountSettingSimpleDefaultAccountSettingmyDefaultAccountSettingSimpleFinancialReportSettingmyFinancialReportSettingSimpleApprovalWorkflowSettingBaseApprovalWorkflowSettingSimpleJournalEntrySettingsettingSystem.DrawingCloseLogWriteLogWriteExceptionToErrorLogSaveFileDialogOpenFileDialogCommonDialogShowDialogmsglabelCountrySettingMssglabelSpecialMssgset_AllowIncrementalSearchIsMatchNextMatchmatchsbtnRefreshCode_FinishFlushMathget_Pathset_PathReplaceDataPathget_PrivateDataPathget_ApplicationDataPathckEdtSystemRecommendPathShowMessage_CurrentAccountBookControlFilePathReplaceProfilingLogPathset_SampleAccountBookPathget_LocalPathbarBtnShowCurrentDMFFullPathGetTempPathget_Widthset_PopupWidthget_Lengthset_Lengthset_MaxLengthEndsWithStartsWithset_UseOldCalculationForBSMonthget_Monthset_MustProcessARBadDebtReliefAfterSixMonthUriopenFileDialog1_FileOkadd_FileOkget_VersionWithServicePackAsyncCallbackSetSimpleSettingCallbackcallbackget_BlackChecksimpleButton1_ClicksbtnCD_ClicksbtnBCE_ClicksbtnOK_ClicksbtnLoad_Clickadd_ClicksbtnSend_ClicksbtnAttachDatabase_ClicksbtnBrowse_ClicksbtnSave_ClicksbtnRefresh_ClicksbtnCreateAccountBook_ClicksbtnDeleteAccountBook_ClicksbtnDetachAccountBook_ClicksbtnAttachAccountBook_ClicksbtnEditAccountBook_ClicksbtnCancel_ClicksbtnTestConnection_ClickmyOKButton_ClicksbtnBackup_ClicksbtnFolder_ClicksbtnSetMainServer_ClicksbtnYes_ClicksbtnGetDatabases_ClicksbtnGetServers_ClicksbtnPrevious_ClicksbtnNext_ClickbtnGetLatestCountry_ClickbarBtnSaveDMF_ItemClickbarBtnOpenDMF_ItemClickadd_ItemClickbarBtnShowCurrentDMFFullPath_ItemClickbarBtnInstallSampleAccountBook_ItemClickbarBtnSyncAll_ItemClickbarBtnOpenCurrentDMFFolder_ItemClickManagePeriodLockPeekhylinkEditDownloadLinkadd_OpenLinkhylinkEditDownloadLink_OpenLinklblTMCSEmail_OpenLinklblGPISEmail_OpenLinklblIngeniousEmail_OpenLinklblAutoCountEmail_OpenLinkFormUserReportConverterLinkFixCashBookgcAccountBookAutoCount.ManageAccountBookFormManageAccountBookErrorMessage_InvalidSampleAccountBookbarBtnInstallSampleAccountBookIsSampleAccountBookCreateBaseAccountBookConfirmMessage_CancelCreateAccountBooksbtnCreateAccountBookConfirmMessage_DeleteAccountBookErrorMessage_OnlyADMINCanDeleteAccountBooksbtnDeleteAccountBookErrorMessage_CannotDeleteCurrentWorkingAccountBookErrorMessage_CannotDetachCurrentWorkingAccountBookConfirmMessage_DetachAccountBookErrorMessage_OnlyADMINCanDetachAccountBooksbtnDetachAccountBookFormAttachAccountBooksbtnAttachAccountBookShowMessage_FillInfoToAttachAccountBookckEdtBlankAccountBookblankAccountBookluEdtCopyFromAccountBookcopyFromAccountBookCopyFromOtherAccountBookFormEditAccountBooksbtnEditAccountBookget_Remarkset_RemarkcolRemarkDevExpress.XtraEditors.Maskget_Maskget_ModuleMaskset_AccountingModuleMaskset_EditMaskget_TaskErrorMessage_NoCDROMOrDiskNetworkCredentialReplaceRoundToXXXXDBDecimalReplaceRoundTypeDBDecimalReplaceXXXXDecimalToDecimalset_CalculateUnitPriceFromSubTotalXRLabelset_CancelsbtnCancelAutoCount.AutoCountServer.ModelSystem.Collections.ObjectModelSystem.ComponentModelDevExpress.LookAndFeelget_LookAndFeelContainerUserLookAndFeelset_UseDefaultLookAndFeelXRPanelget_GroupPanelset_ShowGroupPanelget_HeaderPanelget_FilterPanelget_FooterPanelSystem.Net.MailSuccessfulSendEMaillblTMCSEmaillblGPISEmailtxtToEmaillblIngeniousEmaillblAutoCountEmailset_RunCompanyProfileAuditTrailTo_AuditTrail_DocumentAuditTraillabelNoteDetaildetailReportDBUtilReplacePersistenceUtilReportTemplateUtilAccountBookUtilFormControlUtilbarBtnSyncAllCode_SynchronizeAllAutoCount.ManageAccountBook.dllget_FocusedCellFillDBNullReadXmlset_IsBodyHtmlset_DockColget_CurrencySymbollocalCurrencySymbolReportToolXRControlXtraTabControlset_GridControlRenameTaxCodeControlXtraScrollableControlModuleControlBaseStyleControlAutoCount.LicenseControlValidateControlBarDockControlckEdtMPStockControlAutoCount.RegistryID.AccountBookControlLabelControlPanelControlCustomControlIButtonControlProgressBarControlContainerControlLoadDRProcessingDOSqlUpgradeDRPSqlLoadDRProcessingSqlDropColumnSqlget_UrlSamplePOSAccountBookUrlSampleAccountBookUrlmyUrlurlRgbHslGetManifestResourceStreamFileStreamSaveReportStreamMemoryStreamAutoCount.Stock.Itemget_Itemset_ItemBarSubItemBarStaticItemget_SelectedItemCachedTableItemCopyStockItemcopyStockItemInstallItemBarButtonItemRadioGroupItemBarItemBarLinkContainerItemSetupRepositoryItemGetTaxSystemTrimSystem.CodeDomset_FrompanelBottombarDockControlBottomTo_AutoCount_ARAP_DisplayTermset_FormXtraFormset_ShowInCustomizationFormReplaceIAppFormErrorMessage_OnlyADMINCanPerformget_Maximumset_MaximumEnumresourceManTextToBooleanGetBooleanDefaultBooleanop_GreaterThanget_DarkGreenJTokenOpenAssignpanelMainShowMessage_UpgradePOSPluginShowMessage_UpgradePluginJoinget_ColumnDataColumnGridColumnget_OptionsColumnconnget_Iconset_Iconop_DivisionChangeExtensionGetFileNameWithoutExtensionErrorMessage_CheckDBVersionOldCheckDBVersionErrorMessage_UnknownDBVersionmyDBVersiondbVersionPinUpgradeVersionmyUpgradeVersionget_AccessRightCmdFileVersionset_AccessRightCmdFileVersionfileVersionget_DatabaseVersionset_DatabaseVersionInternalDatabaseVersioncolDatabaseVersionCheckVersionget_StockCostingCalculationVersionset_StockCostingCalculationVersionErrorMessage_InvalidSQLServerVersionReplaceProductVersionGetProductVersionAccessRightVersionShowMessage_InstallLatestVersionnewVersionReplaceApplicationDBSessionReplaceMenuItemClickUserSessionAddingUDFUtilUserSessionAddingPrintPreviewReportUserSessionmyUserSessionuserSessionget_Expressionset_ExpressionItemClassificationAutoCount.ApplicationAutoCount.AuthenticationReplaceAuthenticationReplaceUserAuthenticationReplaceVariableUserAuthenticationReplaceValueUserAuthenticationGetUserAuthenticationset_Locationset_LineLocationset_CausesValidationop_UnaryNegationDataRelationCodeTypeDeclarationAutoCount.Configurationset_EnableApprovalInQuotationenableApprovalInQuotationSystem.GlobalizationAutoCount.LocalizationAutoCount.Serializationset_AllowQuickCustomizationset_AllowCustomizationset_MissingSchemaActionlblActionop_SubtractionEndTransactionStartTransactionSystem.ReflectionCalculatedFieldCollectionBandCollectionCodeNamespaceCollectionXtraTabPageCollectionDataTableCollectionXRBindingCollectionXRControlCollectionRadioGroupItemCollectionComboBoxItemCollectionRepositoryItemCollectionDataColumnCollectionGridColumnCollectionDataRelationCollectionCodeTypeDeclarationCollectionEditorButtonCollectionLookUpColumnInfoCollectionGroupCollectionCodeTypeMemberCollectionDbParameterCollectionSqlParameterCollectionCompilerErrorCollectionMailAddressCollectionManagementObjectCollectionAttachmentCollectionCodeNamespaceImportCollectionget_ViewCollectionDataRowCollectionViewRepositoryCollectioncollectionLabel_SQLConnectionDbConnectionlblSqlConnectionsbtnTestConnectionset_UseAIPProductionop_Additionset_PositionFormStartPositionTo_Optionset_ApplyMalaysiaGSTLogicOptionReplaceOptionset_Invoice5CentsRoundingOptionset_CashSale5CentsRoundingOptionFormInstallerOptionTo_Report_BasicReportOptionTo_Report_FormBasicReportOptionset_WithholdingTaxOptionedtWithholdingTaxOptionset_CaptionIOExceptionThrowServerTypeNotSupportedExceptionInvalidSampleChartOfAccountsTemplateFileExceptionHandleSqlExceptionInvalidOperationExceptionTo_AppExceptionDataAccessExceptionUnauthorizedAccessExceptionSetExceptionInvalidDDLStatementExceptionArgumentExceptionSecurityExceptionset_DescriptionlabelInvoicingPackageDescriptionlabelAccountingPackageDescriptionlabelStockControlPackageDescriptionget_GSTPayableDescriptionset_GSTPayableDescriptionlabelActualDataStartDateDescriptionlabelFreeFormatDescriptionGetScriptDescriptionSystem.Data.CommonNewtonsoft.JsoncountriesInJsonStringComparisonPleaseFillInContactPersontxtContactPersonmyOKButtonSimpleButtonBaseButtonget_FilterCloseButtonokButtonset_CancelButtonmyCancelButtonget_GroupButtonget_ColumnFilterButtonNavigatorButtonEditorButtonset_AcceptButtonadd_KeyDownFormInstallerOption_KeyDownReplaceShutdownset_SaleAccNoConvertTableAccNoset_PurchaseAccNoset_CashPurchaseAccNoset_SaleReturnAccNoset_PurchaseReturnAccNoset_DefaultAccountAccNoset_SaleDiscountAccNoset_PurchaseDiscountAccNoaccNoget_PeriodNosbtnNoset_NextMemberNotxtContactNoset_ContraTempAccountNoget_ToCultureInfoAddDatabaseInfoUpdateDatabaseInfoget_ActiveDatabaseInfoRemoveDatabaseInfoGetDatabaseInfomyDatabaseInfoGetDatabaseLicenseInfoValidateLicenseInfoGetConfigInfoLookUpColumnInfoSQLVersionInfoCode_VersionInfolblVersionInfoLinksInfoTo_Settings_DecimalNumberFormatInfoReplaceCustomDisplayFormatInfoGetGridHitInfoLinkPersistInfoget_LinksPersistInfoDevExpress.XtraGrid.Views.Grid.ViewInfoDirectoryInfoget_CountryInfoGetCountryInfoGetDefaultCountryInfomyCountryInfocountryInfoinfoZeroGetSystemAccessRightMapset_WordWrapget_DetailTipSetShowHelpbarDockControlTopset_TabStopMicrosoft.CSharpAutoCount.AutoCountServer.ScheduledBackupConfirmMessage_AddScheduledBackupDeleteScheduledBackupRemoveTaskFromScheduledBackupFormBackupsbtnBackupRepositoryItemRadioGroupInstallUserGroupuserGroupReplaceStartupSystem.LinqNewtonsoft.Json.Linqget_OptionsBarRepositoryItemProgressBarset_StatusBar<UDTName>j__TPar<MinSize>j__TPar<MaxSize>j__TParset_ShowInTaskbarget_YearFiscalYearClearErrorMessage_DoesNotAppearset_PasswordCharToCharDirectorySeparatorCharExecuteScalarlblOldVeroldVerlblNewVernewVerget_DataMemberCodeTypeMemberCodeSnippetTypeMemberset_ValueMemberset_DisplayMemberget_VersionNumberPleaseFillInContactNumberTo_Document_DocumentNumberInstallDocNoFormatYearlyNumberset_HeaderPanelHeaderDbDataReaderSqlDataReaderExecuteReaderStreamReaderTextReaderVBCodeProviderCSharpCodeProviderCodeDomProviderTo_Utils_HelpProviderIFormatProviderSqlCommandBuilderAsyncVoidMethodBuilderStringBuildermyMoreCountriesLookupEditBuilderReplaceDefaultLookupEditBuildermyOtherHomeCurrencyLookupEditBuildermyCountryLookupEditBuilder<>t__builderbarBtnOpenCurrentDMFFolderget_DatabaseFolderedtDatabaseFolderget_DefaultDatabaseFolderset_DefaultDatabaseFolderErrorMessage_SpecifyDatabaseFolderdatabaseFoldersbtnFolderget_MyAutoCountFoldersenderset_DrawDragBorderGetBufferget_Managerset_Managerget_ResourceManagerComponentResourceManagerget_DatabaseManagerBarManagerIDXMenuManagerset_MenuManagerManagementObjectSearcherAddAccessRightFromOtherReplaceAccessRightFromOtherTo_Document_DragDropCarrierOldDBVersionCheckerAccessRightCheckerStandardExceptionHandlerWebBrowserProgressChangedEventHandlerButtonPressedEventHandlerWebBrowserDocumentCompletedEventHandlerRowCellStyleEventHandlerWebBrowserNavigatingEventHandlerItemClickEventHandlerOpenLinkEventHandlerCancelEventHandlerCustomDisplayTextEventHandlerQueryShowPopupMenuEventHandlerKeyEventHandlerFormProfilerSystem.CodeDom.CompilerAutoCount.Tools.AccountBookInstallerTo_LicenseControl_ModuleControllerget_ModuleControllerReplaceModuleControllermControllerTextWriterTraceListenerDevExpress.XtraEditors.ContainerIContainerEditorContainerformOwnerget_TopOwnerTo_Utils_SQLHelperAIPHelperTo_POS_Utils_POSHelperPaymentMethodHelperCostingServiceHelpermyCommonServiceHelperBackupServiceHelperEInvoiceCodeHelperBackupRestoreHelperTo_Utils_StringHelperPathHelperAccountBookHelperCodeDomHelpermyMouseDownHelperInstallerHelperDocumentStatusHelpermyDefaultAccessRightHelperTo_Document_DocumentHelperTo_XtraUtils_GridViewHelperTo_Utils_Messaging_FaxHelpermyCountryHelpercountryHelperToUpperFormSetCountryForEuroCurrencyUserWebBrowserFormBrowserErrorMessage_DatabaseNameExist_ParameterDbParameterSqlParameterGetAwaiterStringWritermyLogWriterTextWriterset_Filterget_GroupFooterDbDataAdapterSqlDataAdapterTo_ConverterGetMastermasterCheckLicenseKeyRegisterBinaryFormatterIsLetterget_SilverIsTargetSQLServerErrorMessage_ErrorSynchronizeWithDatabaseServerConfirmMessage_SynchronizeMainDatabaseServerget_RemoteLicenseServerSyncWithServerSyncMainServerlblMainServerFormSetMainServersbtnSetMainServerShowMainServerAutoCount.AutoCountServerToLowerLocalizererrorLogDirget_OptionsBehaviorGridOptionsBehaviorColumnViewOptionsBehaviorset_ForeColorset_UseForeColorGetOppositeColorget_BackColorset_BackColorset_UseBackColorget_RemarkColorset_RemarkColorset_BorderColorset_UseBorderColorDataErrorget_EmbeddedNavigatorset_UseEmbeddedNavigatorControlNavigatorSetHelpNavigatorget_RowSeparatorIEnumeratorManagementObjectEnumeratorGetEnumeratorMatchEvaluatorActivatorCopyDebtorcopyDebtor.ctor.cctorCopyCreditorcopyCreditorTo_Tax_IrasSystem.Diagnosticsget_CalculatedFieldsget_BandsTo_Utils_NumberToWordssbtnYesget_NamespacesSystem.Runtime.InteropServicesSystem.Runtime.CompilerServicesGridViewAppearancesColumnViewAppearancesSystem.ResourcesApplyResourcesAutoCount.ManageAccountBook.FormCreateAccountBookWizard.resourcesAutoCount.Tools.FormGetScriptPassword.resourcesAutoCount.ManageAccountBook.FormConfirmCreateAccountBookMessage.resourcesAutoCount.Tools.FormUpgradeDatabase.resourcesAutoCount.ManageAccountBook.FormAttachDatabase.resourcesAutoCount.Tools.FormUserReportConverterLink.resourcesAutoCount.ManageAccountBook.FormManageAccountBook.resourcesAutoCount.ManageAccountBook.FormAttachAccountBook.resourcesAutoCount.ManageAccountBook.FormEditAccountBook.resourcesAutoCount.Tools.AccountBookInstaller.FormInstallerOption.resourcesAutoCount.Tools.FormSetCountryForEuroCurrencyUser.resourcesAutoCount.Tools.AccountBookInstaller.FormBrowser.resourcesAutoCount.ManageAccountBook.FormSetMainServer.resourcesAutoCount.ManageAccountBook.Properties.Resources.resourcesAutoCount.Tools.FormUpgradeToCountrySettings.resourcesAutoCount.Tools.FormScriptResult.resourcesAutoCount.Tools.FormUpgradeScript.resourcesAutoCount.Tools.FormUpgradeLicenseKey.resourcesMSICCodesget_Codesset_CodesDebuggingModescodesget_TabPagesInitWizardPagesmyWizardPagesGetChangesluMoreCountriesAutoCount.ManageAccountBook.PropertiesTo_Application_Propertiesget_Propertiesget_CalendarTimePropertiesMaskPropertiesget_TablesAutoCount.Data.MasterTablesResetAllModulesBorderStylesTextEditStylesBarLinkUserDefinesButtonPredefinesget_TypessbtnGetDatabasesAutoCount.ManageAccountBook.dll.licensesAutoCount.Fixesget_DataBindingsUpgradeToCountrySettingStringsGetEnumStringsalwaysArrangeUsingsAppendAfterUsingsExtractUsingsusingsAutoCount.SettingsTo_Serialization_FormSettingsFormUpgradeToCountrySettingsErrorUpgradeToCountrySettingsWebBrowserProgressChangedEventArgsButtonPressedEventArgsWebBrowserDocumentCompletedEventArgsRowCellStyleEventArgsWebBrowserNavigatingEventArgsItemClickEventArgsOpenLinkEventArgsCancelEventArgsCustomRowCellEventArgsCustomDisplayTextEventArgsQueryShowPopupMenuEventArgsKeyEventArgs<>4__thisSystem.Threading.Tasksset_CredentialsEqualsAutoCount.Accounting.EInvoice.AIP.ModelsUpdateAccountBookDetailsRemoveAccountBookDetailsDevExpress.UtilsAutoCount.UtilsDBUtilsPOSUtilsTo_Serialization_UtilsAutoCount.XtraUtilsTo_XtraUtilsTo_Data_RecordUtilsFormUtilsGridViewUtilsAutoCount.ToolsDevExpress.XtraBars.ControlsDevExpress.XtraEditors.ControlsAutoCount.Controlsget_ControlsTraverseControlsget_DockControlsBarDockControlsInitFormControlsInitControlsget_ItemsckEdtCopyStockItemsBarItemsget_RepositoryItemsSystem.Windows.FormsTo_FormsDnsGLTransContainsDevExpress.XtraGrid.Columnsget_ColumnsaccNoColumnsFixTaxTransNewColumnsFixJournalEntryNewColumnsget_AutoScaleDimensionsSystem.Text.RegularExpressionsget_RelationsErrorMessage_CannotUpgradeBecauseOfBonusPointTransactionsSystem.CollectionsShowMessage_ChooseFrom3OptionsTo_Optionsget_OptionsgrpBxCopyMasterDataOptionsReplaceOptionsLabelControlAppearanceOptionsget_ImageOptionsSimpleButtonImageOptionsBarOptionsget_TextOptionsset_UseTextOptionsRegexOptionsTo_Exceptionsget_ButtonsControlNavigatorButtonsposget_Groupsget_BarsDevExpress.XtraBarsTo_XtraUtils_XtraBarsget_Charsget_MembersDevExpress.LookAndFeel.HelpersInstallUsersInstallLayoutUsersErrorMessage_InvalidCharactersget_ParametersFormAvailableSQLServerssbtnGetServersget_ErrorsDevExpress.XtraEditorsget_SuccessShowMessage_TestConnectionSuccessProcessMailAddressPleaseFillInEmailAddresstxtAddressUpdateProgressget_MaximumProgressget_CurrentProgressCompilerResultsget_AttachmentscomponentsXRControlEventsckEdtCreateSampleChartOfAccountscreateSampleChartOfAccountsInstallSampleChartOfAccountsInstallDefaultSampleChartOfAccountsckEdtCopyChartOfAccountsckEdtCopyDebtorAccountsckEdtCopyCreditorAccountsInstallDefaultAccountsget_ScriptsValidateScriptsXtraReportScriptsDevExpress.XtraReportsget_Importsset_CheckFileExistsIsDatabaseExistsset_CheckPathExistsget_CanFocussbtnPreviousbarstaticStatusset_DatabaseGuidStatusDocumentStatusget_Rowsget_DraftExpiredAfterNumOfDaysKeysRemoveAtConcatAutoCount.ManageAccountBook.SampleChartOfAccounts.Trading-ms-MY.datAutoCount.ManageAccountBook.SampleChartOfAccounts.Trading.datAutoCount.ManageAccountBook.SampleChartOfAccounts.SGTrading.datAutoCount.ManageAccountBook.SampleChartOfAccounts.SGSeamlessFiling.datAutoCount.ManageAccountBook.SampleChartOfAccounts.Training.datAutoCount.ManageAccountBook.SampleChartOfAccounts.Manufacturing.datAutoCount.ManageAccountBook.SampleChartOfAccounts.SGManufacturing.datAutoCount.ManageAccountBook.SampleChartOfAccounts.Travel.datAutoCount.ManageAccountBook.SampleChartOfAccounts.Construction.datAutoCount.ManageAccountBook.SampleChartOfAccounts.SGConstruction.datAutoCount.ManageAccountBook.SampleChartOfAccounts.Partnership.datAutoCount.ManageAccountBook.SampleChartOfAccounts.SGPartnership.datAutoCount.ManageAccountBook.SampleChartOfAccounts.SGTrainingCenter.datAutoCount.ManageAccountBook.SampleChartOfAccounts.SGTravelAgency.datset_AccountCodeFormatInstallAccountCodeFormatConvertToNewAccountCodeFormatnewAccountCodeFormatset_ShortDateFormatConfirmMessage_DocumentNumberingFormatget_SerializationFormatInstallDocNoFormatset_MemberNoFormatedtAccountNoFormataccountNoFormatget_DisplayFormatSetupDateEditDisplayFormatRemoveRoundToTypeDBObjectRemoveDBObjectJObjectLabelControlAppearanceObjectManagementBaseObjectSerializeObjectDeserializeObjectGetObjectManagementObjectobjectset_SubjectEnableRightMouseDownAsRowSelectGetSystem.NetLoadDataSetmyDataSetInstallStockSetCode_NotSetShowErrorMsg_ThisAccBookDidntRegisterYetbarDockControlLeftbarDockControlRightget_AccessRightAddAccessRightReplaceAccessRightUpdateModuleSettingAccessRightInstallAccessRightInstallDefaultAccessRightget_Editget_EndEditRepositoryItemTimeEditBaseEditRepositoryItemDateEditdateEditBaseRepositoryItemCheckEditRepositoryItemHyperLinkEditget_CancelEditBeginEditset_ColumnEditRepositoryItemButtonEditmyCountryAndCurrencyCodeLookUpEditRefreshLookUpEditRepositoryItemLookUpEditBuildLookupEditBuildMoreCountriesLookupEditBuildMainCountriesLookupEditRepositoryItemTextEditset_AllowEditComboBoxEditIsLetterOrDigitSplitCommitEndInitBeginInitCodeCompileUnitUpgradeARAPDepositConfirmMessage_DownloadNotComplete_Exitget_DefaultckEdtCreateDefaultIAsyncResultset_DialogResultcolResultGetResultSetResultFormScriptResultEInvoiceCompanyResultresultToUpperInvariantTo_Authentication_FilterByAgentSystem.Data.SqlClientSmtpClientSystem.ManagementReplaceDatabaseManagementItemMeasurementReplaceBuildSQLStatementAttachmentset_VAlignmentStringAlignmentVertAlignmentset_TextAlignmentFixLocationNullIssueInConsignmentEnvironmentAutoCount.Documentget_DocumentHtmlDocumentTo_Utils_TempDocumentReplaceTempDocumentCheckInclusiveTaxDocumentIComponentAfterInitializeComponentget_TransparentConfirmMessage_CountryAndHomeCurrencyCodeDifferentget_CurrentlabelCountryRepresentConfirmCountryRepresentlabelHintAutoCount.GeneralMaintget_OpenDocNoFormatMaintmyOpenDocNoFormatMaintAutoCount.RegistryID.BonusPointReplaceBonusPointget_OnBeforePrintset_OnBeforePrintset_Fontset_UseFontBringToFrontInconsistentIPHISTCountget_CountlblRecordCountSetRecordCountTo_AutoCountReplaceDocumentPrintCountget_BankAccountInstallCurrencyWithoutGainLossAccountAutoCount.RegistryID.DefaultAccountReplaceDefaultAccountckEdtUseDefaultAccountckEdtUseMyAccountTo_Tax_MonthlyGSTTaxableAmountget_TaxAmountCalcTaxAmountSupportedScriptFormUpgradeScriptParseScriptUpgradeApplicationScriptUpdateApplicationScriptFixApplicationScriptchkIncludeSuccessScriptGetScriptFormEditScriptUpgradeReportScriptUpdateReportScriptFixReportScriptFixScriptscriptset_OverwritePromptErrorMessage_InvalidSampleChartTrimStarttrimStartInsertJsonConvertget_RemoteLicensePortBackupServerPortserverPortAutoCount.Reportget_ReportXtraReportBaseReportSaveReportShowMessage_CopyUserReportGetReportAutoCountReportFixReportAdd__reportalreadyHas__reportmyHas__reportCodeNamespaceImportInstallGLMastset_EnableApprovalInPurchaseRequestenableApprovalInPurchaseRequestget_MalaysiaCountryCodeListGetUserDatabaseListErrorMessage_InvalidSampleAccountBookListcontrolListget_ItemClassificationListToListget_MSICCodesListget_ItemMeasurementListPriceHistoryDocumentListScriptListrowListArrayListget_IPHISTExistErrorMessage_DatabaseNameExistIsOldConsignmentExistTaxBaseCurrencyCodeIsEmptyAndNewCountryCodeNotExistTaxBaseCurrencyCodeIsNotEmptyAndNewCountryCodeNotExistErrorMessage_FileNotExistQueryCurrencyExistCheckLicenseKeyExistReplaceEncodeStockCostICredentialsByHostset_CommandTimeOutset_TimeoutSuspendLayoutResumeLayoutPerformLayoutckEdtCopyReportLayoutcopyReportLayoutCode_NextMoveNextsbtnNextSystem.TextExecuteDDLTextget_Textset_Textset_CommandTextset_NullTextBooleanToTextset_DisplayTextrepositoryItemTextEdit1_CustomDisplayTextadd_CustomDisplayTextDevExpress.Utils.Menuget_Menuset_MainMenubarManager1_QueryShowPopupMenuadd_QueryShowPopupMenuSetPopupContextMenuGridViewBaseViewset_MainViewColumnViewget_OptionsViewGridOptionsViewDataRowViewget_Previewset_KeyPreviewget_Nowget_RowGetSelectedDataRowGetDataRowGetFirstDataRowget_OddRowget_FocusedRowget_SelectedRowset_UseWholeRowset_DockRowget_InRowget_EvenRowget_HideSelectionRowget_GroupRowmasterRowparentRowNewRowIWin32WindowShowAutoCount.TaxTo_AutoCount_Taxget_GSTPayableDescriptionForServiceTaxset_GSTPayableDescriptionForServiceTaxget_EnableTaxset_EnableTaxCheckInclusiveTaxAutoCount.Tax.WithholdingTaxTo_Tax_WithholdingTaxset_EnableWithholdingTaxInstallWithholdingTaxget_GSTPayableDescriptionForSalesTaxset_GSTPayableDescriptionForSalesTaxUpdatePackageDetailLocalSubTotalExTaxFillInLocalSubTotalExTaxFixLocalSubTotalExTaxget_SelectedIndexset_SelectedIndexmyActivePageIndexset_ImageIndexpageIndexget_ItemIndexset_ItemIndexset_RadioGroupIndexRegexInnerFixStartFixdocPrefixSkipPrefixPictureBoxset_MinimizeBoxset_MaximizeBoxRepositoryItemComboBoxGroupBoxUpdateAddressBoxget_Dayget_Todayget_Grayget_LightGrayToArrayReplaceSystemOptionPolicyAddMultiCurrencyAndAdvancedCurrencyRoundCurrencyChangeCurrencyradioGroupHomeCurrencySetLookUpEdit_luOtherHomeCurrencyInstallLocalCurrencyInstallCurrencyErrorMessage_ChooseSystemCurrencylblOtherCountryCurrencymyOtherCountryCurrencyset_BodyNewDEKeyErrorMessage_InvalidResetPasswordKeyShowErrorMsg_PleaseEnterALicenseKeyset_LicenseKeyShowErrorMsg_InvalidLicenseKeyFormUpgradeLicenseKeyJune1UpdateLicenseKeySubmitLicenseKeytxtLicenseKeyNewGlobalUniqueKeyContainsKeyget_AccessKeyset_AccessKeyset_PrimaryKeyConfirmMessage_NoPasswordSpecifyWarningMessage_NotAllowModifyget_AssemblyGetExecutingAssemblyShowMessage_AccountBookDetachedSuccessfullyShowMessage_DatabaseAttachedSuccessfullyShowMessage_AccountBookCreatedSuccessfullyShowMessage_AccountBookDeletedSuccessfullyShowMessage_InstallSuccessfullyset_ReadOnlyget_GSTPayableDescriptionForZeroPercentageOnlyset_GSTPayableDescriptionForZeroPercentageOnlyop_MultiplyckEdtCreateAnyUpdateCompanyErrorMessage_ChooseAccountBookToCopySystem.Runtime.Serialization.Formatters.BinaryExecuteNonQueryObjectQuerySelectQueryCreateDirectoryDevExpress.XtraGrid.RepositoryDevExpress.XtraEditors.RepositoryTo_Controls_ErrorRetryAddDoubleEntryPleaseSelectACountryget_Countryset_CountrylabelCountryCurrencyCodeToCountrycurrentCountrybtnGetLatestCountrySetLookUpEdit_luCountryErrorMessage_EmptyCountrycountryDBRegistryInstallDefaultRegistryop_Equalityop_InequalityCheckServerAvailabilityWin32UtilityHttpUtilitySystem.SecurityGetPaymentMethodEntityInstallTaxEntityTo_ActivityStream_Activityget_EmptyIsNullOrEmptyLicenseServiceProxyc{{ UDTName = {0}, MinSize = {1}, MaxSize = {2} }}Trading CompanyInternalID = ��Please make sure all the information are correct before create account book.A<br><br><b>Basic Information</b>a<br>Company Name: <color="royalblue">{0}</color>3<br><br><b>Start Date</b>u<br>Fiscal Year Start Date: <color="royalblue">{0}</color>dd/MM/yyyy��<br>Actual Start Year Start Date: <color="royalblue">{0}</color>-<br><br><b>Country</b>W<br>Country: <color="royalblue">{0}</color>c<br>Home Currency: <color="royalblue">{0}</color>%<br><br><b>Tax</b>MY��<br>Enable Sales && Service Tax (SST): <color="royalblue">{0}</color>SG��<br>Enable Goods && Service Tax (GST): <color="royalblue">{0}</color>PHTHIDVN��<br>Enable Value-Added Tax (VAT): <color="royalblue">{0}</color>]<br>Enable Tax: <color="royalblue">{0}</color>u<br>Enable Withholding Tax: <color="royalblue">{0}</color>G<br><br><b>Account Book Setting</b>o<br>Account Code Format: <color="royalblue">{0}</color>��<br>Sample Chart of Accounts (Company Type): <color="royalblue">{0}</color>u<br>Copy Chart of Accounts: <color="royalblue">{0}</color>q<br>Copy Debtor Accounts: <color="royalblue">{0}</color>u<br>Copy Creditor Accounts: <color="royalblue">{0}</color>i<br>Copy Stock Items: <color="royalblue">{0}</color><br>Copy Reports && Grid Layout: <color="royalblue">{0}</color>u<br>Copy From Company Name: <color="royalblue">{0}</color>panelControl1
sbtnOKsbtnCloselblMessagepanelControl2$thisGFormConfirmCreateAccountBookMessage)A2006NewCode.settingProject	DeptLocationItemGroupItemTypeItemCodeUOMAccNoAreaCoded_Project
d_Deptd_Locationd_ItemGroupd_ItemTyped_ItemCoded_UOMd_AccNod_AreaCode[Select max_length from sys.types where name=''SQL.A2016.SQL]EXEC sp_addtype N'd_Project', N'nvarchar (10)'_EXEC sp_addtype N'd_Project', N'nvarchar ({0})'WEXEC sp_addtype N'd_Dept', N'nvarchar (10)'YEXEC sp_addtype N'd_Dept', N'nvarchar ({0})']EXEC sp_addtype N'd_Location', N'nvarchar (8)'aEXEC sp_addtype N'd_Location', N'nvarchar ({0})'_EXEC sp_addtype N'd_ItemGroup', N'nvarchar (8)'cEXEC sp_addtype N'd_ItemGroup', N'nvarchar ({0})'_EXEC sp_addtype N'd_ItemType', N'nvarchar (12)'aEXEC sp_addtype N'd_ItemType', N'nvarchar ({0})'_EXEC sp_addtype N'd_ItemCode', N'nvarchar (30)'aEXEC sp_addtype N'd_ItemCode', N'nvarchar ({0})'SEXEC sp_addtype N'd_UOM', N'nvarchar (8)'WEXEC sp_addtype N'd_UOM', N'nvarchar ({0})'YEXEC sp_addtype N'd_AccNo', N'nvarchar (12)'[EXEC sp_addtype N'd_AccNo', N'nvarchar ({0})'_EXEC sp_addtype N'd_AreaCode', N'nvarchar (12)'aEXEC sp_addtype N'd_AreaCode', N'nvarchar ({0})'#SQL.A2016Data.SQLsaCompanyNameCountriesInJson	1.10��Select Count(*) From GSTSetting Where GSTName='UseSummarySubmittedJE'��INSERT INTO GSTSetting(GSTName, GSTValue) VALUES('UseSummarySubmittedJE', 'True')+SELECT * FROM ACCTYPEAccTypeDescriptionDesc2-SELECT * FROM CurrencyCurrencyCodeFCGainAccountFCLossAccount)SELECT * FROM GLMastInputTaxCodeOutputTaxCode'SELECT * FROM Users
UserID
ProjNo
DeptNo/SELECT * FROM UserGroupUserGroupID/DELETE FROM AccessRight1SELECT UserID FROM UsersCSELECT UserGroupID FROM UserGroup3SELECT * FROM AccessRightCmdIDSELECT * FROM AutoKey	GuidWSELECT * FROM StockSet ORDER BY StockSetKeyStockSetKeyRegID = {0}A0NewAccNoeAutoCount.ManageAccountBook.SampleChartOfAccounts.
GLMASTPaymentMethodAssetLinkStockSetRMParentAccNoOldAccNo!NewAccNo = '{0}'BankAccount#BankChargeAccountAssetAccNoAssetDeprnAccNoOpenStockCloseStockBalanceStockRegistryRegValueCurrencySymbolCurrencyWordCurrencyWord2#Quotation DefaultQT Default'Sales Order DefaultSO Default-Delivery Order DefaultDO DefaultInvoice DefaultIV Default#Cash Sale DefaultCS Default'Credit Note DefaultCN Default%Debit Note DefaultDN Default5Cancel Sales Order DefaultXS Default/Delivery Return DefaultDR Default1Consignment Note DefaultCG Default3Request Quotation DefaultRQ Default-Purchase Order DefaultPO Default7Goods Received Note DefaultGR Default1Purchase Invoice DefaultPI Default+Cash Purchase DefaultCP Default/Purchase Return DefaultPR Default;Cancel Purchase Order DefaultXP Default)Goods Return DefaultGT DefaultCSupplier Consignment Note DefaultSG Default9Stock UOM Conversion DefaultUOM Default-Stock Transfer DefaultXFER Default1Stock Adjustment DefaultADJ Default+Stock Receive DefaultSR Default'Stock Issue DefaultSI Default/Stock Write-Off DefaultWOFF Default-Stock Assembly DefaultASM Default'Update Cost DefaultUCost Default/Payment Voucher DefaultPV Default/Receipt Voucher DefaultRV Default/Journal Voucher DefaultJV Default3SELECT * FROM DocNoFormat	NameNextNumberKSELECT * FROM DocNoFormatYearlyNumber	Year7SELECT * FROM PaymentMethod#PaymentFormatName#ReceiptFormatNameASET IDENTITY_INSERT TaxEntity ON/SELECT * FROM TaxEntityTaxEntityID��INSERT INTO TaxEntity (TaxEntityID, Name, IdentityNo, FullTIN, TIN, TaxBranchID, Address, PostCode, Phone, EmailAddress, TaxCategory, TaxClassification, TradeName, GSTRegisterNo, SSTRegisterNo, TourismTaxRegisterNo, BusinessActivityDesc, MSICCode, City, StateCode, CountryCode, IdentityType, Guid) VALUES (@TaxEntityID, @Name, @IdentityNo, @FullTIN, @TIN, @TaxBranchID, @Address, @PostCode, @Phone, @EmailAddress, @TaxCategory, @TaxClassification, @TradeName, @GSTRegisterNo, @SSTRegisterNo, @TourismTaxRegisterNo, @BusinessActivityDesc, @MSICCode, @City, @StateCode, @CountryCode, @IdentityType, @Guid)@TaxEntityID@Name@IdentityNoIdentityNo@FullTINFullTIN	@TINTIN@TaxBranchIDTaxBranchID@AddressAddress@PostCodePostCode
@PhonePhone@EmailAddressEmailAddress@TaxCategoryTaxCategory%@TaxClassification#TaxClassification@TradeNameTradeName@GSTRegisterNoGSTRegisterNo@SSTRegisterNoSSTRegisterNo+@TourismTaxRegisterNo)TourismTaxRegisterNo+@BusinessActivityDesc)BusinessActivityDesc@MSICCodeMSICCode@City	City@StateCodeStateCode@CountryCodeCountryCode@IdentityTypeIdentityType@GuidCSET IDENTITY_INSERT TaxEntity OFF+SELECT * FROM TaxCodeTaxCodeTaxAccNoInputTaxAccNoIsDefault3SELECT * FROM LayoutUsersTitle9SELECT * FROM WithholdingTax%WithholdingTaxCode��select count(*) from dbo.sysobjects where id = object_id(N'[dbo].[Tariff]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)SELECT * FROM GLMAST��SELECT * FROM GLMAST WHERE AccNo NOT IN (SELECT AccNo FROM DEBTOR UNION ALL SELECT AccNo FROM CREDITOR)��SELECT * FROM GLMAST WHERE AccNo NOT IN (SELECT AccNo FROM DEBTOR)��SELECT * FROM GLMAST WHERE AccNo NOT IN (SELECT AccNo FROM CREDITOR)DocNoFormat/DocNoFormatYearlyNumber+SELECT * FROM JournalJournal/SELECT * FROM AssetLink-SELECT * FROM StockSet%SELECT * FROM Area	Area'SELECT * FROM TermsTermsCurrency7SELECT * FROM PriceCategoryPriceCategoryUsersUserGroup��SELECT * FROM UsersGroup WHERE UserID<>'ADMIN' AND UserGroupID<>'ADMINS'UsersGroup;SELECT * FROM UsersSalesAgentUsersSalesAgentASELECT * FROM UsersPurchaseAgent%UsersPurchaseAgentAccessRightWithholdingTax)SELECT * FROM Tariff
Tariff)SELECT * FROM DEBTOR
Debtor�9SELECT * FROM TaxEntity WHERE TaxEntityID IN (Select TaxEntityID From Debtor UNION Select TaxEntityID From Branch WHERE AccNo IN (Select AccNo From Debtor))TaxEntity1SELECT * FROM SalesAgentSalesAgent1SELECT * FROM DebtorTypeDebtorType}SELECT * FROM Branch WHERE AccNo IN (SELECT AccNo FROM DEBTOR)
BranchSELECT * FROM Contact WHERE AccNo IN (SELECT AccNo FROM DEBTOR)Contact
DEBTOR-SELECT * FROM CREDITORCreditorInclusiveTax�ASELECT * FROM TaxEntity WHERE TaxEntityID IN (Select TaxEntityID From Creditor UNION Select TaxEntityID From Branch WHERE AccNo IN (Select AccNo From Creditor))7SELECT * FROM PurchaseAgentPurchaseAgent5SELECT * FROM CreditorTypeCreditorType��SELECT * FROM Branch WHERE AccNo IN (SELECT AccNo FROM CREDITOR)��SELECT * FROM Contact WHERE AccNo IN (SELECT AccNo FROM CREDITOR)
DocKey	ItemItemPriceKeyItemPrice%SELECT * FROM ITEM+SELECT * FROM ItemUOMItemUOM+SELECT * FROM ItemBOMItemBOM/SELECT * FROM ItemPrice/SELECT * FROM ItemGroupSalesCodeCashSalesCodeSalesReturnCode#SalesDiscountCode)PurchaseDiscountCodePurchaseCode!CashPurchaseCode%PurchaseReturnCode!BalanceStockCode-SELECT * FROM ItemType/SELECT * FROM ItemBrandItemBrand5SELECT * FROM ItemCategoryItemCategory/SELECT * FROM ItemClassItemClass;SELECT * FROM ItemReplacementItemReplacement)SELECT * FROM Report
Report)SELECT * FROM Layout
LayoutLayoutUsers
2.2.90ReportNameReportTemplateDatabaseNameSystem.String
RemarkRemarkColorSystem.Int32DatabaseVersion/AutoCount 2006 Database2.0iSELECT CompanyName, Remark, RemarkColor FROM Profile'Attach_Account_Book/oCt2005-ShenZhou6_A2006iSELECT CompanyName, Remark, RemarkColor FROM PROFILEsbtnCancel
label3#edtServerPassword
label2
label1lblGuide!sbtnGetDatabasessbtnGetServersedtServerNameedtDatabaseName-ckEdtUseDefaultAccountSckEdtUseDefaultAccount.Properties.Caption%sbtnAttachDatabase#edtServerUserName
label6#ckEdtUseMyAccountIckEdtUseMyAccount.Properties.Caption
label5labelNoteDetail+FormAttachAccountBook3Account_Book_and_DatabaseOSQL 2000 Data Files|*.mdf|All files|*.*_Log.ldf	.ldfMSQL 2000 Log Files|*.ldf|All files|*.*_DATAedtDataFileedtLogFilesbtnBrowsesimpleButton1/ckEdtUseDefaultPasswordUckEdtUseDefaultPassword.Properties.Caption
label4edtSAPasswordlabelHint)ckEdtPhysicalLogFileOckEdtPhysicalLogFile.Properties.Caption%FormAttachDatabaseUSDCNYEURJPYForAcademicms-MYPerdagangan'Create_Account_Book-ServerLocation.setting	Date!dd/MM/yyyy, ddddAUMoreCountriesUSAAA-AAAAInternalIDCompany NameVersionServerName
ServerDatabase Name(localdb)\A2006(local)\A2006(local).'For Seamless FilingLA0/-(){}{0} ({1} , {2})	AED_sSpecify whether you want to apply SST or Withholding Tax.CEnable Sales && Service Tax (SST)sSpecify whether you want to apply GST or Withholding Tax.CEnable Goods && Service Tax (GST)sSpecify whether you want to apply VAT or Withholding Tax.9Enable Value-Added Tax (VAT)sSpecify whether you want to apply Tax or Withholding Tax.Enable TaxGSELECT CountriesInJson FROM profile-SELECT * FROM CURRENCYBankBuyRateBankSellRateLastUpdate#Trading-ms-MY.datTrading.datSGTrading.dat+Manufacturing Company#Manufacturing.dat'SGManufacturing.dat'Partnership CompanyPartnership.dat#SGPartnership.dat/Training Center CompanyTraining.dat)SGTrainingCenter.dat+Travel Agency CompanyTravel.dat%SGTravelAgency.dat)Construction Company!Construction.dat%SGConstruction.dat)SGSeamlessFiling.dat��UPDATE [Terms] SET DisplayTerm = 'Net 30 hari' WHERE DisplayTerm = 'Net 30 days'��UPDATE [Terms] SET DisplayTerm = 'Net 45 hari' WHERE DisplayTerm = 'Net 45 days'��UPDATE [Terms] SET DisplayTerm = 'Net 60 hari' WHERE DisplayTerm = 'Net 60 days'��UPDATE [Terms] SET DisplayTerm = 'Net 90 hari' WHERE DisplayTerm = 'Net 90 days')DELETE FROM [CNType]��INSERT INTO [CNType] (CNType, Description, IsActive, LastUpdate) VALUES ('PULANGAN', 'PULANGAN BARANG', 'T', 0)��INSERT INTO [CNType] (CNType, Description, IsActive, LastUpdate) VALUES ('DISKAUN', 'DISKAUN', 'T', 0)+DELETE FROM [Journal]��INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('BANK', '0', 'Jurnal Bank')��INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('TUNAI', '0', 'Jurnal Tunai')��INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('AM', '1', 'Jurnal Am')��INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('JUALAN', '2', 'Jurnal Jualan')��INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('PUL JUALAN', '2', 'Jurnal Pulangan Jualan')��INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('BELIAN', '3', 'Jurnal Belian')��INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('AM A/P', '3', 'Jurnal Am A/P')��INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('PUL BELIAN', '3', 'Jurnal Pulangan Belian')��UPDATE [AutoPrice] SET Name='Guna harga terakhir Invois/Jualan Tunai' WHERE AutoPriceType='LastIV'��UPDATE [AutoPrice] SET Name='Guna harga terakhir Pesanan Jualan' WHERE AutoPriceType='LastSO'��UPDATE [AutoPrice] SET Name='Guna harga terakhir Sebutharga' WHERE AutoPriceType='LastQT'��UPDATE [AutoPrice] SET Name='Guna harga terakhir Invois Belian/Belian Tunai' WHERE AutoPriceType='LastPI'��UPDATE [AutoPrice] SET Name='Guna harga terakhir Pesanan Belian' WHERE AutoPriceType='LastPO'��UPDATE [AutoPrice] SET Name='Guna buku harga' WHERE AutoPriceType='PriceBook'��UPDATE [AutoPrice] SET Name='Guna multi harga' WHERE AutoPriceType='MultiPrice'��UPDATE [RemarkName] SET Remark1Name='Catatan 1', Remark2Name='Catatan 2', Remark3Name='Catatan 3', Remark4Name='Catatan 4'2.1.4panelMain%panelMain.ShowHelpwzPage1!wzPage1.ShowHelp5edtServerUserName.ShowHelplabelUsername-labelUsername.ShowHelp5ckEdtUseMyAccount.ShowHelp%sbtnTestConnection7sbtnTestConnection.ShowHelpGpanelControl4.Appearance.BackColor2KpanelControl4.Appearance.GradientModepanelControl4-panelControl4.ShowHelplabel27!label27.ShowHelp%ckEdtCreateDefaultKckEdtCreateDefault.Properties.Caption7ckEdtCreateDefault.ShowHelpckEdtCreateAnyCckEdtCreateAny.Properties.Caption/ckEdtCreateAny.ShowHelplabelServerName1labelServerName.ShowHelp/sbtnGetServers.ShowHelp5edtServerPassword.ShowHelplabelPassword-labelPassword.ShowHelp-edtServerName.ShowHelp'labelStandaloneNote9labelStandaloneNote.ShowHelp
label8label8.ShowHelp?ckEdtUseDefaultAccount.ShowHelpwzPage3!wzPage3.ShowHelp/edtWithholdingTaxOptionUedtWithholdingTaxOption.Properties.ButtonsluMoreCountriesEluMoreCountries.Properties.Buttons1luMoreCountries.ShowHelpckEdtUseWHT=ckEdtUseWHT.Properties.Caption)ckEdtUseWHT.ShowHelp'btnGetLatestCountry/lblOtherCountryCurrencyAlblOtherCountryCurrency.ShowHelp'luOtherHomeCurrencyMluOtherHomeCurrency.Properties.Buttons9luOtherHomeCurrency.ShowHelp
label9label9.ShowHelp-radioGroupHomeCurrencyOradioGroupHomeCurrency.Properties.ItemsQradioGroupHomeCurrency.Properties.Items1QradioGroupHomeCurrency.Properties.Items2QradioGroupHomeCurrency.Properties.Items3QradioGroupHomeCurrency.Properties.Items4QradioGroupHomeCurrency.Properties.Items5QradioGroupHomeCurrency.Properties.Items6QradioGroupHomeCurrency.Properties.Items7QradioGroupHomeCurrency.Properties.Items8QradioGroupHomeCurrency.Properties.Items9label6.ShowHelpluCountry9luCountry.Properties.Buttons%luCountry.ShowHelplabelCountry+labelCountry.ShowHelpGpanelControl3.Appearance.BackColor2KpanelControl3.Appearance.GradientModepanelControl3-panelControl3.ShowHelplabel23!label23.ShowHelplblTaxDesc'lblTaxDesc.ShowHelplabel12!label12.ShowHelpGlabelActualDataStartDateDescriptionYlabelActualDataStartDateDescription.ShowHelp+edtTaxCodeDisplayName=edtTaxCodeDisplayName.ShowHelplabel21!label21.ShowHelpckEdtUseTaxCodeEckEdtUseTaxCode.Properties.Caption1ckEdtUseTaxCode.ShowHelplabel20!label20.ShowHelp-edtActualDataStartDateSedtActualDataStartDate.Properties.Buttons��edtActualDataStartDate.Properties.CalendarTimeProperties.Buttons?edtActualDataStartDate.ShowHelplabel17!label17.ShowHelp-edtFiscalYearStartDateSedtFiscalYearStartDate.Properties.Buttons��edtFiscalYearStartDate.Properties.CalendarTimeProperties.Buttons?edtFiscalYearStartDate.ShowHelplabel11!label11.ShowHelplabel13!label13.ShowHelplabel15!label15.ShowHelplabel16!label16.ShowHelpwzPage5!wzPage5.ShowHelp+ckEdtBlankAccountBookQckEdtBlankAccountBook.Properties.Caption=ckEdtBlankAccountBook.ShowHelp5grpBxCopyMasterDataOptionsGgrpBxCopyMasterDataOptions.ShowHelp1ckEdtCopyChartOfAccountsWckEdtCopyChartOfAccounts.Properties.CaptionCckEdtCopyChartOfAccounts.ShowHelp/ckEdtCopyDebtorAccountsUckEdtCopyDebtorAccounts.Properties.CaptionAckEdtCopyDebtorAccounts.ShowHelp3ckEdtCopyCreditorAccountsYckEdtCopyCreditorAccounts.Properties.CaptionEckEdtCopyCreditorAccounts.ShowHelp+ckEdtCopyReportLayoutQckEdtCopyReportLayout.Properties.Caption=ckEdtCopyReportLayout.ShowHelp'ckEdtCopyStockItemsMckEdtCopyStockItems.Properties.Caption9ckEdtCopyStockItems.ShowHelplabel29!label29.ShowHelp1luEdtCopyFromAccountBookWluEdtCopyFromAccountBook.Properties.ButtonsCluEdtCopyFromAccountBook.ShowHelp'ckEdtCopyMasterDataMckEdtCopyMasterData.Properties.Caption9ckEdtCopyMasterData.ShowHelp/comboBoxEditCompanyTypeUcomboBoxEditCompanyType.Properties.ButtonsQcomboBoxEditCompanyType.Properties.ItemsScomboBoxEditCompanyType.Properties.Items1ScomboBoxEditCompanyType.Properties.Items2ScomboBoxEditCompanyType.Properties.Items3ScomboBoxEditCompanyType.Properties.Items4ScomboBoxEditCompanyType.Properties.Items5AcomboBoxEditCompanyType.ShowHelp5labelFreeFormatDescriptionGlabelFreeFormatDescription.ShowHelpAckEdtCreateSampleChartOfAccountsgckEdtCreateSampleChartOfAccounts.Properties.CaptionSckEdtCreateSampleChartOfAccounts.ShowHelplabel34!label34.ShowHelppictureBox1)pictureBox1.ShowHelp%edtAccountNoFormat7edtAccountNoFormat.ShowHelplabel33!label33.ShowHelpGpanelControl5.Appearance.BackColor2KpanelControl5.Appearance.GradientModepanelControl5-panelControl5.ShowHelplabel30!label30.ShowHelplabel32!label32.ShowHelpwzPage4!wzPage4.ShowHelpAlabelInvoicingPackageDescriptionSlabelInvoicingPackageDescription.ShowHelp!ckEdtMPInvoicingGckEdtMPInvoicing.Properties.Caption3ckEdtMPInvoicing.ShowHelpGlabelStockControlPackageDescriptionYlabelStockControlPackageDescription.ShowHelp'ckEdtMPStockControlMckEdtMPStockControl.Properties.Caption9ckEdtMPStockControl.ShowHelpGpanelControl1.Appearance.BackColor2KpanelControl1.Appearance.GradientMode-panelControl1.ShowHelplblHintDesc)lblHintDesc.ShowHelpClabelAccountingPackageDescriptionUlabelAccountingPackageDescription.ShowHelp#ckEdtMPAccountingIckEdtMPAccounting.Properties.Caption5ckEdtMPAccounting.ShowHelplabel35!label35.ShowHelpwzPage2!wzPage2.ShowHelp1ckEdtSystemRecommendPathWckEdtSystemRecommendPath.Properties.CaptiongroupBox1%groupBox1.ShowHelp!lblSqlConnection3lblSqlConnection.ShowHelp-lblAutoCountServerNote?lblAutoCountServerNote.ShowHelp7lblAutoCountServerAvailableIlblAutoCountServerAvailable.ShowHelpGpanelControl2.Appearance.BackColor2KpanelControl2.Appearance.GradientMode-panelControl2.ShowHelplabel14!label14.ShowHelp#edtDatabaseFolder5edtDatabaseFolder.ShowHelplabel19!label19.ShowHelp1edtDatabaseName.ShowHelplabel22!label22.ShowHelpedtCompanyName/edtCompanyName.ShowHelplabel25!label25.ShowHelplabel26!label26.ShowHelppanelBottom)panelBottom.ShowHelpsbtnNext#sbtnNext.ShowHelpsbtnPrevious+sbtnPrevious.ShowHelp'sbtnCancel.ShowHelp#$this.HelpKeyword'$this.HelpNavigator7FormCreateAccountBookWizard$this.ShowHelpVAT {0}%#Edit_Account_BookmSELECT CompanyName, Remark, RemarkColor FROM [PROFILE]'FormEditAccountBook'Manage_Account_Book1SYS_MANAGEACCBOOK_CREATE1SYS_MANAGEACCBOOK_ATTACHADMIN1.0.9.833-SYS_MANAGEACCBOOK_EDITu{0} Account Book Control Files (*.dmf)|*.dmf|All Files|*.*AutoCount 2006a2006.dmfSAPasswordexplorer.exegcAccountBookegridView1.Appearance.ColumnFilterButton.BackColor2qgridView1.Appearance.ColumnFilterButtonActive.BackColor2OgridView1.Appearance.EvenRow.BackColor2SgridView1.Appearance.EvenRow.GradientModecgridView1.Appearance.FilterCloseButton.BackColor2ggridView1.Appearance.FilterCloseButton.GradientModeWgridView1.Appearance.FilterPanel.BackColor2UgridView1.Appearance.FocusedRow.BackColor2UgridView1.Appearance.GroupPanel.BackColor2IgridView1.Appearance.GroupPanel.FontKgridView1.Appearance.HeaderPanel.FontMgridView1.Appearance.OddRow.BackColor2QgridView1.Appearance.OddRow.GradientModeOgridView1.Appearance.Preview.BackColor2YgridView1.Appearance.RowSeparator.BackColor2gridView1colCompanyNamecolRemark%colDatabaseVersioncolIsRegisteredIsRegistered/repositoryItemTextEdit1colServerNamecolDatabaseNameCustom 3	bar2barSubItem19barBtnShowCurrentDMFFullPath5barBtnOpenCurrentDMFFolderbarBtnOpenDMFbarBtnSaveDMF=barBtnInstallSampleAccountBook#barDockControlTop)barDockControlBottom%barDockControlLeft'barDockControlRightbarBtnSyncAll+sbtnCreateAccountBook+sbtnDeleteAccountBook+sbtnAttachAccountBook+sbtnDetachAccountBook'sbtnEditAccountBook#sbtnSetMainServerlblMainServerpopupMenu1+FormManageAccountBookw{0} Main Database Setting Files (*.ads)|*.ads|All Files|*.*sbtnSavesbtnLoad#FormSetMainServeraAutoCount.ManageAccountBook.Properties.ResourcesServer type:  not supported.DRProcessingKIVDRProcessingDO
DRPKeySODtlKeySODocKeyDODocKeyDODocNoDODtlKeyDeliveryQtyDeliveryUOMDeliveryRateCreatedUserID!CreatedTimeStampLastModified%LastModifiedUserIDIsAllowOPEditFT7SELECT * FROM DRProcessing ;SELECT * FROM DRProcessingDO ��ALTER TABLE DRProcessing DROP COLUMN DODocKey, DODocNo, DODtlKey, KIV
Europe1This Account Book uses (��) as System Currency, you are require to choose a country to represent it as �� is not a country. Please choose one from below to represent the System Currency ().-Country To Represent (	) : W(Note : The Country selected to represent (��) will become your Country and you are not able to change it again later on. Please choose it carefully.)?labelCurrentTaxBaseCurrencyCode+labelCountryRepresentmyOKButtonmyCancelButton/labelCountrySettingMssg/labelSystemCurrencyCodeCFormSetCountryForEuroCurrencyUser7labelNewTaxBaseCurrencyCode1labelTaxBaseCurrencyCode!labelSpecialMssg9FormUpgradeToCountrySettings
using ;Imports TaxTypeTaxtypeTaxcodetaxTypetaxCodetaxtypetaxcodeTAXTYPETAXCODE;using\s+(?<namespace>[\w.]+);=Imports\s+(?<namespace>[\w.]+)namespaceAusing\s+(?<namespace>[\w.]+);\s*CImports\s+(?<namespace>[\w.]+)\s*oThe report script language of JScript is not supported.y\s*private\s+(BCE\.|)AutoCount.Report.BaseReport\s+__report;[private AutoCount.Report.BaseReport __report;	Text_SELECT CompanyName, Remark FROM vCompanyProfileUpgrade LogsKCheck Inclusive Tax of {0} at {1}.log'yyyy-MM-dd HH-mm-ssaSELECT COUNT(*) FROM TaxType WHERE Inclusive='T'CBCash Book EntryJEJournal EntryARInvoiceA/R Invoice	ARCNA/R Credit Note	ARDNA/R Debit NoteAPInvoiceA/P Invoice	APCNA/P Credit Note	APDNA/P Debit NoteQTQuotationSOSales OrderDODelivery OrderIVSales InvoiceCSCash SaleCNCredit NoteDNDebit NoteXSCancel S/ODRDelivery ReturnRQ#Request QuotationPOPurchase OrderGR'Goods Received NotePI!Purchase InvoiceCPCash PurchasePRPurchase ReturnXPCancel P/OGTGoods Return�qif not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Pos]') and name = N'InclusiveTax') ALTER TABLE [dbo].[Pos] ADD [InclusiveTax] [d_Boolean] NOT NULL DEFAULT 'F'Pos�]UPDATE {0} SET InclusiveTax='T' WHERE DocKey IN (SELECT A.DocKey FROM (SELECT DISTINCT DocKey FROM {0}DTL WHERE TaxType IN (SELECT TaxType FROM TaxType WHERE Inclusive='T')) A WHERE A.DocKey NOT IN (SELECT DISTINCT DocKey FROM {0}DTL WHERE TaxType IN (SELECT TaxType FROM TaxType WHERE Inclusive='F')))�cSELECT DocKey, DocNo FROM {0} WHERE DocKey IN (SELECT A.DocKey FROM (SELECT DISTINCT DocKey FROM {0}DTL WHERE TaxType IN (SELECT TaxType FROM TaxType WHERE Inclusive='T')) A, (SELECT DISTINCT DocKey FROM {0}DTL WHERE TaxType IN (SELECT TaxType FROM TaxType WHERE Inclusive='F')) B WHERE A.DocKey=B.DocKey)DocNo��SELECT A.{1}, B.Inclusive FROM {0}DTL A LEFT OUTER JOIN TaxType B ON (A.TaxType=B.TaxType) WHERE A.DocKey=? ORDER BY A.SeqInclusiveExclusiveScript{0}yyyyMMddtxtPasswordlabelControl1+FormGetScriptPassword7developer@autocountsoft.comResultDisplay
ResultSuccess	FailResult='F'Crelease_builder@autocountsoft.comOSELECT CompanyName, Remark FROM ProfileiApplication Script Error Report in ver 1.8.8 for {0}�Company Name : {0}

Remark : {1}

Product ID : {2}

Server Name : {3}

Database Name : {4}

Contact Person : {5}

Contact Number : {6}



EUpgrade App Script Log for {0}\{1}'yyyy-MM-dd-HH-mm-ssScriptNameQScript Name : {0} ({1}) (Result : {2})

ScriptDescKUpgrade Report Script Log for {0}\{1}EReport Name : {0} (Result : {1})

S

Please refer to the attachment files.

-mail.autocountsoft.com!ADbuilder@751600{0}.art+AutoCount.UserScripts
SystemSystem.Data%System.Collections	Temp�;// --------------- Original Script starts here -------------------------



{0}



// --------------- Original Script ends here -------------------------



�7' --------------- Original Script starts here -------------------------



{0}



' --------------- Original Script ends here -------------------------



�I{0}// --------------- Error message starts here -------------------------



/*

{1}

*/



// --------------- Error message ends here -------------------------





'�7{0}' --------------- Error message starts here -------------------------



'{1}



' --------------- Error message ends here -------------------------




{0}.cs{0}.vb.logusingLanguage#kslim@tmcs.com.my#chea@ingenious.sg'tickseng@my-ias.companelHeader1labelControl5lblGPISEmailYlblGPISEmail.Properties.Appearance.BackColor#lblIngeniousEmailclblIngeniousEmail.Properties.Appearance.BackColorlblTMCSEmailYlblTMCSEmail.Properties.Appearance.BackColor#lblAutoCountEmailclblAutoCountEmail.Properties.Appearance.BackColor;labelControl4.Appearance.FontlabelControl4/chkIncludeSuccessScriptUchkIncludeSuccessScript.Properties.Caption!txtContactPersonlabelControl3txtContactNolabelControl2sbtnSendtxtToEmailgridControl1colNamecolScriptDesccolResultcolLanguagecolSourceCode3repositoryItemButtonEdit1xtraTabControl1xtraTabPage1xtraTabPage2gridControl2gridView2gridColumn1gridColumn2ReportTypegridColumn3gridColumn53repositoryItemButtonEdit2!FormScriptResult1.0.9.701.9.0.09MOBILE PHONE TRADING SDN BHD%B3-9-2, 2ND Floor,/10001000-7611-6028-5874OKEV1-TQ0W-1E7M-DLBX-6YHR-8KML-VQMK-65H4txtLicenseKeyMtxtLicenseKey.Properties.Mask.EditMaskMtxtLicenseKey.Properties.Mask.MaskTypeCtxtLicenseKey.Properties.NullText+FormUpgradeLicenseKey1.0.9.452.1.3
2.2.49��Select ScriptName, '' AS ScriptDesc, 'T' AS Result, '' AS Language From UserScript5Upgrade Application ScriptqSelect ReportName, ReportType, 'T' AS Result From Report��select count(*) from dbo.syscolumns where id = object_id(N'[dbo].[Report]') and name = N'Guid'5Upgrade User Report Script{0}/{1}lblActionlblRecordCount'progressBarControl1#FormUpgradeScript�	http://member.autocountsoft.com/download.aspx?filename=downloads/partner_space/accounting/1.8/User%20Report%20Conversion%20Setup.exeokButton-hylinkEditDownloadLinkmhylinkEditDownloadLink.Properties.Appearance.BackColor7FormUserReportConverterLink1.0.0.01OldSQL.A2006-1.0.1.0.SQL1.0.1.01OldSQL.A2006-1.0.2.0.SQL1.0.2.01OldSQL.A2006-1.0.3.0.SQL1.0.3.01OldSQL.A2006-1.0.4.0.SQL1.0.4.01OldSQL.A2006-1.0.5.0.SQL1.0.5.01OldSQL.A2006-1.0.6.0.SQL1.0.6.01OldSQL.A2006-1.0.7.0.SQL1.0.7.01OldSQL.A2006-1.0.8.0.SQL1.0.8.01OldSQL.A2006-1.0.8.1.SQL1.0.8.11OldSQL.A2006-1.0.8.2.SQL1.0.8.21OldSQL.A2006-1.0.8.3.SQL1.0.8.31OldSQL.A2006-1.0.8.4.SQL1.0.8.41OldSQL.A2006-1.0.8.5.SQL1.0.8.51OldSQL.A2006-1.0.8.6.SQL1.0.8.61OldSQL.A2006-1.0.8.7.SQL1.0.8.71OldSQL.A2006-1.0.8.8.SQL1.0.8.81OldSQL.A2006-1.0.8.9.SQL1.0.8.93OldSQL.A2006-1.0.8.10.SQL1.0.8.103OldSQL.A2006-1.0.8.11.SQL1.0.8.113OldSQL.A2006-1.0.8.12.SQL1.0.8.123OldSQL.A2006-1.0.8.13.SQL1.0.8.133OldSQL.A2006-1.0.8.14.SQL1.0.8.143OldSQL.A2006-1.0.8.15.SQL1.0.8.153OldSQL.A2006-1.0.8.16.SQL1.0.8.163OldSQL.A2006-1.0.8.17.SQL1.0.8.173OldSQL.A2006-1.0.8.18.SQL1.0.8.183OldSQL.A2006-1.0.8.19.SQL1.0.8.193OldSQL.A2006-1.0.8.20.SQL1.0.8.203OldSQL.A2006-1.0.8.21.SQL1.0.8.213OldSQL.A2006-1.0.8.22.SQL1.0.8.223OldSQL.A2006-1.0.8.23.SQL1.0.8.233OldSQL.A2006-1.0.8.24.SQL1.0.8.243OldSQL.A2006-1.0.8.25.SQL1.0.8.253OldSQL.A2006-1.0.8.26.SQL1.0.8.263OldSQL.A2006-1.0.8.27.SQL1.0.8.273OldSQL.A2006-1.0.8.28.SQL1.0.8.283OldSQL.A2006-1.0.8.29.SQL1.0.8.293OldSQL.A2006-1.0.8.30.SQL1.0.8.303OldSQL.A2006-1.0.8.31.SQL1.0.8.313OldSQL.A2006-1.0.8.32.SQL1.0.8.323OldSQL.A2006-1.0.8.33.SQL1.0.8.333OldSQL.A2006-1.0.8.34.SQL1.0.8.343OldSQL.A2006-1.0.8.35.SQL1.0.8.35YSELECT COUNT(*) FROM DocNoFormatYearlyNumber��INSERT INTO [dbo].[DocNoFormatYearlyNumber] ([Name], [Year], M1NextNumber, M2NextNumber, M3NextNumber, M4NextNumber, M5NextNumber, M6NextNumber, M7NextNumber, M8NextNumber, M9NextNumber, M10NextNumber, M11NextNumber, M12NextNumber) SELECT [Name], 2007, M1NextNumber, M2NextNumber, M3NextNumber, M4NextNumber, M5NextNumber, M6NextNumber, M7NextNumber, M8NextNumber, M9NextNumber, M10NextNumber, M11NextNumber, M12NextNumber FROM [dbo].[DocNoFormatYearlyNumber]3OldSQL.A2006-1.0.8.36.SQL1.0.8.363OldSQL.A2006-1.0.8.37.SQL1.0.8.373OldSQL.A2006-1.0.8.38.SQL1.0.8.383OldSQL.A2006-1.0.8.39.SQL1.0.8.391.0.8.401.0.8.411.0.8.421.0.8.431OldSQL.A2006-1.0.9.0.SQL1.0.9.01OldSQL.A2006-1.0.9.1.SQL1.0.9.11OldSQL.A2006-1.0.9.2.SQL1.0.9.21OldSQL.A2006-1.0.9.3.SQL1.0.9.31OldSQL.A2006-1.0.9.4.SQL1.0.9.41OldSQL.A2006-1.0.9.5.SQL1.0.9.51OldSQL.A2006-1.0.9.6.SQL1.0.9.61OldSQL.A2006-1.0.9.7.SQL1.0.9.71OldSQL.A2006-1.0.9.8.SQL1.0.9.81OldSQL.A2006-1.0.9.9.SQL1.0.9.93OldSQL.A2006-1.0.9.10.SQL1.0.9.103OldSQL.A2006-1.0.9.11.SQL1.0.9.113OldSQL.A2006-1.0.9.12.SQL1.0.9.123OldSQL.A2006-1.0.9.13.SQL1.0.9.133OldSQL.A2006-1.0.9.14.SQL1.0.9.143OldSQL.A2006-1.0.9.15.SQL1.0.9.153OldSQL.A2006-1.0.9.16.SQL1.0.9.163OldSQL.A2006-1.0.9.17.SQL1.0.9.173OldSQL.A2006-1.0.9.18.SQL1.0.9.18sUPDATE REGISTRY SET RegValue = '1.0.9.19' WHERE RegID = 21.0.9.193OldSQL.A2006-1.0.9.20.SQL1.0.9.203OldSQL.A2006-1.0.9.21.SQL1.0.9.213OldSQL.A2006-1.0.9.22.SQL1.0.9.223OldSQL.A2006-1.0.9.23.SQL1.0.9.233OldSQL.A2006-1.0.9.24.SQL1.0.9.243OldSQL.A2006-1.0.9.25.SQL1.0.9.253OldSQL.A2006-1.0.9.26.SQL1.0.9.263OldSQL.A2006-1.0.9.27.SQL1.0.9.273OldSQL.A2006-1.0.9.28.SQL1.0.9.283OldSQL.A2006-1.0.9.29.SQL1.0.9.293OldSQL.A2006-1.0.9.30.SQLGOldSQL.A2006-1.0.9.30.DropTable.SQL1.0.9.303OldSQL.A2006-1.0.9.31.SQL1.0.9.313OldSQL.A2006-1.0.9.32.SQL1.0.9.323OldSQL.A2006-1.0.9.33.SQL1.0.9.333OldSQL.A2006-1.0.9.34.SQL1.0.9.343OldSQL.A2006-1.0.9.35.SQL1.0.9.353OldSQL.A2006-1.0.9.36.SQL1.0.9.363OldSQL.A2006-1.0.9.37.SQL1.0.9.373OldSQL.A2006-1.0.9.38.SQL1.0.9.383OldSQL.A2006-1.0.9.39.SQL1.0.9.393OldSQL.A2006-1.0.9.40.SQL1.0.9.403OldSQL.A2006-1.0.9.41.SQL��SELECT COUNT(*) FROM sys.indexes WHERE name = 'IX_CB_SourceKey' AND object_id = OBJECT_ID('CB')UDROP INDEX [IX_CB_SourceKey] ON [dbo].[CB]��SELECT COUNT(*) FROM sys.indexes WHERE name = 'IX_GLDTL_SourceKey' AND object_id = OBJECT_ID('GLDTL')aDROP INDEX [IX_GLDTL_SourceKey] ON [dbo].[GLDTL]1.0.9.413OldSQL.A2006-1.0.9.42.SQL1.0.9.423OldSQL.A2006-1.0.9.43.SQL1.0.9.433OldSQL.A2006-1.0.9.44.SQLoSELECT Value FROM PosOption WHERE ID = 'MemberNoFormat'kSELECT Value FROM PosOption WHERE ID = 'NextMemberNo'1.0.9.443OldSQL.A2006-1.0.9.45.SQLQSelect count(*) from PlugIn where Guid=?I752518F4-77D2-4E7A-87DD-6A255AF9C74DKSelect name from PlugIn where Guid<>?, 	name3OldSQL.A2006-1.0.9.46.SQL1.0.9.463OldSQL.A2006-1.0.9.47.SQL1.0.9.473OldSQL.A2006-1.0.9.48.SQL�Qif not exists (select * from GSTSetting where GSTName='UseCancelledDocForBadDebt') INSERT INTO GSTSetting(GSTName, GSTValue) VALUES('UseCancelledDocForBadDebt', 'True')5SELECT * FROM GSTProcessorTaxDataReportDO21DaysMasterDO21DaysDetailDO21DaysGSTDOMasterGSTDODetailGSTDO+ReverseDO21DaysMaster+ReverseDO21DaysDetailReverseDO21Days%ReverseGSTDOMaster%ReverseGSTDODetailReverseGSTDO1.0.9.483OldSQL.A2006-1.0.9.49.SQL1.0.9.493OldSQL.A2006-1.0.9.50.SQL1.0.9.503OldSQL.A2006-1.0.9.51.SQL1.0.9.513OldSQL.A2006-1.0.9.52.SQL1.0.9.523OldSQL.A2006-1.0.9.53.SQL1.0.9.533OldSQL.A2006-1.0.9.54.SQLMSELECT MIN(FromDate) FROM GSTProcessorISELECT MAX(ToDate) FROM GSTProcessor	Lock1.0.9.543OldSQL.A2006-1.0.9.55.SQLQSELECT AccNo, RoundingMethod FROM DebtorRoundingMethodUSELECT AccNo, RoundingMethod FROM Creditor1.0.9.553OldSQL.A2006-1.0.9.56.SQL1.0.9.563OldSQL.A2006-1.0.9.57.SQL1.0.9.573OldSQL.A2006-1.0.9.58.SQL1.0.9.583OldSQL.A2006-1.0.9.59.SQL1.0.9.593OldSQL.A2006-1.0.9.60.SQL1.0.9.60SOldSQL.A2006-1.0.9.61.ChangePETaxCode.SQL3OldSQL.A2006-1.0.9.61.SQL1.0.9.613OldSQL.A2006-1.0.9.62.SQL1.0.9.623OldSQL.A2006-1.0.9.63.SQLgOldSQL.A2006-1.0.9.63.UpdateWithholdingTaxTrans.SQL1.0.9.633OldSQL.A2006-1.0.9.64.SQL1.0.9.643OldSQL.A2006-1.0.9.65.SQLUPDATE GiftRule SET CurrencyCode = ? WHERE CurrencyCode IS NULL��ALTER TABLE [GiftRule] ALTER COLUMN [CurrencyCode] [d_CurrencyCode] NOT NULL1.0.9.653OldSQL.A2006-1.0.9.66.SQL�mif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_MergeTaxType_Temp]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure[dbo].[bsp_MergeTaxType_Temp]1.0.9.663OldSQL.A2006-1.0.9.67.SQL1.0.9.673OldSQL.A2006-1.0.9.68.SQL1.0.9.683OldSQL.A2006-1.0.9.69.SQL1.0.9.693OldSQL.A2006-1.0.9.70.SQL��SELECT TaxType FROM [TaxType] WHERE TaxType like 'SR%' AND IRASTaxCode='ZRL'	SR-0��Update TaxType Set IrasTaxCode = 'SR', IsZeroRate = 'F' Where TaxType=?gSELECT COUNT(*) FROM [TaxType] WHERE TaxType='SR-0'�}INSERT INTO [TaxType] ([TaxType], [Description], [TaxRate], [Inclusive], [IsActive], [LastUpdate], [TaxTypeCategory], [IRASTaxCode], [SupplyPurchase], [IsDefault], [TaxAccNo], [IsZeroRate], [UseTrxTaxAccNo]) VALUES ('SR-0', 'Output Tax 0% - Standard Rated Supplies', 0, 'F', 'T', 0, '', 'SR', 'S', 'F', NULL, 'F', 'F')gSELECT COUNT(*) FROM [TaxType] WHERE TaxType='TX-0'��INSERT INTO [TaxType] ([TaxType], [Description], [TaxRate], [Inclusive], [IsActive], [LastUpdate], [TaxTypeCategory], [IRASTaxCode], [SupplyPurchase], [IsDefault], [TaxAccNo], [IsZeroRate], [UseTrxTaxAccNo]) VALUES ('TX-0', 'Input Tax 0%   To Make Taxable Supplies (standard rated)', 0, 'F', 'T', 0, '', 'TX', 'P', 'F', NULL, 'F', 'F')cSELECT COUNT(*) FROM [TaxType] WHERE TaxType='ZP'��INSERT INTO [TaxType] ([TaxType], [Description], [TaxRate], [Inclusive], [IsActive], [LastUpdate], [TaxTypeCategory], [IRASTaxCode], [SupplyPurchase], [IsDefault], [TaxAccNo], [IsZeroRate], [UseTrxTaxAccNo]) VALUES ('ZP', 'Input Tax 0% - Purchase subject to GST other than standard rate', 0, 'F', 'T', 0, '', 'ZP', 'P', 'F', NULL, 'T', 'F')3OldSQL.A2006-1.0.9.71.SQL1.0.9.713OldSQL.A2006-1.0.9.72.SQL1.0.9.723OldSQL.A2006-1.0.9.73.SQL1.0.9.733OldSQL.A2006-1.0.9.74.SQL1.0.9.743OldSQL.A2006-1.0.9.75.SQL�3UPDATE IVDTL SET TariffCode = (SELECT TariffCode FROM Item Where Item.ItemCode = IVDTL.ItemCode) WHERE DocKey IN (Select DocKey From IV Where DocDate>=?)�3UPDATE CNDTL SET TariffCode = (SELECT TariffCode FROM Item Where Item.ItemCode = CNDTL.ItemCode) WHERE DocKey IN (Select DocKey From CN Where DocDate>=?)�3UPDATE DNDTL SET TariffCode = (SELECT TariffCode FROM Item Where Item.ItemCode = DNDTL.ItemCode) WHERE DocKey IN (Select DocKey From DN Where DocDate>=?)�3UPDATE CSDTL SET TariffCode = (SELECT TariffCode FROM Item Where Item.ItemCode = CSDTL.ItemCode) WHERE DocKey IN (Select DocKey From CS Where DocDate>=?)1.0.9.753OldSQL.A2006-1.0.9.76.SQLYSELECT * FROM [Registry] WHERE RegID = 0x108RegID1.0.9.763OldSQL.A2006-1.0.9.77.SQL1.0.9.773OldSQL.A2006-1.0.9.78.SQL1.0.9.783OldSQL.A2006-1.0.9.79.SQL1.0.9.793OldSQL.A2006-1.0.9.80.SQL1.0.9.803OldSQL.A2006-1.0.9.81.SQL1.0.9.813OldSQL.A2006-1.0.9.82.SQL1.0.9.823OldSQL.A2006-1.0.9.83.SQL��select count(*) from dbo.syscolumns where id = object_id(N'[dbo].[APInvoice]') and name = N'SupplierInvoiceNo'uALTER TABLE APInvoice ADD SupplierInvoiceNo [d_DocNo] NULLYUPDATE APInvoice SET SupplierInvoiceNo=DocNo��if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[IX_APInvoice_DocNo]') and OBJECTPROPERTY(id, N'IsUniqueCnst') = 1) ALTER TABLE [dbo].[APInvoice] DROP CONSTRAINT [IX_APInvoice_DocNo]��SELECT DocKey, DocNo, SourceType, SourceKey from APInvoice ORDER BY DocDate, DocKeySourceTypeGSELECT DocNo FROM PI WHERE DocKey=?SourceKeyGSELECT DocNo FROM CP WHERE DocKey=?DocNo = '{0}'BF{0}
000000uSELECT DocKey, DocNo, SourceType, SourceKey from APInvoice��ALTER TABLE [dbo].[APInvoice] ADD CONSTRAINT [IX_APInvoice_DocNo] UNIQUE NONCLUSTERED ([DocNo]) ON [PRIMARY]��select count(*) from dbo.syscolumns where id = object_id(N'[dbo].[APCN]') and name = N'SupplierCNNo'aALTER TABLE APCN ADD SupplierCNNo [d_DocNo] NULLEUPDATE APCN SET SupplierCNNo=DocNo�yif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[IX_APCN_DocNo]') and OBJECTPROPERTY(id, N'IsUniqueCnst') = 1) ALTER TABLE [dbo].[APCN] DROP CONSTRAINT [IX_APCN_DocNo]��SELECT DocKey, DocNo, SourceType, SourceKey from APCN ORDER BY DocDate, DocKeyGSELECT DocNo FROM PR WHERE DocKey=?kSELECT DocKey, DocNo, SourceType, SourceKey from APCN��ALTER TABLE [dbo].[APCN] ADD CONSTRAINT [IX_APCN_DocNo] UNIQUE NONCLUSTERED ([DocNo]) ON [PRIMARY]��select count(*) from dbo.syscolumns where id = object_id(N'[dbo].[APDN]') and name = N'SupplierDNNo'aALTER TABLE APDN ADD SupplierDNNo [d_DocNo] NULLEUPDATE APDN SET SupplierDNNo=DocNo�yif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[IX_APDN_DocNo]') and OBJECTPROPERTY(id, N'IsUniqueCnst') = 1) ALTER TABLE [dbo].[APDN] DROP CONSTRAINT [IX_APDN_DocNo]kSELECT COUNT(*) FROM [DocNoFormat] WHERE DocType='PD'��INSERT INTO [DocNoFormat] VALUES ('PD Default', 'PD', 1, 'DN-<000000>', 'DN-000001', 'T', 'F')��SELECT DocKey, DocNo, SourceType, SourceKey from APDN ORDER BY DocDate, DocKeykSELECT DocKey, DocNo, SourceType, SourceKey from APDN��ALTER TABLE [dbo].[APDN] ADD CONSTRAINT [IX_APDN_DocNo] UNIQUE NONCLUSTERED ([DocNo]) ON [PRIMARY]�SELECT TaxTransKey, SourceType, SourceKey, SourceDtlKey, Seq, Tax, LocalTax FROM TaxTrans ORDER BY SourceType, SourceKey, TaxTransKeyORPV��SELECT DtlKey, Seq, Tax, 'F' as Match FROM CBDTL WHERE DocKey=? AND TaxType IS NOT NULL ORDER BY Seq�SELECT DtlKey, Seq, ISNULL(TaxDR,0) - ISNULL(TaxCR, 0) as Tax, 'F' as Match FROM JEDTL WHERE DocKey=? AND TaxType IS NOT NULL ORDER BY SeqRI��SELECT DtlKey, Seq, Tax, 'F' as Match FROM ARInvoiceDTL WHERE DocKey=? AND TaxType IS NOT NULL ORDER BY DtlKeyRD��SELECT DtlKey, Seq, Tax, 'F' as Match FROM ARDNDTL WHERE DocKey=? AND TaxType IS NOT NULL ORDER BY DtlKeyRC��SELECT DtlKey, Seq, -Tax as Tax, 'F' as Match FROM ARCNDTL WHERE DocKey=? AND TaxType IS NOT NULL ORDER BY DtlKeyPB��SELECT DtlKey, Seq, Tax, 'F' as Match FROM APInvoiceDTL WHERE DocKey=? AND TaxType IS NOT NULL ORDER BY DtlKeyPD��SELECT DtlKey, Seq, Tax, 'F' as Match FROM APDNDTL WHERE DocKey=? AND TaxType IS NOT NULL ORDER BY DtlKeyPC��SELECT DtlKey, Seq, -Tax as Tax, 'F' as Match FROM APCNDTL WHERE DocKey=? AND TaxType IS NOT NULL ORDER BY DtlKey3Tax = {0} AND Match = 'F'TaxSourceDtlKey
DtlKeySeqMatchgSELECT TaxTransKey, SourceDtlKey, Seq FROM TaxTrans!SELECT * FROM JENetTotalDRCurrencyRate_SELECT * FROM JEDTL WHERE DocKey=? ORDER BY SeqCRTaxDRTaxCRTaxableDRTaxableCRTotalDRTotalCRExTaxDRExTaxCRNetTotalCRLocalTotalDRLocalTotalCRLocalTaxableDRLocalTaxableCRLocalTaxDRLocalTaxCRLocalExTaxDRLocalExTaxCRLocalNetTotalDRLocalNetTotalCRoSELECT COUNT(*) FROM {0}DTL WHERE PackageDocKey IS NULLMSELECT DocKey FROM {0} ORDER BY DocKey�;SELECT DtlKey, TaxType, SubTotal, LocalSubTotal, LocalTax, LocalSubTotalExTax, PackageDocKey FROM {0}DTL WHERE DocKey=? AND ParentDtlKey IS NULL ORDER BY Seq�SELECT Seq, DtlKey, ParentDtlKey, SubTotal, LocalSubTotalExTax FROM {0}DTL WHERE DocKey=? AND ParentDtlKey IS NOT NULL ORDER BY Seq%LocalSubTotalExTaxLocalSubTotalLocalTaxPackageDocKeykUPDATE {0}DTL SET LocalSubTotalExTax=? WHERE DtlKey=?��UPDATE {0}DTL SET LocalSubTotalExTax=LocalSubTotal WHERE TaxType NOT IN (SELECT TaxType FROM TaxType WHERE Inclusive='T')�-UPDATE {0}DTL SET LocalSubTotalExTax=COALESCE(LocalSubTotal,0)-COALESCE(LocalTax,0) WHERE TaxType IN (SELECT TaxType FROM TaxType WHERE Inclusive='T')%ParentDtlKey = {0}Subtotal%LocalSubtotalExTaxSubTotali\s*private\s+AutoCount.Report.BaseReport\s+__report;y\s*__report\s*=\s*Report\s+as\s+AutoCount.Report.BaseReport;#private\s+void\s+��\s*\(\s*object\s+sender\s*,\s*System\.Drawing\.Printing\.PrintEventArgs\s+e\s*\)\s*{��private void Report_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e){k    __report = Report as AutoCount.Report.BaseReport;}%Report_BeforePrint%__report.DBSetting/__report.DecimalSetting/__report.GeneralSetting7__report.UserAuthentication9AutoCount.ManageAccountBook.UDBVersionChecker.RunEmbeddedDatabaseSchemacSELECT LOCATION FROM LOCATION WHERE LOCATION='HQ';SELECT LOCATION FROM LOCATION��select count(*) from dbo.sysobjects where id = object_id(N'[dbo].[CSGNDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1iUPDATE CSGNDTL SET LOCATION=? WHERE LOCATION IS NULL��select count(*) from dbo.sysobjects where id = object_id(N'[dbo].[SupplierCSGNDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1yUPDATE SupplierCSGNDTL SET LOCATION=? WHERE LOCATION IS NULL
5.0.29'SQL.A2016-2.1.0.SQL2.1.0'SQL.A2016-2.1.1.SQL2.1.1'SQL.A2016-2.1.2.SQL2.1.2'SQL.A2016-2.1.3.SQL'SQL.A2016-2.1.4.SQL'SQL.A2016-2.1.5.SQL2.1.5'SQL.A2016-2.1.6.SQL2.1.6'SQL.A2016-2.1.7.SQL��select count(*) from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'AccountingBasis'��INSERT INTO [TaxType] ([TaxType], [Description], [TaxRate], [Inclusive], [IsActive], [LastUpdate], [TaxTypeCategory], [IRASTaxCode], [SupplyPurchase], [IsDefault], [TaxAccNo], [IsZeroRate], [UseTrxTaxAccNo], [AccountingBasis], [Guid]) VALUES ('SR-0', 'Output Tax 0% - Standard Rated Supplies', 0, 'F', 'T', 0, '', 'SR', 'S', 'F', NULL, 'F', 'F', 0, newid())��Update TaxType Set IrasTaxCode = 'SR', IsZeroRate = 'F' Where TaxType='SR-0'��INSERT INTO [TaxType] ([TaxType], [Description], [TaxRate], [Inclusive], [IsActive], [LastUpdate], [TaxTypeCategory], [IRASTaxCode], [SupplyPurchase], [IsDefault], [TaxAccNo], [IsZeroRate], [UseTrxTaxAccNo], [AccountingBasis], [Guid]) VALUES ('TX-0', 'Input Tax 0%   To Make Taxable Supplies (standard rated)', 0, 'F', 'T', 0, '', 'TX', 'P', 'F', NULL, 'F', 'F', 0, newid())��INSERT INTO [TaxType] ([TaxType], [Description], [TaxRate], [Inclusive], [IsActive], [LastUpdate], [TaxTypeCategory], [IRASTaxCode], [SupplyPurchase], [IsDefault], [TaxAccNo], [IsZeroRate], [UseTrxTaxAccNo], [AccountingBasis], [Guid]) VALUES ('ZP', 'Input Tax 0% - Purchase subject to GST other than standard rate', 0, 'F', 'T', 0, '', 'ZP', 'P', 'F', NULL, 'T', 'F', 0, newid())��INSERT INTO [TaxType] ([TaxType], [Description], [TaxRate], [Inclusive], [IsActive], [LastUpdate], [TaxTypeCategory], [IRASTaxCode], [SupplyPurchase], [IsDefault], [TaxAccNo], [IsZeroRate], [UseTrxTaxAccNo], [Guid]) VALUES ('SR-0', 'Output Tax 0% - Standard Rated Supplies', 0, 'F', 'T', 0, '', 'SR', 'S', 'F', NULL, 'F', 'F', newid())��INSERT INTO [TaxType] ([TaxType], [Description], [TaxRate], [Inclusive], [IsActive], [LastUpdate], [TaxTypeCategory], [IRASTaxCode], [SupplyPurchase], [IsDefault], [TaxAccNo], [IsZeroRate], [UseTrxTaxAccNo], [Guid]) VALUES ('TX-0', 'Input Tax 0%   To Make Taxable Supplies (standard rated)', 0, 'F', 'T', 0, '', 'TX', 'P', 'F', NULL, 'F', 'F', newid())��INSERT INTO [TaxType] ([TaxType], [Description], [TaxRate], [Inclusive], [IsActive], [LastUpdate], [TaxTypeCategory], [IRASTaxCode], [SupplyPurchase], [IsDefault], [TaxAccNo], [IsZeroRate], [UseTrxTaxAccNo], [Guid]) VALUES ('ZP', 'Input Tax 0% - Purchase subject to GST other than standard rate', 0, 'F', 'T', 0, '', 'ZP', 'P', 'F', NULL, 'T', 'F', newid())_Delete From Settings Where Name = 'AccountBook'2.1.7'SQL.A2016-2.1.8.SQL2.1.8'SQL.A2016-2.1.9.SQL2.1.9��Select Count(*) from dbo.sysobjects where id = object_id(N'[dbo].[TaxExemption]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)SQL.A2016-2.1.10.SQL
2.1.10��Select Count(*) from dbo.sysobjects where id = object_id(N'[dbo].[SSTProcessor]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)SQL.A2016-2.1.11.SQL
2.1.11��Select Count(*) from dbo.syscolumns where id = object_id(N'[dbo].[TaxTrans]') and name = N'TariffCode')SQL.A2016-2.1.12.SQL
2.1.12��Select Count(*) from dbo.syscolumns where id = object_id(N'[dbo].[GSTProcessor]') and name = N'IsFinalGSTReturn')SQL.A2016-2.1.13.SQL
2.1.13��Select Count(*) from dbo.syscolumns where id = object_id(N'[dbo].[APInvoice]') and name = N'ReferSSTISJEDocKey')SQL.A2016-2.1.14.SQL
2.1.14)SQL.A2016-2.1.15.SQL
2.1.15��Select Count(*) from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'ServiceTaxRegisterNo')SQL.A2016-2.1.16.SQL
2.1.16��Select Count(*) from dbo.syscolumns where id = object_id(N'[dbo].[ItemLocationPrice]') and name = N'ReOQty')SQL.A2016-2.1.17.SQL
2.1.17)SQL.A2016-2.1.18.SQL
2.1.18�Select Count(*) from dbo.sysobjects where id = object_id(N'[dbo].[GSTFilingReminder]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)SQL.A2016-2.1.19.SQL
2.1.19)SQL.A2016-2.1.20.SQL
2.1.20��Select Count(*) from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointRedemptionDTL]') and name = N'SerialNoList')SQL.A2016-2.1.21.SQL
2.1.21)SQL.A2016-2.2.22.SQLID7CF32BB-4A30-4037-9C7B-5FC06C7D90C4[SELECT COUNT(*) FROM PlugInFiles WHERE Guid=?QTDTLSODTLDODTLIVDTLCSDTLCNDTLDNDTLXSDTLDRDTLRQDTLPODTLGRDTLPIDTLCPDTLPRDTLXPDTLGTDTL
ADJDTL
ISSDTL
RCVDTLXFERDTLUOMConvDTLUpdateCostDTLWOFFDTLACDesc2=UPDATE {0} SET Desc2 = UDF_{1}IDELETE FROM PlugInFiles WHERE Guid=??DELETE FROM PlugIn WHERE Guid=?
2.2.22��Select Count(*) from dbo.syscolumns where id = object_id(N'[dbo].[APCN]') and name = N'ReferCAJEDocKey')SQL.A2016-2.2.23.SQL
2.2.23)SQL.A2016-2.2.24.SQL
2.2.24)SQL.A2016-2.2.25.SQL
2.2.25)SQL.A2016-2.2.26.SQL
2.2.26)SQL.A2016-2.2.27.SQL
2.2.27)SQL.A2016-2.2.28.SQL
2.2.28)SQL.A2016-2.2.29.SQL
2.2.29)SQL.A2016-2.2.30.SQL
2.2.30)SQL.A2016-2.2.31.SQL
2.2.31)SQL.A2016-2.2.32.SQL
2.2.32)SQL.A2016-2.2.33.SQL
2.2.33)SQL.A2016-2.2.34.SQL
2.2.34)SQL.A2016-2.2.35.SQL
2.2.35)SQL.A2016-2.2.36.SQL
2.2.36)SQL.A2016-2.2.37.SQL
2.2.37)SQL.A2016-2.2.38.SQL
2.2.38)SQL.A2016-2.2.39.SQL+Select * From TaxTypeGovtTaxCodeTaxSystem
2.2.39)SQL.A2016-2.2.40.SQL
2.2.40)SQL.A2016-2.2.41.SQL
2.2.41)SQL.A2016-2.2.42.SQL
2.2.42)SQL.A2016-2.2.43.SQL
2.2.43)SQL.A2016-2.2.44.SQL
2.2.44)SQL.A2016-2.2.45.SQL
2.2.45)SQL.A2016-2.2.46.SQL
2.2.46)SQL.A2016-2.2.47.SQLINTDE
2.2.47)SQL.A2016-2.2.48.SQL+DeferredInputTaxAccNo-DeferredOutputTaxAccNo_Select SSTValue From SSTSetting Where SSTName=?_Select Count(*) From TaxSetting Where TaxName=?aUpdate TaxSetting Set TaxValue=? Where TaxName=?mINSERT INTO TaxSetting(TaxName, TaxValue) VALUES(?, ?)MDelete From SSTSetting Where SSTName=?
2.2.48)SQL.A2016-2.2.49.SQL)SQL.A2016-2.2.50.SQL
2.2.50)SQL.A2016-2.2.51.SQLWithholding Tax?SQL.A2016-2.2.51.DropColumn.SQL
2.2.51)SQL.A2016-2.2.52.SQLkSELECT Value FROM Settings WHERE Name = 'MalaysiaGST'+GSTPayableDescriptionUGSTPayableDescriptionForZeroPercentageOnlyAGSTPayableDescriptionForSalesTaxEGSTPayableDescriptionForServiceTax=GSTPayableDescriptionForNonGST
2.2.52)SQL.A2016-2.2.53.SQL?SQL.A2016-2.2.53.DropColumn.SQL
2.2.53)SQL.A2016-2.2.54.SQLgUpdate WithholdingTax SET WithholdingTaxRate = {0} EWHERE WithholdingTaxCode = 'WC213'iUpdate WithholdingTax SET WithholdingTaxRate = {0}, ��Description = 'EWT- Commissions, rebates, discounts and other similar considerations paid/granted to independent and/or exclusive sales representatives and marketing agents and sub-agents of companies, including multi-level marketing companies. If gross income for the current year did not exceed P 720,000.00' WHERE WithholdingTaxCode = 'WC515'�qDescription = 'Commissions, rebates, discounts and other similar considerations paid/granted to independent and/or exclusive sales representatives and marketing agents and sub-agents of companies, including multi-level marketing companies. If gross income exceeds P 720,000.00' WHERE WithholdingTaxCode = 'WC516'
2.2.54)SQL.A2016-2.2.55.SQL
2.2.55)SQL.A2016-2.2.56.SQL
2.2.56)SQL.A2016-2.2.57.SQL
2.2.57)SQL.A2016-2.2.65.SQLYSELECT COUNT(*) FROM QT WHERE DocStatus != ')' AND DocStatus != 'YSELECT COUNT(*) FROM PQ WHERE DocStatus != '
2.2.65)SQL.A2016-2.2.66.SQL
2.2.66)SQL.A2016-2.2.67.SQL
2.2.67)SQL.A2016-2.2.68.SQL;Select CompanyID From Profile
2.2.68)SQL.A2016-2.2.69.SQL��Select CompanyID, PublicID, CompanyAccessKey From Profile Where ISNull(CompanyID, '') != ''CompanyIDPublicID!CompanyAccessKeycUPDATE Profile SET EInvoiceCompanyResultInJson =?
2.2.69)SQL.A2016-2.2.70.SQL
2.2.70)SQL.A2016-2.2.71.SQL
2.2.71)SQL.A2016-2.2.72.SQL
2.2.72)SQL.A2016-2.2.73.SQL
2.2.73)SQL.A2016-2.2.74.SQL
2.2.74)SQL.A2016-2.2.75.SQL
2.2.75)SQL.A2016-2.2.76.SQL
2.2.76)SQL.A2016-2.2.77.SQL
2.2.77)SQL.A2016-2.2.78.SQL
2.2.78)SQL.A2016-2.2.79.SQL
2.2.79)SQL.A2016-2.2.80.SQL
2.2.80)SQL.A2016-2.2.81.SQL
2.2.81)SQL.A2016-2.2.82.SQL
2.2.82)SQL.A2016-2.2.83.SQL�UPDATE QT SET ExpiryTimeStamp = DATEADD(DAY, {0}, LastModified) WHERE DocStatus IN ('{1}','{2}','{3}') AND ExpiryTimeStamp IS NULL�UPDATE PQ SET ExpiryTimeStamp = DATEADD(DAY, {0}, LastModified) WHERE DocStatus IN ('{1}','{2}','{3}') AND ExpiryTimeStamp IS NULL
2.2.83)SQL.A2016-2.2.84.SQL�Select EInvoiceCompanyResultInJson From Profile Where ISNULL(EInvoiceCompanyResultInJson, '') != '' AND ISNull(CompanyID, '') = ''7EInvoiceCompanyResultInJson��UPDATE Profile SET CompanyID = ?, PublicID = ?, CompanyAccessKey = ?, IsEInvoiceDeactivated=1YSELECT COUNT(*) FROM IPHIST WHERE DocDate>=?OS-A.DocDate>=@StartDate 5A.CreatedTime>=@StartDate AQ;AND A.DocStatus in ('A', 'V')-(SELECT COUNT(*) FROM  A INNER JOIN GDTL B ON A.DocKey = B.DocKey WHERE ) +1SELECT {0} AS TotalCount@StartDate?SQL.A2016-2.2.84.DropColumn.SQL
2.2.84)SQL.A2016-2.2.85.SQL
2.2.85)SQL.A2016-2.2.86.SQL
2.2.86)SQL.A2016-2.2.87.SQL
2.2.87)SQL.A2016-2.2.88.SQL
2.2.88)SQL.A2016-2.2.89.SQL
2.2.89)SQL.A2016-2.2.90.SQL{Select * From ARDeposit Where HasForfeit='T' OR HasRefund='T'aSelect * From ARDepositPaymentDTL Where DocKey=?HasForfeit��Insert Into ARDepositForfeit (ForfeitKey, DocKey, DocDate, Description, ForfeitedAmt, ForfeitedAccNo, LastModified, LastModifiedUserID, CreatedTimeStamp, CreatedUserID) Values (?,?,?,?,?,?,?,?,?,?)ForfeitedDateForfeitedAmtForfeitedAccNoRTGLTrxID)DepositPaymentMethodToDepositRateToHomeRateHasRefund��Insert Into ARDepositRefund (RefundKey, DocKey, DocNo, DocDate, Name, Description, RefundAmt, CBKey, PrintCount, LastModified, LastModifiedUserID, CreatedTimeStamp, CreatedUserID) Values (?,?,?,?,?,?,?,?,?,?,?,?,?)RefundDocNoRefundDateRefundNameRefundAmtRefundCBKey��Update CB Set SourceKey = ? Where SourceType = ? AND SourceKey = ?RU��Update GLDTL Set SourceKey = ? Where SourceType = ? AND SourceKey = ?_Select * From ARRefundDepositDTL Where DocKey=?��Insert Into ARDepositRefundPaymentDTL (DtlKey, RefundKey, Seq, PaymentMethod, PaymentBy, ToBankRate, ChequeNo, FloatDay, BankCharge, PaymentAmt, IsRCHQ, RCHQDate, BankChargeDtlKey, BankChargeProjNo, BankChargeDeptNo, BankChargeTaxType, BankChargeTaxRate, BankChargeTax, BankChargeTaxRefNo) Values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)PaymentByToBankRateChequeNoFloatDayBankChargePaymentAmt
IsRCHQRCHQDate!BankChargeDtlKey!BankChargeProjNo!BankChargeDeptNo#BankChargeTaxType#BankChargeTaxRateBankChargeTax%BankChargeTaxRefNo/Select * From ARDeposit{Select * From APDeposit Where HasForfeit='T' OR HasRefund='T'aSelect * From APDepositPaymentDTL Where DocKey=?��Insert Into APDepositForfeit (ForfeitKey, DocKey, DocDate, Description, ForfeitedAmt, ForfeitedAccNo, LastModified, LastModifiedUserID, CreatedTimeStamp, CreatedUserID) Values (?,?,?,?,?,?,?,?,?,?)PT��Insert Into APDepositRefund (RefundKey, DocKey, DocNo, DocDate, Name, Description, RefundAmt, CBKey, PrintCount, LastModified, LastModifiedUserID, CreatedTimeStamp, CreatedUserID) Values (?,?,?,?,?,?,?,?,?,?,?,?,?)PU_Select * From APRefundDepositDTL Where DocKey=?��Insert Into APDepositRefundPaymentDTL (DtlKey, RefundKey, Seq, PaymentMethod, PaymentBy, ToBankRate, ChequeNo, FloatDay, BankCharge, PaymentAmt, IsRCHQ, RCHQDate, BankChargeDtlKey, BankChargeProjNo, BankChargeDeptNo, BankChargeTaxType, BankChargeTaxRate, BankChargeTax, BankChargeTaxRefNo) Values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)/Select * From APDepositwSELECT DISTINCT ItemCode FROM Item WHERE StockControl = 'T',��DELETE FROM StockTransQueue WHERE ItemCode IN (SELECT * FROM LIST(@ItemCodes))@ItemCodes;SELECT * FROM StockTransQueue%StockTransQueueKeyRecordStateDocDateIsRecalculate/PostFromUpdateStockCostRetryCount'CheckTrialPlanLimitTagSystem.BooleanIsCmdGroupUserGroupList	2.49/TOOLS_REGISTRATION_SHOW
ADMINS/TOOLS_REGISTRATION_OPEN1.01.1#GL_REPORT_CF_SHOW#ADMINS,FINANCEMGR#GL_REPORT_CF_OPEN)GL_REPORT_CF_PREVIEW%GL_REPORT_CF_PRINT'GL_REPORT_CF_EXPORT5GL_REPORT_CF_FORECAST_SHOW5GL_REPORT_CF_FORECAST_OPEN;GL_REPORT_CF_FORECAST_PREVIEW7GL_REPORT_CF_FORECAST_PRINT9GL_REPORT_CF_FORECAST_EXPORT1.2;AR_DEBTOR_EDIT_CREDIT_CONTROL5ADMINS,FINANCEMGR,ACCOUNTS?AP_CREDITOR_EDIT_CREDIT_CONTROL!STK_ITEMPKG_SHOWADMINS,INVMGR!STK_ITEMPKG_OPENSTK_ITEMPKG_NEW!STK_ITEMPKG_EDIT%STK_ITEMPKG_DELETE/INQ_ITEM_PKG_TRANS_SHOW/INQ_ITEM_PKG_TRANS_OPEN/INV_SALES_QT_SHOW_IINFO'ADMINS,INVMGR,SALES/INV_SALES_SO_SHOW_IINFO/INV_SALES_DO_SHOW_IINFO/INV_SALES_IV_SHOW_IINFO/INV_SALES_CS_SHOW_IINFO/INV_SALES_CN_SHOW_IINFO/INV_SALES_DN_SHOW_IINFO/INV_SALES_XS_SHOW_IINFO/INV_SALES_DR_SHOW_IINFO5INV_PURCHASE_RQ_SHOW_IINFO/ADMINS,INVMGR,PURCHASES5INV_PURCHASE_PO_SHOW_IINFO5INV_PURCHASE_GR_SHOW_IINFO5INV_PURCHASE_PI_SHOW_IINFO5INV_PURCHASE_CP_SHOW_IINFO5INV_PURCHASE_PR_SHOW_IINFO5INV_PURCHASE_XP_SHOW_IINFO5INV_PURCHASE_GT_SHOW_IINFO;INV_SALES_IINFO_STOCK_BALANCE+INV_SALES_IINFO_AGING;INV_SALES_IINFO_PRICE_HISTORY3INV_SALES_IINFO_ITEM_INFO7INV_SALES_IINFO_CONSIGNMENTAINV_PURCHASE_IINFO_STOCK_BALANCE1INV_PURCHASE_IINFO_AGINGAINV_PURCHASE_IINFO_PRICE_HISTORY9INV_PURCHASE_IINFO_ITEM_INFO=INV_PURCHASE_IINFO_CONSIGNMENT/STK_IINFO_STOCK_BALANCE)ADMINS,INVMGR,STOCKS'STK_IINFO_ITEM_INFO)INV_SALES_SO_XFER_QT)INV_SALES_DO_XFER_QT)INV_SALES_DO_XFER_SO)INV_SALES_IV_XFER_QT)INV_SALES_IV_XFER_SO)INV_SALES_IV_XFER_DO)INV_SALES_CS_XFER_QT)INV_SALES_CS_XFER_SO)INV_SALES_CS_XFER_DO/INV_PURCHASE_PO_XFER_RQ/INV_PURCHASE_PO_XFER_SO/INV_PURCHASE_GR_XFER_RQ/INV_PURCHASE_GR_XFER_PO/INV_PURCHASE_PI_XFER_RQ/INV_PURCHASE_PI_XFER_PO/INV_PURCHASE_PI_XFER_GR/INV_PURCHASE_CP_XFER_RQ/INV_PURCHASE_CP_XFER_PO/INV_PURCHASE_CP_XFER_GR1.33INV_BP_TRANS_LISTING_SHOW3INV_BP_TRANS_LISTING_OPEN9INV_BP_TRANS_LISTING_PREVIEW5INV_BP_TRANS_LISTING_PRINT7INV_BP_TRANS_LISTING_EXPORT1.4!MF_ASMORDER_SHOW!MF_ASMORDER_OPENMF_ASMORDER_NEW!MF_ASMORDER_EDIT!MF_ASMORDER_VIEW%MF_ASMORDER_DELETE-MF_ASMORDER_EDIT_DOCNO=MF_ASMORDER_DOC_REPORT_PREVIEW9MF_ASMORDER_DOC_REPORT_PRINT;MF_ASMORDER_DOC_REPORT_EXPORTEMF_ASMORDER_LISTING_REPORT_PREVIEWAMF_ASMORDER_LISTING_REPORT_PRINTCMF_ASMORDER_LISTING_REPORT_EXPORTEMF_ASMORDER_DTLLIST_REPORT_PREVIEWCMF_ASMORDER_DTLLIST_REPORT_EXPORT%MF_ASMORDER_CANCEL?MF_ASMORDER_CHANGE_DOCNO_FORMAT5MF_ASMORDER_PRINTED_CANCEL5MF_ASMORDER_PRINTED_DELETE1MF_ASMORDER_PRINTED_EDIT7MF_ASMORDER_PRINTED_PREVIEW3MF_ASMORDER_PRINTED_PRINT5MF_ASMORDER_PRINTED_EXPORT-INV_SALES_RANKING_SHOW-INV_SALES_RANKING_OPEN3INV_SALES_RANKING_PREVIEW/INV_SALES_RANKING_PRINT1INV_SALES_RANKING_EXPORT1.5+TOOLS_AUDITTRAIL_SHOW+TOOLS_AUDITTRAIL_OPEN1TOOLS_AUDITTRAIL_PREVIEW-TOOLS_AUDITTRAIL_PRINT/TOOLS_AUDITTRAIL_EXPORT1.6FCRV_SHOWFCRV_OPENFCRV_NEWFCRV_VIEWFCRV_DELETEFCRV_EDIT_DOCNO1FCRV_CHANGE_DOCNO_FORMAT/FCRV_DOC_REPORT_PREVIEW+FCRV_DOC_REPORT_PRINT-FCRV_DOC_REPORT_EXPORTINV_BP_RD_SHOWINV_BP_RD_OPENINV_BP_RD_NEWINV_BP_RD_EDITINV_BP_RD_VIEW!INV_BP_RD_DELETE)INV_BP_RD_EDIT_DOCNO9INV_BP_RD_DOC_REPORT_PREVIEW5INV_BP_RD_DOC_REPORT_PRINT7INV_BP_RD_DOC_REPORT_EXPORTAINV_BP_RD_LISTING_REPORT_PREVIEW=INV_BP_RD_LISTING_REPORT_PRINT?INV_BP_RD_LISTING_REPORT_EXPORTAINV_BP_RD_DTLLIST_REPORT_PREVIEW=INV_BP_RD_DTLLIST_REPORT_PRINT?INV_BP_RD_DTLLIST_REPORT_EXPORT!INV_BP_RD_CANCEL;INV_BP_RD_CHANGE_DOCNO_FORMAT'INV_SALES_MDPB_SHOW'INV_SALES_MDPB_OPEN'GL_REPORT_RCHQ_SHOW'GL_REPORT_RCHQ_OPEN-GL_REPORT_RCHQ_PREVIEW)GL_REPORT_RCHQ_PRINT+GL_REPORT_RCHQ_EXPORT1.7MF_BOPT_SHOWMF_BOPT_OPENMF_BOPT_NEWMF_BOPT_EDITMF_BOPT_DELETE=MF_BOPT_LISTING_REPORT_PREVIEW9MF_BOPT_LISTING_REPORT_PRINT;MF_BOPT_LISTING_REPORT_EXPORT1.81.95AR_REPORT_CN_ANALYSIS_SHOW5AR_REPORT_CN_ANALYSIS_OPEN;AR_REPORT_CN_ANALYSIS_PREVIEW7AR_REPORT_CN_ANALYSIS_PRINT9AR_REPORT_CN_ANALYSIS_EXPORT5AR_REPORT_DN_ANALYSIS_SHOW5AR_REPORT_DN_ANALYSIS_OPEN;AR_REPORT_DN_ANALYSIS_PREVIEW7AR_REPORT_DN_ANALYSIS_PRINT9AR_REPORT_DN_ANALYSIS_EXPORT5AP_REPORT_CN_ANALYSIS_SHOW5AP_REPORT_CN_ANALYSIS_OPEN;AP_REPORT_CN_ANALYSIS_PREVIEW7AP_REPORT_CN_ANALYSIS_PRINT9AP_REPORT_CN_ANALYSIS_EXPORT5AP_REPORT_DN_ANALYSIS_SHOW5AP_REPORT_DN_ANALYSIS_OPEN;AP_REPORT_DN_ANALYSIS_PREVIEW7AP_REPORT_DN_ANALYSIS_PRINT9AP_REPORT_DN_ANALYSIS_EXPORT	1.11#TOOLS_CC_LOCATION	1.12BFLOW_SOP_SHOWBFLOW_SOP_OPENBFLOW_PRP_SHOWBFLOW_PRP_OPENBFLOW_DRP_SHOWBFLOW_DRP_OPENBFLOW_AORP_SHOWBFLOW_AORP_OPENBFLOW_AOP_SHOWBFLOW_AOP_OPENBFLOW_ARP_SHOWBFLOW_ARP_OPEN	1.13+GL_REPORT_TRX_PL_SHOW+GL_REPORT_TRX_PL_OPEN1GL_REPORT_TRX_PL_PREVIEW-GL_REPORT_TRX_PL_PRINT/GL_REPORT_TRX_PL_EXPORTEMF_ASMORDER_OUTLIST_REPORT_PREVIEWAMF_ASMORDER_OUTLIST_REPORT_PRINTCMF_ASMORDER_OUTLIST_REPORT_EXPORT	1.14%TOOLS_PLUGINS_SHOW%TOOLS_PLUGINS_OPEN	1.15/GL_REPORT_AGENTEXP_SHOW/GL_REPORT_AGENTEXP_OPEN5GL_REPORT_AGENTEXP_PREVIEW1GL_REPORT_AGENTEXP_PRINT3GL_REPORT_AGENTEXP_EXPORT	1.16-INQ_BATCHNO_TRANS_SHOW-INQ_BATCHNO_TRANS_OPEN	1.179STK_REPORT_EXPIREDBATCH_SHOW9STK_REPORT_EXPIREDBATCH_OPEN?STK_REPORT_EXPIREDBATCH_PREVIEW;STK_REPORT_EXPIREDBATCH_PRINT=STK_REPORT_EXPIREDBATCH_EXPORT	1.18!GM_ACCGROUP_SHOW!GM_ACCGROUP_OPENGM_ACCGROUP_NEW!GM_ACCGROUP_EDIT%GM_ACCGROUP_DELETE	1.19GL_LYB_SHOWGL_LYB_OPEN+GL_LYB_REPORT_PREVIEW'GL_LYB_REPORT_PRINT)GL_LYB_REPORT_EXPORT	1.20)TOOLS_CC_SALES_AGENT/TOOLS_CC_PURCHASE_AGENT	1.21?STK_REPORT_IPW_CONSIGNMENT_SHOW?STK_REPORT_IPW_CONSIGNMENT_OPENESTK_REPORT_IPW_CONSIGNMENT_PREVIEWASTK_REPORT_IPW_CONSIGNMENT_PRINTCSTK_REPORT_IPW_CONSIGNMENT_EXPORT	1.22!STK_ITEM_OB_SHOW!STK_ITEM_OB_OPEN/STK_ITEM_PRICEBOOK_SHOW/STK_ITEM_PRICEBOOK_OPEN#STK_ITEM_BOM_SHOW#STK_ITEM_BOM_OPEN!STK_ITEM_BOM_NEW#STK_ITEM_BOM_EDIT'STK_ITEM_BOM_DELETE	1.233SYS_BHV_LOGIN_OLD_VERSION-SYS_BHV_SAVE_MIN_PRICE-SYS_BHV_SAVE_MAX_PRICE	1.24#NOTIF_MANAGE_SHOW#NOTIF_MANAGE_OPEN!NOTIF_MANAGE_NEW#NOTIF_MANAGE_EDIT'NOTIF_MANAGE_DELETE!NOTIF_INBOX_SHOW!NOTIF_INBOX_OPENNOTIF_INBOX_NEW'NOTIF_INBOX_RECEIVE	1.25CSYS_CC_APPROVE_SALES_CREDIT_LIMITESYS_CC_APPROVE_SALES_OVERDUE_LIMITISYS_CC_APPROVE_PURCHASE_CREDIT_LIMITKSYS_CC_APPROVE_PURCHASE_OVERDUE_LIMIT	1.26-TOOLS_NET_MONITOR_SHOW-TOOLS_NET_MONITOR_OPEN1TOOLS_NET_MONITOR_DELETETOOLS_GPC_SHOWTOOLS_GPC_OPEN1TOOLS_PRINT_BARCODE_SHOW1TOOLS_PRINT_BARCODE_OPEN7TOOLS_PRINT_BARCODE_PREVIEW3TOOLS_PRINT_BARCODE_PRINT5TOOLS_PRINT_BARCODE_EXPORT;INV_SALES_REPORT_FOC_QTY_SHOW;INV_SALES_REPORT_FOC_QTY_OPENAINV_SALES_REPORT_FOC_QTY_PREVIEW=INV_SALES_REPORT_FOC_QTY_PRINT?INV_SALES_REPORT_FOC_QTY_EXPORT'NOTIF_INBOX_LOW_QTYEAR_REPORT_COLLECTION_BY_AGENT_SHOWEAR_REPORT_COLLECTION_BY_AGENT_OPENKAR_REPORT_COLLECTION_BY_AGENT_PREVIEWGAR_REPORT_COLLECTION_BY_AGENT_PRINTIAR_REPORT_COLLECTION_BY_AGENT_EXPORT	1.275GL_REPORT_CHQ_LISTING_SHOW5GL_REPORT_CHQ_LISTING_OPEN;GL_REPORT_CHQ_LISTING_PREVIEW7GL_REPORT_CHQ_LISTING_PRINT9GL_REPORT_CHQ_LISTING_EXPORT	1.287SYS_BHV_SAVE_INACTIVE_ITEMS3SYS_BHV_CHECK_DOC_ADDRESS	1.29-INV_SALES_DO_POSTSTOCK!INV_SALES_DO_NEW-INV_SALES_DR_POSTSTOCK!INV_SALES_DR_NEW-INV_SALES_IV_POSTSTOCK!INV_SALES_IV_NEW'INV_SALES_IV_POSTGL-INV_SALES_CS_POSTSTOCK!INV_SALES_CS_NEW'INV_SALES_CS_POSTGL-INV_SALES_CN_POSTSTOCK!INV_SALES_CN_NEW'INV_SALES_CN_POSTGL-INV_SALES_DN_POSTSTOCK!INV_SALES_DN_NEW'INV_SALES_DN_POSTGL3INV_PURCHASE_GR_POSTSTOCK'INV_PURCHASE_GR_NEW3INV_PURCHASE_GT_POSTSTOCK'INV_PURCHASE_GT_NEW3INV_PURCHASE_PI_POSTSTOCK'INV_PURCHASE_PI_NEW-INV_PURCHASE_PI_POSTGL3INV_PURCHASE_CP_POSTSTOCK'INV_PURCHASE_CP_NEW-INV_PURCHASE_CP_POSTGL3INV_PURCHASE_PR_POSTSTOCK'INV_PURCHASE_PR_NEW-INV_PURCHASE_PR_POSTGL	1.30+INQ_ITEM_SHOW_UTDCOSTINQ_ITEM_OPEN	1.31CSYS_BHV_DIRECT_DRILLDOWN_PURCHASE1SYS_BHV_DIRECT_DRILLDOWN	1.32;INV_SALES_QT_EDIT_MASTER_DATA;INV_SALES_SO_EDIT_MASTER_DATA;INV_SALES_DO_EDIT_MASTER_DATA;INV_SALES_IV_EDIT_MASTER_DATA;INV_SALES_CS_EDIT_MASTER_DATA;INV_SALES_CN_EDIT_MASTER_DATA;INV_SALES_DN_EDIT_MASTER_DATA	1.33	1.34%INQ_ITEM_SHOW_NOTECINQ_ITEM_SHOW_FURTHER_DESCRIPTION'INQ_ITEM_SHOW_IMAGE#INQ_ITEM_SHOW_UDF/INQ_ACCOUNT_SHOW_LEDGER!INQ_ACCOUNT_OPEN;INQ_ACCOUNT_SHOW_GENERAL_INFO1INQ_ACCOUNT_SHOW_CONTACT3INQ_ACCOUNT_SHOW_BRANCHES/INQ_ACCOUNT_SHOW_OTHERS+INQ_ACCOUNT_SHOW_NOTE#SYS_BHV_VIEW_COST%STK_ADJ_SHOW_TOTALSTK_ADJ_OPEN%STK_ISS_SHOW_TOTALSTK_ISS_OPEN%STK_RCV_SHOW_TOTALSTK_RCV_OPEN'STK_WOFF_SHOW_TOTALSTK_WOFF_OPEN'STK_XFER_SHOW_TOTALSTK_XFER_OPENAINV_SALES_QT_SHOW_SUMMARY_FOOTER#INV_SALES_QT_OPENAINV_SALES_SO_SHOW_SUMMARY_FOOTER#INV_SALES_SO_OPENAINV_SALES_DO_SHOW_SUMMARY_FOOTER#INV_SALES_DO_OPENAINV_SALES_IV_SHOW_SUMMARY_FOOTER#INV_SALES_IV_OPENAINV_SALES_CS_SHOW_SUMMARY_FOOTER#INV_SALES_CS_OPENAINV_SALES_CN_SHOW_SUMMARY_FOOTER#INV_SALES_CN_OPENAINV_SALES_DN_SHOW_SUMMARY_FOOTER#INV_SALES_DN_OPENAINV_SALES_XS_SHOW_SUMMARY_FOOTER#INV_SALES_XS_OPENAINV_SALES_DR_SHOW_SUMMARY_FOOTER#INV_SALES_DR_OPENGINV_PURCHASE_RQ_SHOW_SUMMARY_FOOTER)INV_PURCHASE_RQ_OPENGINV_PURCHASE_PO_SHOW_SUMMARY_FOOTER)INV_PURCHASE_PO_OPENGINV_PURCHASE_GR_SHOW_SUMMARY_FOOTER)INV_PURCHASE_GR_OPENGINV_PURCHASE_PI_SHOW_SUMMARY_FOOTER)INV_PURCHASE_PI_OPENGINV_PURCHASE_CP_SHOW_SUMMARY_FOOTER)INV_PURCHASE_CP_OPENGINV_PURCHASE_PR_SHOW_SUMMARY_FOOTER)INV_PURCHASE_PR_OPENGINV_PURCHASE_XP_SHOW_SUMMARY_FOOTER)INV_PURCHASE_XP_OPENGINV_PURCHASE_GT_SHOW_SUMMARY_FOOTER)INV_PURCHASE_GT_OPEN	1.35)TOOLS_MANAGE_FY_SHOW#TOOLS_OPTION_SHOW)TOOLS_MANAGE_FY_OPEN#TOOLS_OPTION_OPEN1TOOLS_MANAGE_PERIOD_LOCK	1.363SYS_BHV_VIEW_BANK_BALANCE	1.37'GL_TRX_SUMMARY_SHOW+GL_REPORT_JE_TRX_SHOW'GL_TRX_SUMMARY_OPEN+GL_REPORT_JE_TRX_OPEN	1.38BFLOW_SOP_EDITBFLOW_AOP_EDIT	1.397SYS_SEC_LOGIN_FROM_INTERNET-MP_REORDER_ADVICE_SHOWASTK_REPORT_STKREORDERADVICE_SHOW	1.40;STK_REPORT_STKBAL_BY_LOC_SHOW-STK_REPORT_STKBAL_SHOW;STK_REPORT_STKBAL_BY_LOC_OPEN-STK_REPORT_STKBAL_OPENASTK_REPORT_STKBAL_BY_LOC_PREVIEW3STK_REPORT_STKBAL_PREVIEW=STK_REPORT_STKBAL_BY_LOC_PRINT/STK_REPORT_STKBAL_PRINT?STK_REPORT_STKBAL_BY_LOC_EXPORT1STK_REPORT_STKBAL_EXPORT	1.41%IE_EXPORT_GRP_SHOW+IE_IMPORT_3PARTY_SHOW+IE_IMPORT_3PARTY_OPEN	1.42%IE_IMPORT_ALL_SHOW%IE_IMPORT_ALL_OPEN%IE_EXPORT_SSP_SHOWURGL_SHOWURGL_OPENURGL_NEWURGL_EDITURGL_VIEWURGL_DELETEURGL_EDIT_DOCNO1URGL_CHANGE_DOCNO_FORMAT/URGL_DOC_REPORT_PREVIEW+URGL_DOC_REPORT_PRINT-URGL_DOC_REPORT_EXPORT	1.439GL_BANK_RECON_BANK_SLIP_OPEN7GL_BANK_RECON_BANK_SLIP_NEW9GL_BANK_RECON_BANK_SLIP_EDIT=GL_BANK_RECON_BANK_SLIP_DELETE	1.44IGL_REPORT_PROJECT_PROFIT_MARGIN_SHOWIGL_REPORT_PROJECT_PROFIT_MARGIN_OPENOGL_REPORT_PROJECT_PROFIT_MARGIN_PREVIEWKGL_REPORT_PROJECT_PROFIT_MARGIN_PRINTMGL_REPORT_PROJECT_PROFIT_MARGIN_EXPORT	1.45GM_UDL_SHOWGM_UDL_OPEN	1.46AINV_SALES_QT_LISTING_REPORT_SHOWGINV_SALES_QT_LISTING_REPORT_PREVIEWAINV_SALES_QT_LISTING_REPORT_OPENAINV_SALES_QT_DTLLIST_REPORT_SHOWGINV_SALES_QT_DTLLIST_REPORT_PREVIEWAINV_SALES_QT_DTLLIST_REPORT_OPENAINV_SALES_QT_OUTLIST_REPORT_SHOWGINV_SALES_QT_OUTLIST_REPORT_PREVIEWAINV_SALES_QT_OUTLIST_REPORT_OPEN?INV_SALES_QT_OUTDTL_REPORT_SHOWEINV_SALES_QT_OUTDTL_REPORT_PREVIEW?INV_SALES_QT_OUTDTL_REPORT_OPENAINV_SALES_SO_LISTING_REPORT_SHOWGINV_SALES_SO_LISTING_REPORT_PREVIEWAINV_SALES_SO_LISTING_REPORT_OPENAINV_SALES_SO_DTLLIST_REPORT_SHOWGINV_SALES_SO_DTLLIST_REPORT_PREVIEWAINV_SALES_SO_DTLLIST_REPORT_OPENAINV_SALES_SO_OUTLIST_REPORT_SHOWGINV_SALES_SO_OUTLIST_REPORT_PREVIEWAINV_SALES_SO_OUTLIST_REPORT_OPEN?INV_SALES_SO_OUTDTL_REPORT_SHOWEINV_SALES_SO_OUTDTL_REPORT_PREVIEW?INV_SALES_SO_OUTDTL_REPORT_OPENAINV_SALES_DO_LISTING_REPORT_SHOWGINV_SALES_DO_LISTING_REPORT_PREVIEWAINV_SALES_DO_LISTING_REPORT_OPENAINV_SALES_DO_DTLLIST_REPORT_SHOWGINV_SALES_DO_DTLLIST_REPORT_PREVIEWAINV_SALES_DO_DTLLIST_REPORT_OPENAINV_SALES_DO_OUTLIST_REPORT_SHOWGINV_SALES_DO_OUTLIST_REPORT_PREVIEWAINV_SALES_DO_OUTLIST_REPORT_OPEN?INV_SALES_DO_OUTDTL_REPORT_SHOWEINV_SALES_DO_OUTDTL_REPORT_PREVIEW?INV_SALES_DO_OUTDTL_REPORT_OPENAINV_SALES_IV_LISTING_REPORT_SHOWGINV_SALES_IV_LISTING_REPORT_PREVIEWAINV_SALES_IV_LISTING_REPORT_OPENAINV_SALES_IV_DTLLIST_REPORT_SHOWGINV_SALES_IV_DTLLIST_REPORT_PREVIEWAINV_SALES_IV_DTLLIST_REPORT_OPENAINV_SALES_CS_LISTING_REPORT_SHOWGINV_SALES_CS_LISTING_REPORT_PREVIEWAINV_SALES_CS_LISTING_REPORT_OPENAINV_SALES_CS_DTLLIST_REPORT_SHOWGINV_SALES_CS_DTLLIST_REPORT_PREVIEWAINV_SALES_CS_DTLLIST_REPORT_OPENAINV_SALES_CN_LISTING_REPORT_SHOWGINV_SALES_CN_LISTING_REPORT_PREVIEWAINV_SALES_CN_LISTING_REPORT_OPENAINV_SALES_CN_DTLLIST_REPORT_SHOWGINV_SALES_CN_DTLLIST_REPORT_PREVIEWAINV_SALES_CN_DTLLIST_REPORT_OPENAINV_SALES_DN_LISTING_REPORT_SHOWGINV_SALES_DN_LISTING_REPORT_PREVIEWAINV_SALES_DN_LISTING_REPORT_OPENAINV_SALES_DN_DTLLIST_REPORT_SHOWGINV_SALES_DN_DTLLIST_REPORT_PREVIEWAINV_SALES_DN_DTLLIST_REPORT_OPENAINV_SALES_XS_LISTING_REPORT_SHOWGINV_SALES_XS_LISTING_REPORT_PREVIEWAINV_SALES_XS_LISTING_REPORT_OPENAINV_SALES_XS_DTLLIST_REPORT_SHOWGINV_SALES_XS_DTLLIST_REPORT_PREVIEWAINV_SALES_XS_DTLLIST_REPORT_OPENAINV_SALES_DR_LISTING_REPORT_SHOWGINV_SALES_DR_LISTING_REPORT_PREVIEWAINV_SALES_DR_LISTING_REPORT_OPENAINV_SALES_DR_DTLLIST_REPORT_SHOWGINV_SALES_DR_DTLLIST_REPORT_PREVIEWAINV_SALES_DR_DTLLIST_REPORT_OPENGINV_PURCHASE_RQ_LISTING_REPORT_SHOWMINV_PURCHASE_RQ_LISTING_REPORT_PREVIEWGINV_PURCHASE_RQ_LISTING_REPORT_OPENGINV_PURCHASE_RQ_DTLLIST_REPORT_SHOWGINV_PURCHASE_RQ_DTLLIST_REPORT_OPENGINV_PURCHASE_PO_LISTING_REPORT_SHOWMINV_PURCHASE_PO_LISTING_REPORT_PREVIEWGINV_PURCHASE_PO_LISTING_REPORT_OPENGINV_PURCHASE_PO_DTLLIST_REPORT_SHOWGINV_PURCHASE_PO_DTLLIST_REPORT_OPENGINV_PURCHASE_PO_OUTLIST_REPORT_SHOWMINV_PURCHASE_PO_OUTLIST_REPORT_PREVIEWGINV_PURCHASE_PO_OUTLIST_REPORT_OPENEINV_PURCHASE_PO_OUTDTL_REPORT_SHOWKINV_PURCHASE_PO_OUTDTL_REPORT_PREVIEWEINV_PURCHASE_PO_OUTDTL_REPORT_OPENGINV_PURCHASE_GR_LISTING_REPORT_SHOWMINV_PURCHASE_GR_LISTING_REPORT_PREVIEWGINV_PURCHASE_GR_LISTING_REPORT_OPENGINV_PURCHASE_GR_DTLLIST_REPORT_SHOWGINV_PURCHASE_GR_DTLLIST_REPORT_OPENGINV_PURCHASE_GR_OUTLIST_REPORT_SHOWMINV_PURCHASE_GR_OUTLIST_REPORT_PREVIEWGINV_PURCHASE_GR_OUTLIST_REPORT_OPENEINV_PURCHASE_GR_OUTDTL_REPORT_SHOWKINV_PURCHASE_GR_OUTDTL_REPORT_PREVIEWEINV_PURCHASE_GR_OUTDTL_REPORT_OPENGINV_PURCHASE_PI_LISTING_REPORT_SHOWMINV_PURCHASE_PI_LISTING_REPORT_PREVIEWGINV_PURCHASE_PI_LISTING_REPORT_OPENGINV_PURCHASE_PI_DTLLIST_REPORT_SHOWGINV_PURCHASE_PI_DTLLIST_REPORT_OPENGINV_PURCHASE_CP_LISTING_REPORT_SHOWMINV_PURCHASE_CP_LISTING_REPORT_PREVIEWGINV_PURCHASE_CP_LISTING_REPORT_OPENGINV_PURCHASE_CP_DTLLIST_REPORT_SHOWGINV_PURCHASE_CP_DTLLIST_REPORT_OPENGINV_PURCHASE_PR_LISTING_REPORT_SHOWMINV_PURCHASE_PR_LISTING_REPORT_PREVIEWGINV_PURCHASE_PR_LISTING_REPORT_OPENGINV_PURCHASE_PR_DTLLIST_REPORT_SHOWGINV_PURCHASE_PR_DTLLIST_REPORT_OPENGINV_PURCHASE_XP_LISTING_REPORT_SHOWMINV_PURCHASE_XP_LISTING_REPORT_PREVIEWGINV_PURCHASE_XP_LISTING_REPORT_OPENGINV_PURCHASE_XP_DTLLIST_REPORT_SHOWGINV_PURCHASE_XP_DTLLIST_REPORT_OPENGINV_PURCHASE_GT_LISTING_REPORT_SHOWMINV_PURCHASE_GT_LISTING_REPORT_PREVIEWGINV_PURCHASE_GT_LISTING_REPORT_OPENGINV_PURCHASE_GT_DTLLIST_REPORT_SHOWGINV_PURCHASE_GT_DTLLIST_REPORT_OPEN	1.47TOOLS_SOP_SHOWTOOLS_SOP_OPEN	1.481INQ_ITEM_PKG_DETAIL_SHOW1INQ_ITEM_PKG_DETAIL_OPEN7INQ_ITEM_PKG_DETAIL_PREVIEW3INQ_ITEM_PKG_DETAIL_PRINT5INQ_ITEM_PKG_DETAIL_EXPORT	1.495TOOLS_CLEAR_NO_TRX_SN_SHOW5TOOLS_CLEAR_NO_TRX_SN_OPEN	1.507INV_SALES_XS_EDIT_UNITPRICE7INV_SALES_DR_EDIT_UNITPRICE=INV_PURCHASE_RQ_EDIT_UNITPRICE=INV_PURCHASE_PO_EDIT_UNITPRICE=INV_PURCHASE_GR_EDIT_UNITPRICE=INV_PURCHASE_PI_EDIT_UNITPRICE=INV_PURCHASE_CP_EDIT_UNITPRICE=INV_PURCHASE_PR_EDIT_UNITPRICE=INV_PURCHASE_XP_EDIT_UNITPRICE=INV_PURCHASE_GT_EDIT_UNITPRICE	1.51'GM_ACCESSRIGHT_EDITGM_USER_OPEN	1.52/INV_SALES_DO_VIEW_PRICE	1.53%IE_EXPORT_ALL_SHOW+IE_EXPORT_MASTER_SHOW%IE_EXPORT_ALL_OPEN	1.54KGL_REPORT_WITHHOLDING_TAXLISTING_SHOWKGL_REPORT_WITHHOLDING_TAXLISTING_OPENQGL_REPORT_WITHHOLDING_TAXLISTING_PREVIEWMGL_REPORT_WITHHOLDING_TAXLISTING_PRINTOGL_REPORT_WITHHOLDING_TAXLISTING_EXPORT	1.557STK_ADJ_LISTING_REPORT_SHOW=STK_ADJ_LISTING_REPORT_PREVIEW7STK_ADJ_LISTING_REPORT_OPEN7STK_ADJ_DTLLIST_REPORT_SHOW=STK_ADJ_DTLLIST_REPORT_PREVIEW7STK_ADJ_DTLLIST_REPORT_OPEN7STK_ISS_LISTING_REPORT_SHOW=STK_ISS_LISTING_REPORT_PREVIEW7STK_ISS_LISTING_REPORT_OPEN7STK_ISS_DTLLIST_REPORT_SHOW=STK_ISS_DTLLIST_REPORT_PREVIEW7STK_ISS_DTLLIST_REPORT_OPEN7STK_RCV_LISTING_REPORT_SHOW=STK_RCV_LISTING_REPORT_PREVIEW7STK_RCV_LISTING_REPORT_OPEN7STK_RCV_DTLLIST_REPORT_SHOW=STK_RCV_DTLLIST_REPORT_PREVIEW7STK_RCV_DTLLIST_REPORT_OPEN9STK_WOFF_LISTING_REPORT_SHOW?STK_WOFF_LISTING_REPORT_PREVIEW9STK_WOFF_LISTING_REPORT_OPEN9STK_WOFF_DTLLIST_REPORT_SHOW?STK_WOFF_DTLLIST_REPORT_PREVIEW9STK_WOFF_DTLLIST_REPORT_OPEN9STK_XFER_LISTING_REPORT_SHOW?STK_XFER_LISTING_REPORT_PREVIEW9STK_XFER_LISTING_REPORT_OPEN9STK_XFER_DTLLIST_REPORT_SHOW?STK_XFER_DTLLIST_REPORT_PREVIEW9STK_XFER_DTLLIST_REPORT_OPEN;STK_UConv_LISTING_REPORT_SHOWASTK_UConv_LISTING_REPORT_PREVIEW;STK_UConv_LISTING_REPORT_OPEN;STK_UConv_DTLLIST_REPORT_SHOWASTK_UConv_DTLLIST_REPORT_PREVIEW;STK_UConv_DTLLIST_REPORT_OPEN;STK_UCost_LISTING_REPORT_SHOWASTK_UCost_LISTING_REPORT_PREVIEW;STK_UCost_LISTING_REPORT_OPEN;STK_UCost_DTLLIST_REPORT_SHOWASTK_UCost_DTLLIST_REPORT_PREVIEW;STK_UCost_DTLLIST_REPORT_OPEN	1.56AR_CN_KNOCK_OFFAR_CN_EDIT!AR_PMT_KNOCK_OFFAR_PMT_EDITAR_RF_KNOCK_OFFAR_RF_EDIT-AR_AP_CONTRA_KNOCK_OFF#AR_AP_CONTRA_EDITAP_CN_KNOCK_OFFAP_CN_EDIT!AP_PMT_KNOCK_OFFAP_PMT_EDITAP_RF_KNOCK_OFFAP_RF_EDIT1INV_SALES_IV_EDIT_POSTGL1INV_SALES_CS_EDIT_POSTGL1INV_SALES_CN_EDIT_POSTGL1INV_SALES_DN_EDIT_POSTGL7INV_PURCHASE_PI_EDIT_POSTGL7INV_PURCHASE_CP_EDIT_POSTGL7INV_PURCHASE_PR_EDIT_POSTGL	1.57-TOOLS_CC_PAYMENTMETHOD	1.58?IE_EXPORT_CONSOLIDATE_DATA_SHOW?IE_EXPORT_CONSOLIDATE_DATA_OPEN	1.59GM_MEMBER_SHOWGM_MEMBER_OPENGM_MEMBER_NEWGM_MEMBER_EDIT!GM_MEMBER_DELETE%GM_MEMBERTYPE_OPEN#GM_MEMBERTYPE_NEW%GM_MEMBERTYPE_EDIT)GM_MEMBERTYPE_DELETEGM_RACE_OPENGM_RACE_NEWGM_RACE_EDITGM_RACE_DELETE	1.60%GM_MEMBERTYPE_SHOWGM_RACE_SHOW	1.613I_XL_IMPORT_CREDITOR_OPEN3I_XL_IMPORT_CREDITOR_SHOW/I_XL_IMPORT_DEBTOR_OPEN/I_XL_IMPORT_DEBTOR_SHOW/I_XL_IMPORT_MEMBER_OPEN/I_XL_IMPORT_MEMBER_SHOW	1.62/GM_MEMBER_REPORT_EXPORT+GM_MEMBER_REPORT_OPEN1GM_MEMBER_REPORT_PREVIEW-GM_MEMBER_REPORT_PRINT	1.63)INQ_NEGATIVE_SN_SHOW)INQ_NEGATIVE_SN_OPEN	1.64;INQ_ITEM_PKG_TRANS_SALES_SHOWAINQ_ITEM_PKG_TRANS_PURCHASE_SHOW	1.65	1.66	1.67	1.68	1.69	1.70	1.71	1.72	1.73	1.74	1.75	1.76	1.77	1.78	1.79	1.80	1.81	1.82	1.83	1.84	1.85	1.86	1.87	1.88	1.89	1.90	1.91	1.92	1.93	1.94	1.95	1.96	1.97	1.98	1.99INV_SALES_CSGN'INV_SALES_CSGN_SHOW'INV_SALES_CSGN_OPEN%INV_SALES_CSGN_NEW'INV_SALES_CSGN_EDIT'INV_SALES_CSGN_VIEW+INV_SALES_CSGN_DELETE+INV_SALES_CSGN_CANCEL3INV_SALES_CSGN_EDIT_DOCNOEINV_SALES_CSGN_CHANGE_DOCNO_FORMATAINV_SALES_CSGN_SAVE_NEGATIVE_QTY3INV_SALES_CSGN_DOC_REPORTCINV_SALES_CSGN_DOC_REPORT_PREVIEW?INV_SALES_CSGN_DOC_REPORT_PRINTAINV_SALES_CSGN_DOC_REPORT_EXPORT;INV_SALES_CSGN_LISTING_REPORTKINV_SALES_CSGN_LISTING_REPORT_PREVIEWGINV_SALES_CSGN_LISTING_REPORT_PRINTIINV_SALES_CSGN_LISTING_REPORT_EXPORTEINV_SALES_CSGN_LISTING_REPORT_SHOWEINV_SALES_CSGN_LISTING_REPORT_OPEN;INV_SALES_CSGN_DTLLIST_REPORTKINV_SALES_CSGN_DTLLIST_REPORT_PREVIEWGINV_SALES_CSGN_DTLLIST_REPORT_PRINTIINV_SALES_CSGN_DTLLIST_REPORT_EXPORTEINV_SALES_CSGN_DTLLIST_REPORT_SHOWEINV_SALES_CSGN_DTLLIST_REPORT_OPEN-INV_SALES_CSGN_PRINTED;INV_SALES_CSGN_PRINTED_CANCEL;INV_SALES_CSGN_PRINTED_DELETE7INV_SALES_CSGN_PRINTED_EDIT=INV_SALES_CSGN_PRINTED_PREVIEW9INV_SALES_CSGN_PRINTED_PRINT;INV_SALES_CSGN_PRINTED_EXPORT1INV_SALES_REPORT_OUTCSGNAINV_SALES_REPORT_OUTCSGN_PREVIEW=INV_SALES_REPORT_OUTCSGN_PRINT?INV_SALES_REPORT_OUTCSGN_EXPORT;INV_SALES_REPORT_OUTCSGN_SHOW;INV_SALES_REPORT_OUTCSGN_OPEN#INV_PURCHASE_CSGN-INV_PURCHASE_CSGN_SHOW-INV_PURCHASE_CSGN_OPEN+INV_PURCHASE_CSGN_NEW-INV_PURCHASE_CSGN_EDIT-INV_PURCHASE_CSGN_VIEW1INV_PURCHASE_CSGN_DELETE1INV_PURCHASE_CSGN_CANCEL9INV_PURCHASE_CSGN_EDIT_DOCNOKINV_PURCHASE_CSGN_CHANGE_DOCNO_FORMAT9INV_PURCHASE_CSGN_DOC_REPORTIINV_PURCHASE_CSGN_DOC_REPORT_PREVIEWEINV_PURCHASE_CSGN_DOC_REPORT_PRINTGINV_PURCHASE_CSGN_DOC_REPORT_EXPORTAINV_PURCHASE_CSGN_LISTING_REPORTQINV_PURCHASE_CSGN_LISTING_REPORT_PREVIEWMINV_PURCHASE_CSGN_LISTING_REPORT_PRINTOINV_PURCHASE_CSGN_LISTING_REPORT_EXPORTKINV_PURCHASE_CSGN_LISTING_REPORT_SHOWKINV_PURCHASE_CSGN_LISTING_REPORT_OPENAINV_PURCHASE_CSGN_DTLLIST_REPORTQINV_PURCHASE_CSGN_DTLLIST_REPORT_PREVIEWMINV_PURCHASE_CSGN_DTLLIST_REPORT_PRINTOINV_PURCHASE_CSGN_DTLLIST_REPORT_EXPORTKINV_PURCHASE_CSGN_DTLLIST_REPORT_SHOWKINV_PURCHASE_CSGN_DTLLIST_REPORT_OPEN3INV_PURCHASE_CSGN_PRINTEDAINV_PURCHASE_CSGN_PRINTED_CANCELAINV_PURCHASE_CSGN_PRINTED_DELETE=INV_PURCHASE_CSGN_PRINTED_EDITCINV_PURCHASE_CSGN_PRINTED_PREVIEW?INV_PURCHASE_CSGN_PRINTED_PRINTAINV_PURCHASE_CSGN_PRINTED_EXPORT7INV_PURCHASE_REPORT_OUTCSGNGINV_PURCHASE_REPORT_OUTCSGN_PREVIEWCINV_PURCHASE_REPORT_OUTCSGN_PRINTEINV_PURCHASE_REPORT_OUTCSGN_EXPORTAINV_PURCHASE_REPORT_OUTCSGN_SHOWAINV_PURCHASE_REPORT_OUTCSGN_OPEN1ADMINS,FINANCEMGR,INVMGR2.12.2STK_DA_SHOWSTK_DA_OPENSTK_DA_NEWSTK_DA_EDITSTK_DA_VIEWSTK_DA_DELETE#STK_DA_EDIT_DOCNO3STK_DA_DOC_REPORT_PREVIEW/STK_DA_DOC_REPORT_PRINT1STK_DA_DOC_REPORT_EXPORT;STK_DA_LISTING_REPORT_PREVIEW7STK_DA_LISTING_REPORT_PRINT9STK_DA_LISTING_REPORT_EXPORT;STK_DA_DTLLIST_REPORT_PREVIEW7STK_DA_DTLLIST_REPORT_PRINT9STK_DA_DTLLIST_REPORT_EXPORTSTK_DA_CANCEL5STK_DA_CHANGE_DOCNO_FORMAT+STK_DA_PRINTED_CANCEL+STK_DA_PRINTED_DELETE'STK_DA_PRINTED_EDIT-STK_DA_PRINTED_PREVIEW)STK_DA_PRINTED_PRINT+STK_DA_PRINTED_EXPORTCINV_SALES_REPORT_CG_MOVEMENT_SHOWCINV_SALES_REPORT_CG_MOVEMENT_OPENIINV_SALES_REPORT_CG_MOVEMENT_PREVIEWEINV_SALES_REPORT_CG_MOVEMENT_PRINTGINV_SALES_REPORT_CG_MOVEMENT_EXPORT2.3GTOOLS_EDITING_DOCUMENT_MONITOR_SHOWGTOOLS_EDITING_DOCUMENT_MONITOR_OPEN2.4AADMINS,INVMGR,ACCOUNTS,PURCHASES2.52.62.72.82.9	2.10	2.11	2.12	2.13	2.14	2.15	2.16	2.17	2.18	2.19	2.20	2.21'GM_ACCESSRIGHT_OPEN	2.22	2.23	2.24IINV_PURCHASE_REPORT_PG_MOVEMENT_SHOWIINV_PURCHASE_REPORT_PG_MOVEMENT_OPENOINV_PURCHASE_REPORT_PG_MOVEMENT_PREVIEWKINV_PURCHASE_REPORT_PG_MOVEMENT_PRINTMINV_PURCHASE_REPORT_PG_MOVEMENT_EXPORT	2.25'STK_ITEM_BATCH_EDIT	2.26	2.27	2.28+AP_PMT_PRINTED_CANCEL+AP_PMT_PRINTED_DELETE'AP_PMT_PRINTED_EDIT+AP_PMT_PRINTED_EXPORT-AP_PMT_PRINTED_PREVIEW)AP_PMT_PRINTED_PRINT)AP_RF_PRINTED_CANCEL)AP_RF_PRINTED_DELETE%AP_RF_PRINTED_EDIT)AP_RF_PRINTED_EXPORT+AP_RF_PRINTED_PREVIEW'AP_RF_PRINTED_PRINT+AR_PMT_PRINTED_CANCEL+AR_PMT_PRINTED_DELETE'AR_PMT_PRINTED_EDIT+AR_PMT_PRINTED_EXPORT-AR_PMT_PRINTED_PREVIEW)AR_PMT_PRINTED_PRINT)AR_RF_PRINTED_CANCEL)AR_RF_PRINTED_DELETE%AR_RF_PRINTED_EDIT)AR_RF_PRINTED_EXPORT+AR_RF_PRINTED_PREVIEW'AR_RF_PRINTED_PRINT	2.29+STK_ASM_XFER_ASMORDER	2.30	2.31	2.32	2.33	2.34	2.35	2.36	2.37	2.38ADMINS,ACCOUNTS	2.39	2.40	2.41-ADMINS,ACCOUNTS,INVMGR	2.42	2.43	2.44	2.45	2.46	2.47	2.48ARInvoiceDTLARDNDTLARCNDTLAPInvoiceDTLAPDNDTLAPCNDTLARPaymentARPaymentDTLARRefundARRefundDTLAPPaymentAPPaymentDTLAPRefundAPRefundDTLsSELECT DtlKey, CurrencyRate, Amount, B.Tax, TaxType FROM 	 A, 5 B WHERE A.DocKey=B.DocKeyUPDATE �� SET SubTotal=@SubTotal, LocalSubTotal=@LocalSubTotal WHERE DtlKey=@DtlKey@DtlKey@SubTotal@LocalSubTotal��SELECT DocKey, CurrencyRate, Total, LocalTotal, LocalNetTotal FROM CSELECT Amount, Tax, TaxType FROM + WHERE DocKey=@DocKey@DocKey� SET Total=@Total, LocalTotal=@LocalTotal, Total2=@Total2, LocalTotal2=@LocalTotal2, ExTax=@ExTax, LocalExTax=@LocalExTax WHERE DocKey=@DocKey
@Total@LocalTotal@Total2@LocalTotal2
@ExTax@LocalExTax[SELECT DtlKey, ToHomeRate, B.PaymentAmt FROM u SET LocalPaymentAmt=@LocalPaymentAmt WHERE DtlKey=@DtlKey!@LocalPaymentAmtYUPDATE CB SET ExTax=Tax, LocalExTax=LocalTax��SELECT A.DtlKey, A.Tax, B.CurrencyRate FROM CBDTL A, CB B WHERE A.DocKey=B.DocKeyqUPDATE CBDTL SET LocalTax=@LocalTax WHERE DtlKey=@DtlKey@LocalTaxFooter1TaxTypeFooter1AmtFooter1TaxFooter1LocalTaxFooter2TaxTypeFooter2AmtFooter2TaxFooter2LocalTaxFooter3TaxTypeFooter3AmtFooter3TaxFooter3LocalTaxExTaxLocalExTaxselect * from �Select A.* From {0} A Where (A.Footer1TaxType is not null OR A.Footer2TaxType is not null OR A.Footer3TaxType is not null OR A.Tax > 0)��SELECT A.DtlKey, A.SubTotalExTax, A.SubTotal, A.LocalTax, A.Tax, B.CurrencyRate FROM {0}DTL A, {0} B WHERE A.DocKey=B.DocKeySubTotalExTaxeSELECT DtlKey, SubTotalExTax, LocalTax FROM {0}DTLlblVersionInfosbtnYes
sbtnNosbtnBackuplblOldVerlblNewVer'FormUpgradeDatabase+AutoCount.AccessRight1AutoCount.Authentication7AutoCount.Common.FormatInfoAutoCountAutoCount.Data!AutoCount.Report'AutoCount.XtraUtils!AutoCount.CommonApplication=DBRegistry\.CreateDBRegistry\(%DBRegistry.Create(E\n.+,\s*BCE\.Application\.IAppFormK\n.+,\s*(BCE\.Application\.|)IAppForm�	[^\w.]BCE\.Application\.Application\.(GetFullProductVersion|GetCompleteProductVersion|GetProductVersion|GetMajorMinorProductVersion)�[^\w.](BCE\.Application\.|)Application\.(GetFullProductVersion|GetCompleteProductVersion|GetProductVersion|GetMajorMinorProductVersion)��[^\w.]BCE\.Application\.Application\.(GetStartupFile|CommonApplicationDataPath|ApplicationDataPath)��[^\w.](BCE\.Application\.|)Application\.(GetStartupFile|CommonApplicationDataPath|ApplicationDataPath)��[^\w.]BCE\.Application\.Application\.(SaveSettings|LoadSettings|UserSettingDataPath|SaveUserSettings|LoadUserSettings)\(��[^\w.](BCE\.Application\.|)Application\.(SaveSettings|LoadSettings|UserSettingDataPath|SaveUserSettings|LoadUserSettings)\(WBCE\.Application\.Application\.(OEM|AppOEM)](BCE\.Application\.|)Application\.(OEM|AppOEM)?Application.OEM.GetCurrentOEM()UBCE\.Win32\.Helper\.SetUniqueWindowCaptioniAutoCount.WinForms.FormHelper.SetUniqueWindowCaptionUWinForms.FormHelper.SetUniqueWindowCaption��[^\w.]BCE\.Application\.(AccessRight|AccessRightListenerDelegate|AccessRightOverrideDelegate|DBSession)��[^\w.](BCE\.Application\.|)(AccessRight|AccessRightListenerDelegate|AccessRightOverrideDelegate|DBSession)��[^\w.]BCE\.Data\.(FormVerifyCurrentPassword|FormGetUserPassword|FormAccessDenied)��[^\w.](((BCE\.AutoCount\.|)Common\.|)FormatInfo\.|)CustomDisplayFormatInfo��[^\w.]((BCE\.AutoCount\.|)Common\.|)FormatInfo\.CustomDisplayFormatInfo��[^\w.](BCE\.AutoCount\.Common\.FormatInfo\.|Common\.FormatInfo\.|)CustomDisplayFormatInfo��[^\w.](BCE\.AutoCount\.|)Common\.FormatInfo\.CustomDisplayFormatInfo��[^\w.](BCE\.AutoCount\.Common\.|FormatInfo\.|)CustomDisplayFormatInfo��[^\w.](BCE\.AutoCount\.Common\.|FormatInfo\.)CustomDisplayFormatInfo��[^\w.](BCE\.AutoCount\.Common\.FormatInfo\.|)CustomDisplayFormatInfo��[^\w.]BCE\.AutoCount\.Common\.FormatInfo\.CustomDisplayFormatInfo��[^\w.]((BCE\.AutoCount\.|)XtraUtils\.|)DefaultLookupEditBuilder\.}[^\w.](BCE\.AutoCount\.|)XtraUtils\.DefaultLookupEditBuilder\.}[^\w.](BCE\.AutoCount\.XtraUtils\.|)DefaultLookupEditBuilder\.w[^\w.]BCE\.AutoCount\.XtraUtils\.DefaultLookupEditBuilder\.��[^\w.]((BCE\.AutoCount\.|)XtraUtils\.|)ColumnViewUtils\.BuildSQLStatement\(��[^\w.](BCE\.AutoCount\.|)XtraUtils\.ColumnViewUtils\.BuildSQLStatement\(��[^\w.](BCE\.AutoCount\.XtraUtils\.|)ColumnViewUtils\.BuildSQLStatement\(��[^\w.]BCE\.AutoCount\.XtraUtils\.ColumnViewUtils\.BuildSQLStatement\(��[^\w.]new\s+((BCE\.AutoCount\.|)XtraUtils\.|)FormControlUtil\(.*\)[^\w.]new\s+(BCE\.AutoCount\.|)XtraUtils\.FormControlUtil\(.*\)[^\w.]new\s+(BCE\.AutoCount\.XtraUtils\.|)FormControlUtil\(.*\)y[^\w.]new\s+BCE\.AutoCount\.XtraUtils\.FormControlUtil\(.*\)G[^\w.]BCE\.AutoCount\.AccessRight\.M[^\w.](BCE\.AutoCount\.|)AccessRight\.g[^\w.]BCE\.AutoCount\.FilterUI\.UC\w+\.Initialize\(m[^\w.](BCE\.AutoCount\.|)FilterUI\.UC\w+\.Initialize\(��[^\w.]BCE\.AutoCount\.MainEntry\.MainEntry\.(SubProjectStartup|CustomProjectStartup)\(��[^\w.](BCE\.AutoCount\.|)MainEntry\.MainEntry\.(SubProjectStartup|CustomProjectStartup)\(��[^\w.]BCE\.AutoCount\.MainEntry\.Startup\.(SubProjectStartup|SubProjectStartupWithLogin|RunMainForm)\(��[^\w.](BCE\.AutoCount\.|)MainEntry\.Startup\.(SubProjectStartup|SubProjectStartupWithLogin|RunMainForm)\(q[^\w.]BCE\.AutoCount\.MainEntry\.Startup\.ShutDown\(.*\)w[^\w.](BCE\.AutoCount\.|)MainEntry\.Startup\.ShutDown\(.*\)�i[^\w.]BCE\.AutoCount\.Application\.(UserSettingDataPath|SaveSettings|LoadSettings|SaveUserSettings|LoadUserSettings|LoadCacheData|SaveCacheData|LoadCriteriaData|SaveCriteriaData)\(�o[^\w.](BCE\.AutoCount\.|)Application\.(UserSettingDataPath|SaveSettings|LoadSettings|SaveUserSettings|LoadUserSettings|LoadCacheData|SaveCacheData|LoadCriteriaData|SaveCriteriaData)\(U[^\w.]BCE\.AutoCount\.SystemOptionPolicy\.[[^\w.](BCE\.AutoCount\.|)SystemOptionPolicy\.��[^\w.]BCE\.AutoCount\.Application\.(DefaultDatabaseFolder|SelectedDatabaseInfo|DatabaseManager|AppConfig)��[^\w.](BCE\.AutoCount\.|)Application\.(DefaultDatabaseFolder|SelectedDatabaseInfo|DatabaseManager|AppConfig)g[^\w.]BCE\.AutoCount\.Application\.ProfilingLogPathm[^\w.](BCE\.AutoCount\.|)Application\.ProfilingLogPathW[^\w.]new\s+BCE\.AutoCount\.GL\.BankTrans\(][^\w.]new\s+(BCE\.AutoCount\.|)GL\.BankTrans\(}[^\w.]new\s+BCE\.AutoCount\.Tax\.(TaxTrans|WithholdingTrans)\(��[^\w.]new\s+(BCE\.AutoCount\.|)Tax\.(TaxTrans|WithholdingTrans)\(_[^\w.]new\s+BCE\.AutoCount\.Stock\.StockTrans\(e[^\w.]new\s+(BCE\.AutoCount\.|)Stock\.StockTrans\(��[^\w.]new\s+BCE\.AutoCount\.Common\.AuditTrail\.DocumentAuditTrail\(��[^\w.]new\s+(BCE\.AutoCount\.|)Common\.AuditTrail\.DocumentAuditTrail\({[^\w.]new\s+BCE\.AutoCount\.CommonForms\.FormRichTextEditor\(��[^\w.]new\s+(BCE\.AutoCount\.|)CommonForms\.FormRichTextEditor\(��[^\w.]BCE\.AutoCount\.FaxHelper\.(SendFaxToCreditor|SendFaxToDebtor)\(��[^\w.](BCE\.AutoCount\.|)FaxHelper\.(SendFaxToCreditor|SendFaxToDebtor)\(g[^\w.]BCE\.AutoCount\.Application\.ModuleControllerm[^\w.](BCE\.AutoCount\.|)Application\.ModuleControllerm[^\w.]BCE\.AutoCount\.Application\.CurrentUser\.UserIDs[^\w.](BCE\.AutoCount\.|)Application\.CurrentUser\.UserIDg[^\w.]BCE\.AutoCount\.Application\.DefaultAccount\.m[^\w.](BCE\.AutoCount\.|)Application\.DefaultAccount\.w[^\w.]BCE\.AutoCount\.Application\.TempDocumentSetting\.\w+}[^\w.](BCE\.AutoCount\.|)Application\.TempDocumentSetting\.\w+_[^\w.]BCE\.AutoCount\.Application\.BonusPoint\.e[^\w.](BCE\.AutoCount\.|)Application\.BonusPoint\.��[^\w.]BCE\.AutoCount\.Application\.(EncodeStockCost|ZeroCurrencyAsEmptyFormatString|ZeroCurrencyAsDashFormatString)��[^\w.](BCE\.AutoCount\.|)Application\.(EncodeStockCost|ZeroCurrencyAsEmptyFormatString|ZeroCurrencyAsDashFormatString)��[^\w.]BCE\.AutoCount\.Application\.(LocalCurrency|SearchCommandTimeout|CommandTimeout|CompanyProfile|ShortDateFormat|FormatDate|FormatBoolean|RemoteCreditControlPoolingInterval|RefreshCurrency)��[^\w.](BCE\.AutoCount\.|)Application\.(LocalCurrency|SearchCommandTimeout|CommandTimeout|CompanyProfile|ShortDateFormat|FormatDate|FormatBoolean|RemoteCreditControlPoolingInterval|RefreshCurrency)��[^\w.]BCE\.AutoCount\.Application\.DBSession\.(LoginUserID|IsLogin|Logout|Login)��[^\w.](BCE\.AutoCount\.|)Application\.DBSession\.(LoginUserID|IsLogin|Logout|Login)��[^\w.]BCE\.AutoCount\.Application\.(Login|AccessRight|FilterAgent|MainLocation|DefaultProject|DefaultDepartment|CheckAuthorizedAccess|RefreshFilterAgent|AutoCheckPendingCreditControl|NetworkUserType|Authenticate)��[^\w.](BCE\.AutoCount\.|)Application\.(Login|AccessRight|FilterAgent|MainLocation|DefaultProject|DefaultDepartment|CheckAuthorizedAccess|RefreshFilterAgent|AutoCheckPendingCreditControl|NetworkUserType|Authenticate)Y[^\w.]BCE\.AutoCount\.Application\.Format\w+_[^\w.](BCE\.AutoCount\.|)Application\.Format\w+m[^\w.]BCE\.AutoCount\.Application\.RoundTo\w+DBDecimals[^\w.](BCE\.AutoCount\.|)Application\.RoundTo\w+DBDecimalW[^\w.]BCE\.AutoCount\.Application\.Round\w*][^\w.](BCE\.AutoCount\.|)Application\.Round\w*[[^\w.]BCE\.AutoCount\.Application\.\w+Decimala[^\w.](BCE\.AutoCount\.|)Application\.\w+Decimal��[^\w.]((BCE\.AutoCount\.|)Data\.|)SqlDataAccess\.GetDocumentPrintCount��[^\w.](BCE\.AutoCount\.|)Data\.SqlDataAccess\.GetDocumentPrintCount��[^\w.](BCE\.AutoCount\.Data\.|)SqlDataAccess\.GetDocumentPrintCount��[^\w.]BCE\.AutoCount\.Data\.SqlDataAccess\.GetDocumentPrintCount��[^\w.]((BCE\.AutoCount\.|)Data\.|)SqlDataAccess\.LoadSingleDataRow\(��[^\w.](BCE\.AutoCount\.|)Data\.SqlDataAccess\.LoadSingleDataRow\(��[^\w.](BCE\.AutoCount\.Data\.|)SqlDataAccess\.LoadSingleDataRow\(}[^\w.]BCE\.AutoCount\.Data\.SqlDataAccess\.LoadSingleDataRow\({[^\w.]((BCE\.AutoCount\.|)Data\.|)CommonRecordUtils\.Get\w+\(u[^\w.](BCE\.AutoCount\.|)Data\.CommonRecordUtils\.Get\w+\(u[^\w.](BCE\.AutoCount\.Data\.|)CommonRecordUtils\.Get\w+\(o[^\w.]BCE\.AutoCount\.Data\.CommonRecordUtils\.Get\w+\(w[^\w.]new\s+((BCE\.AutoCount\.|)Report\.|)ReportDrillDown\(q[^\w.]new\s+(BCE\.AutoCount\.|)Report\.ReportDrillDown\(q[^\w.]new\s+(BCE\.AutoCount\.Report\.|)ReportDrillDown\(k[^\w.]new\s+BCE\.AutoCount\.Report\.ReportDrillDown\(��[^\w.]new\s+((BCE\.AutoCount\.|)Report\.|)DocumentReportDataSet\(}[^\w.]new\s+(BCE\.AutoCount\.|)Report\.DocumentReportDataSet\(}[^\w.]new\s+(BCE\.AutoCount\.Report\.|)DocumentReportDataSet\(w[^\w.]new\s+BCE\.AutoCount\.Report\.DocumentReportDataSet\(w[^\w.]new\s+((BCE\.AutoCount\.|)Report\.|)ReportFormatter\(q[^\w.]new\s+(BCE\.AutoCount\.|)Report\.ReportFormatter\(q[^\w.]new\s+(BCE\.AutoCount\.Report\.|)ReportFormatter\(k[^\w.]new\s+BCE\.AutoCount\.Report\.ReportFormatter\(��[^\w.]((BCE\.AutoCount\.|)Common\.|)(TaxSupplyPurchase|TaxType|TaxRecord|TaxTypeNotFoundException)��[^\w.](BCE\.AutoCount\.|)Common\.(TaxSupplyPurchase|TaxType|TaxRecord|TaxTypeNotFoundException)��[^\w.](BCE\.AutoCount\.Common\.|)(TaxSupplyPurchase|TaxType|TaxRecord|TaxTypeNotFoundException)��[^\w.]BCE\.AutoCount\.Common\.(TaxSupplyPurchase|TaxType|TaxRecord|TaxTypeNotFoundException)K[^w.]namespace\s+(?<namespace>[\w.]+)K[^w.]Namespace\s+(?<namespace>[\w.]+)C,\s*(BCE\.Application\.|)IAppFormS
[Application.SingleInstanceThreadForm()]7Application.ProductVersion.1Application.Application.Application./Application.PathHelper.+Application.DBSettingAApplication.Properties.DBSettingQSettings.DecimalSetting.GetOrCreate({0})eAutoCount.Settings.DecimalSetting.GetOrCreate({0})QSettings.GeneralSetting.GetOrCreate({0})eAutoCount.Settings.GeneralSetting.GetOrCreate({0})eAuthentication.UserAuthentication.GetOrCreate({0})yAutoCount.Authentication.UserAuthentication.GetOrCreate({0})=AutoCount.Serialization.Utils.SaveSettings(SaveSetting(LoadSettings(LoadSetting(#SaveUserSettings(!SaveUserSetting(#LoadUserSettings(!LoadUserSetting(#LoadCriteriaData(#SaveCriteriaData(/Application.DBSetting, EApplication.Properties.DBSetting, 'DatabaseManagement.;AutoCount.DatabaseManagement.)SelectedDatabaseInfo%ActiveDatabaseInfoDatabaseManager/Default.DatabaseManagerAppConfig#Default.AppConfigmSystemOptionPolicy.GetOrCreate(Application.DBSetting).��AutoCount.SystemOptionPolicy.GetOrCreate(Application.Properties.DBSetting).)GetProfilerLogPath()��LicenseControl.ModuleControl.GetOrCreate(Application.DBSetting).��AutoCount.LicenseControl.ModuleControl.GetOrCreate(Application.Properties.DBSetting).!ModuleControllerDocumentHelper.)Data.DocumentHelper.EAutoCount.Document.DocumentHelper.+GetDocumentPrintCountAuthentication.3AutoCount.Authentication.Data./DecimalNumberFormatInfoCAutoCount.DecimalNumberFormatInfoyDefaultLookupEditBuilder.GetOrCreate(Application.DBSetting).��XtraUtils.DefaultLookupEditBuilder.GetOrCreate(Application.DBSetting).��AutoCount.XtraUtils.DefaultLookupEditBuilder.GetOrCreate(Application.Properties.DBSetting).cColumnViewUtils.BuildSQLColumnListFromColumnView(wXtraUtils.ColumnViewUtils.BuildSQLColumnListFromColumnView(��AutoCount.XtraUtils.ColumnViewUtils.BuildSQLColumnListFromColumnView(FilterUI.9AutoCount.Controls.FilterUI.UCInitialize(5MainEntry.Startup.Default.IAutoCount.MainEntry.Startup.Default.Startup.)CustomProjectStartup5SubProjectStartupWithLoginShutdown()��Settings.DefaultAccountSetting.GetOrCreate(Application.DBSetting).��AutoCount.Settings.DefaultAccountSetting.GetOrCreate(Application.Properties.DBSetting).)TempDocumentSetting.3ReportDesigner_SnapToGrid/ReportDesigner_DrawGriduSettings.ReportSetting.GetOrCreate(Application.DBSetting).��AutoCount.Settings.ReportSetting.GetOrCreate(Application.Properties.DBSetting).KSettings.TempDocumentSetting.Default._AutoCount.Settings.TempDocumentSetting.Default.}Settings.BonusPointSetting.GetOrCreate(Application.DBSetting).��AutoCount.Settings.BonusPointSetting.GetOrCreate(Application.Properties.DBSetting).EncodeStockCost#FormatEncodedCostRefreshCurrencyLoadCurrencyAutoCount.Tax.Common.DBSession.LoginUserID+CheckAuthorizedAccessCheckHasLoginedAuthenticateEAuthentication.UserAuthentication.YAutoCount.Authentication.UserAuthentication.PriceDecimal#SalesPriceDecimal
FormatPriceSalesPriceRoundToDBDecimalRound��__report\s*=\s*Report\s*as\s*BCE\.AutoCount\.Report\.BaseReport\s*;��\s*\(\s*object\s+sender\s*,\s*System\.ComponentModel\.CancelEventArgs\s+e\s*\)\s*{}__report\s*=\s*Report\s*as\s*AutoCount\.Report\.BaseReport\s*;�=\s*((AutoCount\.Authentication\.|Authentication\.|)UserAuthentication\.GetOrCreate\((__report.DBSetting|\w+)\)|__report\.UserAuthentication)g(AutoCount\.Application\.|Application\.)DBSession\.+__report.UserSession.��new\s+(AutoCount\.Report\.|Report\.|)ReportDrillDown\s*\(\s*(__report\.DBSetting|\w+\.\w+|\w+)s*\,��(AutoCount\.Application\.Properties\.|AutoCount\.Application\.|Application\.)DBSettingy[^\w.](AutoCount\.Application\.|Application\.)Format\w+\s*\(-= __report.UserSession(-(__report.UserSession,9__report.DecimalSetting.{0}(BCE\.\w+(\.|\;)��[^\w.](AutoCount\.Authentication\.|Authentication\.|)UserAuthentication\s+(\W+)?\w+[^\w.](AutoCount\.Common\.|Common\.|)DocumentAuditTrail(\s*\()?u[^\w.](AutoCount\.Common\.|Common\.)AuditTrail.EventType\.M\w+(\.\w+|)\.CheckTransactionDate\s*\(K[^\w.](AutoCount\.|)BasicReportOption��[^\w.](AutoCount\.CommonForms\.|CommonForms\.|)FormBasicReportOption��[^\w.](AutoCount\.|)(ForeignCurrencyRevaluation|UnrealizedGainLoss)a[^\w.](AutoCount\.|)(ParentNodesId|ChildNodesId)��[^\w.](AutoCount\.|)(GSTHelper|ApplyMalaysiaGSTLogicOption|GSTProcessor|GiftRule)(\.|\;)5[^\w.](AutoCount\.|)Iras\.u[^\w.](AutoCount\.|)WithholdingTax\.WithholdingTax(\.|\s+)u[^\w.](AutoCount\.GL|GL)\.WithholdingTaxTransactionListing?[^\w.](AutoCount\.|)FaxHelper\.��[^\w.](AutoCount\.Utils\.Controls\.|Utils\.Controls\.|Controls\.|)ErrorRetryE(AutoCount\.|)Help\.HelpProvider\.��[^\w.](AutoCount\.Invoicing\.|Invoicing\.|)Utils\.ArrayToString\s*\(_[^\w.](AutoCount\.Misc\.|Misc\.|)StringHelper\.C[^\w.](AutoCount\.|)CustomSetting?(AutoCount\.|)PersistenceUtil\.c(AutoCount\.FormUtils\.|FormUtils\.|)FormSettings?[^\w.](AutoCount\.|)SQLHelper\.��[^\w.](AutoCount\.|)(POSLookupEditBuilder|POSLookupEditBuilderV2)\.o[^\w.](AutoCount\.|AutoCount\.FilterUI\.|)POSFilterUI\.?[^\w.](AutoCount\.|)POSHelper\.��[^\w.](AutoCount\.CommonAccounting\.|CommonAccounting\.|)CommonGridViewHelper\.c[^\w.](AutoCount\.Data\.|Data\.|)DocumentHelper\.i[^\w.](AutoCount\.Data\.|Data\.|)CommonRecordUtils\.{[^\w.](AutoCount\.DragDrop\.|DragDrop\.|)DocumentCarrier\s*\(][^\w.](AutoCount\.|)DecimalNumberFormatInfo\s+[[^\w.](AutoCount\.|)MonthlyGSTTaxableAmount\.��[^\w.](AutoCount\.CommonForms\.|CommonForms\.|)(FormSetTaxDate|FormSetTaxDetails|FormConfirmChangeTaxTrans)][^\w.](AutoCount\.CommonForms\.|CommonForms\.)O[^\w.](AutoCount\.|)ContextException\s+��[^\w.](AutoCount\.|)Converter\.To(CultureInfoNumberWording|ToIndonesian|ToEnglish|ToVietnamese|ToChinese)\s*\(a[^\w.](AutoCount\.|)Application.(Icon|DBSetting)}[^\w.](AutoCount\.Application\.|Application\.|)AppException\s+}[^\w.](AutoCount\.XtraUtils\.|XtraUtils\.|)XtraBarUtil(\.|\s+)eActivityStream\.Activity\.Log\s*\(\s*\w+(\.\w+)?\,QDocument\.Document(\.CreateDocument|\s+)g[^\w.](System\.|AutoCount\.Data\.|Data\.|)Convert\.��[^\w.](AutoCount\.Controller\.|Controller\.|)ModuleController(\.|\s+)��[^\w.](AutoCount\.Data\.|Data\.|)(DBDecimal|DBString|DBDateTime|DBInt16|DBInt32|DBInt64|DBBoolean)\s+��\.(ToDBDecimal|ToDBString|ToDBDateTime|ToDBInt16|ToDBInt32|ToDBInt64|ToDBBoolean)\s*\(5\.RoundTo\w+DBDecimal\s*\([(AutoCount\.|)Converter\.ToDBObject\s*\(.*?\)�#(AutoCount\.Settings\.DecimalSetting\.GetOrCreate\s*\(\s*.*\)|Settings\.DecimalSetting\.GetOrCreate\s*\(\s*.*\)|w+)\.RoundTo\w+DBObject\s*\(.*?\)s[^\w.](AutoCount\.Application\.|Application\.|)AppMessage�s(Quotation|SalesOrder|DeliveryOrder|Invoice|CashSale|CreditNote|DebitNote|DeliveryReturn|CancelSO|CancelPO|CashPurchase|GoodsReceivedNote|GoodsReturn|PurchaseInvoice|PurchaseOrder|PurchaseReturn|RequestQuotation|Item|CashBook|JournalEntry|BankRecon)\.(FormInitializeEventArgs|FormClosedEventArgs|FormEventArgs)\s+��[^\w.](AutoCount\.Report\.|Report\.|)ReportTool\.(PrintReport|PreviewReport)\s*\(.*?\,.*?\,W[^\w.](AutoCount\.UDF\.|UDF\.|)UDFUtil\s*\(e[^\w.]override\s+void\s+MenuItemClick\s*\(\s*.*?\).BatchNo.Enable#.ItemBatch.Enablee[^\w.](AutoCount\.|)GridGroupSummaryItemStringId\.C[^\w.](AutoCount\.|)Option(\.|\;)!Report Options\.}[^\w.](AutoCount\.|)(SystemOptionPolicy|OptionsChangedTracker)��[^\w.](AutoCount\.Common\.|Common\.|)(ColumnLock|ColumnLockEntity)\s+��[^\w.](AutoCount\.Common\.|Common\.)(FiscalYear|Currency|ChangeCount|CodeSize|BasicCompanyProfile|ExternalLink)(\s+|\.)o[^\w.](AutoCount\.Common\.|Common\.)DisplayTerm(\s+|\.)u[^\w.](AutoCount\.Common\.|Common\.|)FilterByAgent(\s+|\.)s[^\w.](AutoCount\.Common\.|Common\.|)TempDocument(\s+|\.)
[^\w.]AutoCount.BCE.Parser)AutoCount.EvaluationBCE.AutoCountBCEUserSession5Authentication.UserSessionIAutoCount.Authentication.UserSession[AuditTrail.DocumentAuditTrail(myUserSession, ;AuditTrail.DocumentAuditTrail-AuditTrail.ColumnType.+AuditTrail.EventType._FiscalYear.CheckTransactionDate(myUserSession, 1Report.BasicReportOption9Report.FormBasicReportOptionGL.%UnrealizedGainLoss5ForeignCurrencyRevaluationOption.ParentNodesIdChildNodesId-Tax.MalaysiaGST.{0}{1}GSTHelperGSTProcessorGiftRule7ApplyMalaysiaGSTLogicOption;WithholdingTax.WithholdingTax%Tax.WithholdingTaxGGL.WithholdingTaxTransactionListinggTax.WithholdingTax.WithholdingTaxTransactionListing5Utils.Messaging.FaxHelper.'Controls.ErrorRetry'Utils.HelpProvider.MUtils.StringHelper.IListToCommaString('Utils.StringHelper.3Serialization.BaseSetting)Serialization.Utils.5Serialization.FormSettingsXtraUtils-POSLookupEditBuilderV21.POSLookupEditBuilderV2.+.POSLookupEditBuilder%Controls.FilterUI.)POS.Utils.POSHelper.3XtraUtils.GridViewHelper.!Utils.SQLHelper.1Document.DocumentHelper.#Data.RecordUtils.3Document.DragDropCarrier(CSettings.DecimalNumberFormatInfo 9Tax.MonthlyGSTTaxableAmount.	Tax.#FormSetTaxDetails3FormConfirmChangeTaxTransFormSetTaxDate
Forms.Exceptions )Utils.NumberToWords.5ToCultureInfoNumberWording7ToCultureInfoNumberWording(ToIndonesianToIndonesian(ToEnglishToEnglish(ToVietnameseToVietnamese()ToSimplifiedChinese(DBSetting7Application.Properties.IconkSettings.DecimalSetting.GetOrCreate(myDBSetting).{0}(AppException %XtraUtils.XtraBarsTax.Iras./ActivityStream.Activity+ActivityStream.Logger.Log(myUserSession, #Document.Document/Document.DocumentNumberCreateDocument
CreateData.Convert)AutoCount.Converter.System.ConvertConverter.System.Convert.?LicenseControl.ModuleControllerDBString
stringdecimal?DBDateTimeDateTime?DBBooleanbool?DBInt16
short?DBInt32	int?DBInt64long? .ToDBString.ToString(.ToDBDecimal'.ToNullableDecimal(.ToDBDateTime).ToNullableDateTime(.ToDBBoolean'.ToNullableBoolean(.ToDBInt16#.ToNullableInt16(.ToDBInt32#.ToNullableInt32(.ToDBInt64#.ToNullableInt64(3.RoundToQuantityDBDecimal/.RoundNullableQuantity(+.RoundToCostDBDecimal'.RoundNullableCost(7.RoundToSalesPriceDBDecimal3.RoundNullableSalesPrice(=.RoundToPurchasePriceDBDecimal9.RoundNullablePurchasePrice(1.RoundToPercentDBDecimal-.RoundNullablePercent(3.RoundToCurrencyDBDecimal/.RoundNullableCurrency(;.RoundToCurrencyRateDBDecimal7.RoundNullableCurrencyRate(/.RoundToWeightDBDecimal+.RoundNullableWeight(/.RoundToVolumeDBDecimal+.RoundNullableVolume(9.RoundToMemberPointDBDecimal5.RoundNullableMemberPoint(E.RoundToSalesFooter1ParamDBDecimalA.RoundNullableSalesFooter1Param(E.RoundToSalesFooter2ParamDBDecimalA.RoundNullableSalesFooter2Param(E.RoundToSalesFooter3ParamDBDecimalA.RoundNullableSalesFooter3Param(K.RoundToPurchaseFooter1ParamDBDecimalG.RoundNullablePurchaseFooter1Param(K.RoundToPurchaseFooter2ParamDBDecimalG.RoundNullablePurchaseFooter2Param(K.RoundToPurchaseFooter3ParamDBDecimalG.RoundNullablePurchaseFooter3Param(ToDBObject()DBObject(AppMessageCancelPO5CancelPO.FormCancelPOEntryCashPurchaseECashPurchase.FormCashPurchaseEntry#GoodsReceivedNoteYGoodsReceivedNote.FormGoodsReceivedNoteEntryGoodsReturnAGoodsReturn.FormGoodsReturnEntryPurchaseInvoiceQPurchaseInvoice.FormPurchaseInvoiceEntryPurchaseOrderIPurchaseOrder.FormPurchaseOrderEntryPurchaseReturnMPurchaseReturn.FormPurchaseReturnEntry!RequestQuotationURequestQuotation.FormRequestQuotationEntry9Quotation.FormQuotationEntrySalesOrder=SalesOrder.FormSalesOrderEntryDeliveryOrderIDeliveryOrder.FormDeliveryOrderEntryInvoice1Invoice.FormInvoiceEntryCashSale5CashSale.FormCashSaleEntryCreditNote=CreditNote.FormCreditNoteEntryDebitNote9DebitNote.FormDebitNoteEntryDeliveryReturnMDeliveryReturn.FormDeliveryReturnEntryCancelSO5CancelSO.FormCancelSOEntry%Item.FormStockItemCashBook5CashBook.FormCashBookEntryJournalEntry;JournalEntry.FormJournalEntryBankRecon9BankRecon.FormBankReconEntry/FormInitializeEventArgs3.FormInitializeEventArgs 'FormClosedEventArgs+.FormClosedEventArgs .FormEventArgs ! myUserSession, S, Authentication.UserSession userSession)g, AutoCount.Authentication.UserSession userSession)ULocalization.GridGroupSummaryItemStringId.
OptionOptions%SystemOptionPolicy5Options.SystemOptionPolicy;Options.OptionsChangedTracker!ColumnLockEntity7Invoicing.ColumnLockEntity +Invoicing.ColumnLock FiscalYearChangeCount#ChangeCountHelperCodeSizeCodeSizeHelper'BasicCompanyProfileCompanyProfileExternalLink!ARAP.DisplayTerm9Authentication.FilterByAgent%Utils.TempDocument��http://member.autocountsoft.com/products/ac_pos/program_content/SamplePosDatabase.html7file:///C:/Program%20Files//Loading.mhtLoading.mhtA06��http://member.autocountsoft.com/products/ac_accounting/program_content/SampleAccountBookV2.htmlsbtnRefresh#sbtnRefresh.ImagetxtAddressCustom 4	bar3barstaticStatuswebBrowser1FormBrowserg{0} Sample Account Book List|SampleAccountBook.html7Install_Sample_Account_Books{0}\Accounting\Sample Account Book\SampleAccountBook.html[AutoCount Accounting Sample Account Book List5sbtnBrowse.Appearance.Font;sbtnBrowse.ImageOptions.Image-sbtnCD.Appearance.Font3sbtnCD.ImageOptions.Image
sbtnCD5sbtnFolder.Appearance.Font;sbtnFolder.ImageOptions.ImagesbtnFolderopenFileDialog1'FormInstallerOptioncselect * from win32_logicaldisk where drivetype=5volumename%volumeserialnumberdeviceidMM/dd/yyyyAM
JUALANPUL JUALAN
BELIANPUL BELIAN25C00119-6314-5808-0874-5241D��SELECT COUNT(*) FROM AccessRight WHERE CmdID = 'SYS_MODULE_SHOW'��DELETE FROM AccessRight WHERE CmdID = 'TOOLS_MODULESETTING_SHOW'��UPDATE AccessRight SET CmdID = 'TOOLS_MODULESETTING_SHOW' WHERE CmdID = 'SYS_MODULE_SHOW'��SELECT COUNT(*) FROM AccessRight WHERE CmdID = 'SYS_MODULE_OPEN'��DELETE FROM AccessRight WHERE CmdID = 'TOOLS_MODULESETTING_OPEN'��UPDATE AccessRight SET CmdID = 'TOOLS_MODULESETTING_OPEN' WHERE CmdID = 'SYS_MODULE_OPEN'uSELECT count(*) FROM AccessRight WHERE CmdID like '%CSGN%'*qd��HC���V��      M  �� �� ��
��	�� ����  	��
uy ������ �� ���� �� � y �iy
 }���� �� �� ��  �� � �	 � � � �% �) �- ������������������������������������������������� ��sV������ �9 �A ��	�� 	     �����q '������������q�����a ��
 ����� �e y �� 	 ���e	 ����	 ����	 ��������  �m	 ����	 ���� m	 ���qq��	 ������ �!�%�)��-yy�-�1�5 � �! �% �y � �� �1 �1 �-   y y  y �!�%�)��-yy�-�1�5 '�!�%���)��-yy�-�1�5&�!�%�)��-y�5�-yy�-�1���
!
�!�%�)��-yy�-�1�5��	 ����	 ���M 	�-yy�5V4�9�=��A�-y�5�-y�y�E�-yy�Iy�M�= �A ���A�� �� �	 �1�� y y   �I�M	���!�%�y�)�M"  %�!�%�)��-y�5�-yy�-�1  �!�%�)��-yy�-�1�5/�!�!�%�)��!�-yy�5�-yy�-�1 �� ��(�!�%�)��-y�5�-yy�-�1!�!�%��)��-y�5�-yy#�!�%�)��-y�5�-yy�-�1 ��!�%�9�-y�5 �9	��!�%�9�-y�5��!�%�9�-y�5
�-y�5
��	��!�%�9�-y�5*��!�%�9����Q�-y�U�Y�5 �m�� �U�� ��	�A�U 
��M���� �'�������-y����yy�5��� y*��-y�i���5�i�-y �i�� ��	���� ��   u����
���� ���� &����������y�e��
��  ����, �� �� ��  �� � �u��	��������������u�� ��� �� � � �� 44�� �) �- �1 �5  �9mm m	 ���� �� �=�� �=�� �A �E �I�� �Q  �U
���������� �� ��������mmmm y�i����   �a�
���� ��
	: ��y�i�������e�����e���� �� �������y  �����������	 ���i	 ���m	�������	 ���q������	 ���u*�����������	�
�������������������	���
��	 ���=	 ���A	 ���E	 ���I	 ���Q	 ���U	 ���Y����������	 ���]	 ���a�y�i���e �} �� � �� �
 ���� �� �� �� �� ��  �I �� ��	 ���� ����y������	 ���� ����0 ������ ��(< �iy�i�����������������e�i �m���������� �m�� 
�iy�i����y �������iy<�iyD�� �� ����������������
��y ������y���� ] �� �� �� � �
 � �- � � � �! �% �� �� �) �1 �5 �- �9 �= �A �� �E �� �I �� �� �M �Q �U �� �Y �] �� �e ��u������	��
��	���� �= �=��
P�P�-yy�5 �9��u�����	 �=��	���y���y�� !�	�I�I�
�
�		 �
�
 �I �I �I
�	�
 
�� � � �q �u   �	� �}3�	�%�-�)�5�
�%�%�-�1�5�9�9�	�% ���
�% �� �1 �����9	 �5�5�9�=�-�)�5 �A�-�%�-�1�E�5�y��m��	����
��-y��5	 �
um ��
u�-y�5�-y|>&�a�eym�-y�5�-y�i�m�� �� �������e�� ������  �� �a�Q�U�Q �! ���U:�q�u�E�y�}�������-�5���-�� �q �� �} �� �� �� �� �� �� ��
���y�� �I�y����	,y�q�u�E�y�}�������-�5�� ��yy�Q�U��
���� �� �� � �Y � �Y���	��0
�	 �����e�� ���e���
���
���
 ���
��e�5�� �5�����
�
�
&yy��yy��yy��8����l�q�u�-y�E�y�}���������-�5�����Q�-y�U�5������ �U �U ���8��P�M�����M���M���M���M���M���M���M���M���M���M���M���M���M���M���M���M���M���M���M���M�������M���M���M���M���M���M���M���M�����M���M���M���M���M���M�����M���M���M��t�M���M�����M���M���M��� ���M���M��I���-y�5���M�����M����-y�9���Y�Y�M���$�������M���M���(�����M���M���M����mm���-y���M���,������-y�-y�M���M���M���M���M���M���������M���M�����M�����M���M�����M���M���M�����M�����M����������-y��M���M�����M���M����mm�M��y��M��y��M���M���M���M���M���M���M ������	 ���!  �A �% �) �A �����	 ���9��������	 ���M	 ���Qm������ mm����	 ���U��� �]#��	�-y�5 ��	�-y�5��-y�5"�
��-y
y�5�d$�
���-y
�������������������-y�������5�
����� ��*�
��-y
���-y�5�-y�-y
y���y���	��
�L��I �e �m�I�=�A��
���1���+�*���e�5�������M�����M�����M���M�������M���M���M���0�����M���M���M�����M���M��mm�M��y��M��y��M�����M���M���M���M���M���M���M���
�	�	�
�5�9�M���M���M���M���M���M���M���M���M���M���M���M���M���M���M���M���M����-y�5�M���M���M���M���M���M���M���M�����4�5��qX`���M�����	�
�M���M�������M���=���M���8�A���M�����M�����M���E�M���M���M���<�I�M���M���M���M���M�M��y�Q�Q�M���M���M�����M�����M���M�����M���M�����M�����M���M�����M���M�M���M���M����y�Q���Mm�I�	�
�I�M���M�����M�M�����M���M���M�����M��� ���y�� �� �9 ���=�� �� ��
�A ��
 �	���	��0
��
 �	���	��
��
 �	���	��
��
 �	���	��
�����I��	 ����
�Q���������	
 ���iyN$�����-y�
�U�Y�]

��-y
�5�-y�
�U�Y�]

��-y
�U���� 
 

�������� �] 
 
����m
 
 
 �Y��
 �� ����	�
�
y�M
����
y�iy�����i
y�	��
�i

�� 
�m		�����m���D�	 ����%����-yy�5�-y����!�%�M���!�%�)�M	�����u�� ���������y���MC�
�!�%��-y
���!�5�-y���!�}���� �� �}	�!�%��-y
��!�5��!�����-y��5 �� �������M	��
��-y����5	 ��� ����-y�5�� �� 

��	 ���i62� �m��m
���I 
�I ��I
�I�I
	�I�I	�I�I�I	�I�I�I�P���I
�I
�I
	�I�I�I
�I
�I�I
�I �I
�I
�I
������ �		�	�		 � �� �	�� � � �!���% �) �- �1 �5	�����E�-�5����
������ �9 �= �E �I�����E�����E �M �� �� �Q�
	����� ���
��	 ����
0
���  ��	����� ���
����
����z\V4���T���?_�
:0�O沦��	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJDRProcessingDRProcessingDO6SELECT * FROM DRProcessing :SELECT * FROM DRProcessingDO ��ALTER TABLE DRProcessing DROP COLUMN DODocKey, DODocNo, DODtlKey, KIV1.9.0.0��http://member.autocountsoft.com/products/ac_accounting/program_content/SampleAccountBookV2.htmlr{0}\Accounting\Sample Account Book\SampleAccountBook.html��http://member.autocountsoft.com/products/ac_pos/program_content/SamplePosDatabase.html]aei��������������������������$�y�}������������q����������������8�i������������������������H�����9�\d��Ix��M�Q�U�Y�]�����������m�u���L���P������������������������y�5��=�A�E�I�M�Q�U�Y�]�a������e���
�������������%�)�@�e	�iy�i mmq��  ��	����mmmm��	 �� ��
 �� � �� ���
 ���
 ���	 ���� ��  ��	  �� �� � �� �! �% �i	 ���� �� �� �� �� ����P�� �� � �	�I
 �	 � � � �! �)�	�% �A�	�%  ����	 �E �� �� ��
 ���
 �
��	�E��	��������y� ���
y������������	 ��� �-���1 �-  �L�I �L �P �P �� �� �� �� ���E �� �� � � �	 � � �] �a	 �-�1 �- �9 �e �i �m �q �u �y �} �� �� � � � �! �- �a y �q(((����(��(TWrapNonExceptionThrowsManageAccountBook"AutoCount Manage Account BookAuto Count Sdn. Bhd.AutoCount Accounting0+Copyright 2022-2023 © Auto Count Sdn. Bhd.)$4c1e923f-e1f6-4307-a83c-86e770e11e7b2.2.0.0I.NETFramework,Version=v4.8TFrameworkDisplayName.NET Framework 4.8E@AutoCount.Tools.FormUpgradeLicenseKey+<CheckLicenseKeyExist>d__6A<AutoCount.Tools.FormUpgradeLicenseKey+<myOKButton_Click>d__9)$Unable to get manifest resource {0}.��Failed to copy master data from other account book, please choose account book with database version same or higher than 2.1.4.#Connected to SQL Server : {0}.&!AutoCount Server is found on {0}.*%AutoCount Server is not found on {0}.����* Note : Database Folder can be maintained at 
    File -> Manage AutoCount Server -> Server Setting -> Backup/Restore Setting.TO* Note : AutoCount Server not found. Please enter the Database Folder manually.B={0} needs SQL Server 2012 and above, but your version is {1}.83Invalid Sample Chart of Accounts Template File {0}.a\Error while synchronize with database server {0}, however, you still can continue your work."Please provide a Server Name.$Please provide a Database Name.(#The database is not a {0} Database..)Please specify a SQL 2000 Data file name.;6The database name is already exists, please use other.#Please specify a Company Name.$Please specify a Database Name.&!Please specify a Database Folder.Test connection failed.FADatabase Name {0} already exists, please use other database name.?:Fiscal Year Start Date must start from day 1 of the month.GBActual Data Start Date cannot earlier than Fiscal Year Start Date.?:Actual Data Start Date must start from day 1 of the month.\WActual Data Start Date cannot equal or greater than 1 year from Fiscal Year Start Date.'"You must choose a System Currency. Tax Code name cannot empty./*You must choose at least one Main Package.50Invalid characters found in Account Code Format.2-You must choose an account book to copy from.2-Only ADMIN is allowed to delete account book.4/You cannot delete current working account book.mhThis account book was marked as Non-Deletable. You can use Detach Account Book to remove from your list.2-Only ADMIN is allowed to detach account book.4/You cannot detach current working account book.2-Only ADMIN is allow to perform this function.je{0} cannot upgrade this account book because it has found some Bonus Point Transactions were created."No record in Company Profile.����Do you want to create your account book using the following special code size?
(Note: If you choose No, the system will create using standard code size.)A<There is no password specify, do you still want to continue?/*Do you want to cancel Create Account Book?83Do you really want to delete this account book {0}?����Are you sure really want to delete this account book {0}?
(Note: Once deleted, you can't get back the data, unless you have backup copy)83Do you really want to detach this account book {0}?>9Do you want to synchronize with the Main Database Server?����You are choosing a Home Currency that is different from your Country Currency ({0}), you need to purchase International License or add Advanced Multi-Currency module. 
International License pricing will be higher. Do you still want to continue?WRDo you want to add this account book to scheduled backup task on AutoCount Server? Invalid Reset Password Key!Country cannot be empty..)Project Code Size is {0}, standard is 10.1,Department Code Size is {0}, standard is 10..)Location Code Size is {0}, standard is 8.0+Item Group Code Size is {0}, standard is 8.0+Item Type Code Size is {0}, standard is 12.+&Item Code Size is {0}, standard is 30..)Item UOM Code Size is {0}, standard is 8.2-Account No. Code Size is {0}, standard is 12.+&Area Code Size is {0}, standard is 12.RMPlease fill in the following information in order to attach {0} Account Book.'"Database is successfully attached.mh(Note: Choose this option if you have installed the SQL Express in this PC using the {0} Setup program.){vPlease choose at least one of the option from Copy Chart of Accounts, Copy Stock Items, or Copy Reports & Grid Layout.idPlease be patient as copying User Report from DB Version earlier than 2.2.90 will require more time.Test connection success..)Scheduled Backup Task added successfully..)The account book is created successfully./*The account book was successfully deleted.0+The account book was successfully detached.0+Current Account Book Control File Path: {0}ADMIN password requiredHCPlease enter the ADMIN password in order to perform this operation.@;The user ADMIN's password is successfully reset to 'ADMIN'.����Your windows system security does not allow you to modify to Account Book Management File, so most of the functions in this window will be disabled.upAutoCount Costing Service is currently active, please ensure the service is stopped to delete this Account Book.Finish	Next	(not set);6Synchronize All Account Books with Database Server {0}?:Please choose a Country to represent System Currency Code.����Are you sure you want to use ({0}) as your Country to represent ({1}) for this account book? 

(Note : You are not able to change it again later on. Please choose it carefully.)0+Please choose a New Tax Base Currency Code.����The Currency Code ({0}) does not exist in this account book. 

Please maintain it at Currency Maintenance before upgrading it to latest version.lgUnrecognized Tax Base Currency Code ({0}) in this account book. Please choose an action to correct it. ����Are you sure you want to use ({0}) as Tax Base Currency Code for this account book? 

(Note : You are not able to change it later on. Please choose it carefully.)����Note: ({0}) and ({1}) does not exist in Currency Maintenance of this account book, system will add ({2}) into Currency Maintenance of this account book.��~Note: ({0}) does not exist in Currency Maintenance of this account book, system will change currency code from ({1}) to ({2}).idYour windows security does not allow you to create this log file {0}. Please specify another folder.����There are total {0} documents found to have both Inclusive and Exclusive Tax Code, you can ignore it or fix it manually, press OK to show the details.TOThere are {0} documents in {1} that have both Inclusive and Exclusive Tax Code.Line {0}: {1}, {2}����There are some application scripts or user reports which will not run in this version of AutoCount Accounting. Do you still want to upgrade?"Please fill in email address.#Please fill in contact person.#Please fill in contact number.��}You have successful send mail.
Your vendor will solve your problem within 2 working days. If not, please contact your vendorUpgrade License Key to {0}License has been used.Invalid license key. Please enter a license key.+&This account book didn't register yet.$Upgrade Script from  {0} to {1}����Please use AutoCount Accounting (ver: 2.1.5) to login to this account book before upgrading it to latest version. 

Error Messages : 

{0}�[�U{0} has found AutoCount POS database was installed in this account book, by upgrading this account book, 

all of your AutoCount POS in this PC or linked to this PC or synchronized from other branches must be upgraded to version {1}. Are you sure you want to continue with the upgrade?

(Note: It is advisable to seek help from your dealer.)pkAre you sure you want to continue with the upgrade?

(Note: It is advisable to seek help from your dealer.)����System found that the Price History Table (IPHIST) is not consistent with its sources. It is advice to run Rebuild Price History to ensure the data are correct.
(Management Studio > Data Consistency > Rebuild Price History)Loading....	DonePKThis file is not a valid {0} Sample Account Book file. Please select again.The file does not exist.2-A download does not appear to be in progress.ZUEither there is no CDROM drive installed in this PC or no disk inserted in the drive.RMUnable to locate {0} sample account book from CDROM, please insert {0} CDROM.KFThis is not a valid {0} Sample Account Book List. Please select again.����Your database does not allow to upgrade to new Foreign Key schema, please backup the file and send to BCE for manually repair, during this period, please do not enter any data until BCE send back the data.This is not {0}."Unknown Database version {0}.WRThe sample account book download has not completed. Are you sure you want to exit?��There are {0} 'Document Numbering Format with each month different running number set' have been set to Year 2006,
do you want to copy the numbering of Year 2006 to year 2007?
(Note: If you want to let the number start from 1 for year 2007, then please choose No.)����Do you really want to upgrade?
(Note: Once upgraded, other users on the network must also upgrade their program to this version.).)Install sample account book successfully.����Your current database version {0} is later than the database version supported by this application (Version: {1}), please acquire and install latest application.����This account book contains plug-in(s): {1} that will not work with {0} version 1.8.8 or later. Before continue with the upgrade,
you should contact your dealer or software vendor to obtain a newer version of the plug-in(s) that are compatible with {0} version 1.8.8 or later.
Do you still want to continue with the upgrade?

(Caution: If you continue upgrade and you don't have the newer version of the plug-in(s), your system will not run properly immediately.)����This account book contains AutoCount POS Back-end plug-in that will not work with {0} version 1.8.8 or later. Before continue with the upgrade,
you should contact your dealer or software vendor to obtain a newer version of AutoCount POS version 3.0.4 or later.
Do you still want to continue with the upgrade?

(Caution: If you continue upgrade and you don't have the correct version of AutoCount POS, your POS Back-end will not run properly immediately.)����The system has detected your system currency is neither RM nor MYR. If you continue upgrade to this version, you have to get new license code from software vendor. Do you still want to continue?Download starting...% Downloaded {0} out of {1} ({2}%)Download stoppedDownload Resuming
PauseResumeInstall from {0} &CDROM����To allow this version of {3} (ver: {0}) to run on this Account Book, the system needs to upgrade your current Account Book from version {1} to version {2}, do you want to upgrade?
(Note: You can backup a set of current Account Book if needed)Please fill in password.Invalid Password_B\{ UDTName = {UDTName}, MinSize = {MinSize}, MaxSize = {MaxSize} }TType<Anonymous Type>A3System.Resources.Tools.StronglyTypedResourceBuilder16.0.0.0:����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet]gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089wSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3azSystem.Windows.Forms.AnchorStyles, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089hSystem.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aPADPB
��=���)V�9ɬ�H
���_���c���h���x������x*���_W�]�a��[x���9���I�q���FQ�q_�t�:�յ�O�U��
���$��������X���k.��y�"�O��PѲ�b�^$ئ�(�c����8��R���grW���������:��颙��M�H���N���k�8�m�A�U�w�,i���/?��	��s
�[v"c�1)�и,c�+0�,0*2%4��E6�c�>�>%�GB�C�B��BChE7D�iD�-�Il�8J�Ms�MXFO�:�S/�5TгCTf��W��W�RBX�^X�r2Z�5Z@l�_���_[��f�Klx�Co}�pb$sw
zD��k��^�
�x�k�
	B��3�	7����w�
	&v�l�.!
�	�g	���r
��I
�
�
p�	;Q
����d�K�����
&!W� ~�\�:X
�
�g�>	��C	�;M�2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type&>>bar3.Name�>>bar3.Type�6>>barDockControlBottom.Name!:>>barDockControlBottom.Parent76>>barDockControlBottom.Type>:>>barDockControlBottom.ZOrder�2>>barDockControlLeft.Name�6>>barDockControlLeft.Parent�2>>barDockControlLeft.Type�6>>barDockControlLeft.ZOrderd4>>barDockControlRight.Nameg8>>barDockControlRight.Parent|4>>barDockControlRight.Type�8>>barDockControlRight.ZOrder0>>barDockControlTop.Name
4>>barDockControlTop.Parent0>>barDockControlTop.Type$4>>barDockControlTop.ZOrder�$>>barManager1.Name�$>>barManager1.Type�,>>barstaticStatus.Name7,>>barstaticStatus.TypeH(>>labelControl1.Name�,>>labelControl1.Parent�(>>labelControl1.Type�,>>labelControl1.ZOrderq(>>panelControl1.Namet,>>panelControl1.Parent�(>>panelControl1.Type�,>>panelControl1.ZOrder(>>panelControl2.Name,>>panelControl2.Parent(>>panelControl2.Type$,>>panelControl2.ZOrder�$>>sbtnRefresh.Name�(>>sbtnRefresh.Parent�$>>sbtnRefresh.Type�(>>sbtnRefresh.ZOrderL	">>txtAddress.NameO	&>>txtAddress.Parent[	">>txtAddress.Typej	&>>txtAddress.ZOrder�	$>>webBrowser1.Name�	(>>webBrowser1.Parent�	$>>webBrowser1.Type
(>>webBrowser1.ZOrder�
bar3.Text�
2barDockControlBottom.Dock�
:barDockControlBottom.Location>2barDockControlBottom.Size�.barDockControlLeft.Dock~6barDockControlLeft.Location(
.barDockControlLeft.Size�
0barDockControlRight.Dockh8barDockControlRight.Location0barDockControlRight.Size�,barDockControlTop.DockR4barDockControlTop.Location�,barDockControlTop.Size�,labelControl1.Location<$labelControl1.Size�,labelControl1.TabIndex|$labelControl1.Text�$panelControl1.Dock�,panelControl1.Location5$panelControl1.Size�,panelControl1.TabIndexu$panelControl2.Dockz,panelControl2.Location$$panelControl2.Size�,panelControl2.TabIndexd$sbtnRefresh.Anchori"sbtnRefresh.Image(sbtnRefresh.Location� sbtnRefresh.Size=(sbtnRefresh.TabIndex�&sbtnRefresh.ToolTip�"txtAddress.Anchor�$txtAddress.Enabled�&txtAddress.Location�txtAddress.Size:&txtAddress.TabIndex�$webBrowser1.Anchor�(webBrowser1.Location� .webBrowser1.MinimumSize,! webBrowser1.Size�!(webBrowser1.TabIndext"@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightP6B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Choose a Sample Account BookFormBrowser{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abar3vDevExpress.XtraBars.Bar, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abarDockControlBottom$this�DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4barDockControlLeft$this�DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2barDockControlRight$this�DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3barDockControlTop$this�DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5barManager1}DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abarstaticStatus�DevExpress.XtraBars.BarStaticItem, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
labelControl1
panelControl1�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2
panelControl1$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1
panelControl2$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0sbtnRefresh
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0
txtAddress
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1webBrowser1
panelControl2xSystem.Windows.Forms.WebBrowser, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890Custom 4C����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightPC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyPA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightPD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight+
Address:C����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightPC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightPE����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	F����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.BitmapData	��PNG


IHDR�agAMA���a cHRMz&�����u0�`:�p��Q<sIDAT8O��O�ǟ�B�P�/�����
�:%e�����+�s
Gs�-!C�9B�ΐ@s�j��~p*,R�up�w�w�����i�>���W�7��
\���E�x�,��?1.�p�1���_�x�*�U��£���"(��Oō��SF
���H{e���;ɱ�C�4g蟛8���\Ȫ�� h.7�Dž=7HkJ%�Z"�MAD^!�9
}K
�]�9r����FVY���[����9fȬ�`k8{�j
��Nr:^�To	G��?�λ_s��N�!��0�|�����[Mp���ɞ�]�U�Q9~�1af�Im�	�)U�����d��:b�b8P͎r��ր�u�B��Ĝ��Ls9��>�1��u�N^���?;@ć��}�#�՟�]/ڵ���)���T���0)=�t})#�C��P4	E�L���0DHE��"��>�m�<b�%���=�������6��f�X�Zpz��wK�
�3}�>�&�1���l&�q��g�q�Z�(0{�U��$�� ?��ޅ�*.�XX��9�M)�1��E�+�o~��+i���OJ����r*
���Bp�v֔%����&�,`NJ���> �H��	��E�`0�=��ׅSP�Eri,¦�ʂ8��Xg��0-?�s,����X��/�8F�p��꨹_�/�a��c�g
w/�PO����s��Q�:�6���C��1�ٛ��*�yf�p yl��Db�5Vi��@�Ǒ�~����jO@���|c:o�f�p>��>�pK"(
�WV�j�탬����0U�$V�`�I&�.	Cuo|n�85�
;**�*�l��H*nՃ��d+f��=��^Fl�.�a�Y̘�Мx|^6%7nU�j:�Є��IEND�B`�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy4A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightRefreshE����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__
D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy8A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�E����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightD�V[����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet'gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089fSystem.Drawing.Font, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3ahSystem.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3agSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aJ�a��׌����˺��ֻ�(���յ����{�7������]�nz��Q��an��u��]���y��:H=�W
B<%�c<%�8)j[�5��7�C�B��B[MD�%MP�:�S��T��c\��h�_m׺dp}�p�w\|;�^|�c��j7��Ar�d�"~�<"�M�9������\�1��*��
2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type/,>>openFileDialog1.Name�,>>openFileDialog1.Type�">>sbtnBrowse.Name;&>>sbtnBrowse.ParentG">>sbtnBrowse.TypeN&>>sbtnBrowse.ZOrder�>>sbtnCD.Name�>>sbtnCD.Parent�>>sbtnCD.Type�>>sbtnCD.ZOrderp">>sbtnFolder.Names&>>sbtnFolder.Parent">>sbtnFolder.Type�&>>sbtnFolder.ZOrder,openFileDialog1.Filter4sbtnBrowse.Appearance.FontW:sbtnBrowse.ImageOptions.Image�&sbtnBrowse.LocationsbtnBrowse.Size�&sbtnBrowse.TabIndexXsbtnBrowse.Text],sbtnCD.Appearance.Font�2sbtnCD.ImageOptions.Image�sbtnCD.Location�2sbtnCD.Size�3sbtnCD.TabIndex,4sbtnCD.Text144sbtnFolder.Appearance.Font[4:sbtnFolder.ImageOptions.Image�5&sbtnFolder.Location@OsbtnFolder.Size�O&sbtnFolder.TabIndex�PsbtnFolder.Text�P@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightr�B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Sample Account Book InstallerFormInstallerOption{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aopenFileDialog1|System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
sbtnBrowse$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2sbtnCD$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1
sbtnFolder$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DAutoCount Accounting Sample Account Book List|SampleAccountBook.htmlC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.BitmapData	��PNG


IHDR00W��gAMA���a cHRMz&�����u0�`:�p��Q<LIDAThC͙�ST����qo�U`�H�Dc01&�I�&7=&�ƚXbE�R��7)C[�DQqP�2� mv�e�l��e?�7�$���}��ﰻ��}����w��gf��g��v�#6��Lt����W6�4py@�7�
lz`���z޾�d�59�U+�n��*)
�����q�8��N�)uD?��ހ�M�>n��#�.����L�r*����%�J�fU����:2+��Eo4�����9ҭcS��-4�xȁ�bEer2����j�uwi�yʳq��}$�7�Z��g5Su��q����	:�r��Q��Q�]���<c;�Z��n�_
|)me߅t��fs1����F����7��;f~E�pE'��u�Y~��!ٯ���@�Ue�dTML��U�4pz���~#��Ml�5�A��wZ�l��dm���;��_ƻ�N��|�e��z�Ó6��7���fK��M�?����46E�2.
�H�[�PA��I��I��I���i���J'[&g�`��}v^밳���no>���1�fԑ]�̣�!&T�y#�o��S��VF����;,3N�M�HR�;��
W��(vB�p�_��l����;�v^���ʊ+/�Xx�����V^Ӱ�`���m��L��j��\�
ԏSp����y��M7�IPpy�N��I�j�
'8!�
�tNk��6�����v�����ʋ-fBn�h0P�'��@h��e�-,�f$�x�I��6��7$v�/�F���a�nu�7<����,�>�P��k@=P5�T|�p����U�d�\����d6�9heU��e�q��:��j�*S�S���BK�U=AU&B+����	N�bGrwں�Pj~�	��h5�}�1�;�+u���1%)CZJp}��U'�:!Z�$v�N��N��A����2�-�{b!쑙�w������Q��]�½X�G��B�E�I5��	�b D��?c�m1��h�@��a�ڙ48Hi�P���\�|�e&�C�"�:fQ"D�����q#�z;�Z_?V��S#L��5�����&#�u:|*5x�N��%�S��O!�U��#[�g�>9�h	.5��DOp���e4�{�����@��>y��A\��B�,q!ߥB����5q_if�	]+_�M�q����FV?6�R���[F�k��T��(���K�Hr&�dM ɐ#I��g��l��:B�fi	���dB1-�}h
��#�o+T�.�RT3[��N"���g�D��̇��ܭg]��W;�,��ïdI�S�v� ���A$�Hr�H�'�dʑ��pK�-iI���	�ҧXtYMP��%�&��Xy�*E5�=C���Ai�r�CN�	*��GN:9�H��1+���4�{�7��țX�f"��4nQ���g	������	�5���u���=����:K�-q��$�Ir<�'�IW⟭!��ȋ%fBSF��X�����9��7��4n��qBĘ�˽Ә��_�b����6�Ќ��	��#���x��|��4�ϧq.��Ȅ|��>��vF�q��ܒ�pK�!I�!��� �#i�d��U��XZdfi���'o�&���0&�H���cw�HWC��9IlW�p҅�I�ݕ�V�AL��63!׵,8T��K��׎��_gpD�ZgP�����^
+�]1.QO�����2<�x%N⛢�?]Ò<�'R�||�5�������.�%�WK��?sR�c���W��YΆ�z�w�x����[���Y����r���
��ϯ���XlvQYV5�z���a1�q2<D��J��/i
�T5!�VZYQ�'lg*ɹW�Xm�_]�;}��s�NN<�!�}�k�x�0څ�1�J /���i\������N�F��߼�P��O�*��b�݅�_��!B���I|��O�&8SNJ"/�ZYv�
Gϥ�s��2�=l3N5
q|�FF���Q��V���6-k;M�z t#5Z��J��'�W�Y�_m��N�Z�p���-O���OI�c����z�w.�2<bex���;n�)���	Nױ��̫U��ia��ܸ�!�Ȝs�~f�&+{���[��6;��>��d�iֶ��of�
�Z|�L�Y��5�/���_�U�=W��Οㅯ*Įj�q�	��Of�.����3!F�'N��x%�iz^*0�����!6m;IE]3�i-3��Aϔ�}
�N�84���i��&�Z�,�a��R�w�Z$/LTI���\�a��.��ùn����L7�gzp���5�G$�5":  D���$~���OP��%4M���l���-��-�glB9;}06M]��y?�1��f��w���5�������i���g�E�ޞ8&�G��2<��8�9Q�$�k.m�b'�U̒��&0ICH����Š�lj����H�秉˼“gB!ϳ�јm�����`sYa�:V6�Y� ��i<D-3'����TM���H���<�&�("~6UD�~I!�g�Sf�/�0�Z��O[|v���_\$2>��}Ø,�~�Ȇ~��O�b����F��t���W"ɞ�-S�[��d�yׄ$�cH���H�C��2���(�;^�w��KB���7vߘ	�b'�U?Mp���dK�,�4����v;��m�%"&���Co�=���J��kt,n0P�ǧT���6ٓ���pI�%qT$� ���n-�o[�y��"�.��R���0����Wp
��˶R\�����/Kq�v�meH�+��Q���j��^��`+N5�6��Y��"g��i��}.�"�l��f�jL,*׉��=G�$]�K��FX?���^8t���xq��� ��c��`��y ��s�~��v��
�n�tL1
��м!Bj,��XeįD�W�I愘2.	��č�ri���h#�m�=���?a��b'�,U���JH���r=~�j</O��],�1\bGq�ead��%2.W����OmR��JS?�m�S��QÆռu�o_�;�n���[|�p����.j�TYg�۹����	f�
'��q��5O	�2���Fp��>y*<3��M��-~��1\cFq��� �-�>��݇=�
f��4�S�
�>vׯ�!��]����xDt�}���!����񪒝M�<�r��—Y-�I���m)Q�h���6�klU��/��;�O��i
�'fإ1�bF���5����Ǔ_~��I�yڜ ���^�
�{a�(9��:Mp���F67Y9�� A�P�$����{㈸�Kk� ��t��=,*1T� �ʎ��"~y|�Tx�O���D�� %1cH�ƐD��~v�#m��/���FzF��։KA��̸BK��!^�p?փ��qJ��������g��4Y��� n�I��5Nv>bզ]\H��d�e�tH�O��EefBjgx�*�EF�u�g���Pᝪ�SPqr�ceH.��%�#j�9'$;���X��ȺÁ�&����ב~���1|��MV͑��b���
vv�9;6#��f ��B���x�IJ�5�k��<2�|� ��*�+,�w"��
�����7���?K�_��$^	x]��#Z�G��(^΍�~�	����o��\�� ����O�>?.�M��i/kX\�ge�����l�qfl�<��ZH�fXs4�U�9���ÞAq]<oo)�AR�'��I`��^�����&8_Op�����j�RT�f���e<�'�(�+j�(!�'�9'��ޑ�"|���U�bQ���-K�z�jLl�ceW���F���;�a�okz	]��#b�ijeB��昧�[NVd<ţ�Lp5H����PZq���,K�
��	�����?e���c|b&�R��V�5��Es�c��KT�2M@���+ʌ��n�{{l�s�kpRg�j���v��>�y��ZG�bw�%w�dZ+����ʢb5�o��w��Tlq��>{�Ьi���uj�e=A�ZS�'�X�b�%%�b�,��	���*%��5n`����z®���hf�+�������W�3D4
�q'��}KB��{��3��m͢��p�P")��>��k�h�I���}:�����NW�0ƒ\=��L,�l $CGp���d-������!QM@�����C���ˌ��7�~���6�=u�0�Dj�J���	��W�6o;̥�%�v������3����L5�R;�g���g�>�Ź�SQw������yDh�4˲�,�6�4�$J��T=�)zQ
���ħ�8�r��U�F^�5���Zm��szl�4���I�z���X{*��k?��o�'���]OPj������-��,5.Ev<#n��v
+n��I���w�}��5�s>~���I��jX��gY����&^�7���DX�����]������vvu;�͂(�I���>Ě�lB6�f��{9�HQu#]�P�
L^������Zd��h=��ڛ�u��îAq����ڽi�|SE�w,O��B#o�Y_faC��wo�����6;{��|l��#;�o�� ��|�E�p��5{"bHʯ��~���CxO���??��I�Rt���f���
��=�`�0"S����+
9���	9ވ��2�ߏf����#�)���	�:�%��Y˒O"X�>�}��w����$Ҋ�i��H|�����}�y{�o� #��
�Zh�5q��=y\L.5�/����M�ɪ�bcL3�϶�-�U�}����PۏIJ�p4_���CQ��e��_��\J�*�r��Wl�B�
m�KK�3�K��|+����r:��g2��N6Z<U�|8���z���6��"���G�Ds�l�������.[:ih��^��;����֮�G�4�G��h���E>�
˦x+�>.�Z\�
,HV�s�x�l���
�N��}��E'�8~��{�y�E�K�Xl>�n���tt�ֈ�`7�4z�� f+f�]|u$D�?J��3�͠�e><SN�����Arqɹ'x�|@СZ��-`͎Kl��4_��Xt.����Vk�#�"Q��!�v�~�_��O7!*#2q�e���]����tO$�/�/"���s*)�k������Y�?!
�H=���N�ko#�l���&W��R�!���\�7����$�?d���E�IEND�B`�E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightB<"Download and install from the &WebC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.BitmapData	k�PNG


IHDR00W��gAMA���a cHRMz&�����u0�`:�p��Q<�IDAThC�P�i���ڭ�ڙޚ�ݝ٭���dw;���h�sBQ[���������DA$���s�d$���$�W�.�^0���������ٙ�٪���N�M��s�|�|�������~�aO�<y��#����,�Ï?��ѣG<|��������z���%n���<�޽{

����j��x-��߽{����K���`�w\�t{{;e�ːeʈ��!80�s��FbB"
/P[SKgg'����I�qqݿ��""���ϵ���=����[��E_�0w=Ns7�p�3�b9���6k	k�X���#)�)444H��!=��<���(��_�v�{`<y.�/'`�׏�r3<���h4�t_H�-1�Ƴ��;ڒcf���l�`s�|�5�l	 mmmtuuI4�I��w^D]DIPc�[��8r�۠�3;��+h˲�V�0P&��4MN,��`TQ^(mi:��*W2�o�d����H٫��C�TJ���t"���;/.x��e�/_ͨ~��];h�p�-�,�0�b齜��L	��,�ދ)���@Z"Nr������h	sA�E�������)��ZQMKK�D+�A)��_��G��Χ��c4e.�ޛ@ζ54y�r;�U�'��@4�Q��מ( ;����C]���C4Ey���stdFP����Lxoǎ��Ass3����L<O��l��t�d떢8�����:cAK�Ȃ�pz�迚�V��V�@gV4��s4;��;�2Ȇ�PT�ި�C��I�S˒�0���?�鈓BP��!R&�������&�6o>y덹n��z��4y�9���>t��SG�唧:(�=�8_�Av(��hv@q��$?49Q�&Kz�)@S,�S>og|Π�RH�t,��I�I}Qm����N��Dд��,1�h�R*-W��f���H�)�t���w)�5Z!⋉ETQ�(lQ�%��8o:2��)J�(7���nC	�o]��j��60��I\,�(�BBآ:�K��>/���xyx��/~CҤ�$L�N�gS�<��%�l�5���tҌ� g����D�[���J:���^HD�ĝק�	��%�
uJ�Tb���)�$�ܺ�Ör�U��J���	lX�Aq��
�:���T��
&���'��/[����Ț>��qӈ�2���)۹�z��(}��9�&3��	h/����NoA<�n��s��~���PEzґ)�KW����Ϝ�󨽊'�ɮ�8��_�+m��r���O�������z��w&R�z	���j�(�3��Iӈ�>����T����u'-�G�H
�� �TtW��͏�5�4J�C�:����b}���MCW�Ͻ�K|�\��*��yܮ�q[��*�3ވ�K����/�b�;�k���O]]�V>͐ۦ_q�tJ�%4�1��\_<���3H�1��/��>���>���ґ�*1������G���ڌz׽�pB�&/��+�誋��x���y�R��;�gV��;eȽB�5j�$��rnݺ%	ZdA���ʓ��Ǝ�g!߼�V�-�l����ٱ�fd1
��ΞM��9\^mL��&j�����FH�%�}h�����A{*\�i�CS�N��<k.r����K@�7=g
W���`�؅�}k&iAVhA�UQ�_������ql��],�t߇�ɔv�m�Z}�j�zT�+i޲��Ջ�4�K��Yd-^���]px�݇������	GS(c����"t���*K����B�eh���S�I��V�YHRbU�UܹsG�QTH���z����b�Ƅ��;��?B�Y{�NF�q��=�����D���
�����`>y�-���d�r#�eT*�s黔��r�-Ρ�(��L��3�䦡�N��΃
�J��h o޼��^ ����٫����?�$}a��
q�7Й?G�|��x��ej�]�1�H���t�������R�POKnT�?�{SG�Dڒ��deґ��:-ur
퉉�&�ӚKk\��hʏ�d׸Ÿ��q��%���yBA��7D3e:����ϠK�E��6�41���/ƒ� z�9��x�:�`�tޗ|����r�܃�"�7���y��}�	(��+���X�D�NsP�`���(�P������
��������X�Fz�@/`Qs��ZD�9�����,P����f���G��6��/:dr�=�pwy7�n�D�EH�YNv���t\�΂�X��}.4����͛w/�{R��I��{܋�ԟpG��̾O�����&�����bSB~�h�v�2f� �{E��-�~ъ��[�PIC�Ѵ������X����I��
�\�B�,�����Ө���-��v�Z�!W֮TY�Se�N��U6�P�8Se��eX쳠��P�T*���A"�F���^a$�
#�w!�{���-�n��p����	�=��2�>u������DGFK7,�PDA|=�a�Y
\��H��(�NRu�$�'�[�@~���UX��^G�G=�@A~��_�n�J4�>��
�n�y����{ji�L�A�6�jGn��D�TO��И�H��$b�cȎ�F���Iדa
\wO��/�gQ؝��Ƈ
��ȭ|(�<E��'�OR���;0c���ݟ��r��itqd(�G��x/�O��tC�������c�6_����G������Zu<�y���&g�9�GCQ�E�p���)��#��m��[�G~؏rK��&w�;�/���eX��xE�*$Z�C_�"w�)�an�B��8���C�y�~���:�ҳw��V�Z����d�3X�v���{�ZGQ��U��(N�Q�G�kU.�ȏF#w�B���6��y��Z�~���N����
���	�.�[N��A��3ഇ~۝�Z��c���U+i54�i�r�&-C��bN��K�2�)5<��&��u�D�M�
����x�-e����Q���#�j�t�ӨtO��-�*�D*]�)w��e�N�/��b���~�y�~���E��b��m���D���hV.C�Ј�YF(&Q:ڐ�����<��.��x
S;��P�W�-�C{b9
�s\^fJ�rSjv�Su���C��b�rKA�Iͩ\��rQx�Pxd�8�����l��ݻvK�XTH}C�n��%t xU__�&�U�N\F�گ�^�����PM]D�Ŕ�6$������=���"��%*�oѸ����:(
���h21����4�5��N[jxS%�	�$S�&�ګ�����)��t!5��mta�G��שa���Wz!=����O�u����>q�O
P|���o��9�yc:.oL&�Ws(������4�C��IB�JB��N���[ܸ۠��5���bC��5�Q��Pq$��cY(�R�]D�o)�g/R��M����e+�S<�F�����a��ҍ>O#�͛<�s͡n��Ӏ��G�?���&r���r�gS��f��i[���Ch�x0��`V2��tzB"P;;sg�)������ԛzRoD�C
�4�\r�r�@�W	u>��?{�Dg������T����y@,=�ʨ�(�~�mb�[@�����1�}#>�c�R9��wqg�!����;j�.����He��d�G�q�4��4��M��wzp�2�z�j�ɨ9^@��"j<J��D��PF��=i��Ȕ���~t.�W#!q �?�]�~6��80�c	D�?��¯�s�tLYD�7��w�Gx����d貲�L��+�6+{nn0�~�%u[ܨ�L�m��r�qΗR�u�K6il�Ș9�fJ������۷o��W���kA���wF�b�1�Bd"�s�|{!����10��|n��L�cP��.;���T4��h�wC�� ��,���F�Y u���s̥֭�Z�K\���uL�h���ܜ\ihll���cx{m��y-A���x�<�1�7�Jt����F-@3i����whZ�����%�3���.����L4gci?�K�^G���z�;��Sm�D�m.u�%�����WL9[2�3�FPPGt����ZD�TuW/�\��_|H�#jG��<z.�o�V���z��E��̠,]v!���t���v��q6�S��
��(������)��4ƾ;���G%ދMKj�RO�?Xy^�J=�ď�De���;������[ѽf-��p=��tqQ�R���E�UD_\.]Ai�OF�r�����|)�p�������obh`(=����;/΂��$꼼�T?[�����c�Y㧱��y$�]G�NszܝЅ����E���N��NVL_b]!2�=�h9r��=�(26�o�7l{{?��]�wIÏ��mm�G���<�	�+�r&�;��5�1�|	�Ư"o�An�BA�mf	ݑ騼CPX���Œ�/c��1�0���l�ײַ$VA�aq�,�Ϳ�CA'�	!lq�-61���~̖o`ϬU������d�����R��6dDŽŘ�_ʖ��H�ă?�A	��2)��8�����O�~�5!�-��H���(o�����%�dɲ�'�b
�,2<R�&Ł���ăA����^t��q�"��R)�/���9�� �φ����ȈH�pF����E�.�	��$h"6&QE�����.��;�_�l聈�	��m^�������MDY�/*�pZPQdR�_���[/N0���pNDVo��O�T��:��7~���0��˦�L��_�d���M�0IEND�B`�E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyVA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightB<(Install from AutoCount Accounting &CDROMC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.BitmapData	��PNG


IHDR00W��gAMA���a cHRMz&�����u0�`:�p��Q<pIDAThC��gp���m���V]�V�[{.{��J:���e�L�EI^Y�A�%�-+Qi�D@0 	fA`E1'0��9�0�����t�]�=CIu{Ww�Wszz�I����V��
:$�I�!+ET �JS�@�A�A�A�J7h�8PH!�'�Dd4���Z�����H�O�����QP��FAI��%j��9Zr!
���ρ�A�&�(R��x��$�@N.R���2�y(Hφ�G)���t�K%���t$��+hz^PR�	!c�&�9	r
(A�F�{@K��Y���2+�5Y��������>G�����:ľ��8�E	�����{��Ѿ��֭lon�n}-��/b�5�9x�sW���C뒢#�t��)d��s��e
'@�C1r�^�q3�'/݃ �R�t����2Y��8����߸N��L�3n�b�l�d1c��0=m�"��Y����	�A;�l�x2��������ֳ�i'n�ͰCU€�B~��[hmYN��*Zw��u[
-[�hݴ����hٸ���o�޴���*.�i#��e�C�����L*����ӈ
�?�":
���
�R:J:&���J$q������Ҳ�C]{�f�Z�`��1�w.$$#� �$!� !��#��%�EӦO�9��
$+2�PN�
�D���]��&��RHjY�!���q�bY
Sȇ(dC����(��hy�xV1�Ұf�;ZX]U��f�A����K�:hX�d�]�k�D�
�6�j٫4�����Z=����%�t���=e��9t��D��6��	�T%���JF��e`Cm+�\�uS]��8��0��i�� �p�z�t7*nt��� �^P��y3�
'�gͲ7��\CO�@Δb�p#RɜA@�TM�MEϡ��e����+�JiP)�,A��ȟ
�֮�ʙܸ���v*�r��A��I#m��/Ih��%��R��%�{ݎ�5v�d}�;\:���̄�
C�e�Cq:;���:�DYZ��!�K<|�d��������Y:���M�>YÎm����>M��s��lix��
����e�6���3UP�[v/��G��E6i5dd!˸@q�Ұ�}��V��@��	t�o****D�+�^,��4�XH��Et���q��{t�{��חr�v����4q��zL�6<�#D�g���<ކ�9��i�]F�.Ѕ��+�U�u����g���TWM�:mX��@�•.)�14]�O��:}=��
c���"7��σ�5�Q¡�ds�ج���
��3�K`����:�� 猀F�N��b%�?F�ܠ��z���|�uՄg�?��[��)C3���oM?���7�%"&�����]L��8�7��n0c�c�|��������|���(�� 5�ԢMq�&b@X�i\{ﱶ�=��U�3��%P:$)���b���s�{ 46�{�NR,N�(��"(���B�R`���!13��A� .�M�K�����8��g���Ӊ�,�nE�f�ﰺ�-�6,!87f�L��b��1���%��m��к��]�Rц�;�)|�҅9b)3�̴�]>o%� �0�
06p%}�b�4r�j�:�À /�̠cFÄ�O��5����m�(=*�*�p8��	PD�D�O01t���7�2���
���ḉXjox�`|
_|��_|�Q���(�P���!�M4|�>���$���O����=��0
�A�G�����U6�����a�
�~�%qйw7���š�\�36|�-.�l���z�&Hy/��
�������205ۃ7r�Pr����
T���"Fz�z�mBI�o!iE�|\�T}]�
"C����y�M�+�R�G�:HEo26�Es�J�b�|.�k
q��2=�9ֵ�K>t�d�������M��[�B��w�Jڎ�!� ��K^D����gz�	)���߂Ƕ8
\,Ņ"��~�"�v����6n�=гT��9q��
k_�c��m��T���T�Xd��9�Sf�^?ɑ���z�b�53DA'W�P��P�DV�(�&TՌ���r#���aTeE ���~��f��f(l���&^�����&(Æ������iV�|�D`n4�F�$=��>Ym�ݾ��b�����DM�pL���K@0��:fL�B�M�)dE�4He�"�Q�Q�A���+8_�	4Bn��Rȭ%���{@Vm�Xk¡S_#0f��c�&z�X��a�ڪ7A˒ͤJ.t?i����<�n�2AA$]�G"w�h�6��
��>|�^��#�B�k��}H�-$���%���̘�PLn��DM.i
~�b�D3/�|�Tn�"��$:NmM���6^&�f�ॱ�e��Sln\bu� �"�}Q�~?÷�ҵ�=(^!�@�w�X���U��<�+��p�.�p_��:��q
����%R�^��5�n��.f,���L>�
���q�P΁|�����P��5��x���Q��#F��mG�TѴ��\.F("��I'
LO120��s����IzOᷟ��=��/pg�N�yn_	�)<���cI�z�KW�'�bw��2U�
H�A�D�|�_Apv	d���
�+P������V?]"07Q"`���)�&�`y�4�\������Aٌ½;#����s{8�6ϓ�"�=��}��ϩ2Np�O�g�	��S�����=H�b����{0M�B����ǐx-�.Zl	�B$O#N�t�gA=KĿ���O~�T�����D�h�\�����)�B"!e���wo�q�b����;I�}�T���i<��'q���p��:Ɯ�v��a<ޣD�g�fϓϟ'?��ֆy��Bp)d>!�~	RP��P�}L���@��lj�;����;;U"`4o��>ǽ��ٴe�\ )^5�g�έ{ܻ�O��}���������y����;��s�N��6{v[N�!�D�'��ݤS'�D�p;Z�^�*�O�
���~�o@�
��H�T_@�
�.���,�G���:�F�Y& �+=L�ϲ�����KJHEѭйuc����]頳�
�.��m]�<�p{�p��r��<�ݾ��>n�\�b�/(�N�M~A,��}'���h�O��*���|�D"��$-!��V(�#�����ظ�u|s�2QE�� 6�uv4o�(
�X�t2)������k�vӱ�%��~ŽN�s���{q���r�����aۋ}��lv�n\��8gw
t!e���u��=������>@���t��x�/!�� cy�W������lc݊yl^�&n��h��^��?�/:L�
�3ē*���%���ho��D'aG;��v�s�q�v�k3uX۰���9����eNK31o'RB��u������(���=ϡy�￁�I�b{i�-R�w!��6����u���'��D-g��D�'XӰ�LA�HK($�E��nq��"=Z���r�vB�6|�=�g�q��4�4�0�4`75a7m�1���b�6���6���8M똸���Mp�<?�O�;\O��y揄�^��j���[GC�O�Z�&��	�oiT$D$;C�J�9�/I$���v�:ׯus�{'m�ϓ���k�gi�aڊݴ�t��f�6��V�
�G7�5�v��4�m�9^�D�Q�@w=���#p���`�T�$<�;�BH�w����q��{���U�0)��J�Y
�7I(&�|��.���m4o�Dh'^�6\��
m����7b��%c���6�0�@ĺ��7igak#��Ư�B��{4���Ct��A�=�gЬ�'>�"��7��d�
�-�[V�	��1��m.�	�z���IK
No�`�@ ��bwW��p���E�݆ob+�Q!�flc���6�0��x=��u���`[��x	o ��A��H`v���^�y���~������0����F�x����=��Dc�lX�G|6k)tYCS�F�!�S[�o,�3���G��s��G�qv�.��[@�9��8o��3ڄc|��u!��X-��eXF>fr�}Lc�c���sw!o->W
3����T�@h�� ��_��w`����?x���|S�شf>kV�ʜ}��
c���r�p�˪�5x�~\�.�@ E�
�9¥�w��{�'���
�rf�r���*fGW��k]N�QIص��o�@5q_w�Q.���3r�]���9�{?@�<a�����2����I���������c��̺,�P�YH4��"ሟ�u+qE<8�>f�VN�=̱Ϸq�*�l�����^'8�Q�R���"k��kI�k	[+�N-!e_M�YO��	ٳŽ��tsחp��:��8�ٱ�%;�]��G�},?G~�`�s�%{���U_bo{�H�h�E@R�Tծ��c���}ؽNn����#����=/�&�y�t�=��OH:?%2�!A�5J�V��[�m䬫��Ԓ��"9����BB���˿ m�Gv�Q
���O�[�#t�	�w?LG��м�{�T�c�[�����iٴ�[�ב��ȫ˜���n�H8����;Ƭ+�͓2�����u��s�����z����s,&�B����X[��Z$K-��J2K���!�{��$�s�g��CL���+��~��|�W�|���R�W�}�l��AvV�g�k����	����#8-�d������(1 FL�H���
��I��If�RLM�pڼD�V��e�oH:w��%1���y	��r�J�٥d'��w���`��r��Cy��?"xk>�_|����$�MG�_�{ݷi^�wl]�0������iY�&��Ws��~\�c�����̈�ǘL"��V��Vш�TV�a6�21�<�6a&8}��+-t4�������R�S��>���y��x�{�����ob��-|w�Gl�Q4ϓ���~���;�,g�=F���{��h�~��E?c�'�پ�O��[�ݫ'qMO�
��6��D���i��n�F�
E�]h1=�,^\�Ȑ�;7&�dj`��k'���I�lZ�M,����ȑo1{�;�{�K�ރ�L�"Y@n�_I�~Hx�q܃?���?�w�w�^�[>�>��O�f�'/�ް�㻷0�{��ہ��"gHy��dS�X-��t2��h��Q2
2�L�@TX`5'O�����ص���w�[�cv�>��G7T����S��(�N���ȶoP�=Hj�1fz����avV���˞dͧ����g�[�*;��{q7�cWI���}9Ԥ^��G��t���q���}}Z$�)*R���jdu�h*��U�X^ɒ������g�>�c��Oq��όE˷�LI�������oru�e�ڿ`�o��Nç�\�W|��=���9�����ɬ���B, �ɤ,�:��$|�P�  F��곌�i$1m,3>v��6��z	����r����@dx��qzß!��p�w�|�m���'h_�c6���Ծ��>�){ֿΉ��a��F 4KNIs�,*i�¯�k��O�"������'�h�3��;�WJ��1c�UH�%��6,��D�,�9��5ƺҷ�y:��3
p೿�p�#�}m>k�x�-�|ȁ�Z.�oe��4�-"މ�%cL��Ȇ�b�& /�0�����L�hP�T�۔4����&�@�L��.��ˆ	�[�D������Z��|�;�����߲��-��Zڹp��W�"�����X,"��zy�}K��Y�Ml=� �T�;�ZKϺ��@,`�hb�]�B�d��XQ��"�"~+*�\
�w�g��*6�|ʎ���;J�<��"W�lC�bP)Vɲ?����!�䊐�Ħ�]�jyMR*b�Ii�|_��3-��Pd�S˛=���bb*.�
1��U7�����t6�,��QH�ir�8� �*�d��P��ce�i����<�/�(@i}*}%( �,g��­��D)���8t9G!#7�e3�s��Co܌,6g�q��5�+�H�&�)�D�#iD��e��	e��	�J[j��$bY���������Ex�P�Y����;��?B{IEND�B`�E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightB<Install from a specify &folder�����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet)gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3azSystem.Windows.Forms.AnchorStyles, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089PADPA����0����7�����y�6�pba�1�n��W6�4�?�յ찯�����b�^$ئ�(�grW��E�/������3JPM,5�V,�f�-HM�.��.c�+0�,0I�[1���<�C�B��B�1PP�:�S�]kbp�
ptp}�p�3�s��sde�u�J`~}'������T7e�5^�=f'Z����8������\I���z2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type#(>>labelControl1.Name�,>>labelControl1.Parent�(>>labelControl1.Type�,>>labelControl1.ZOrder>*>>myCancelButton.NameA.>>myCancelButton.ParentQ*>>myCancelButton.TypeX.>>myCancelButton.ZOrder�">>myOKButton.Name�&>>myOKButton.Parent�">>myOKButton.Type�&>>myOKButton.ZOrder~$>>txtPassword.Name�(>>txtPassword.Parent�$>>txtPassword.Type�(>>txtPassword.ZOrder,labelControl1.Location$labelControl1.Size�,labelControl1.TabIndex\$labelControl1.Texta*myCancelButton.Anchorl.myCancelButton.Location&myCancelButton.Size�.myCancelButton.TabIndexY&myCancelButton.Text^,myCancelButton.ToolTipf"myOKButton.Anchorw&myOKButton.Location$	myOKButton.Size�	&myOKButton.TabIndexd
myOKButton.Texti
$myOKButton.ToolTipn
(txtPassword.Location|
 txtPassword.Size(txtPassword.TabIndex�@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheighthB����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Script PasswordFormGetScriptPassword{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
labelControl1$this�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1myCancelButton$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3
myOKButton$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2txtPassword$this�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight2
	Password:D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�@A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightP
CancelCancel (Escape)D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy(@A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightP&OKOK (Alt + O)C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyjA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�������lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet	gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3awSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089uSystem.Windows.Forms.ImeMode, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089fSystem.Drawing.Font, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3agSystem.Drawing.Color, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3azSystem.Windows.Forms.AnchorStyles, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089SH?�q�G����ǂ��]#���P�:�S���N�Չ1o߉��4���Y�����^��r^��2��ޒ��ϸ�[
w��7����x���!��%�Q(��;��BWY�=aZ������"9��70ȝw�	�y�6�m�}�pba�1�n�MaP�r\��+Ϊ#�٪L���
��s3�|~4�gʯյ�Ŵ�%���	�	�a�?��	�u���@!��V���������񰼲q������z��A�H���M��uP�|�Q�G�!Ř������y��5`�"�`�N{��aF�C�ѻ]�Ѳ�b��t���|�ҫQՖs�א������^$ئ�(،^����0�<ܶo?ܜT�������}<��grW�x|9惍d�:"�P�좙���E�Y�F�A��H���N���i2�^��7����k�8�m�A��������L��`���/6�����a�^�)_���j�������0���
�Ug[�V��׿�XW�MxAi��_��WuT$���#�߀���3��Oł"��"�X�#I��$���$�p�$�I%�c'��d'�KA(�L)SqX)A�)���)��+���+JPM,5�V,F�-�f�-HM�.;��.��.���/c�+0�,0h�2ױ 2/�3�`�4���4��4���5*r\6�]�6���6?�6���6ZC�<ǁ@�$@%�%@ZZ-@��-A�# B��YByI_Bk`�B�B��BH%�B�C�B��BE�BC+?�C�
�C�hE���E"�E9@�F��Hgo(H#I�W!I';-I؇2I�Ig��J,�J��PLįM<<"M�Ms�M}H�N5PuO�*�O���O�1PPK�	Q�gQ��R#�>RC�S�Z�S�:�S��St�S/�5TгCT�cU(9V��V�RBX��[X�^X1�JZUdjZ�-�Z��\ϲq\Cؚ\`�]���]���]i��`���`�]kb��bp�@c9�NcM'�cr�cdfe��f���f/�$h�s2h�~Gh��]k�Kl Dop�
ptp}�p}7 qX?@r�3�s��s+��t1+�t�Bude�u>X�u5r�wޯ�xw
z�9�{�J`~Y6
f(EI'�(,$z��#p�8Y��0�%��!2+�,�
t��/���%wL��'��+{��* � ~�`��"7�.#p�d/&��!�!��O	X!!K7)EF0�-P%�%�!�
�$�$j"E.�)t.�-x#A"�"�&%
�1�1�#$O#�"�a�0,�-�*hx'�,�,��0�?-�-��"y%�.#�/�/s!�b,2�Q ��'�)� �!&� �'�$�8�!���A)E��
p)�xV
�	��T�Q��u0�`1"��n���	<	�qT*��w�
/x�-*���$i���h-�p�WG&15
����@�&�2�2DO2v2�V��/���*�
6=1_T�\r��R(M�{?�)5!I�1� k$"q�
n
n+a��^���L��.�[?,�+�*C+?��	,���%i	�++(_@2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name
>>$this.Type<>>chkIncludeSuccessScript.Name�@>>chkIncludeSuccessScript.Parent�<>>chkIncludeSuccessScript.Type�@>>chkIncludeSuccessScript.ZOrderF$>>colLanguage.NameI$>>colLanguage.TypeV>>colName.Name�>>colName.Type� >>colResult.Nameo >>colResult.Typez(>>colScriptDesc.Name(>>colScriptDesc.Type(>>colSourceCode.Name�(>>colSourceCode.Type�$>>gridColumn1.Name0$>>gridColumn1.Type=$>>gridColumn2.Name�$>>gridColumn2.Type�$>>gridColumn3.NameZ$>>gridColumn3.Typeg$>>gridColumn5.Name�$>>gridColumn5.Type�&>>gridControl1.Name�*>>gridControl1.Parent�&>>gridControl1.Type�*>>gridControl1.ZOrder 	&>>gridControl2.Name#	*>>gridControl2.Parent1	&>>gridControl2.Type?	*>>gridControl2.ZOrder�	 >>gridView1.Name�	 >>gridView1.Type�	 >>gridView2.NameV
 >>gridView2.Typea
>>label1.Name�
>>label1.Parent�
>>label1.Type>>label1.ZOrderv>>label2.Namez>>label2.Parent�>>label2.Type�>>label2.ZOrder(>>labelControl1.Name
,>>labelControl1.Parent(>>labelControl1.Type(,>>labelControl1.ZOrder�(>>labelControl2.Name�,>>labelControl2.Parent�(>>labelControl2.Type�,>>labelControl2.ZOrderZ
(>>labelControl3.Name]
,>>labelControl3.Parentl
(>>labelControl3.Type{
,>>labelControl3.ZOrder(>>labelControl4.Name,>>labelControl4.Parent(>>labelControl4.Type$,>>labelControl4.ZOrder�(>>labelControl5.Name�,>>labelControl5.Parent�(>>labelControl5.Type�,>>labelControl5.ZOrderU0>>lblAutoCountEmail.NameX4>>lblAutoCountEmail.Parentk0>>lblAutoCountEmail.Typez4>>lblAutoCountEmail.ZOrder&>>lblGPISEmail.Name*>>lblGPISEmail.Parent&>>lblGPISEmail.Type#*>>lblGPISEmail.ZOrder�0>>lblIngeniousEmail.Name�4>>lblIngeniousEmail.Parent�0>>lblIngeniousEmail.Type�4>>lblIngeniousEmail.ZOrderZ&>>lblTMCSEmail.Name]*>>lblTMCSEmail.Parentk&>>lblTMCSEmail.Typez*>>lblTMCSEmail.ZOrder*>>myCancelButton.Name.>>myCancelButton.Parent*>>myCancelButton.Type%.>>myCancelButton.ZOrder�">>myOKButton.Name�&>>myOKButton.Parent�">>myOKButton.Type�&>>myOKButton.ZOrderS(>>panelControl1.NameV,>>panelControl1.Parente(>>panelControl1.Typel,>>panelControl1.ZOrder�(>>panelControl2.Name�,>>panelControl2.Parent�(>>panelControl2.Type,>>panelControl2.ZOrder�&>>panelHeader1.Name�*>>panelHeader1.Parent�&>>panelHeader1.Type�*>>panelHeader1.ZOrder@>>repositoryItemButtonEdit1.Name@>>repositoryItemButtonEdit1.Type@>>repositoryItemButtonEdit2.Name�@>>repositoryItemButtonEdit2.Type�>>sbtnSend.Namex">>sbtnSend.Parent�>>sbtnSend.Type�">>sbtnSend.ZOrder&>>txtContactNo.Name*>>txtContactNo.Parent+&>>txtContactNo.Type:*>>txtContactNo.ZOrder�.>>txtContactPerson.Name�2>>txtContactPerson.Parent�.>>txtContactPerson.Type�2>>txtContactPerson.ZOrderf">>txtToEmail.Namei&>>txtToEmail.Parentu">>txtToEmail.Type�&>>txtToEmail.ZOrder,>>xtraTabControl1.Name0>>xtraTabControl1.Parent,>>xtraTabControl1.Type$0>>xtraTabControl1.ZOrder�&>>xtraTabPage1.Name�*>>xtraTabPage1.Parent�&>>xtraTabPage1.Type�*>>xtraTabPage1.ZOrderO&>>xtraTabPage2.NameR*>>xtraTabPage2.Parent`&>>xtraTabPage2.Typeq*>>xtraTabPage2.ZOrder�@chkIncludeSuccessScript.Location�TchkIncludeSuccessScript.Properties.Caption�8chkIncludeSuccessScript.Size�@chkIncludeSuccessScript.TabIndexP&colLanguage.CaptionU&colLanguage.Visible_0colLanguage.VisibleIndexa"colLanguage.WidthfcolName.CaptionkcolName.Visiblex(colName.VisibleIndexzcolName.Width"colResult.Caption�"colResult.Visible�,colResult.VisibleIndex�colResult.Width�*colScriptDesc.Caption�*colScriptDesc.Visible�4colScriptDesc.VisibleIndex�&colScriptDesc.Width�*colSourceCode.Caption�*colSourceCode.Visible�4colSourceCode.VisibleIndex�&colSourceCode.Width�&gridColumn1.Caption�&gridColumn1.Visible�0gridColumn1.VisibleIndex�"gridColumn1.Width�&gridColumn2.Caption�&gridColumn2.Visible�0gridColumn2.VisibleIndex�"gridColumn2.Width�&gridColumn3.Caption&gridColumn3.Visible	0gridColumn3.VisibleIndex"gridColumn3.Width&gridColumn5.Caption&gridColumn5.Visible"0gridColumn5.VisibleIndex$"gridColumn5.Width)"gridControl1.Dock.*gridControl1.Location�"gridControl1.Sizet*gridControl1.TabIndex"gridControl2.Dock*gridControl2.Location�"gridControl2.Sizec *gridControl2.TabIndex!label1.ImeMode!label1.Location�!label1.SizeP"label1.TabIndex�"label1.Text�"label2.ImeModeW#label2.Location�#label2.Size�$label2.TabIndex?%label2.TextD%,labelControl1.Location"&$labelControl1.Size�&,labelControl1.TabIndexb'$labelControl1.Textg',labelControl2.Locationr'$labelControl2.Size(,labelControl2.TabIndex�($labelControl2.Text�(,labelControl3.Location�($labelControl3.Sizeg),labelControl3.TabIndex*$labelControl3.Text*:labelControl4.Appearance.Font*,labelControl4.Locationz+$labelControl4.Size,,labelControl4.TabIndex�,$labelControl4.Text�,,labelControl5.Location�,$labelControl5.Sizei-,labelControl5.TabIndex
.$labelControl5.Text.6lblAutoCountEmail.EditValue1.4lblAutoCountEmail.LocationY.blblAutoCountEmail.Properties.Appearance.BackColor�.,lblAutoCountEmail.Size�/4lblAutoCountEmail.TabIndexU0,lblGPISEmail.EditValueZ0*lblGPISEmail.Location�0XlblGPISEmail.Properties.Appearance.BackColor#1"lblGPISEmail.Size�1*lblGPISEmail.TabIndex�26lblIngeniousEmail.EditValue�24lblIngeniousEmail.Location�2blblIngeniousEmail.Properties.Appearance.BackColor]3,lblIngeniousEmail.Size44lblIngeniousEmail.TabIndex�4,lblTMCSEmail.EditValue�4*lblTMCSEmail.Location�4XlblTMCSEmail.Properties.Appearance.BackColor�5"lblTMCSEmail.SizeC6*lblTMCSEmail.TabIndex�6*myCancelButton.Anchor�6.myCancelButton.Location�7&myCancelButton.Size58.myCancelButton.TabIndex�8&myCancelButton.Text�8,myCancelButton.ToolTip�8"myOKButton.Anchor�8&myOKButton.Location�9myOKButton.Size@:&myOKButton.TabIndex�:myOKButton.Text�:$myOKButton.ToolTip�:$panelControl1.Dock�:,panelControl1.Location�;$panelControl1.SizeB<,panelControl1.TabIndex�<$panelControl2.Dock�<,panelControl2.Location�=$panelControl2.Size1>,panelControl2.TabIndex�>"panelHeader1.Dock�>&panelHeader1.Header�?*panelHeader1.Location�?"panelHeader1.Size/@*panelHeader1.TabIndex�@HrepositoryItemButtonEdit1.AutoHeight�@HrepositoryItemButtonEdit2.AutoHeight�@"sbtnSend.Location�@sbtnSend.SizexA"sbtnSend.TabIndexBsbtnSend.Text!B*txtContactNo.Location;B"txtContactNo.Size�B*txtContactNo.TabIndex{C2txtContactPerson.Location�C*txtContactPerson.SizeD2txtContactPerson.TabIndex�D&txtToEmail.Location�DtxtToEmail.SizeaE&txtToEmail.TabIndexF(xtraTabControl1.Dock
F0xtraTabControl1.Location�F(xtraTabControl1.SizePG0xtraTabControl1.TabIndex�G"xtraTabPage1.Size�G"xtraTabPage1.Text�H"xtraTabPage2.Size�H"xtraTabPage2.TextUI@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�EB����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__
Script ResultFormScriptResult{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49achkIncludeSuccessScript
panelControl1�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5colLanguage�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49acolName�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a	colResult�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
colScriptDesc�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
colSourceCode�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49agridColumn1�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49agridColumn2�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49agridColumn3�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49agridColumn5�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49agridControl1xtraTabPage1~DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0gridControl2xtraTabPage2~DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0	gridView1�DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a	gridView2�DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49alabel1
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08911label2
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08910
labelControl1
panelControl1�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a14
labelControl2
panelControl1�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a9
labelControl3
panelControl1�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a7
labelControl4
panelControl1�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4
labelControl5
panelControl2�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0lblAutoCountEmail
panelControl1�DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3lblGPISEmail
panelControl1�DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0lblIngeniousEmail
panelControl1�DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1lblTMCSEmail
panelControl1�DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2myCancelButton
panelControl2�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2
myOKButton
panelControl2�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1
panelControl1$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1
panelControl2$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2panelHeader1$this`AutoCount.Controls.PanelHeader, AutoCount, Version=1.8.0.0, Culture=neutral, PublicKeyToken=null3repositoryItemButtonEdit1�DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49arepositoryItemButtonEdit2�DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49asbtnSend
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a12txtContactNo
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a8txtContactPerson
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a6
txtToEmail
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a13xtraTabControl1$this�DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0xtraTabPage1xtraTabControl1�DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0xtraTabPage2xtraTabControl1�DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy0Include Success ScriptsA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�Language2Script NamedResult2DescriptiondEdit Source Code2Report NamedReport TypedResult2Edit Report2D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�$D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�$E����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�	\Note: To solve this problem, please leave your contact and email to your software developer.E����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyIA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightg$�(Famous software vendors’ email: AutoCount: developer@autocountsoft.com , TM Century Solutions: kslim@tmcs.com.my , Ingenious Business Software Pte Ltd: chea@ingenious.sg , GPIS Solutions Sdn Bhd: tickseng@my-ias.com)C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
2A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight,
	Send to :C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyvA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightW
Your contact no. :C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
vA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight:
Your name :F����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightC
Ask for helpC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy_
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
To continue with the upgrade:&AutoCount: developer@autocountsoft.comC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�GG����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�+GPIS Solutions Sdn Bhd: tickseng@my-ias.comC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy%VG����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�7 Ingenious Business Software Pte Ltd: chea@ingenious.sgC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyVG����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight
'TM Century Solutions: kslim@tmcs.com.myC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�GG����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�H����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyXA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightPCancelCancel (Escape)H����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightP&OKOK (Alt + O)D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxylA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�!D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__
Script ResultC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�,C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
Send to Script DeveloperC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyhsA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy^sA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy^/A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy,A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�@A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�$Application ScriptA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�$User Report6/����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet[gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089zSystem.Windows.Forms.AnchorStyles, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089fSystem.Drawing.Font, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3agSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a�DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aPA����-��`�Յ4՝�����
��5j��R0�1P5��68�reÎ��I�J�P���Q���`>E��F��B^����Tখ�U�B�y�յ찔3�<�η�V�������{_����A�H���M�O�P�w�'�t��N{�fk�w��su��H)�����R��T��[��<��;eI�'���	����XW��dAi�)�*V�:R�
��rd�n�es%��!�5�"v��6�ʳ7�9��>�S?k`�BH%�B�C�B��B�hE�( H';-I؇2IiU�JF\_K9g`K�*�O���O(�=P!R#�>R�:�SUdjZq�_��en%��nZv�n}�pX)j|%�$
��Cg��V_4	~	�	��
W
���>7�	�5s�	��X�
�
P��f���2�#u�PUs'b����H5�	�w��;���U	�^/$���}\��-���2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name
>>$this.Type">>label1.Name�>>label1.Parent�>>label1.Type�>>label1.ZOrder#>>label2.Name&>>label2.Parent.>>label2.Type5>>label2.ZOrder�>>label3.Name�>>label3.Parent�>>label3.Type�>>label3.ZOrder1 >>lblNewVer.Name4$>>lblNewVer.Parent? >>lblNewVer.TypeF$>>lblNewVer.ZOrder� >>lblOldVer.Name�$>>lblOldVer.Parent� >>lblOldVer.Type�$>>lblOldVer.ZOrderE*>>lblVersionInfo.NameH.>>lblVersionInfo.ParentX*>>lblVersionInfo.Type_.>>lblVersionInfo.ZOrder�">>sbtnBackup.Name�&>>sbtnBackup.Parent�">>sbtnBackup.Type�&>>sbtnBackup.ZOrder�>>sbtnNo.Name�>>sbtnNo.Parent�>>sbtnNo.Type�>>sbtnNo.ZOrder>>sbtnYes.Name" >>sbtnYes.Parent+>>sbtnYes.Type2 >>sbtnYes.ZOrder�label1.Anchor�label1.AutoSizejlabel1.Fontllabel1.Location�	label1.Sizee
label1.TabIndex	label1.Textlabel2.AutoSizeolabel2.Locationqlabel2.Size
label2.TabIndex�label2.Text�label3.AutoSize�label3.Location�label3.Sizet
label3.TabIndexlabel3.Text$lblNewVer.AutoSize;lblNewVer.Font=$lblNewVer.Location�lblNewVer.Size7$lblNewVer.TabIndex�lblNewVer.Text�$lblOldVer.AutoSize�lblOldVer.Font�$lblOldVer.LocationRlblOldVer.Size�$lblOldVer.TabIndex�lblOldVer.Text�6lblVersionInfo.AutoSizeMode�.lblVersionInfo.Locationf&lblVersionInfo.Size.lblVersionInfo.TabIndex�&lblVersionInfo.Text�"sbtnBackup.Anchor�&sbtnBackup.LocationjsbtnBackup.Size&sbtnBackup.TabIndex�sbtnBackup.Text�sbtnNo.Anchor�sbtnNo.LocationesbtnNo.SizesbtnNo.TabIndex�sbtnNo.Text�sbtnYes.Anchor� sbtnYes.Location\sbtnYes.Size� sbtnYes.TabIndex�sbtnYes.Text�@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightV�B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Upgrade DatabaseFormUpgradeDatabase{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49alabel1$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0894label2$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0893label3$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0892	lblNewVer$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890	lblOldVer$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891lblVersionInfo$this�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a8
sbtnBackup$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5sbtnNo$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a6sbtnYes$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a7C����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight,
_(Note: Please make sure no other users is accessing this Account Book during database upgrade.)E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy2RA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
Existing Account Book Version:E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy2rA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
Target Account Book Version:D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�rA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightp
Do not translateD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�RA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightp
Do not translateF����`DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a(DevExpress.XtraEditors.LabelAutoSizeModevalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight21Do not translateC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&BackupC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy7�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&NoC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&Yes�����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet4gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3awSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089�DevExpress.XtraEditors.Mask.MaskType, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aք���7�����y�6�pba�1�n�յ��+*�������b��t�Җs�א���(��^$ئ�(�grW�/����(�
�3��3nj�)x��)JPM,5�V,�f�-HM�.��.c�+0�,0/�3�N�3�C�B��B+?�C�
�Cgo(H�1PP�:�SK��_�]kb:�dœ�dp�
ptp}�p�3�s��sde�u���}	����7\e�"Q����nx���'�Z����8�)���X��"\=���:U�]�R2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type'(>>labelControl1.Name�,>>labelControl1.Parent�(>>labelControl1.Type�,>>labelControl1.ZOrderB*>>myCancelButton.NameE.>>myCancelButton.ParentU*>>myCancelButton.Type\.>>myCancelButton.ZOrder�">>myOKButton.Name�&>>myOKButton.Parent�">>myOKButton.Type�&>>myOKButton.ZOrder�&>>panelHeader1.Name�*>>panelHeader1.Parent�&>>panelHeader1.Type�*>>panelHeader1.ZOrder�(>>txtLicenseKey.Name,>>txtLicenseKey.Parent(>>txtLicenseKey.Type,>>txtLicenseKey.ZOrder�,labelControl1.Location�$labelControl1.Size;,labelControl1.TabIndex�$labelControl1.Text�.myCancelButton.Location�&myCancelButton.Size�.myCancelButton.TabIndex2&myCancelButton.Text7,myCancelButton.ToolTip?&myOKButton.LocationPmyOKButton.Size�&myOKButton.TabIndex�	myOKButton.Text�	$myOKButton.ToolTip�	"panelHeader1.Dock�	"panelHeader1.HintR
*panelHeader1.Location�
"panelHeader1.SizeH*panelHeader1.TabIndex�.txtLicenseKey.EditValue�,txtLicenseKey.Location�LtxtLicenseKey.Properties.Mask.EditMask�LtxtLicenseKey.Properties.Mask.MaskType�BtxtLicenseKey.Properties.NullText{
$txtLicenseKey.Size�
,txtLicenseKey.TabIndex;@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Upgrade License KeyFormUpgradeLicenseKey{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
labelControl1$this�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1myCancelButton$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3
myOKButton$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2panelHeader1$thiscAutoCount.Controls.PanelHeader, AutoCount.UI, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null4
txtLicenseKey$this�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy-rA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight<
License Key:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightPCancelCancel (Escape)C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyZ�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightP&OKOK (Alt + O)D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__XTo continue upgrade, please contact your reseller or software vendor to get license key.C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�PC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�o1[A-Z][0-9]{5}-[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}E����`DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a$DevExpress.XtraEditors.Mask.MaskTypevalue__XXXXXX-XXXX-XXXX-XXXX-XXXXA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight������lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet0gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089uSystem.Windows.Forms.ImeMode, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3arSystem.Drawing.ContentAlignment, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3awSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089zSystem.Windows.Forms.AnchorStyles, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089PADP^���t���ߖ�յ��.�A�H���M�`����$��5���b��t�Җs�א���%XP�7ț��
���tB艜/�?�f��N�-��׿AiK3)
�>��Ct�=1/�3H%�B�C�B��B+?�C�
�C�hEgo(H�]~K�*�O���OS�Q�:�SUdjZ��k}�pO֩{�a�{SJ�7����C����|i>�2�Y�Efj	���"�����*�r\���E�
2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI>>$this.Name�>>$this.Type>>label1.Name�>>label1.Parent�>>label1.Type�>>label1.ZOrder >>lblAction.Name$>>lblAction.Parent >>lblAction.Type$$>>lblAction.ZOrder�*>>lblRecordCount.Name�.>>lblRecordCount.Parent�*>>lblRecordCount.Type�.>>lblRecordCount.ZOrder(&>>panelHeader1.Name+*>>panelHeader1.Parent9&>>panelHeader1.Type@*>>panelHeader1.ZOrder�4>>progressBarControl1.Name�8>>progressBarControl1.Parent�4>>progressBarControl1.Type�8>>progressBarControl1.ZOrderOlabel1.ImeModeRlabel1.Location�label1.Size�label1.TabIndex:label1.Text?"lblAction.ImeModeB$lblAction.Location�lblAction.Size�$lblAction.TabIndex*	,lblRecordCount.ImeMode/	.lblRecordCount.Location�	&lblRecordCount.Sizes
.lblRecordCount.TabIndex&lblRecordCount.Text0lblRecordCount.TextAlign"panelHeader1.Dock�*panelHeader1.Locationn"panelHeader1.Size

*panelHeader1.TabIndex�
4progressBarControl1.Anchor�
8progressBarControl1.Location`0progressBarControl1.Size�8progressBarControl1.TabIndex�@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__FormUpgradeScript{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49alabel1$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890	lblAction$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891lblRecordCount$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0892panelHeader1$this`AutoCount.Controls.PanelHeader, AutoCount, Version=1.8.0.0, Culture=neutral, PublicKeyToken=null4progressBarControl1$this�DevExpress.XtraEditors.ProgressBarControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3C����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy_A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight
0C����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy2A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight\C����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyK_A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheighte0E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.ContentAlignmentvalue__F����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�,G����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__
D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyLA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��<����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet`	gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3azSystem.Windows.Forms.AnchorStyles, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089fSystem.Drawing.Font, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3auSystem.Windows.Forms.ImeMode, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089uSystem.Windows.Forms.Padding, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089�DevExpress.XtraEditors.Controls.ButtonPredefines, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aPADP�܇��Y���k��7���?>����y�6��߫��O�pba�1�n���b�յ찚V������u��3.���zF��P�
R�D�T�J^\�N{�1���S���ӧ��������E���\�`�.f�2 �nٯ�!s�0����*g���
'�ߘ�����v��XW�wx#{�w��P�����3�Sv!JPM,5�V,�f�-HM�.��.�%s5k`�B�C�B��B���G';-I؇2I�I��LDbL�1PP#�>R�:�S�]kb3�WcDJ�j
3�lD!Vm�nUo��op�
ptp}�p��r�3�s��sde�u
H�x�{�y���z�� {b5Z{�8(|�J`~�����B��FZRe���
1�7/
m
�	�
�R
�
�J
��]	�����$P�
m�	��
'��?
�	
k� 	����	
\uF�d'����I���\�3|�9�ZL'�}
���I���J��2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name&>>$this.TypeI4>>btnGetLatestCountry.Name�8>>btnGetLatestCountry.Parent�4>>btnGetLatestCountry.Type�8>>btnGetLatestCountry.ZOrderj>>label2.Namem>>label2.Parentu>>label2.Type|>>label2.ZOrder�8>>labelCountryRepresent.Name�<>>labelCountryRepresent.Parent8>>labelCountryRepresent.Type<>>labelCountryRepresent.ZOrder�<>>labelCountrySettingMssg.Name�@>>labelCountrySettingMssg.Parent�<>>labelCountrySettingMssg.Type�@>>labelCountrySettingMssg.ZOrderL>>labelCurrentTaxBaseCurrencyCode.Name"P>>labelCurrentTaxBaseCurrencyCode.ParentCL>>labelCurrentTaxBaseCurrencyCode.TypeJP>>labelCurrentTaxBaseCurrencyCode.ZOrder�<>>labelSystemCurrencyCode.Name�@>>labelSystemCurrencyCode.Parent�<>>labelSystemCurrencyCode.Type�@>>labelSystemCurrencyCode.ZOrderW >>luCountry.NameZ$>>luCountry.Parente >>luCountry.Typel$>>luCountry.ZOrder�*>>myCancelButton.Name�.>>myCancelButton.Parent*>>myCancelButton.Type.>>myCancelButton.ZOrder�">>myOKButton.Name�&>>myOKButton.Parent�">>myOKButton.Type�&>>myOKButton.ZOrder28btnGetLatestCountry.Location50btnGetLatestCountry.Size�8btnGetLatestCountry.TabIndexu	0btnGetLatestCountry.Textz	label2.Anchor�	label2.Font;
label2.ImeMode�label2.Location@label2.Margin�label2.Size�
label2.TabIndexTlabel2.TextY<labelCountryRepresent.AutoSize�:labelCountryRepresent.ImeMode�<labelCountryRepresent.Location�4labelCountryRepresent.Size9<labelCountryRepresent.TabIndex�4labelCountryRepresent.Text�8labelCountrySettingMssg.Font>labelCountrySettingMssg.ImeMode^@labelCountrySettingMssg.Location<labelCountrySettingMssg.Margin�8labelCountrySettingMssg.Sizev@labelCountrySettingMssg.TabIndex8labelCountrySettingMssg.TextPlabelCurrentTaxBaseCurrencyCode.AutoSize�PlabelCurrentTaxBaseCurrencyCode.Location�HlabelCurrentTaxBaseCurrencyCode.Size�PlabelCurrentTaxBaseCurrencyCode.TabIndex)HlabelCurrentTaxBaseCurrencyCode.Text.@labelSystemCurrencyCode.AutoSizeG>labelSystemCurrencyCode.ImeModeI@labelSystemCurrencyCode.Location�8labelSystemCurrencyCode.Size�@labelSystemCurrencyCode.TabIndex18labelSystemCurrencyCode.Text6$luCountry.Location;8luCountry.Properties.Buttons�luCountry.Size�$luCountry.TabIndex:*myCancelButton.Anchor?.myCancelButton.Location�*myCancelButton.Margin�&myCancelButton.Size\.myCancelButton.TabIndex&myCancelButton.Text,myCancelButton.ToolTip
"myOKButton.Anchor&myOKButton.Location�"myOKButton.MargingmyOKButton.Size; &myOKButton.TabIndex� myOKButton.Text� $myOKButton.ToolTip� @����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__)Country Settings For System Currency EURO!FormSetCountryForEuroCurrencyUser{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abtnGetLatestCountry$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0label2$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0897labelCountryRepresent$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0895labelCountrySettingMssg$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0898labelCurrentTaxBaseCurrencyCode$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0896labelSystemCurrencyCode$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891	luCountry$this�DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4myCancelButton$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2
myOKButton$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�YA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightv#!Get Latest CountryD����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahoma���@����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__F����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyG����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*	�(Note : The Country selected to represent (EUR) will become your Country and you are not able to change it again later on. Please choose it carefully.)F����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxycA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�Country To Represent (EUR) : E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__F����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyG����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�/�This Account Book uses (EUR) as System Currency, you are require to choose a country to represent it as Europe is not a country. Please choose one from below to represent the System Currency (EUR).C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyCA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
System Currency Code : F����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�CA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight"EURC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�`H����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxyy�G����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightdCancelCancel (Escape)D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��G����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightd
&OKOK (Alt + O)�E����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetl	gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3azSystem.Windows.Forms.AnchorStyles, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089fSystem.Drawing.Font, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3auSystem.Windows.Forms.ImeMode, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089uSystem.Windows.Forms.Padding, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089�DevExpress.XtraEditors.Controls.ButtonPredefines, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aPADP�܇��Y���8|��R,��7��?̗Z~��������j����Ѡy�6��߫��O����pba�1�n���b�յ�c����V������u�����~L���zF��P��mƉɾ�
R�D�T�J^\�N{τm��1���S���ӧ����n)��g��~KO������E�.f�2 �nٯ�!s�0����*g�����v��XW[��wx#{�w��P�����3��P�Sv!g�<&�=&JPM,5�V,�
-�f�-HM�.��.��26�2k`�B�C�B��B���G';-I؇2I�I�1PPD�P��P#�>R�:�S�]kb3�WcO�_eD!Vm��op�
ptp}�p��r�3�s��s�StU;�t[!�t���tde�u
H�x�{�y�� {b5Z{�J`~�J�oH���|�	Y
��=	�	7�;y�
�i�V��
�V��	i
�k����P�)c�
����
E��,
��P?�
,�	h	D�R��8'���
�Y��8�\�)���PB{V��s��M�2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name
>>$this.Type+4>>btnGetLatestCountry.Name�8>>btnGetLatestCountry.Parent�4>>btnGetLatestCountry.Type�8>>btnGetLatestCountry.ZOrderL>>label2.NameO>>label2.ParentW>>label2.Type^>>label2.ZOrder�<>>labelCountrySettingMssg.Name�@>>labelCountrySettingMssg.Parent�<>>labelCountrySettingMssg.Type�@>>labelCountrySettingMssg.ZOrderkL>>labelCurrentTaxBaseCurrencyCode.NamenP>>labelCurrentTaxBaseCurrencyCode.Parent�L>>labelCurrentTaxBaseCurrencyCode.Type�P>>labelCurrentTaxBaseCurrencyCode.ZOrderD>>labelNewTaxBaseCurrencyCode.NameH>>labelNewTaxBaseCurrencyCode.Parent+D>>labelNewTaxBaseCurrencyCode.Type2H>>labelNewTaxBaseCurrencyCode.ZOrder�.>>labelSpecialMssg.Name�2>>labelSpecialMssg.Parent�.>>labelSpecialMssg.Type�2>>labelSpecialMssg.ZOrder8>>>labelTaxBaseCurrencyCode.Name;B>>labelTaxBaseCurrencyCode.ParentU>>>labelTaxBaseCurrencyCode.Type\B>>labelTaxBaseCurrencyCode.ZOrder� >>luCountry.Name�$>>luCountry.Parent� >>luCountry.Type�$>>luCountry.ZOrderl*>>myCancelButton.Nameo.>>myCancelButton.Parent*>>myCancelButton.Type�.>>myCancelButton.ZOrder">>myOKButton.Name&>>myOKButton.Parent">>myOKButton.Type$&>>myOKButton.ZOrder�8btnGetLatestCountry.Location�0btnGetLatestCountry.SizeK	8btnGetLatestCountry.TabIndex�	0btnGetLatestCountry.Text�	label2.Anchor
label2.Font�
label2.ImeModelabel2.Location�label2.MarginV
label2.Size*label2.TabIndex�label2.Text�8labelCountrySettingMssg.Fontq>labelCountrySettingMssg.ImeMode�@labelCountrySettingMssg.Locationv<labelCountrySettingMssg.Margin8labelCountrySettingMssg.Size�@labelCountrySettingMssg.TabIndex�8labelCountrySettingMssg.Text�PlabelCurrentTaxBaseCurrencyCode.AutoSize�PlabelCurrentTaxBaseCurrencyCode.Location�HlabelCurrentTaxBaseCurrencyCode.Size�PlabelCurrentTaxBaseCurrencyCode.TabIndex9HlabelCurrentTaxBaseCurrencyCode.Text>HlabelNewTaxBaseCurrencyCode.AutoSizeaFlabelNewTaxBaseCurrencyCode.ImeModecHlabelNewTaxBaseCurrencyCode.Location@labelNewTaxBaseCurrencyCode.Size�HlabelNewTaxBaseCurrencyCode.TabIndexK@labelNewTaxBaseCurrencyCode.TextP.labelSpecialMssg.Anchoro*labelSpecialMssg.Font0labelSpecialMssg.ImeModey2labelSpecialMssg.Location!.labelSpecialMssg.Margin�*labelSpecialMssg.Size�2labelSpecialMssg.TabIndex5*labelSpecialMssg.Text:BlabelTaxBaseCurrencyCode.AutoSize@labelTaxBaseCurrencyCode.ImeModeBlabelTaxBaseCurrencyCode.Location�:labelTaxBaseCurrencyCode.SizeRBlabelTaxBaseCurrencyCode.TabIndex�:labelTaxBaseCurrencyCode.Text�$luCountry.Location8luCountry.Properties.Buttons�luCountry.Size[ $luCountry.TabIndex� *myCancelButton.Anchor!.myCancelButton.Location�!*myCancelButton.MarginM"&myCancelButton.Size!#.myCancelButton.TabIndex�#&myCancelButton.Text�#,myCancelButton.ToolTip�#"myOKButton.Anchor�#&myOKButton.Location�$"myOKButton.Margin,%myOKButton.Size&&myOKButton.TabIndex�&myOKButton.Text�&$myOKButton.ToolTip�&@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�.B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Country SettingsFormUpgradeToCountrySettings{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abtnGetLatestCountry$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0label2$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0898labelCountrySettingMssg$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0899labelCurrentTaxBaseCurrencyCode$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0897labelNewTaxBaseCurrencyCode$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0896labelSpecialMssg$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891labelTaxBaseCurrencyCode$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0892	luCountry$this�DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5myCancelButton$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3
myOKButton$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�QA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightv# Get Latest CountryD����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahoma���@����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__F����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyG����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*	�(Note : Upon selecting a Tax Base Currency Code, it will become your Country and you are not able to change it again later on. Please choose it carefully.)E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__F����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyG����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�fUnrecognized Tax Base Currency Code ({0}) in this account book. Please choose an action to correct it.C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy;A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
!Current Tax Base Currency Code : F����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy[A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�New Tax Base Currency Code : D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahoma���@����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__F����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy{G����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*�Note: (SGD) does not exist in Currency Maintenance of this account book, system will change currency code from (ABC) to (SGD). It is advise to change it or add it yourself before upgrading to latest version.F����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�;A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight#MYRC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�XH����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�G����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightdCancelCancel (Escape)D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�G����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightd
&OKOK (Alt + O)o����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet)gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3agSystem.Drawing.Color, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3auSystem.Windows.Forms.ImeMode, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089PAP*����յ��lj�f�ӵ�V�����A�H���M��N{ϻ�Z�mK��L�/����~�����%�;���׿�XWAi�jw���6M�=k`�BH%�B�C�B��B�hE';-I؇2I�*�O���O�
�Q#�>R�:�S��.U��1UUdjZ}�pyq�7��s5��R�\�z���s�S�?����b �	�\0�P+C2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type4:>>hylinkEditDownloadLink.Name�>>>hylinkEditDownloadLink.Parent�:>>hylinkEditDownloadLink.Type�>>>hylinkEditDownloadLink.ZOrderY>>label1.Name\>>label1.Parentd>>label1.Typek>>label1.ZOrder�>>label2.Name�>>label2.Parent�>>label2.Type�>>label2.ZOrderg>>okButton.Namej">>okButton.Parentt>>okButton.Type{">>okButton.ZOrder@hylinkEditDownloadLink.EditValue>hylinkEditDownloadLink.Location�lhylinkEditDownloadLink.Properties.Appearance.BackColor)6hylinkEditDownloadLink.Size�>hylinkEditDownloadLink.TabIndex�label1.ImeMode�label1.Location6label1.Size�label1.TabIndexv	label1.Text{	label2.ImeMode�	label2.Location�
label2.Size(label2.TabIndex�label2.Text�"okButton.Location�okButton.Size~"okButton.TabIndex"
okButton.Text'
@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__User Report Converter LinkFormUserReportConverterLink{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49ahylinkEditDownloadLink$this�DevExpress.XtraEditors.HyperLinkEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1label1$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0892label2$thissSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890okButton$this�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3�http://member.autocountsoft.com/download.aspx?filename=downloads/partner_space/accounting/1.8/User%20Report%20Conversion%20Setup.exeC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy@D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�E����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightgFail to load user report: You may try to download and run User Report Conversion for this account book.E����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy-A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight\Download Link :C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
gA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&OK�Q����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet�gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3awSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089�oE�\�J�4՝�\G�
���pM��5i���L�T�Z��A�iV{���x�H�ؙ���ϵ����t���T_���Jʝrp̝�X١X�ޡT�B�y��a��>�8�|fl�յ찙�i��6Ĵ��%�DW��R���]��h��V�����q|Z���Z�����{_�A�H���M�5z�f3������=~�g�H�	J��y�N{Ϛ�(���mg��۩f��c.�a�
����\��!���lP�
�U����{G��R����j��#�좙��"��H���N����c8�����A�������m�A�q޼���4����
k5
A������XWAi�?�\����%��h���!��%х�(�"%*�w:*x�?*��H.9^�2�5;3��?3v��6�/�8�9�v�9Ɍ�;��A=�S?A@���@�A%�Ak`�BH%�B�C�B��BC5�C�hEX�QEc?TH';-I�
.I؇2IX��IF\_K9g`K�K�Ms�M�,N	\N�*�O���O`�Q�|�Q\�Q#�>RZ��R�:�S~��S/�5TгCT�U�U�RBX�^Xl�X�X,mYUdjZe_|h�Huivia(�j�c�j9dKk
٫k���k�Kl��n}�p�	�t�s4uf8�xw
z� 3z�H�zdw?{۳B{��Kck��	Z	�����)��
O��L�!?%	�
7��g�X
U�0�]S���S�
Ln0\��
q��%f����XY� ��3�"���Q�V���($}	��0B��	���Kj�
$��:�
����nW"���[��S�w��~�DS�	L
�<��L
��\��
��y
5���n��UJ����
�
3�
!

���&2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type':>>ckEdtUseDefaultAccount.Name�>>>ckEdtUseDefaultAccount.Parent�:>>ckEdtUseDefaultAccount.Type�>>>ckEdtUseDefaultAccount.ZOrderP0>>ckEdtUseMyAccount.NameS4>>ckEdtUseMyAccount.Parentf0>>ckEdtUseMyAccount.Typeu4>>ckEdtUseMyAccount.ZOrder�,>>edtDatabaseName.Name�0>>edtDatabaseName.Parent,>>edtDatabaseName.Type0>>edtDatabaseName.ZOrder�(>>edtServerName.Name�,>>edtServerName.Parent�(>>edtServerName.Type�,>>edtServerName.ZOrderF0>>edtServerPassword.NameI4>>edtServerPassword.Parent\0>>edtServerPassword.Typek4>>edtServerPassword.ZOrder�0>>edtServerUserName.Name�4>>edtServerUserName.Parent0>>edtServerUserName.Type4>>edtServerUserName.ZOrder�>>label1.Name�>>label1.Parent�>>label1.Type�>>label1.ZOrder(>>label2.Name,>>label2.Parent4>>label2.TypeC>>label2.ZOrder�>>label3.Name�>>label3.Parent�>>label3.Type�>>label3.ZOrderH>>label5.NameL>>label5.ParentT>>label5.Typec>>label5.ZOrder�>>label6.Name�>>label6.Parent�>>label6.Type�>>label6.ZOrderg	,>>labelNoteDetail.Namej	0>>labelNoteDetail.Parent{	,>>labelNoteDetail.Type�	0>>labelNoteDetail.ZOrder�	>>lblGuide.Name
">>lblGuide.Parent
>>lblGuide.Type
">>lblGuide.ZOrder�
(>>panelControl1.Name�
,>>panelControl1.Parent�
(>>panelControl1.Type�
,>>panelControl1.ZOrder+(>>panelControl2.Name.,>>panelControl2.Parent=(>>panelControl2.TypeL,>>panelControl2.ZOrder�2>>sbtnAttachDatabase.Name�6>>sbtnAttachDatabase.Parent�2>>sbtnAttachDatabase.Type�6>>sbtnAttachDatabase.ZOrder{">>sbtnCancel.Name~&>>sbtnCancel.Parent�">>sbtnCancel.Type�&>>sbtnCancel.ZOrder!
.>>sbtnGetDatabases.Name$
2>>sbtnGetDatabases.Parent6
.>>sbtnGetDatabases.TypeE
2>>sbtnGetDatabases.ZOrder�
*>>sbtnGetServers.Name�
.>>sbtnGetServers.Parent�
*>>sbtnGetServers.Type�
.>>sbtnGetServers.ZOrderw>>sbtnOK.Namez>>sbtnOK.Parent�>>sbtnOK.Type�>>sbtnOK.ZOrder@ckEdtUseDefaultAccount.EditValue>ckEdtUseDefaultAccount.LocationRckEdtUseDefaultAccount.Properties.Caption�6ckEdtUseDefaultAccount.Size�>ckEdtUseDefaultAccount.TabIndex�4ckEdtUseMyAccount.Location�HckEdtUseMyAccount.Properties.Caption%,ckEdtUseMyAccount.SizeO4ckEdtUseMyAccount.TabIndex�2edtDatabaseName.EditValue�0edtDatabaseName.Location�(edtDatabaseName.Size�0edtDatabaseName.TabIndex:.edtServerName.EditValue?,edtServerName.LocationA$edtServerName.Size�,edtServerName.TabIndex�6edtServerPassword.EditValue�2edtServerPassword.Enabled�4edtServerPassword.Location�,edtServerPassword.Size&4edtServerPassword.TabIndex�6edtServerUserName.EditValue�2edtServerUserName.Enabled�4edtServerUserName.Location�,edtServerUserName.Sizeq4edtServerUserName.TabIndexlabel1.AutoSizelabel1.Locationlabel1.Size�label1.TabIndex\label1.Textalabel2.AutoSizeolabel2.Locationqlabel2.Size
label2.TabIndex�label2.Text�label3.AutoSize�label3.Location�label3.Size_label3.TabIndexlabel3.Textlabel5.AutoSizelabel5.Locationlabel5.Size�label5.TabIndexZlabel5.Text_label6.AutoSizeflabel6.Locationhlabel6.Sizelabel6.TabIndex�label6.Text�0labelNoteDetail.Location�(labelNoteDetail.SizeU0labelNoteDetail.TabIndex�(labelNoteDetail.Text�"lblGuide.AutoSize�"lblGuide.Location�lblGuide.Size) "lblGuide.TabIndex� lblGuide.Text� $panelControl1.Dock,!,panelControl1.Location�!$panelControl1.Sizer",panelControl1.TabIndex#,panelControl2.Location#$panelControl2.Size�#,panelControl2.TabIndex[$6sbtnAttachDatabase.Location`$.sbtnAttachDatabase.Size�$6sbtnAttachDatabase.TabIndex�%.sbtnAttachDatabase.Text�%&sbtnCancel.Location�%sbtnCancel.SizeW&&sbtnCancel.TabIndex�&sbtnCancel.Text'2sbtnGetDatabases.Location	'*sbtnGetDatabases.Size�'2sbtnGetDatabases.TabIndexI(*sbtnGetDatabases.TextN(.sbtnGetServers.Locationg(&sbtnGetServers.Size).sbtnGetServers.TabIndex�)&sbtnGetServers.Text�)sbtnOK.Location�)sbtnOK.Size_*sbtnOK.TabIndex+sbtnOK.Text+@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightVB����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Attach Account BookFormAttachAccountBook{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49ackEdtUseDefaultAccount
panelControl1�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a8ckEdtUseMyAccount
panelControl1�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2edtDatabaseName
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a7
edtServerName
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a6edtServerPassword
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a12edtServerUserName
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0label1
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08914label2
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08913label3
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08911label5
panelControl2sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890label6
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891labelNoteDetail
panelControl2sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891lblGuide
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08915
panelControl1$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0
panelControl2
panelControl1DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3sbtnAttachDatabase
panelControl2�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2
sbtnCancel
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a9sbtnGetDatabases
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4sbtnGetServers
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5sbtnOK
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a10C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy%>#Use Default SA Account and PasswordA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy%T(Use the following User Name and PasswordA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�$A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�saC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�mA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$&A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightI
Server Name:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy2�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight9
	Password:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightW
Database Name:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight"
Note:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy2pA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight?

User Name:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy.
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
�If your SQL database file and log file have not attached to the SQL Server, then click the below button to attach the database file first.C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
XPlease fill in the following information in order to attach AutoCount 2006 Account Book.D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightV
C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�PC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�0A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
Attach Database FileC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&CancelC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyP�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�	Get Available DatabasesC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyP$A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�Get Available ServersC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&OK]H����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet�gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3awSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089J�a��oE�\�J�4՝�&l6�w7������+�
���5i��׌�A��0�iV{���x�������ϵ��K��"7�T�B�y�ܳ᪙a��>����EѬk�ҬK�ǯ|fl�յ찙�i�����Ė�����{_�A�H���M�$���@���Uo]�\5�Ƥ�Ɯ-����=~�d&˕Z����Κ�(с�H�mg�����!������{G��R����j��#�좙��"��H���N���n�j�_�|����Tt��c8�������A���f�,�Y�1�\��������y�S�_�]�rk`�	Ai�˶���S7�h���!le#z��'х�(�w:*x�?*-y�0@	Q1�%�1���1�8A3v��6�/�8�v�9D��=��=�k�>�S?A@���@�AH%�B�C�B��B�hE�I�
.IX��IF\_K9g`K�Ms�M�*�O���O`�Q�?S�:�S�CRV�YV�\V�RBXl�X�X,mY֥PZUdjZ�]��]�Rfd��?e��e��-i�Huivia(�j�c�j9dKk׺dp}�p�w�p?9nyw
z�H�zdw?{۳B{�w\|;�^|O
�$��T�~S[�	��he��
�/qH
��M7��m�R�u�
����"
�R��
:vqL����
���?��cT���TY(
�	���R��#�%�@m��y�0�/=��Ra
�?+�������4�	x	�n��\*�v�	<�C��f��
����^z
�
�A��G	/�l�!2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type 6>>ckEdtPhysicalLogFile.Name�:>>ckEdtPhysicalLogFile.Parent�6>>ckEdtPhysicalLogFile.Type�:>>ckEdtPhysicalLogFile.ZOrderG<>>ckEdtUseDefaultPassword.NameJ@>>ckEdtUseDefaultPassword.Parentc<>>ckEdtUseDefaultPassword.Typer@>>ckEdtUseDefaultPassword.ZOrder�$>>edtDataFile.Name�(>>edtDataFile.Parent$>>edtDataFile.Type(>>edtDataFile.ZOrder�,>>edtDatabaseName.Name�0>>edtDatabaseName.Parent�,>>edtDatabaseName.Type�0>>edtDatabaseName.ZOrderB">>edtLogFile.NameF&>>edtLogFile.ParentR">>edtLogFile.Typea&>>edtLogFile.ZOrder�(>>edtSAPassword.Name�,>>edtSAPassword.Parent�(>>edtSAPassword.Type,>>edtSAPassword.ZOrder�(>>edtServerName.Name�,>>edtServerName.Parent�(>>edtServerName.Type�,>>edtServerName.ZOrder0>>label1.Name3>>label1.Parent;>>label1.TypeJ>>label1.ZOrder�>>label3.Name�>>label3.Parent�>>label3.Type�>>label3.ZOrderN>>label4.NameQ>>label4.ParentY>>label4.Typeh>>label4.ZOrder�>>label5.Name�>>label5.Parent�>>label5.Type�>>label5.ZOrderl	 >>labelHint.Nameo	$>>labelHint.Parentz	 >>labelHint.Type�	$>>labelHint.ZOrder�	(>>panelControl1.Name
,>>panelControl1.Parent
(>>panelControl1.Type
,>>panelControl1.ZOrder�
">>sbtnBrowse.Name�
&>>sbtnBrowse.Parent�
">>sbtnBrowse.Type�
&>>sbtnBrowse.ZOrder>">>sbtnCancel.NameB&>>sbtnCancel.ParentN">>sbtnCancel.Type]&>>sbtnCancel.ZOrder�*>>sbtnGetServers.Name�.>>sbtnGetServers.Parent�*>>sbtnGetServers.Type.>>sbtnGetServers.ZOrder�>>sbtnOK.Name�>>sbtnOK.Parent�>>sbtnOK.Type�>>sbtnOK.ZOrder2
(>>simpleButton1.Name6
,>>simpleButton1.ParentE
(>>simpleButton1.TypeT
,>>simpleButton1.ZOrder�
:ckEdtPhysicalLogFile.Location�
NckEdtPhysicalLogFile.Properties.Caption|2ckEdtPhysicalLogFile.Size�:ckEdtPhysicalLogFile.TabIndex3BckEdtUseDefaultPassword.EditValue8@ckEdtUseDefaultPassword.Location:TckEdtUseDefaultPassword.Properties.Caption�8ckEdtUseDefaultPassword.Size�@ckEdtUseDefaultPassword.TabIndex�*edtDataFile.EditValue�(edtDataFile.Location� edtDataFile.Size3(edtDataFile.TabIndex�2edtDatabaseName.EditValue�0edtDatabaseName.Location�(edtDatabaseName.Sizez0edtDatabaseName.TabIndex(edtLogFile.EditValue#&edtLogFile.Location%edtLogFile.Size�&edtLogFile.TabIndexe.edtSAPassword.EditValuej,edtSAPassword.Locationl$edtSAPassword.Size,edtSAPassword.TabIndex�.edtServerName.EditValue�,edtServerName.Location�$edtServerName.SizeO,edtServerName.TabIndex�label1.AutoSize�label1.Location�label1.Size�label1.TabIndex:label1.Text?label3.AutoSizeSlabel3.LocationUlabel3.Size�label3.TabIndex�label3.Text�label4.AutoSize�label4.Location�label4.SizeHlabel4.TabIndex�label4.Text�label5.AutoSize�label5.Locationlabel5.Size�label5.TabIndexAlabel5.TextF$labelHint.LocationTlabelHint.Size�$labelHint.TabIndex�labelHint.Text�$panelControl1.Dock,panelControl1.Location�$panelControl1.Size[,panelControl1.TabIndex�&sbtnBrowse.Location sbtnBrowse.Size� &sbtnBrowse.TabIndexD!sbtnBrowse.TextI!&sbtnCancel.LocationQ!sbtnCancel.Size�!&sbtnCancel.TabIndex�"sbtnCancel.Text�".sbtnGetServers.Location�"&sbtnGetServers.Size;#.sbtnGetServers.TabIndex�#&sbtnGetServers.Text�#sbtnOK.Location�#sbtnOK.Size�$sbtnOK.TabIndex;%sbtnOK.Text@%,simpleButton1.LocationE%$simpleButton1.Size�%,simpleButton1.TabIndex�&$simpleButton1.Text�&@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Attach DatabaseFormAttachDatabase{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49ackEdtPhysicalLogFile
panelControl1�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1ckEdtUseDefaultPassword
panelControl1�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4edtDataFile
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a10edtDatabaseName
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a16
edtLogFile
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a11
edtSAPassword
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a8
edtServerName
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5label1
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0892label3
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0893label4
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0897label5
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0899	labelHint
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890
panelControl1$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0
sbtnBrowse
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a12
sbtnCancel
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a15sbtnGetServers
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a6sbtnOK
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a14
simpleButton1
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a13C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyhPhysical Log FileA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightc	C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyD.Use Default PasswordA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyrLA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxyr�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyrhA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxyr.A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyrA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyNA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightZ
Physical Data FileC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightW

Database Name:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy0A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightI
SA Password:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightI
Server Name:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyoA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�z(Hint: If the log file is lost or damaged, then uncheck Physical Log File, the system will create a new log file for you.)D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy<JA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightKBrowseC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyX�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&CancelC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyBA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�Get Available ServersC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&OKC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy<fA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightKBrowse�����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet/gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089�DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49agSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3awSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089PADP�oE�\�J���J���x�����a��>�'➯�w�������յ�ʦ��Ჽ�y΢���"��H���N���k�8�m�A����V}���!˄3�e*;��3;�C�B��BCX��Ie�*L��-L�Ms�M�:�S/�5TгCT�RBX�^X,mY�m�d�Kl}�pߗ�yw
z����Bt��v7ih��?��MS�D������,~�\:�	��gI�A2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type5">>lblMessage.Name�&>>lblMessage.Parent�">>lblMessage.Type�&>>lblMessage.ZOrderU(>>panelControl1.NameX,>>panelControl1.Parentg(>>panelControl1.Typen,>>panelControl1.ZOrder�(>>panelControl2.Name�,>>panelControl2.Parent(>>panelControl2.Type,>>panelControl2.ZOrder� >>sbtnClose.Name�$>>sbtnClose.Parent� >>sbtnClose.Type�$>>sbtnClose.ZOrder.>>sbtnOK.Name1>>sbtnOK.Parent9>>sbtnOK.TypeH>>sbtnOK.ZOrder�.lblMessage.AutoSizeMode�&lblMessage.Location�lblMessage.Size,&lblMessage.TabIndex�lblMessage.Text�$panelControl1.Dock#,panelControl1.Location�$panelControl1.Sizei	,panelControl1.TabIndex
$panelControl2.Dock
,panelControl2.Location�
$panelControl2.SizeX,panelControl2.TabIndex�$sbtnClose.LocationsbtnClose.Size�$sbtnClose.TabIndexA
sbtnClose.TextF
sbtnOK.LocationN
sbtnOK.Size�
sbtnOK.TabIndex�sbtnOK.Text�@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Create Account Book#FormConfirmCreateAccountBookMessage{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
lblMessage
panelControl2�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0
panelControl1$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1
panelControl2$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0	sbtnClose
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1sbtnOK
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0C����`DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a(DevExpress.XtraEditors.LabelAutoSizeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
ILPlease make sure all the information are correct before create account book.E����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy\A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�(E����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�\D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyKA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightXCancelD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightXOK(R����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet�gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a{System.Windows.Forms.HelpNavigator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3auSystem.Windows.Forms.Padding, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089�DevExpress.XtraEditors.Controls.ButtonPredefines, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49afSystem.Drawing.Font, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3auSystem.Windows.Forms.ImeMode, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089�DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49awSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Color, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a~System.Drawing.Drawing2D.LinearGradientMode, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3ahSystem.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aPADPADP�'.�d0Z��_q�嫑�Ц�l����7Ӏ��}C�EW�zBZ�8�̂�8΂I�-���������ȃ[r�����qD����%N���B�`�/��+7��Zd��ޠ�����o���?҇��Շ����a������퉙j�y�-C��Gࡊ<�\G��gS�q�]����pM��8���0J����Ռs�׌�E��\��幍�>Ս��j&��^���`�:S��T1+�ӒV��Y�U�`�Xno��T���/�-4�iV{�ȱ����i�P��U��0^��;_�j���ȱ�S�ߓ����+�{	������O�������1橕t�Õ$s���x��0���W������h�9�����L��`A���E�����������ߘ��u��|��}1��H�ؙ;��5v����
��˚~�3F�����ϵ��QG���t���4����
(��A���t�V�y��VМӜ��᜞�^�����EE Ɲ�Jʝrp̝�[��yL��8�&�	��:j��
r��@w�6���ߟ��� ������Ӡ��٠,+۠�f4�A5��_��X١X�ޡ$S衪�:��O��]��kH�����#�v���[��1��kb8�w��W�j�c!w�N�-�z�L�>玧]Q�������Ѩ�֨>�~�>{��V���K��������}����蚪DWG���J���b�E[z��~�����,��
�	xY�6ui�e������񮊆���C���N���/��@;�|fl��qy������d:԰ܥְյ�%�k�'���g��#�*�A���i�|qڲ�@߲0W�ȆX�᚜��L��I��;����t����_.�Q���ύ�:H��"�'�DW��᭶�����h�'�V��1��<�޸�U2��7Q��m빗!�0�1�.B���J���⻺n�Le��1��f��c��'���2��NG��1Q�-�Q��lb���)��,��&��O�+�C,I��wN�,c��n�rQ��� �5z�f3�h��¢������c���/����X��K�è��@�BĿ�E��v����)Q��VN����������T�ǹ��j"�Șή���ȴi��\�&ɤ�)�g�H�	Jɇ���q9'�Eۚʌ,���*��$t �(E�T��?���s�������y�0^�QN�(����U��&���ݦ�����N�Є`њ�(��DH�5I�I��ѱ��Ѭ������j��U@�Fm�L�t�k��Ҽ��S����|�ӧ���)q�*q�+q�,q�-q�zHԏ�`�T���
:��9^E�Dp�����O8���XִZh���Uq��v׈Ew�à�C�;�]�Qؾci�#�������w��
��2��mg�3�ڳ"ڷ�-�#�H���)5�{�<�T�۩$���!��a��
�$�8�q-ߝzJ�a�
� ��I�"�7B�H�N��R���#��Ԅ�������<����㸹��}��T3�!����A�y2F�έ��6�蔚A��D�
�U����{G��~8�9a�R����;��E�<깪������ڀ븘�@M	�յ>��j��#��̕���������EE��L��;���µ�����j-��<�j��-���t�_�;jt�Su��
�[�2Eg�4����'�+�b,����EY,�[����.f�֍�2 ��Z��I�H���N����2�����<o��nٯ��c8�=:=�3E���G�6���3�H�D��@?������
�
�����$��f��ֳ��=�-�*��q/��Ɋ���0����k�8�m�A�-	��������D�%��������7�;�F��	��Zi�>
�e�;S��3�?����{��7"�_�N�h���S�Hs����� �g,z�l�9�xE�Y����4?�eG�kz8���f) Yu%Z�%s�0&5ʹ�)
������^�
Lkޒ����)Ҏ�����W�*g�A�f	7��	n	�	g��	��X
��h

��
2y�
i�
��
_�\���q2��I��{����XY�B5
�\'
/�(
�D3
j�4
UgB
�ԇ
5y�
��
�B�
�@;B|�O����ϼ"p�0��M�mXhrA��~b�J�,ܚ������%�/��g�
���\��`�S������A��?�&����M�֜�?����\�������Ѩ
;��'����k-��wv_�c�R��z��8$��%-�X��P�xy31�]Ӂ�*����P(�(����b�]h�&x��h��hz ��� h�� ��B!�1�!�k#�[^#��x#
�#�w�$73�$�Y7%T1�%��%(C�&)W�&VT�&��-'��['�]'s�m';=((�l�(��(�:�(�w)+	)uC)F��)$� *�"%*�w:*x�?*+ʹ*�8+�"B+�+�ͼ+�W�,���,��-!�-m-��-�U3.Q�V.r��.��+/���/ҕ�/]�/2��/�f�0�2�0�ݪ0��0M�0�1�U1W�k1yá1��1�3�1��1�:�1^}2�Y"29^�2��f3o�4d
4]�4�4	'�4G"�4B��4�Y�4���4ը%5���5�r	6��
7��_7�'8G�B8!�b8^Uj8�/�8�ِ8sT�9B(�9�v�9��=:g�w:/
;�3�;J�;��;���;NkL<Ð<�͑<��<�I	=�&=��A=6�j=�e�=}��=4�U>�	?9g?�
^?�}?�w�?/u�?A@�)@��3@���@�@�@�@�@�@�@�@�@�@�j�AWg�A�C�B��BC]�C���Ct�D�}�D���Dj8�D���DX�QE��vE}6F��FWȯF��F���F�GbG*q?G�HGc?TH�lH�АH�
.I�
�J�d�J�KCbK,nK���K�N�K�›K�K��L�[My��M�Ms�MAU�M~��M�Q�M�\�M�,N_
2N	\N���N���ND�lOH6SP+�P��=Q�VxQ`�Q�|�Q\�Q�(R�G	R��R�	|RZ��R�iuS�:�S~��S/�5TгCT�NjT:��T�U�i�U�UtwV8S%V1Vn�XV�x`V�i�VFӯV��Vd�W�9"W�>ZW~�Wf.X�2X�RBX�^X�"sX+�X��X�®Xu��X���Y˾�[+*�[��\V��\���\�UQ]�]]��q]�P�]��]��]�@�]
��^��^mL_�%_1��`�EaX*2a�+Ga�)Waf�a�b[��b���bp(�cn��ccd�cAn(e&�5e�e
�!he_|h�"�h��h�s�h"�3i�Huivi���i�D�i��ia(�j�c�j��k��k�d@k9dKk
٫k���k�Al�Kl��NlIS�lvPm��*m��nD#n�+�n��o���o�kp,�!pc�kp}�pY�pz֜p��p�Xq�bq���q�r�aSrQ�mrO��r��rRպs|��sp�5ty�ut<�t}��t��t�	�t�s4uР\uf�cuޅhu�nu͓�u�e�u��u*u vO7vR8mv�܅v��v��\w*�2x_<x~chx���xf8�x��.yw
z�ObzY�zdw?{۳B{UES{�]S{��V{nQ�{�Ԕ|SҤ|ɭ�|A�}�l}��}P��}0n�}K��~���~��/AnU~�\�N.�m�4��*L�ڜ������J!K<*o�6�kLP8gK�K�?��N���!�P�-@�?S��=6��8�T*��A�`� ,MQMBK�}0~W_`<��T�l�q��ݓ6!A��������:����seZhb,�L�L�~�~,4Hg�E�ʀ1�s��O"�ծF��:=;�b} }�
�|���>�>0��9a�v���R������m�+�tQ��"[��A������w���,X��bՎ�o�� gx@j)�v^:'�����k���C�^��cGp E��$8�
g�Q.���0�a����	�Y��`�"P
���Y��^2��{��)���
��MX�ƿ2�*>�IO��_��������pH�gn|�{>���7Ƅ��"&t	�mt[��j��u�	�a>�=�՗ԅ}�;���nEJd�
4S�\9u~I�,M �!,�n�+��p�"|H���W�.��&�}-Qt��ۈ�:a:u]4^5�g�v5$)f�����8�l���+�Ɖx=5�4ځ|!�I��_�<tp�����]��e�W��s�Q��%@
e�C�.��H�H�}l�߰�	���t���O�|�q�YnG�z�z��W��9�3?3ug
��].J
NN_�l��hi]i�ijL�l6P5ZL$b�rMܯ0m0�,Sfbj��?f#����Z7��p��6oJl�s�E�E�y-<�;�������L�u���n2�nI�l��J�+s#g�IiJ:]E�t����@ #�K��uC�+ڲ�G}77�����=;=�P���?�û��3�c��1Y1�0�6`�����"A)����R�HR�A��J0�m�Ñ)W�IG����PM^�י��7�Vr~�Z�=t���o��v
�%�=}(-#|��5��K:��U�'���Z���V+���jU�99{[w��q8�7��	����U���X�KW��L1� !mzj�(��>Q?�#I�a�gT��q8$d,�����.]/�(���x�`r�ٍ�9`�:����N[!�!�\�����<�<�"E#"��*�{�<����F9
%�(�&�Vj��zC � pn[�`�#���D~;RC�!-"h&�

u͏���#�#�_4��Ӄ�'q�e^�+~$�YJOcw�Biw�)s"�"F�I�����`=ru0�� @�˂�|BN4��$/{��R�M؟$]$E�\�Nq�rˇjWiowS&yw�`��$�$���e���/%u%�K��92�����=�%[�&˶�9�v�GMHyZG&�&J{�m�f�/N���~z�W=\�d���&'��ѴIE�D�WlD _z���T+>2_'��'-n:������'1(r�fkݳj�]�br���X!��׵Чw(�(8y����t`��e�7��xi6�5ZTE	�	����2�d���1�2����s*��_h��p�@�@e��F�����G���E����3a40T�r#�ɫ?D�S�D�G�~�-K-�U�C�CCF�F0�F��m��������ŕ�ou���z5�1��OA�A{
	
��*w�f:e��c��Ҩ�R���,�+�B�%CDz�c��2cBiB�^�Uhv���)�%����R(Ίn�!�cbfs����A�B��(xo!Y������L7�\�)ދ�ICIJ�� �Ɍ�,C,&x��	-�,ZVY�Ul3aRTY�w�3�c	e��W�[)�˼*ZϬDGG�G�jM~ӱ!qE���8B�)I)���t})m�J�;)k:�j�����)�)q�5X9�d ���P%jX&f.������-�bPvm��>��C�*�4�*f@4:���k�n�*a*]��t�4�|A�T�����2���3+y+�N^N"v��o ���f�K9L��2$this.AutoScaleDimensions $this.ClientSize�"$this.HelpKeywordI&$this.HelpNavigator_$this.ShowHelp
&$this.StartPosition$this.Text�>>$this.Name�>>$this.Type�4>>btnGetLatestCountry.Namew8>>btnGetLatestCountry.Parent�4>>btnGetLatestCountry.Type�8>>btnGetLatestCountry.ZOrder8>>ckEdtBlankAccountBook.Name <>>ckEdtBlankAccountBook.Parent78>>ckEdtBlankAccountBook.Type@<>>ckEdtBlankAccountBook.ZOrder�>>>ckEdtCopyChartOfAccounts.Name�B>>ckEdtCopyChartOfAccounts.Parent�>>>ckEdtCopyChartOfAccounts.Type�B>>ckEdtCopyChartOfAccounts.ZOrder�@>>ckEdtCopyCreditorAccounts.Name�D>>ckEdtCopyCreditorAccounts.Parent�@>>ckEdtCopyCreditorAccounts.Type�D>>ckEdtCopyCreditorAccounts.ZOrderB<>>ckEdtCopyDebtorAccounts.NameE@>>ckEdtCopyDebtorAccounts.Parent^<>>ckEdtCopyDebtorAccounts.Typez@>>ckEdtCopyDebtorAccounts.ZOrder�4>>ckEdtCopyMasterData.Name8>>ckEdtCopyMasterData.Parent4>>ckEdtCopyMasterData.Type 8>>ckEdtCopyMasterData.ZOrder�8>>ckEdtCopyReportLayout.Name�<>>ckEdtCopyReportLayout.Parent�8>>ckEdtCopyReportLayout.Type�<>>ckEdtCopyReportLayout.ZOrder`4>>ckEdtCopyStockItems.Namec8>>ckEdtCopyStockItems.Parentx4>>ckEdtCopyStockItems.Type�8>>ckEdtCopyStockItems.ZOrder	*>>ckEdtCreateAny.Name	.>>ckEdtCreateAny.Parent,	*>>ckEdtCreateAny.Type5	.>>ckEdtCreateAny.ZOrder�	2>>ckEdtCreateDefault.Name�	6>>ckEdtCreateDefault.Parent�	2>>ckEdtCreateDefault.Type�	6>>ckEdtCreateDefault.ZOrder_
N>>ckEdtCreateSampleChartOfAccounts.Nameb
R>>ckEdtCreateSampleChartOfAccounts.Parent�
N>>ckEdtCreateSampleChartOfAccounts.Type�
R>>ckEdtCreateSampleChartOfAccounts.ZOrder0>>ckEdtMPAccounting.Name4>>ckEdtMPAccounting.Parent(0>>ckEdtMPAccounting.Type14>>ckEdtMPAccounting.ZOrder�.>>ckEdtMPInvoicing.Name�2>>ckEdtMPInvoicing.Parent�.>>ckEdtMPInvoicing.Type�2>>ckEdtMPInvoicing.ZOrderY4>>ckEdtMPStockControl.Name\8>>ckEdtMPStockControl.Parentq4>>ckEdtMPStockControl.Typez8>>ckEdtMPStockControl.ZOrder�>>>ckEdtSystemRecommendPath.Name
B>>ckEdtSystemRecommendPath.Parent
>>>ckEdtSystemRecommendPath.Type%
B>>ckEdtSystemRecommendPath.ZOrder�
:>>ckEdtUseDefaultAccount.Name�
>>>ckEdtUseDefaultAccount.Parent�
:>>ckEdtUseDefaultAccount.Type�
>>>ckEdtUseDefaultAccount.ZOrderS0>>ckEdtUseMyAccount.NameW4>>ckEdtUseMyAccount.Parentj0>>ckEdtUseMyAccount.Types4>>ckEdtUseMyAccount.ZOrder�,>>ckEdtUseTaxCode.Name�0>>ckEdtUseTaxCode.Parent,>>ckEdtUseTaxCode.Type0>>ckEdtUseTaxCode.ZOrder�$>>ckEdtUseWHT.Name�(>>ckEdtUseWHT.Parent�$>>ckEdtUseWHT.Type�(>>ckEdtUseWHT.ZOrder9<>>comboBoxEditCompanyType.Name<@>>comboBoxEditCompanyType.ParentU<>>comboBoxEditCompanyType.Type^@>>comboBoxEditCompanyType.ZOrder�2>>edtAccountNoFormat.Name�6>>edtAccountNoFormat.Parent�2>>edtAccountNoFormat.Type6>>edtAccountNoFormat.ZOrder�:>>edtActualDataStartDate.Name�>>>edtActualDataStartDate.Parent�:>>edtActualDataStartDate.Type�>>>edtActualDataStartDate.ZOrder2*>>edtCompanyName.Name6.>>edtCompanyName.ParentF*>>edtCompanyName.TypeO.>>edtCompanyName.ZOrder�0>>edtDatabaseFolder.Name�4>>edtDatabaseFolder.Parent�0>>edtDatabaseFolder.Type�4>>edtDatabaseFolder.ZOrderv,>>edtDatabaseName.Namey0>>edtDatabaseName.Parent�,>>edtDatabaseName.Type�0>>edtDatabaseName.ZOrder:>>edtFiscalYearStartDate.Name>>>edtFiscalYearStartDate.Parent2:>>edtFiscalYearStartDate.Type;>>>edtFiscalYearStartDate.ZOrder�(>>edtServerName.Name�,>>edtServerName.Parent�(>>edtServerName.Type�,>>edtServerName.ZOrder_0>>edtServerPassword.Namec4>>edtServerPassword.Parentv0>>edtServerPassword.Type4>>edtServerPassword.ZOrder0>>edtServerUserName.Name4>>edtServerUserName.Parent0>>edtServerUserName.Type"4>>edtServerUserName.ZOrder�8>>edtTaxCodeDisplayName.Name�<>>edtTaxCodeDisplayName.Parent�8>>edtTaxCodeDisplayName.Type�<>>edtTaxCodeDisplayName.ZOrderM<>>edtWithholdingTaxOption.NameQ@>>edtWithholdingTaxOption.Parentj<>>edtWithholdingTaxOption.Types@>>edtWithholdingTaxOption.ZOrder� >>groupBox1.Name�$>>groupBox1.Parent	 >>groupBox1.Type$>>groupBox1.ZOrder�B>>grpBxCopyMasterDataOptions.Name�F>>grpBxCopyMasterDataOptions.Parent�B>>grpBxCopyMasterDataOptions.Type�F>>grpBxCopyMasterDataOptions.ZOrder*(>>helpProvider1.Name-(>>helpProvider1.Type<>>label11.Name� >>label11.Parent�>>label11.Type� >>label11.ZOrder?>>label12.NameC >>label12.ParentL>>label12.TypeU >>label12.ZOrder�>>label13.Name� >>label13.Parent�>>label13.Type� >>label13.ZOrderU>>label14.NameY >>label14.Parentb>>label14.Typeq >>label14.ZOrder�>>label15.Name� >>label15.Parent�>>label15.Type� >>label15.ZOrderp>>label16.Namet >>label16.Parent}>>label16.Type� >>label16.ZOrder�>>label17.Name� >>label17.Parent>>label17.Type >>label17.ZOrder�>>label19.Name� >>label19.Parent�>>label19.Type� >>label19.ZOrder>>label20.Name >>label20.Parent>>label20.Type& >>label20.ZOrder�>>label21.Name� >>label21.Parent�>>label21.Type� >>label21.ZOrder&>>label22.Name* >>label22.Parent3>>label22.Type< >>label22.ZOrder�>>label23.Name� >>label23.Parent�>>label23.Type� >>label23.ZOrderA >>label25.NameD  >>label25.ParentM >>label25.TypeV  >>label25.ZOrder� >>label26.Name�  >>label26.Parent� >>label26.Type�  >>label26.ZOrderU!>>label27.NameX! >>label27.Parenta!>>label27.Typep! >>label27.ZOrder�!>>label29.Name�! >>label29.Parent�!>>label29.Type
" >>label29.ZOrder�">>label30.Name�" >>label30.Parent�">>label30.Type�" >>label30.ZOrder#>>label32.Name# >>label32.Parent#>>label32.Type'# >>label32.ZOrder�#>>label33.Name�# >>label33.Parent�#>>label33.Type�# >>label33.ZOrder'$>>label34.Name*$ >>label34.Parent3$>>label34.Type<$ >>label34.ZOrder�$>>label35.Name�$ >>label35.Parent�$>>label35.Type�$ >>label35.ZOrder;%>>label6.Name>%>>label6.ParentF%>>label6.TypeO%>>label6.ZOrder�%>>label8.Name�%>>label8.Parent�%>>label8.Type�%>>label8.ZOrderM&>>label9.NameQ&>>label9.ParentY&>>label9.Typeb&>>label9.ZOrder�&P>>labelAccountingPackageDescription.Name�&T>>labelAccountingPackageDescription.Parent�&P>>labelAccountingPackageDescription.Type'T>>labelAccountingPackageDescription.ZOrder�'T>>labelActualDataStartDateDescription.Name�'X>>labelActualDataStartDateDescription.Parent�'T>>labelActualDataStartDateDescription.Type�'X>>labelActualDataStartDateDescription.ZOrderG(&>>labelCountry.NameK(*>>labelCountry.ParentY(&>>labelCountry.Typeb(*>>labelCountry.ZOrder�(B>>labelFreeFormatDescription.Name�(F>>labelFreeFormatDescription.Parent�(B>>labelFreeFormatDescription.Type)F>>labelFreeFormatDescription.ZOrder�)N>>labelInvoicingPackageDescription.Name�)R>>labelInvoicingPackageDescription.Parent�)N>>labelInvoicingPackageDescription.Type�)R>>labelInvoicingPackageDescription.ZOrder>*(>>labelPassword.NameA*,>>labelPassword.ParentP*(>>labelPassword.TypeY*,>>labelPassword.ZOrder�*,>>labelServerName.Name�*0>>labelServerName.Parent�*,>>labelServerName.Type�*0>>labelServerName.ZOrdera+4>>labelStandaloneNote.Named+8>>labelStandaloneNote.Parenty+4>>labelStandaloneNote.Type�+8>>labelStandaloneNote.ZOrder
,T>>labelStockControlPackageDescription.Name,X>>labelStockControlPackageDescription.Parent3,T>>labelStockControlPackageDescription.Type<,X>>labelStockControlPackageDescription.ZOrder�,(>>labelUsername.Name�,,>>labelUsername.Parent�,(>>labelUsername.Type�,,>>labelUsername.ZOrderT-D>>lblAutoCountServerAvailable.NameW-H>>lblAutoCountServerAvailable.Parentt-D>>lblAutoCountServerAvailable.Type-H>>lblAutoCountServerAvailable.ZOrder.:>>lblAutoCountServerNote.Name
.>>>lblAutoCountServerNote.Parent".:>>lblAutoCountServerNote.Type-.>>>lblAutoCountServerNote.ZOrder�.$>>lblHintDesc.Name�.(>>lblHintDesc.Parent�.$>>lblHintDesc.Type�.(>>lblHintDesc.ZOrderI/<>>lblOtherCountryCurrency.NameL/@>>lblOtherCountryCurrency.Parente/<>>lblOtherCountryCurrency.Typen/@>>lblOtherCountryCurrency.ZOrder�/.>>lblSqlConnection.Name�/2>>lblSqlConnection.Parent�/.>>lblSqlConnection.Type02>>lblSqlConnection.ZOrder�0">>lblTaxDesc.Name�0&>>lblTaxDesc.Parent�0">>lblTaxDesc.Type�0&>>lblTaxDesc.ZOrder1 >>luCountry.Name1$>>luCountry.Parent'1 >>luCountry.Type01$>>luCountry.ZOrder�1>>>luEdtCopyFromAccountBook.Name�1B>>luEdtCopyFromAccountBook.Parent�1>>>luEdtCopyFromAccountBook.Type�1B>>luEdtCopyFromAccountBook.ZOrderu2,>>luMoreCountries.Namex20>>luMoreCountries.Parent�2,>>luMoreCountries.Type�20>>luMoreCountries.ZOrder34>>luOtherHomeCurrency.Name38>>luOtherHomeCurrency.Parent034>>luOtherHomeCurrency.Type938>>luOtherHomeCurrency.ZOrder�3$>>panelBottom.Name�3(>>panelBottom.Parent�3$>>panelBottom.Type�3(>>panelBottom.ZOrderW4(>>panelControl1.NameZ4,>>panelControl1.Parenti4(>>panelControl1.Typer4,>>panelControl1.ZOrder�4(>>panelControl2.Name�4,>>panelControl2.Parent5(>>panelControl2.Type5,>>panelControl2.ZOrder�5(>>panelControl3.Name�5,>>panelControl3.Parent�5(>>panelControl3.Type�5,>>panelControl3.ZOrder+6(>>panelControl4.Name/6,>>panelControl4.Parent>6(>>panelControl4.TypeG6,>>panelControl4.ZOrder�6(>>panelControl5.Name�6,>>panelControl5.Parent�6(>>panelControl5.Type�6,>>panelControl5.ZOrderd7 >>panelMain.Nameh7$>>panelMain.Parents7 >>panelMain.Typez7$>>panelMain.ZOrder�7$>>pictureBox1.Name�7(>>pictureBox1.Parent8$>>pictureBox1.Type8(>>pictureBox1.ZOrder�8:>>radioGroupHomeCurrency.Name�8>>>radioGroupHomeCurrency.Parent�8:>>radioGroupHomeCurrency.Type�8>>>radioGroupHomeCurrency.ZOrder89">>sbtnCancel.Name;9&>>sbtnCancel.ParentG9">>sbtnCancel.TypeT9&>>sbtnCancel.ZOrder�9*>>sbtnGetServers.Name�9.>>sbtnGetServers.Parent�9*>>sbtnGetServers.Type�9.>>sbtnGetServers.ZOrder�:>>sbtnNext.Name�:">>sbtnNext.Parent�:>>sbtnNext.Type�:">>sbtnNext.ZOrder";&>>sbtnPrevious.Name%;*>>sbtnPrevious.Parent3;&>>sbtnPrevious.Type@;*>>sbtnPrevious.ZOrder�;2>>sbtnTestConnection.Name�;6>>sbtnTestConnection.Parent�;2>>sbtnTestConnection.Type�;6>>sbtnTestConnection.ZOrderp<>>wzPage1.Names< >>wzPage1.Parent|<>>wzPage1.Type�< >>wzPage1.ZOrder�<>>wzPage2.Name�< >>wzPage2.Parent=>>wzPage2.Type= >>wzPage2.ZOrder�=>>wzPage3.Name�= >>wzPage3.Parent�=>>wzPage3.Type�= >>wzPage3.ZOrder>>>wzPage4.Name> >>wzPage4.Parent >>>wzPage4.Type+> >>wzPage4.ZOrder�>>>wzPage5.Name�> >>wzPage5.Parent�>>>wzPage5.Type�> >>wzPage5.ZOrder,?8btnGetLatestCountry.Location/?4btnGetLatestCountry.Margin�?0btnGetLatestCountry.Size�@8btnGetLatestCountry.TabIndexCA0btnGetLatestCountry.TextHA<ckEdtBlankAccountBook.Location\APckEdtBlankAccountBook.Properties.Caption�A<ckEdtBlankAccountBook.ShowHelpB4ckEdtBlankAccountBook.SizeB<ckEdtBlankAccountBook.TabIndex�BBckEdtCopyChartOfAccounts.Location�BVckEdtCopyChartOfAccounts.Properties.CaptionSCBckEdtCopyChartOfAccounts.ShowHelpkC:ckEdtCopyChartOfAccounts.SizemCBckEdtCopyChartOfAccounts.TabIndexDBckEdtCopyCreditorAccounts.EnabledDDckEdtCopyCreditorAccounts.LocationDXckEdtCopyCreditorAccounts.Properties.Caption�DDckEdtCopyCreditorAccounts.ShowHelp�D<ckEdtCopyCreditorAccounts.Size�DDckEdtCopyCreditorAccounts.TabIndexrE>ckEdtCopyDebtorAccounts.EnabledwE@ckEdtCopyDebtorAccounts.LocationyETckEdtCopyDebtorAccounts.Properties.CaptionF@ckEdtCopyDebtorAccounts.ShowHelp+F8ckEdtCopyDebtorAccounts.Size-F@ckEdtCopyDebtorAccounts.TabIndex�F8ckEdtCopyMasterData.Location�FLckEdtCopyMasterData.Properties.CaptionrG8ckEdtCopyMasterData.ShowHelp�G0ckEdtCopyMasterData.Size�G8ckEdtCopyMasterData.TabIndexBH<ckEdtCopyReportLayout.LocationGHPckEdtCopyReportLayout.Properties.Caption�H<ckEdtCopyReportLayout.ShowHelpI4ckEdtCopyReportLayout.SizeI<ckEdtCopyReportLayout.TabIndex�I8ckEdtCopyStockItems.Location�ILckEdtCopyStockItems.Properties.CaptionGJ8ckEdtCopyStockItems.ShowHelpYJ0ckEdtCopyStockItems.Size[J8ckEdtCopyStockItems.TabIndex�J.ckEdtCreateAny.LocationKBckEdtCreateAny.Properties.Caption�K.ckEdtCreateAny.ShowHelp�K&ckEdtCreateAny.Size�K.ckEdtCreateAny.TabIndexkL8ckEdtCreateDefault.EditValuepL6ckEdtCreateDefault.LocationrLJckEdtCreateDefault.Properties.CaptionM6ckEdtCreateDefault.ShowHelp8M.ckEdtCreateDefault.Size:M6ckEdtCreateDefault.TabIndex�MTckEdtCreateSampleChartOfAccounts.EditValue�MRckEdtCreateSampleChartOfAccounts.Location�MfckEdtCreateSampleChartOfAccounts.Properties.Caption�NRckEdtCreateSampleChartOfAccounts.ShowHelp�NJckEdtCreateSampleChartOfAccounts.Size�NRckEdtCreateSampleChartOfAccounts.TabIndexHO6ckEdtMPAccounting.EditValueMO4ckEdtMPAccounting.LocationOOHckEdtMPAccounting.Properties.Caption�O4ckEdtMPAccounting.ShowHelp�O,ckEdtMPAccounting.SizeP4ckEdtMPAccounting.TabIndex�P2ckEdtMPInvoicing.Location�PFckEdtMPInvoicing.Properties.CaptionFQ2ckEdtMPInvoicing.ShowHelpYQ*ckEdtMPInvoicing.Size[Q2ckEdtMPInvoicing.TabIndex�Q:ckEdtMPStockControl.EditValueR8ckEdtMPStockControl.LocationRLckEdtMPStockControl.Properties.Caption�R8ckEdtMPStockControl.ShowHelp�R0ckEdtMPStockControl.Size�R8ckEdtMPStockControl.TabIndex_SDckEdtSystemRecommendPath.EditValuedSBckEdtSystemRecommendPath.LocationfSVckEdtSystemRecommendPath.Properties.CaptionT:ckEdtSystemRecommendPath.SizeTBckEdtSystemRecommendPath.TabIndex�T@ckEdtUseDefaultAccount.EditValue�T>ckEdtUseDefaultAccount.Location�TRckEdtUseDefaultAccount.Properties.CaptiondU>ckEdtUseDefaultAccount.ShowHelp�U6ckEdtUseDefaultAccount.Size�U>ckEdtUseDefaultAccount.TabIndex/V4ckEdtUseMyAccount.Location4VHckEdtUseMyAccount.Properties.Caption�V4ckEdtUseMyAccount.ShowHelp�V,ckEdtUseMyAccount.Size�V4ckEdtUseMyAccount.TabIndex�W0ckEdtUseTaxCode.Location�WDckEdtUseTaxCode.Properties.CaptionAX0ckEdtUseTaxCode.ShowHelpMX(ckEdtUseTaxCode.SizeOX0ckEdtUseTaxCode.TabIndex�X(ckEdtUseWHT.Location�X<ckEdtUseWHT.Properties.Caption�Y(ckEdtUseWHT.ShowHelp�Y ckEdtUseWHT.Size�Y(ckEdtUseWHT.TabIndexRZBcomboBoxEditCompanyType.EditValueWZ@comboBoxEditCompanyType.LocationhZTcomboBoxEditCompanyType.Properties.Buttons[PcomboBoxEditCompanyType.Properties.Items�[RcomboBoxEditCompanyType.Properties.Items1�[RcomboBoxEditCompanyType.Properties.Items2�[RcomboBoxEditCompanyType.Properties.Items3\RcomboBoxEditCompanyType.Properties.Items4\RcomboBoxEditCompanyType.Properties.Items50\@comboBoxEditCompanyType.ShowHelpF\8comboBoxEditCompanyType.SizeH\@comboBoxEditCompanyType.TabIndex�\8edtAccountNoFormat.EditValue�\6edtAccountNoFormat.Location�\6edtAccountNoFormat.ShowHelp�].edtAccountNoFormat.Size�]6edtAccountNoFormat.TabIndexA^@edtActualDataStartDate.EditValueF^>edtActualDataStartDate.LocationG^RedtActualDataStartDate.Properties.Buttons�^�edtActualDataStartDate.Properties.CalendarTimeProperties.Buttons�_>edtActualDataStartDate.ShowHelpa`6edtActualDataStartDate.Sizec`>edtActualDataStartDate.TabIndexa0edtCompanyName.EditValuea.edtCompanyName.Locationa.edtCompanyName.ShowHelp�a&edtCompanyName.Size�a.edtCompanyName.TabIndexPb6edtDatabaseFolder.EditValueUb4edtDatabaseFolder.LocationWb4edtDatabaseFolder.ShowHelp�b,edtDatabaseFolder.Size�b4edtDatabaseFolder.TabIndex�c2edtDatabaseName.EditValue�c0edtDatabaseName.Location�c0edtDatabaseName.ShowHelp<d(edtDatabaseName.Size>d0edtDatabaseName.TabIndex�d@edtFiscalYearStartDate.EditValue�d>edtFiscalYearStartDate.Location�dRedtFiscalYearStartDate.Properties.Buttons�e�edtFiscalYearStartDate.Properties.CalendarTimeProperties.ButtonsCf>edtFiscalYearStartDate.ShowHelpg6edtFiscalYearStartDate.Sizeg>edtFiscalYearStartDate.TabIndex�g.edtServerName.EditValue�g*edtServerName.Enabled�g,edtServerName.Location�g,edtServerName.ShowHelpMh$edtServerName.SizeOh,edtServerName.TabIndex�h6edtServerPassword.EditValue�h2edtServerPassword.Enabled�h4edtServerPassword.Location�h4edtServerPassword.ShowHelp�i,edtServerPassword.Size�i4edtServerPassword.TabIndex>j6edtServerUserName.EditValueCj2edtServerUserName.EnabledEj4edtServerUserName.LocationGj4edtServerUserName.ShowHelp�j,edtServerUserName.Size�j4edtServerUserName.TabIndex�k>edtTaxCodeDisplayName.EditValue�k:edtTaxCodeDisplayName.Enabled�k<edtTaxCodeDisplayName.Location�k<edtTaxCodeDisplayName.ShowHelp1l4edtTaxCodeDisplayName.Size3l<edtTaxCodeDisplayName.TabIndex�l@edtWithholdingTaxOption.Location�lTedtWithholdingTaxOption.Properties.Buttonsxm8edtWithholdingTaxOption.Size7n@edtWithholdingTaxOption.TabIndex�n>edtWithholdingTaxOption.Visible�n$groupBox1.Location�n$groupBox1.ShowHelp~ogroupBox1.Size�o$groupBox1.TabIndex$pgroupBox1.Text)pDgrpBxCopyMasterDataOptions.Enabled6pFgrpBxCopyMasterDataOptions.Location8pFgrpBxCopyMasterDataOptions.ShowHelp�p>grpBxCopyMasterDataOptions.Size�pFgrpBxCopyMasterDataOptions.TabIndexzq>grpBxCopyMasterDataOptions.Textq label11.AutoSize�q label11.Location�q label11.ShowHelp7rlabel11.Size9r label11.TabIndex�rlabel11.Text�r label12.AutoSize�r label12.Location�r label12.ShowHelp�slabel12.Size�s label12.TabIndex?tlabel12.TextDt label13.AutoSize�t label13.Location�t label13.ShowHelp>ulabel13.Size@u label13.TabIndex�ulabel13.Text�ulabel14.Fontvlabel14.ImeMode_w label14.Locationx label14.ShowHelp�xlabel14.Size�x label14.TabIndexIylabel14.TextNylabel15.Font}y label15.Location�z label15.ShowHelpw{label15.Sizey{ label15.TabIndex|label15.Text"|label16.Font1| label16.Location�} label16.ShowHelp+~label16.Size-~ label16.TabIndex�~label16.Text�~ label17.AutoSize�~ label17.Location�~ label17.ShowHelp�label17.Size� label17.TabIndex&�label17.Text+� label19.AutoSizeY�label19.ImeMode[� label19.Location� label19.ShowHelp��label19.Size�� label19.TabIndexE�label19.TextJ�label20.Font\� label20.Location�� label20.ShowHelpV�label20.SizeX� label20.TabIndex��label20.Text� label21.AutoSize	� label21.Location� label21.ShowHelp��label21.Size�� label21.TabIndexM�label21.TextR� label22.AutoSizea�label22.ImeModec� label22.Location� label22.ShowHelp��label22.Size�� label22.TabIndexM�label22.TextR�label23.Fontb� label23.Location�� label23.ShowHelp[�label23.Size]� label23.TabIndex�label23.Text� label25.AutoSizeu�label25.ImeModew� label25.Location� label25.ShowHelp��label25.Size�� label25.TabIndexa�label25.Textf�label26.Fonty�label26.ImeMode׎ label26.Location� label26.ShowHelp�label26.Size� label26.TabIndex��label26.TextƐlabel27.Fontܐ label27.Location9� label27.ShowHelpՒlabel27.Sizeג label27.TabIndex{�label27.Text�� label29.AutoSize�� label29.Location�� label29.ShowHelpT�label29.SizeV� label29.TabIndex��label29.Text��label30.Font� label30.Locationz� label30.ShowHelp�label30.Size� label30.TabIndex��label30.Text�� label32.AutoSize�label32.Font� label32.Locationx� label32.ShowHelp�label32.Size� label32.TabIndex��label32.Text�� label33.AutoSizeכ label33.Locationٛ label33.ShowHelpu�label33.Sizew� label33.TabIndex�label33.Text � label34.AutoSize6�label34.Font8� label34.Location�� label34.ShowHelp2�label34.Size4� label34.TabIndex؟label34.Textݟlabel35.Font�� label35.LocationX� label35.ShowHelp�label35.Size�� label35.TabIndex��label35.Text��label6.Font��label6.ImeMode�label6.Location��label6.ShowHelpR�label6.SizeT�label6.TabIndex��label6.Text��label8.Font�label8.Locationm�label8.ShowHelp	�label8.Size�label8.TabIndex��label8.Text��label9.AutoSizeѨlabel9.ImeModeӨlabel9.Location{�label9.ShowHelp�label9.Size�label9.TabIndex��label9.Textª\labelAccountingPackageDescription.AutoSizeMode�TlabelAccountingPackageDescription.Location˫TlabelAccountingPackageDescription.ShowHelpg�LlabelAccountingPackageDescription.Sizei�TlabelAccountingPackageDescription.TabIndex
�LlabelAccountingPackageDescription.Text�`labelActualDataStartDateDescription.AutoSizeMode�XlabelActualDataStartDateDescription.LocationŮXlabelActualDataStartDateDescription.ShowHelpa�PlabelActualDataStartDateDescription.Sizec�XlabelActualDataStartDateDescription.TabIndex�PlabelActualDataStartDateDescription.Text�*labelCountry.AutoSize�(labelCountry.ImeMode�*labelCountry.Location��*labelCountry.ShowHelp4�"labelCountry.Size6�*labelCountry.TabIndexڲ"labelCountry.Text߲NlabelFreeFormatDescription.AutoSizeMode�FlabelFreeFormatDescription.Location��FlabelFreeFormatDescription.ShowHelpB�>labelFreeFormatDescription.SizeD�FlabelFreeFormatDescription.TabIndex�>labelFreeFormatDescription.Text�ZlabelInvoicingPackageDescription.AutoSizeMode5�RlabelInvoicingPackageDescription.Location�RlabelInvoicingPackageDescription.ShowHelp��JlabelInvoicingPackageDescription.Size��RlabelInvoicingPackageDescription.TabIndex4�JlabelInvoicingPackageDescription.Text9�,labelPassword.AutoSize˷,labelPassword.Locationͷ,labelPassword.ShowHelpi�$labelPassword.Sizek�,labelPassword.TabIndex�$labelPassword.Text�0labelServerName.AutoSize�0labelServerName.Location!�0labelServerName.ShowHelp��(labelServerName.Size��0labelServerName.TabIndexc�(labelServerName.Texth�@labelStandaloneNote.AutoSizeModev�8labelStandaloneNote.Location3�8labelStandaloneNote.ShowHelpϻ0labelStandaloneNote.Sizeѻ8labelStandaloneNote.TabIndexu�0labelStandaloneNote.Textz�`labelStockControlPackageDescription.AutoSizeMode��XlabelStockControlPackageDescription.Locationd�XlabelStockControlPackageDescription.ShowHelp�PlabelStockControlPackageDescription.Size�XlabelStockControlPackageDescription.TabIndex��PlabelStockControlPackageDescription.Text��,labelUsername.AutoSize��,labelUsername.Location��,labelUsername.ShowHelp@�$labelUsername.SizeB�,labelUsername.TabIndex�$labelUsername.Text�HlblAutoCountServerAvailable.Location��HlblAutoCountServerAvailable.ShowHelp��@lblAutoCountServerAvailable.Size��HlblAutoCountServerAvailable.TabIndex9�@lblAutoCountServerAvailable.Text>�>lblAutoCountServerNote.Locationa�>lblAutoCountServerNote.ShowHelp��6lblAutoCountServerNote.Size��>lblAutoCountServerNote.TabIndex��6lblAutoCountServerNote.Text�� lblHintDesc.Font.�(lblHintDesc.Location��(lblHintDesc.ShowHelp'� lblHintDesc.Size)�(lblHintDesc.TabIndex�� lblHintDesc.Text��@lblOtherCountryCurrency.AutoSizeh�>lblOtherCountryCurrency.ImeModej�@lblOtherCountryCurrency.Location�@lblOtherCountryCurrency.ShowHelp��8lblOtherCountryCurrency.Size��@lblOtherCountryCurrency.TabIndexT�8lblOtherCountryCurrency.TextY�>lblOtherCountryCurrency.Visible��2lblSqlConnection.Location��2lblSqlConnection.ShowHelp'�*lblSqlConnection.Size)�2lblSqlConnection.TabIndex��*lblSqlConnection.Text��&lblTaxDesc.AutoSize��&lblTaxDesc.Location��&lblTaxDesc.ShowHelp��lblTaxDesc.Size��&lblTaxDesc.TabIndex5�lblTaxDesc.Text:�$luCountry.Locationu�8luCountry.Properties.Buttons�$luCountry.ShowHelp��luCountry.Size��$luCountry.TabIndexv�BluEdtCopyFromAccountBook.Location{�VluEdtCopyFromAccountBook.Properties.Buttons�BluEdtCopyFromAccountBook.ShowHelp��:luEdtCopyFromAccountBook.Size��BluEdtCopyFromAccountBook.TabIndex|�0luMoreCountries.Location��DluMoreCountries.Properties.Buttons�0luMoreCountries.ShowHelp��(luMoreCountries.Size��0luMoreCountries.TabIndex��6luOtherHomeCurrency.Enabled��8luOtherHomeCurrency.Location��LluOtherHomeCurrency.Properties.Buttons%�8luOtherHomeCurrency.ShowHelp��0luOtherHomeCurrency.Size��8luOtherHomeCurrency.TabIndex�� panelBottom.Dock��(panelBottom.Location9�(panelBottom.ShowHelp�� panelBottom.Size��(panelBottom.TabIndex{�FpanelControl1.Appearance.BackColor2��JpanelControl1.Appearance.GradientMode<�$panelControl1.Dock��,panelControl1.Location��,panelControl1.ShowHelp3�$panelControl1.Size5�,panelControl1.TabIndex��FpanelControl2.Appearance.BackColor2��JpanelControl2.Appearance.GradientMode��$panelControl2.DockK�,panelControl2.Location��,panelControl2.ShowHelp��$panelControl2.Size��,panelControl2.TabIndex7�FpanelControl3.Appearance.BackColor2<�JpanelControl3.Appearance.GradientMode��$panelControl3.Dock��,panelControl3.LocationS�,panelControl3.ShowHelp��$panelControl3.Size��,panelControl3.TabIndex��FpanelControl4.Appearance.BackColor2��JpanelControl4.Appearance.GradientModeV�$panelControl4.Dock�,panelControl4.Location��,panelControl4.ShowHelpM�$panelControl4.SizeO�,panelControl4.TabIndex��FpanelControl5.Appearance.BackColor2��JpanelControl5.Appearance.GradientMode��$panelControl5.Docke�,panelControl5.Location�,panelControl5.ShowHelp��$panelControl5.Size��,panelControl5.TabIndexQ�panelMain.DockV�$panelMain.Location�$panelMain.ShowHelp��panelMain.Size��$panelMain.TabIndexB�"pictureBox1.ImageG�(pictureBox1.Location�X(pictureBox1.ShowHelp Y pictureBox1.Size"Y(pictureBox1.TabIndex�Y>radioGroupHomeCurrency.Location�Y:radioGroupHomeCurrency.MargingZNradioGroupHomeCurrency.Properties.Items;[PradioGroupHomeCurrency.Properties.Items1<[PradioGroupHomeCurrency.Properties.Items2N[PradioGroupHomeCurrency.Properties.Items3P[PradioGroupHomeCurrency.Properties.Items4Q[PradioGroupHomeCurrency.Properties.Items5j[PradioGroupHomeCurrency.Properties.Items6k[PradioGroupHomeCurrency.Properties.Items7u[PradioGroupHomeCurrency.Properties.Items8w[PradioGroupHomeCurrency.Properties.Items9x[6radioGroupHomeCurrency.Size�[>radioGroupHomeCurrency.TabIndex.\&sbtnCancel.Location3\&sbtnCancel.ShowHelp�\sbtnCancel.Size�\&sbtnCancel.TabIndexu]sbtnCancel.Textz],sbtnGetServers.Enabled�].sbtnGetServers.Location�].sbtnGetServers.ShowHelp ^&sbtnGetServers.Size"^.sbtnGetServers.TabIndex�^&sbtnGetServers.Text�^"sbtnNext.Location�^"sbtnNext.ShowHelp~_sbtnNext.Size�_"sbtnNext.TabIndex$`sbtnNext.Text)`*sbtnPrevious.Location/`*sbtnPrevious.ShowHelp�`"sbtnPrevious.Size�`*sbtnPrevious.TabIndexqa"sbtnPrevious.Textva6sbtnTestConnection.Location�a6sbtnTestConnection.ShowHelpb.sbtnTestConnection.Sizeb6sbtnTestConnection.TabIndex�b.sbtnTestConnection.Text�b wzPage1.Location�b wzPage1.ShowHelptcwzPage1.Sizevc wzPage1.TabIndexdwzPage1.Textd wzPage2.Location.d wzPage2.ShowHelp�dwzPage2.Size�d wzPage2.TabIndexpewzPage2.Textue wzPage3.Location�e wzPage3.ShowHelp fwzPage3.Size"f wzPage3.TabIndex�fwzPage3.Text�f wzPage4.Location�f wzPage4.ShowHelpvgwzPage4.Sizexg wzPage4.TabIndexhwzPage4.Text!h wzPage5.Location0h wzPage5.ShowHelp�hwzPage5.Size�h wzPage5.TabIndexriwzPage5.Textwi@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��First_Time_Start.htmB����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"System.Windows.Forms.HelpNavigatorvalue__�C����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Create Account Book WizardFormCreateAccountBookWizard{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abtnGetLatestCountrywzPage3�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3ckEdtBlankAccountBookwzPage5�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0ckEdtCopyChartOfAccountsgrpBxCopyMasterDataOptions�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0ckEdtCopyCreditorAccountsgrpBxCopyMasterDataOptions�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2ckEdtCopyDebtorAccountsgrpBxCopyMasterDataOptions�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1ckEdtCopyMasterDatawzPage5�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2ckEdtCopyReportLayoutgrpBxCopyMasterDataOptions�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3ckEdtCopyStockItemsgrpBxCopyMasterDataOptions�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4ckEdtCreateAnywzPage1�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a6ckEdtCreateDefaultwzPage1�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5 ckEdtCreateSampleChartOfAccountswzPage5�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5ckEdtMPAccountingwzPage4�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a6ckEdtMPInvoicingwzPage4�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1ckEdtMPStockControlwzPage4�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3ckEdtSystemRecommendPathwzPage2�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0ckEdtUseDefaultAccountwzPage1�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a14ckEdtUseMyAccountwzPage1�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2ckEdtUseTaxCodewzPage3�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a17ckEdtUseWHTwzPage3�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2comboBoxEditCompanyTypewzPage5�DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3edtAccountNoFormatwzPage5�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a8edtActualDataStartDatewzPage3�DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a19edtCompanyNamewzPage2�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a7edtDatabaseFolderwzPage2�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3edtDatabaseNamewzPage2�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5edtFiscalYearStartDatewzPage3�DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a21
edtServerNamewzPage1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a11edtServerPasswordwzPage1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a9edtServerUserNamewzPage1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0edtTaxCodeDisplayNamewzPage3�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a15edtWithholdingTaxOptionwzPage3�DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0	groupBox1wzPage2vSystem.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891grpBxCopyMasterDataOptionswzPage5vSystem.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891
helpProvider1zSystem.Windows.Forms.HelpProvider, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089label11wzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08922label12wzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08913label13wzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08923label14
panelControl2sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890label15wzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08924label16wzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08925label17wzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08920label19wzPage2sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0894label20wzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08918label21wzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08916label22wzPage2sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0896label23
panelControl3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890label25wzPage2sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0898label26wzPage2sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0899label27
panelControl4sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890label29grpBxCopyMasterDataOptionssSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0895label30
panelControl5sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890label32wzPage5sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08911label33wzPage5sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0899label34wzPage5sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0896label35wzPage4sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0897label6wzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0898label8wzPage1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08913label9wzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0896!labelAccountingPackageDescriptionwzPage4�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5#labelActualDataStartDateDescriptionwzPage3�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a14labelCountrywzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08910labelFreeFormatDescriptionwzPage5�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4 labelInvoicingPackageDescriptionwzPage4�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0
labelPasswordwzPage1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08910labelServerNamewzPage1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0897labelStandaloneNotewzPage1�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a12#labelStockControlPackageDescriptionwzPage4�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2
labelUsernamewzPage1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891lblAutoCountServerAvailable	groupBox1�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2lblAutoCountServerNote	groupBox1�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1lblHintDesc
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890lblOtherCountryCurrencywzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0894lblSqlConnection	groupBox1�DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0
lblTaxDescwzPage3sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08912	luCountrywzPage3�DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a9luEdtCopyFromAccountBookgrpBxCopyMasterDataOptions�DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a6luMoreCountrieswzPage3�DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1luOtherHomeCurrencywzPage3�DevExpress.XtraEditors.LookUpEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5panelBottom$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1
panelControl1wzPage4DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4
panelControl2wzPage2DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2
panelControl3wzPage3DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a11
panelControl4wzPage1DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4
panelControl5wzPage5DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a10	panelMain$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0pictureBox1wzPage5xSystem.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0897radioGroupHomeCurrencywzPage3�DevExpress.XtraEditors.RadioGroup, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a7
sbtnCancelpanelBottom�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2sbtnGetServerswzPage1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a8sbtnNextpanelBottom�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0sbtnPreviouspanelBottom�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1sbtnTestConnectionwzPage1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3wzPage1	panelMainsSystem.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891wzPage2	panelMainsSystem.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0890wzPage3	panelMainsSystem.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0892wzPage4	panelMainsSystem.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0894wzPage5	panelMainsSystem.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0893D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxyn�E����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightsGet Latest CountryD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy%�Blank Account BookA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight{D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
Copy Chart of AccountsA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�0Copy Creditor AccountsA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy,0Copy Debtor AccountsA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$(Copy Master Data from other Account BookA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�	D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�JCopy Reports && Grid LayoutA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
JCopy Stock ItemsA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightnD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$�#Create a new account book in any PCA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$T(Create a default account book in this PCA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$�Create sample Chart of AccountsA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$TAccounting PackageA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightxD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$�Invoicing PackageA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightl$D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$�Stock Control PackageA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�"D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��Use System Recommend PathA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy9�#Use Default SA Account and PasswordA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy9�(Use the following User Name and PasswordA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�	D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy*z
Enable TaxA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy*�Enable Withholding TaxA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight� Trading CompanyD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��F����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����Trading CompanyManufacturing CompanyPartnership CompanyTraining Center CompanyTravel Agency CompanyConstruction CompanyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�AAAAAAAAAAAAD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�TA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightdD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�`F����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����F����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightdD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightJD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightzD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�GF����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����F����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightdD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightzD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightz
D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightzTaxD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxynzA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightbD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��F����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�#D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy2A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�nServer InfoD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy/)A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK�
Copy Master Data OptionsD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy(bA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightx
Actual Data Start Date:D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy(�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
	ZSpecify the Country of this account book. You can choose from the predefined Country list.D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy(IA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheights
Fiscal Year Start Date:G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__H����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�-Here, you must specify the Basic Information.G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy3A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightZ
3. Start DateG����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
4. CountryD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyIA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
,Specify the start date of this account book.H����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy#�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightZ
Database Folder:G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyPA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight-6. TaxD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy}A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightP

Rename Tax toH����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy#�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightW
Database Name:G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�mHere, you must specify the Start Date, Home Currency Setting, and Tax option to be used in this account book.H����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy#�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightn
New Company Name:G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__H����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�2. Basic InformationG����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�4Here, you must specify the Database Server Location.D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
hA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
Copy from this Account Book:G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*�Here, you must specify the Account Code Format to be used in this Account Book. In addition, you should specify whether to create Sample Chart of Accounts or to Copy Master Files from other Account Book. (Note:  If you choose to Copy Chart of Accounts from other account book, then the Account Code Format will be follow that account book.)G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy>A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
7. Account Code FormatD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$VA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheights
Account Code Format:G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
8. Sample Chart of AccountsG����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy6A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightp7. Main PackageG����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__H����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�5. Home CurrencyG����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitVerdanaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy<A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�1. Database Server LocationH����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy(A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
JSpecify the Home Currency - Currency Code (Currency Word, Currency Symbol)I����`DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a(DevExpress.XtraEditors.LabelAutoSizeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�TA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*�Accounting package contains G/L, A/R, and A/P modules. With this package, you can print Profit and Loss of Statement, Balance Sheet Statement, Debtor Statement, Debtor Aging, and etc. This is the basic package which most of the users will use.I����`DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a(DevExpress.XtraEditors.LabelAutoSizeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy^A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*�Specify the start date of the actual data to be entered in this account book. If Actual Data Start Date is greater than Fiscal Year Start Date, then you can maintain current year account balance in Year To Date Maintenance.H����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy(�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight2
Country:I����`DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a(DevExpress.XtraEditors.LabelAutoSizeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$tA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�F(Note: To use free format, leave the Account Code Format field empty.)I����`DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a(DevExpress.XtraEditors.LabelAutoSizeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�(%�Invoicing Package contains only Sales module. With this package, you can print Quotation, Delivery Order, Invoice, Debit Note, and Credit Note.D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyL�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight9
	Password:D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy8�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightI
Server Name:I����`DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a(DevExpress.XtraEditors.LabelAutoSizeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
VA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�+(Note: This option is for standalone user.)I����`DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a(DevExpress.XtraEditors.LabelAutoSizeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�(#�Stock Control package contains Sales, Purchase, and Stock Control modules. With this package, you can print Delivery Order, Invoice, Purchase Order, Stock Card, Stock Balance, and etc. This is the basic package which most of the users will use.D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyL�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight?


User Name:D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy/A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
!AutoCount Server is found on {0}.D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy#CA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��* Note : Database Folder can be maintained at 
     File -> Manage AutoCount Server -> Server Setting -> Backup/Restore Setting.
G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��Here, you must specify the Main Package to be used in this account book. (Note: You can use Module Setting to configure your module setting later.)H����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.ImeModevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�1A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
.Currency Code (Currency Word, Currency Symbol)D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
Connected to SQL Server : {0}D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy(fA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight%
9Specify whether you want to apply Tax or Withholding Tax.D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy\�F����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�fF����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy\�F����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight!D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxyg0F����ZDevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0DevExpress.XtraEditors.Controls.ButtonPredefinesvalue__����A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�J����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�.K����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
���L����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a+System.Drawing.Drawing2D.LinearGradientModevalue__J����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*!K����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
���L����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a+System.Drawing.Drawing2D.LinearGradientModevalue__J����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*K����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
���L����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a+System.Drawing.Drawing2D.LinearGradientModevalue__J����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*K����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
���L����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a+System.Drawing.Drawing2D.LinearGradientModevalue__J����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�*K����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
���L����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a+System.Drawing.Drawing2D.LinearGradientModevalue__J����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�6J����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��M����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.BitmapData	�nBM�nv(����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy<A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��)D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy(E����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.Padding_all_top_left_right_bottomCountry CurrencyradioBtnCountryCurrencyOthers :radioBtnUSDollarA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�8D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyRA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightKCancelD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�Get Available ServersD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightKNextD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightKPreviousD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy&A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightbTest ConnectionD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��
panelControl3D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��
panelControl3D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��
panelControl3D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��!
panelControl3D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy(A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��"
panelControl3�1����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetjgSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3awSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089�oE�\�J�4՝�
��iV{���x����ϵ��T_��T�B�y��a��>�|fl�յ찙�i��Ė��R���]���V���������{_�A�H���M�\5�Ƥ�����N{Ϛ�(�mg���!������{G��R����j��#�좙��"��H���N���n�j����Tt��c8��A�����XWAi�S7�h���!z��'�w:*x�?*-y�0�8A3v��6�/�8�9�v�9Ɍ�;�S?A@���@�A%�Ak`�BH%�B�C�B��B�hE�I';-I�
.I؇2IX��IF\_K9g`K�Ms�M�*�O���O`�Q#�>R�?S�:�S�YV�\V�RBX,mYUdjZ��e��-i�Huivia(�j�c�j9dKk}�pw
z� 3zdw?{۳B{&h2���
�r+�E�k�7�
������xx:
U
�	��6
i
@�c�O�
Hp
�
�	�q���C	�
b�1�
���
&U��]���=��$�Eh&.�`��x	\����U�2
��<	[��b�2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type#,>>edtDatabaseName.Name�0>>edtDatabaseName.Parent�,>>edtDatabaseName.Type�0>>edtDatabaseName.ZOrderD(>>edtSAPassword.NameG,>>edtSAPassword.ParentV(>>edtSAPassword.Typee,>>edtSAPassword.ZOrder�(>>edtServerName.Name�,>>edtServerName.Parent�(>>edtServerName.Type
,>>edtServerName.ZOrder�>>label1.Name�>>label1.Parent�>>label1.Type�>>label1.ZOrder>>label2.Name!>>label2.Parent)>>label2.Type8>>label2.ZOrder�>>label3.Name�>>label3.Parent�>>label3.Type�>>label3.ZOrder<>>label4.Name?>>label4.ParentG>>label4.TypeV>>label4.ZOrder�(>>panelControl1.Name�,>>panelControl1.Parent�(>>panelControl1.Type�,>>panelControl1.ZOrdere">>sbtnCancel.Nameh&>>sbtnCancel.Parentt">>sbtnCancel.Type�&>>sbtnCancel.ZOrder.>>sbtnGetDatabases.Name2>>sbtnGetDatabases.Parent .>>sbtnGetDatabases.Type/2>>sbtnGetDatabases.ZOrder�*>>sbtnGetServers.Name�.>>sbtnGetServers.Parent�*>>sbtnGetServers.Type�.>>sbtnGetServers.ZOrdera	>>sbtnOK.Named	>>sbtnOK.Parentl	>>sbtnOK.Type{	>>sbtnOK.ZOrder
2edtDatabaseName.EditValue
0edtDatabaseName.Location
(edtDatabaseName.Size�
0edtDatabaseName.TabIndexH.edtSAPassword.EditValueM,edtSAPassword.LocationO$edtSAPassword.Size�,edtSAPassword.TabIndex�.edtServerName.EditValue�,edtServerName.Location�$edtServerName.Size2
,edtServerName.TabIndex�
label1.AutoSize�
label1.Location�
label1.Sizeylabel1.TabIndexlabel1.Text"label2.AutoSize0label2.Location2label2.Size�label2.TabIndexrlabel2.Textwlabel3.AutoSize�label3.Location�label3.Size#label3.TabIndex�label3.Text�label4.AutoSize�label4.Location�label4.Sizezlabel4.TabIndexlabel4.Text#$panelControl1.Dockf,panelControl1.Location$panelControl1.Size�,panelControl1.TabIndexP&sbtnCancel.LocationUsbtnCancel.Size�&sbtnCancel.TabIndex�sbtnCancel.Text�2sbtnGetDatabases.Location�*sbtnGetDatabases.Size?2sbtnGetDatabases.TabIndex�*sbtnGetDatabases.Text�.sbtnGetServers.Location&sbtnGetServers.Size�.sbtnGetServers.TabIndexA&sbtnGetServers.TextFsbtnOK.Location]sbtnOK.Size�sbtnOK.TabIndex�sbtnOK.Text�@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Edit Account BookFormEditAccountBook{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aedtDatabaseName
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a9
edtSAPassword
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0
edtServerName
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a10label1
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0895label2
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0894label3
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891label4
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0896
panelControl1$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0
sbtnCancel
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3sbtnGetDatabases
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a8sbtnGetServers
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a7sbtnOK
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxyn0A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxynlA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightzC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxynA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightI
Server Name:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxynA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightI
SA Password:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy2A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightW
Database Name:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyRA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK
AIf you want to reset the password, please type in a new password.D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK
&CancelC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy>.A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�Get Available DatabasesC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy>A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�Get Available ServersC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK	&OK�x����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet�	gSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089wSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3agSystem.Drawing.Color, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a~System.Drawing.Drawing2D.LinearGradientMode, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Font, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3azSystem.Windows.Forms.AnchorStyles, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089PADPADP�=J�� څ��C�P�\P���L���J�H
�;_.�g�G���y����@7c���_���c���h�]���i����x���E��V�����i��_W�]�a�s§�� "���x��[x���9���I�-ϕ�T7Y������յ찕�h�.n��w�|��ʦ�����ཻ�]Ż�Ჽ/�H�ИV���A�H���M����ٿ�4���+-������ľ���X���+V4��!B�Ve�3>��y�"�O��Pђ0����,a�Փ��c�,�	p�?Es�'E�U���c���5>���8��R��܅����qߔ��ɗߔC���P����lY��P污Y�U좙��9��H���N�������k�8�m�A�o���,i��_��J"��%�b�����By�|}�
["
�������[v"c��3���D.#o
+��Ai�E��y���������#��jT�xIFS�G�����[�&�#�_%ݹ`%���%�(�%�	'��'�3X)H	-�F-��0���01�0E{�1*2%4G��4��E6v��6�MR9�e*;��3;�c�>��>�>�!@i &@gųA%�GBH%�B�C�B��BC�iD��D麰D�hEB�4G�tJ˷�J��JIA�L�>�Lw��L�Ms�M�*�O���O���Oѽ�OP�Pˡ�Ptm
Q�:�S/�5TгCT(9V��Vf��W��W�RBX�^XUdjZ��^@l�_���_���aP��d���djs=hU>Kh�Rj��k�Kl�z�l]?An/�MpЛ[p}�pb$s��2vo+w��dww
zQ�rI&'�'�H(��
/��!}.��&T".%����,��
rU��@ q('(7:��_!J�@U���,.$�#�(~**�G���~�m<&�F�*r+$S1X
�

�HQ;��d�`U1+�)�	+
!�%�$%_%z$�%&��#_'=���$��d��$�	��)� "�#�'59�*9�^��+�	R	�m&��;��z��i<�"�g9�#0�Z��2-�,������%�M)�(}M#��!�"Z,�+���^�	�	}��\Z
�
9r�)
�
$����)��&_� �
�,�v=*�'I$��82$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type'>>bar2.Name�>>bar2.Type�J>>barBtnInstallSampleAccountBook.Name"J>>barBtnInstallSampleAccountBook.TypeBB>>barBtnOpenCurrentDMFFolder.Name�B>>barBtnOpenCurrentDMFFolder.Type�(>>barBtnOpenDMF.Named(>>barBtnOpenDMF.Types(>>barBtnSaveDMF.Name�(>>barBtnSaveDMF.TypeF>>barBtnShowCurrentDMFFullPath.Name�F>>barBtnShowCurrentDMFFullPath.Type�(>>barBtnSyncAll.Name)(>>barBtnSyncAll.Type86>>barDockControlBottom.Name�:>>barDockControlBottom.Parent�6>>barDockControlBottom.Type�:>>barDockControlBottom.ZOrder\2>>barDockControlLeft.Name_6>>barDockControlLeft.Parents2>>barDockControlLeft.Typez6>>barDockControlLeft.ZOrder�4>>barDockControlRight.Name8>>barDockControlRight.Parent4>>barDockControlRight.Type8>>barDockControlRight.ZOrder�0>>barDockControlTop.Name�4>>barDockControlTop.Parent�0>>barDockControlTop.Type�4>>barDockControlTop.ZOrderB	$>>barManager1.NameE	$>>barManager1.TypeR	$>>barSubItem1.Name�	$>>barSubItem1.Type�	*>>colCompanyName.Name]
*>>colCompanyName.Typem
,>>colDatabaseName.Name�
,>>colDatabaseName.Type2>>colDatabaseVersion.Name�2>>colDatabaseVersion.Type�,>>colIsRegistered.Name*,>>colIsRegistered.Type; >>colRemark.Name� >>colRemark.Type�(>>colServerName.NameV
(>>colServerName.Typee
(>>gcAccountBook.Name�
,>>gcAccountBook.Parent�
(>>gcAccountBook.Type,>>gcAccountBook.ZOrder� >>gridView1.Name� >>gridView1.Type�>>label1.Name>>label1.Parent">>label1.Type1>>label1.ZOrder�(>>lblMainServer.Name�,>>lblMainServer.Parent�(>>lblMainServer.Type�,>>lblMainServer.ZOrder<(>>panelControl1.Name?,>>panelControl1.ParentN(>>panelControl1.TypeU,>>panelControl1.ZOrder�(>>panelControl2.Name�,>>panelControl2.Parent�(>>panelControl2.Type�,>>panelControl2.ZOrderp">>popupMenu1.Names">>popupMenu1.Type<>>repositoryItemTextEdit1.Name�<>>repositoryItemTextEdit1.Type8>>sbtnAttachAccountBook.Name�<>>sbtnAttachAccountBook.Parent�8>>sbtnAttachAccountBook.Type�<>>sbtnAttachAccountBook.ZOrdera >>sbtnClose.Named$>>sbtnClose.Parento >>sbtnClose.Type~$>>sbtnClose.ZOrder8>>sbtnCreateAccountBook.Name	<>>sbtnCreateAccountBook.Parent 8>>sbtnCreateAccountBook.Type/<>>sbtnCreateAccountBook.ZOrder�8>>sbtnDeleteAccountBook.Name�<>>sbtnDeleteAccountBook.Parent�8>>sbtnDeleteAccountBook.Type�<>>sbtnDeleteAccountBook.ZOrderh8>>sbtnDetachAccountBook.Namek<>>sbtnDetachAccountBook.Parent�8>>sbtnDetachAccountBook.Type�<>>sbtnDetachAccountBook.ZOrder4>>sbtnEditAccountBook.Name8>>sbtnEditAccountBook.Parent14>>sbtnEditAccountBook.Type@8>>sbtnEditAccountBook.ZOrder�0>>sbtnSetMainServer.Name�4>>sbtnSetMainServer.Parent�0>>sbtnSetMainServer.Type�4>>sbtnSetMainServer.ZOrderubar2.TextxLbarBtnInstallSampleAccountBook.Caption�DbarBtnOpenCurrentDMFFolder.Caption�*barBtnOpenDMF.Caption�*barBtnSaveDMF.Caption�HbarBtnShowCurrentDMFFullPath.Caption*barBtnSyncAll.CaptionG2barDockControlBottom.Dock�:barDockControlBottom.Location*2barDockControlBottom.Size�.barDockControlLeft.Dockj6barDockControlLeft.Location.barDockControlLeft.Size�0barDockControlRight.DockT8barDockControlRight.Location�0barDockControlRight.Size�,barDockControlTop.Dock>4barDockControlTop.Location�,barDockControlTop.Size�&barSubItem1.Caption( ,colCompanyName.CaptionC ,colCompanyName.VisibleQ 6colCompanyName.VisibleIndexS (colCompanyName.WidthX .colDatabaseName.Caption] .colDatabaseName.Visiblel 8colDatabaseName.VisibleIndexn *colDatabaseName.Widths 4colDatabaseVersion.Captionx 4colDatabaseVersion.Visible� >colDatabaseVersion.VisibleIndex� 0colDatabaseVersion.Width� .colIsRegistered.Caption� "colRemark.Caption� "colRemark.Visible� ,colRemark.VisibleIndex� colRemark.Width� *colServerName.Caption� *colServerName.Visible� 4colServerName.VisibleIndex� &colServerName.Width� $gcAccountBook.Dock� ,gcAccountBook.Locationl!$gcAccountBook.Size",gcAccountBook.TabIndex�"dgridView1.Appearance.ColumnFilterButton.BackColor2�"pgridView1.Appearance.ColumnFilterButtonActive.BackColor2m#NgridView1.Appearance.EvenRow.BackColor2)$RgridView1.Appearance.EvenRow.GradientMode�$bgridView1.Appearance.FilterCloseButton.BackColor2�%fgridView1.Appearance.FilterCloseButton.GradientModeR&VgridView1.Appearance.FilterPanel.BackColor2'TgridView1.Appearance.FocusedRow.BackColor2�'TgridView1.Appearance.GroupPanel.BackColor2{(HgridView1.Appearance.GroupPanel.Font7)JgridView1.Appearance.HeaderPanel.Font�*LgridView1.Appearance.OddRow.BackColor2�+PgridView1.Appearance.OddRow.GradientMode�,NgridView1.Appearance.Preview.BackColor2^-XgridView1.Appearance.RowSeparator.BackColor2.label1.AutoSize�.label1.Location�.label1.Sizet/label1.TabIndex0label1.Text0,lblMainServer.AutoSize40,lblMainServer.Location60$lblMainServer.Size�0,lblMainServer.TabIndexv1$panelControl1.Dock{1,panelControl1.Location%2$panelControl1.Size�2,panelControl1.TabIndexe3$panelControl2.Dockj3,panelControl2.Location4$panelControl2.Size�4,panelControl2.TabIndexT5*panelControl2.VisibleY5DrepositoryItemTextEdit1.AutoHeight[5<sbtnAttachAccountBook.Location]54sbtnAttachAccountBook.Size�5<sbtnAttachAccountBook.TabIndex�64sbtnAttachAccountBook.Text�6 sbtnClose.Anchor�6$sbtnClose.Locatione7sbtnClose.Size8$sbtnClose.TabIndex�8sbtnClose.Text�8<sbtnCreateAccountBook.Location�84sbtnCreateAccountBook.SizeN9<sbtnCreateAccountBook.TabIndex�94sbtnCreateAccountBook.Text�98sbtnDeleteAccountBook.Anchor
:<sbtnDeleteAccountBook.Location�:4sbtnDeleteAccountBook.SizeV;<sbtnDeleteAccountBook.TabIndex�;4sbtnDeleteAccountBook.Text�;<sbtnDetachAccountBook.Location<4sbtnDetachAccountBook.Size�<<sbtnDetachAccountBook.TabIndexU=4sbtnDetachAccountBook.TextZ=8sbtnEditAccountBook.Locationp=0sbtnEditAccountBook.Size>8sbtnEditAccountBook.TabIndex�>0sbtnEditAccountBook.Text�>4sbtnSetMainServer.Location�>,sbtnSetMainServer.Sizee?4sbtnSetMainServer.TabIndex	@,sbtnSetMainServer.Text@@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�.B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Manage Account BookFormManageAccountBook{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abar2vDevExpress.XtraBars.Bar, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abarBtnInstallSampleAccountBook�DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abarBtnOpenCurrentDMFFolder�DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
barBtnOpenDMF�DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
barBtnSaveDMF�DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abarBtnShowCurrentDMFFullPath�DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
barBtnSyncAll�DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abarDockControlBottom$this�DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5barDockControlLeft$this�DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3barDockControlRight$this�DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4barDockControlTop$this�DevExpress.XtraBars.BarDockControl, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a6barManager1}DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49abarSubItem1}DevExpress.XtraBars.BarSubItem, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49acolCompanyName�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49acolDatabaseName�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49acolDatabaseVersion�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49acolIsRegistered�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a	colRemark�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
colServerName�DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
gcAccountBook$this~DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0	gridView1�DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49alabel1
panelControl2sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0892
lblMainServer
panelControl2sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891
panelControl1$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2
panelControl2$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1
popupMenu1|DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49arepositoryItemTextEdit1�DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49asbtnAttachAccountBook
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1	sbtnClose
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4sbtnCreateAccountBook
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5sbtnDeleteAccountBook
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0sbtnDetachAccountBook
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2sbtnEditAccountBook
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3sbtnSetMainServer
panelControl2�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0Custom 3Install Sample Account Book-Open Current Account Book Control File FolderOpen Account Book Control File%Save To New Account Book Control File0Show Current Account Book Control File Full Path7Synchronize All Account Books with this Database ServerC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy.A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�Account Book Control FileCompany Name�
Database NameuVersionERegistered?RemarkOServerFC����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy8A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight��E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
�ͱ�E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
�E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
KF����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a+System.Drawing.Drawing2D.LinearGradientModevalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
}}}�F����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a+System.Drawing.Drawing2D.LinearGradientModevalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
���E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
ɲ��E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
�G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__G����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.FontNameSizeStyleUnitSystem.Drawing.FontStyleSystem.Drawing.GraphicsUnitTahomaA����System.Drawing.FontStylevalue__����System.Drawing.GraphicsUnitvalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
�F����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a+System.Drawing.Drawing2D.LinearGradientModevalue__E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
�E����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Colornamevalue
knownColorstate	
�ͱ�D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy

A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightu
Main Database Server:D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�
A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight
C����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�&C����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�$D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightx&Attach Account BookH����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy~A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&CloseD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightzC&reate Account BookH����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089!System.Windows.Forms.AnchorStylesvalue__	D����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightv&Delete Account BookD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight|D&etach Account BookD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheightr&Edit Account BookD����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy6A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�&Set Main Database Server�/����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetdgSystem.Drawing.SizeF, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3afSystem.Drawing.Size, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Windows.Forms.FormStartPosition, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089gSystem.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3awSystem.Windows.Forms.DockStyle, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089�oE�\�J�V�|��ZĈ&l6�w7�tN.�iV{���x����ϵ�����>�Ħܳ᪙a��>���|fl�յ찙�i��V�������A�H���M�@���\��d&˕Z�����N{Ϛ�(��z�����!���Õ��{
��R����j��#�좙��"��F�H���N���n�j����Tt�~���ͦ�\9���XWAi&./�S7��!z��'�w:*x�?*�8A3v��6�/�8�9�v�9���@k`�BH%�B�C�B��B�hE';-I�
.I؇2IX��I�Ms�M/;N�*�O���O`�Q#�>R�?S�:�S{,$V�CRV�RBX,mYUdjZ�Huivia(�j�c�j���o}�p:@�tw
zdw?{۳B{`�	��`K4���
��}�f�7�
-kW����	�0
HI��
X	�
����
e
	
C���	D��,
k���Y
�(qH-��
C���}$:
�=f���^��	\�6��g	"t���l2$this.AutoScaleDimensions $this.ClientSize�&$this.StartPositionI$this.Text�>>$this.Name>>$this.Type(<>>ckEdtUseDefaultPassword.Name�@>>ckEdtUseDefaultPassword.Parent�<>>ckEdtUseDefaultPassword.Type�@>>ckEdtUseDefaultPassword.ZOrderR(>>edtSAPassword.NameU,>>edtSAPassword.Parentd(>>edtSAPassword.Types,>>edtSAPassword.ZOrder�(>>edtServerName.Name�,>>edtServerName.Parent	(>>edtServerName.Type,>>edtServerName.ZOrder�>>label1.Name�>>label1.Parent�>>label1.Type�>>label1.ZOrder+>>label2.Name.>>label2.Parent6>>label2.TypeE>>label2.ZOrder�(>>panelControl1.Name�,>>panelControl1.Parent�(>>panelControl1.Type�,>>panelControl1.ZOrderT">>sbtnCancel.NameW&>>sbtnCancel.Parentc">>sbtnCancel.Typer&>>sbtnCancel.ZOrder�*>>sbtnGetServers.Name�.>>sbtnGetServers.Parent
*>>sbtnGetServers.Type.>>sbtnGetServers.ZOrder�>>sbtnLoad.Name�">>sbtnLoad.Parent�>>sbtnLoad.Type�">>sbtnLoad.ZOrderH>>sbtnOK.NameK>>sbtnOK.ParentS>>sbtnOK.Typeb>>sbtnOK.ZOrder�>>sbtnSave.Name�">>sbtnSave.Parent�>>sbtnSave.Type	">>sbtnSave.ZOrder�	BckEdtUseDefaultPassword.EditValue�	@ckEdtUseDefaultPassword.Location�	TckEdtUseDefaultPassword.Properties.Caption/
8ckEdtUseDefaultPassword.SizeE
@ckEdtUseDefaultPassword.TabIndex�
.edtSAPassword.EditValue�
*edtSAPassword.Enabled�
,edtSAPassword.Location�
$edtSAPassword.Size�,edtSAPassword.TabIndex2.edtServerName.EditValue7,edtServerName.Location9$edtServerName.Size�,edtServerName.TabIndexy
label1.AutoSize~
label1.Location�
label1.Sizelabel1.TabIndex�label1.Text�label2.AutoSize�label2.Location�label2.Sizeqlabel2.TabIndexlabel2.Text$panelControl1.Dock(,panelControl1.Location�$panelControl1.Sizen,panelControl1.TabIndex&sbtnCancel.LocationsbtnCancel.Size�&sbtnCancel.TabIndexWsbtnCancel.Text\.sbtnGetServers.Locatione&sbtnGetServers.Size.sbtnGetServers.TabIndex�&sbtnGetServers.Text�"sbtnLoad.Location�sbtnLoad.Size]"sbtnLoad.TabIndexsbtnLoad.Text sbtnLoad.ToolTipsbtnOK.Location>sbtnOK.Size�sbtnOK.TabIndex~sbtnOK.Text�"sbtnSave.Location�sbtnSave.Size$"sbtnSave.TabIndex�sbtnSave.Text� sbtnSave.ToolTip�@����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizeFwidthheight�B�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�B����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&System.Windows.Forms.FormStartPositionvalue__Set Main Database ServerFormSetMainServer{DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49ackEdtUseDefaultPassword
panelControl1�DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a4
edtSAPassword
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a7
edtServerName
panelControl1�DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a3label1
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0899label2
panelControl1sSystem.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0898
panelControl1$thisDevExpress.XtraEditors.PanelControl, DevExpress.Utils.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0
sbtnCancel
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5sbtnGetServers
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a2sbtnLoad
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a1sbtnOK
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a6sbtnSave
panelControl1�DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v22.2, Version=22.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a0C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyRBUse Default PasswordA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�BA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$ A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightI
Server Name:C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy$DA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightI
SA Password:D����WSystem.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Windows.Forms.DockStylevalue__C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�
C����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy��A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&CancelC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyPA����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Sizewidthheight�Get Available ServersC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxy�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightV
Load from File&Load Main Database Server Setting fileC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.PointxyR�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightK&OKC����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.Pointxyj�A����QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aSystem.Drawing.SizewidthheightVSave to FileUSave the Main Database Server Setting to file for easy deploying to other workstation�����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADP��U<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
                <xs:element name="MinBankCharge" type="xs:decimal" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Registry">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RegID" type="xs:int" minOccurs="0" />
                <xs:element name="RegType" type="xs:short" minOccurs="0" />
                <xs:element name="RegValue" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>MODAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>PEROLEHAN TERTAHAN</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>ASET BUKAN SEMASA</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>ASET LAIN</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>ASET SEMASA</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>LIABILITI SEMASA</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LIABILITI BUKAN SEMASA</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>LIABILITI LAIN</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>JUALAN</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>PELARASAN JUALAN</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>KOS BARANG DIJUAL</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>HASIL LAIN</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>HASIL LUAR BIASA</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>PERBELANJAAN</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>PENCUKAIAN</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>AKAUN PENGASINGAN</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>MODAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>PEROLEHAN TERTAHAN</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>JUMLAH ASET BUKAN SEMASA </Description>
    <Desc2 />
    <AccType>FA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>PERABOT &amp; LEKAPAN</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>SUSUTNILAI TERKUMPUL- PERABOT &amp; LEKAPAN</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>PERALATAN PEJABAT </Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>SUSUTNILAI TERKUMPUL- PERALATAN PEJABAT </Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>KAWALAN PENGHUTANG</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>TUNAI DI BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>TUNAI</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>STOK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PRABAYARAN</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>KAWALAN PEMIUTANG</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>PERBELANJAAN TERAKRU</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>JUALAN</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>PULANGAN JUALAN</Description>
    <Desc2 />
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISKAUN DIBERI</Description>
    <Desc2 />
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>LABA DARI PERTUKARAN ASING</Description>
    <Desc2 />
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>600-0000</AccNo>
    <Description>STOK AWAL</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>BELIAN</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>612-0000</AccNo>
    <Description>PULANGAN BELIAN</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>615-0000</AccNo>
    <Description>ANGKUTAN MASUK</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>STOK AKHIR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>PENGIKLANAN</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>CAJ BANK</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>SUSUTNILAI ASET BUKAN SEMASA</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>GAJI &amp; UPAH</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>905-0000</AccNo>
    <Description>PERBELANJAAN PERJALANAN</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>906-0000</AccNo>
    <Description>PEMBAIKIAN KENDERAAN BERMOTOR</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>907-0000</AccNo>
    <Description>AIR &amp; LETRIK</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>908-0000</AccNo>
    <Description>RUGI DARI PERTUKARAN ASING</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>PENCUKAIAN</Description>
    <Desc2 />
    <AccType>TX</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>KENDERAAN BERMOTOR</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>SUSUTNILAI TERKUMPUL- KENDERAAN BERMOTOR</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>540-0000</AccNo>
    <Description>DISKAUN DITERIMA</Description>
    <Desc2 />
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>909-0000</AccNo>
    <Description>TELEFON &amp; FAKS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>910-0000</AccNo>
    <Description>ALAT TULIS DAN PERCETAKAN</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>911-0000</AccNo>
    <Description>FAEDAH</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>912-0000</AccNo>
    <Description>BELANJA POS &amp; SETEM</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>913-0000</AccNo>
    <Description>KOMISEN &amp; ELAUN</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>914-0000</AccNo>
    <Description>SEWA PEJABAT</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>915-0000</AccNo>
    <Description>BELANJA AM</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RIZAB</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-1000</AccNo>
    <Description>JUALAN TUNAI</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>440-0000</AccNo>
    <Description>DEPOSIT DITERIMA</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>AKAUN SEMENTARA KONTRA</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CEK</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>TUNAI</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>TUNAI</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <PaymentBy>TUNAI</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>1</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <StockSet>
    <StockSetKey>1</StockSetKey>
    <OpenStock>600-0000</OpenStock>
    <CloseStock>620-0000</CloseStock>
    <BalanceStock>330-0000</BalanceStock>
  </StockSet>
  <Registry>
    <RegID>264</RegID>
    <RegType>3</RegType>
    <RegValue>500-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>304</RegID>
    <RegType>3</RegType>
    <RegValue>510-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>265</RegID>
    <RegType>3</RegType>
    <RegValue>500-1000</RegValue>
  </Registry>
  <Registry>
    <RegID>296</RegID>
    <RegType>3</RegType>
    <RegValue>520-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>268</RegID>
    <RegType>3</RegType>
    <RegValue>610-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>305</RegID>
    <RegType>3</RegType>
    <RegValue>612-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>301</RegID>
    <RegType>3</RegType>
    <RegValue>610-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>370</RegID>
    <RegType>3</RegType>
    <RegValue>490-0000</RegValue>
  </Registry>
</NewDataSet>nn<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Registry">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RegID" type="xs:int" minOccurs="0" />
                <xs:element name="RegType" type="xs:short" minOccurs="0" />
                <xs:element name="RegValue" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <Desc2 />
    <AccType>OA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TRADE DEBTORS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>WORK IN PROGRESS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS</Description>
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>HIRE PURCHASE CREDITOR</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>SUB CONTRACT RECEIVED</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>600-0000</AccNo>
    <Description>WORK-IN-PROGRESS (OPENING)</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>602-0000</AccNo>
    <Description>PURCHASES RETURN</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>603-0000</AccNo>
    <Description>CARRIAGE INWARDS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>WORK-IN-PROGRESS (CLOSING)</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>BANK CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>905-0000</AccNo>
    <Description>E.P.F.</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>906-0000</AccNo>
    <Description>SOCSO</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>907-0000</AccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>908-0000</AccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>TAXATION</Description>
    <AccType>TX</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>SALES TAX</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>540-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>909-0000</AccNo>
    <Description>TELEPHONE CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>910-0000</AccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>911-0000</AccNo>
    <Description>HIRE PURCHASE INTEREST EXPENSE</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>912-0000</AccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>913-0000</AccNo>
    <Description>COMMISSION &amp; ALLOWANCES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>914-0000</AccNo>
    <Description>ASSESSMENT &amp; QUIT RENT</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>915-0000</AccNo>
    <Description>GENERAL EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>601-0000</AccNo>
    <Description>PURCHASES - RAW MATERIALS</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>440-0000</AccNo>
    <Description>DEPOSIT RECEIVED</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>CONTAINER OFFICE</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. CONTAINER OFFICE</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-6000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MACHINERY</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-6005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. MACHINERY</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>450-0000</AccNo>
    <Description>PROGRESS PAYMENT REC. - ADVANCE</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>604-0000</AccNo>
    <Description>TENDER DOCUMENT</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>605-0000</AccNo>
    <Description>SUB CONTRACT WAGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>606-0000</AccNo>
    <Description>FUEL &amp; LUBRICANTS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>607-0000</AccNo>
    <Description>CASE &amp; CRANE RENTAL</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>608-0000</AccNo>
    <Description>LOOSE TOOLS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>609-0000</AccNo>
    <Description>UPKEEP OF LORRY</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>UPKEEP OF MACHINERY</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>611-0000</AccNo>
    <Description>UPKEEP OF SITE OFFICE</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>924-0000</AccNo>
    <Description>NEWSPAPER EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>916-0000</AccNo>
    <Description>DIRECTORS' REMUNERATION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>917-0000</AccNo>
    <Description>INSURANCE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>918-0000</AccNo>
    <Description>LICENSE FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>919-0000</AccNo>
    <Description>MEDICAL FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>920-0000</AccNo>
    <Description>AUDIT FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>921-0000</AccNo>
    <Description>SECRETARIAL FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>922-0000</AccNo>
    <Description>UPKEEP OF OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>923-0000</AccNo>
    <Description>UPKEEP OF MOTOR VEHICLES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-5000</AssetAccNo>
    <AssetDeprnAccNo>200-5005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-6000</AssetAccNo>
    <AssetDeprnAccNo>200-6005</AssetDeprnAccNo>
  </AssetLink>
  <StockSet>
    <StockSetKey>1</StockSetKey>
    <OpenStock>600-0000</OpenStock>
    <CloseStock>620-0000</CloseStock>
    <BalanceStock>330-0000</BalanceStock>
  </StockSet>
  <Registry>
    <RegID>264</RegID>
    <RegType>3</RegType>
    <RegValue>500-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>304</RegID>
    <RegType>3</RegType>
    <RegValue>510-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>369</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
  <Registry>
    <RegID>371</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
  <Registry>
    <RegID>265</RegID>
    <RegType>3</RegType>
    <RegValue>500-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>296</RegID>
    <RegType>3</RegType>
    <RegValue>520-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>268</RegID>
    <RegType>3</RegType>
    <RegValue>601-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>305</RegID>
    <RegType>3</RegType>
    <RegValue>602-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>301</RegID>
    <RegType>3</RegType>
    <RegValue>540-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>370</RegID>
    <RegType>3</RegType>
    <RegValue>490-0000</RegValue>
  </Registry>
</NewDataSet>;�<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Registry">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RegID" type="xs:int" minOccurs="0" />
                <xs:element name="RegType" type="xs:short" minOccurs="0" />
                <xs:element name="RegValue" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>PLANT &amp; MACHINERY</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - PLANT &amp; MACHINERY</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FACTORY EQUIPMENT</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FACTORY EQUIPMENT</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <AccType>OA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TRADE DEBTORS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>STOCK</Description>
    <AccType>CA</AccType>
    <SpecialAccType />
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-1000</AccNo>
    <ParentAccNo>330-0000</ParentAccNo>
    <Description>STOCK - RAW MATERIALS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-2000</AccNo>
    <ParentAccNo>330-0000</ParentAccNo>
    <Description>STOCK - PACKING MATERIALS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-3000</AccNo>
    <ParentAccNo>330-0000</ParentAccNo>
    <Description>STOCK - WORK-IN-PROGRESS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-4000</AccNo>
    <ParentAccNo>330-0000</ParentAccNo>
    <Description>STOCK - FINISHED GOODS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS</Description>
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>HIRE PURCHASE CREDITOR</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>SALES</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>600-0000</AccNo>
    <Description>OPENING STOCKS - FINISHED GOODS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>CLOSING STOCKS - FINISHED GOODS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-0000</AccNo>
    <Description>MANUFACTURING ACCOUNT</Description>
    <AccType>CO</AccType>
    <SpecialAccType />
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1000</AccNo>
    <ParentAccNo>700-0000</ParentAccNo>
    <Description>RAW MATERIALS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1005</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>OPENING STOCKS - RAW MATERIALS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1010</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>PURCHASES - RAW MATERIALS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1015</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>CARRIAGE INWARDS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1020</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>CUSTOM DUTIES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1025</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>CUSTOM SERVICE CHARGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1090</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>CLOSING STOCKS - RAW MATERIALS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-3000</AccNo>
    <ParentAccNo>700-0000</ParentAccNo>
    <Description>DIRECT LABOUR</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-3005</AccNo>
    <ParentAccNo>700-3000</ParentAccNo>
    <Description>PRODUCTION WAGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-3010</AccNo>
    <ParentAccNo>700-3000</ParentAccNo>
    <Description>E.P.F. CONTRIBUTIONS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-3015</AccNo>
    <ParentAccNo>700-3000</ParentAccNo>
    <Description>SOCSO CONTRIBUTIONS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5000</AccNo>
    <ParentAccNo>700-0000</ParentAccNo>
    <Description>FACTORY OVERHEAD</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5005</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>FACTORY RENTAL</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5010</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>UPKEEP OF FACTORY MACHINERY</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5015</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>UPKEEP OF FACTORY EQUIPMENT</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5020</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>SECURITY CHARGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5025</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>FACTORY GENERAL REQUISITE</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5030</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>DEPRECIATION OF PLANT &amp; MACHINERY</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5035</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>DEPRECIATION OF FACTORY &amp; EQUIPMENT</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-7000</AccNo>
    <ParentAccNo>700-0000</ParentAccNo>
    <Description>PACKING MATERIALS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-7005</AccNo>
    <ParentAccNo>700-7000</ParentAccNo>
    <Description>OPENING STOCKS - PACKING MATERIALS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-7015</AccNo>
    <ParentAccNo>700-7000</ParentAccNo>
    <Description>CLOSING STOCKS - PACKING MATERIALS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-9000</AccNo>
    <ParentAccNo>700-0000</ParentAccNo>
    <Description>WORK IN PROGRESS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-9005</AccNo>
    <ParentAccNo>700-9000</ParentAccNo>
    <Description>WORK IN PROGRESS - OPENING</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-9010</AccNo>
    <ParentAccNo>700-9000</ParentAccNo>
    <Description>WORK IN PROGRESS - CLOSING</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0000</AccNo>
    <Description>ADMINISTRATIVE, SELLING &amp; GENERAL EXPS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0005</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0010</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>AUDIT FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0015</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>BONUS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0020</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>BANK INTEREST &amp; CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0025</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>DIRECTOR REMUNERATION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0035</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0040</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>ENTERTAINMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0045</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>E.P.F. CONTRIBUTIONS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0050</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>GENERAL EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0055</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>HIRE PURCHASE INTEREST</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0060</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>LICENSE FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0065</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>MEDICAL FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0070</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>OFFICE RENTAL</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0075</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>OFFICE REFRESHMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0080</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0085</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0090</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>ROAD TAX &amp; INSURANCE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0095</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>SOCSO CONTRIBUTIONS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1000</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>SECRETARIAL FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1005</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>STAFF SALARIES &amp; ALLOWANCES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1010</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>TRAVELLING EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1015</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>TELEPHONE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1020</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>UPKEEP OF MOTOR VEHICLES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1025</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1030</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-6000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-6005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>540-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-5000</AssetAccNo>
    <AssetDeprnAccNo>200-5005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-6000</AssetAccNo>
    <AssetDeprnAccNo>200-6005</AssetDeprnAccNo>
  </AssetLink>
  <StockSet>
    <StockSetKey>1</StockSetKey>
    <OpenStock>600-0000</OpenStock>
    <CloseStock>620-0000</CloseStock>
    <BalanceStock>330-4000</BalanceStock>
  </StockSet>
  <StockSet>
    <StockSetKey>2</StockSetKey>
    <OpenStock>700-1005</OpenStock>
    <CloseStock>700-1090</CloseStock>
    <BalanceStock>330-1000</BalanceStock>
  </StockSet>
  <StockSet>
    <StockSetKey>3</StockSetKey>
    <OpenStock>700-7005</OpenStock>
    <CloseStock>700-7015</CloseStock>
    <BalanceStock>330-2000</BalanceStock>
  </StockSet>
  <StockSet>
    <StockSetKey>4</StockSetKey>
    <OpenStock>700-9005</OpenStock>
    <CloseStock>700-9010</CloseStock>
    <BalanceStock>330-3000</BalanceStock>
  </StockSet>
  <Registry>
    <RegID>264</RegID>
    <RegType>3</RegType>
    <RegValue>500-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>265</RegID>
    <RegType>3</RegType>
    <RegValue>500-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>304</RegID>
    <RegType>3</RegType>
    <RegValue>510-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>296</RegID>
    <RegType>3</RegType>
    <RegValue>520-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>268</RegID>
    <RegType>3</RegType>
    <RegValue>700-1010</RegValue>
  </Registry>
  <Registry>
    <RegID>305</RegID>
    <RegType>3</RegType>
    <RegValue>700-1010</RegValue>
  </Registry>
  <Registry>
    <RegID>301</RegID>
    <RegType>3</RegType>
    <RegValue>540-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>369</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
  <Registry>
    <RegID>371</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
  <Registry>
    <RegID>370</RegID>
    <RegType>3</RegType>
    <RegValue>490-0000</RegValue>
  </Registry>
</NewDataSet>i<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Registry">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RegID" type="xs:int" minOccurs="0" />
                <xs:element name="RegType" type="xs:short" minOccurs="0" />
                <xs:element name="RegValue" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>PARTNER'S CAPITAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <Desc2 />
    <AccType>OA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TRADE DEBTORS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>STOCK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS</Description>
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>HIRE PURCHASE CREDITOR</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>SALES</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>600-0000</AccNo>
    <Description>STOCKS AT THE BEGINNING OF YEAR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>PURCHASES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>612-0000</AccNo>
    <Description>PURCHASES RETURN</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>615-0000</AccNo>
    <Description>CARRIAGE INWARDS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>STOCKS AT THE END OF YEAR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>BANK CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>906-0000</AccNo>
    <Description>HIRE PURCHASE INTEREST EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>914-0000</AccNo>
    <Description>TRAVELLING EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>916-0000</AccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>COMMISSION &amp; ALLOWANCES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>908-0000</AccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>TAXATION</Description>
    <AccType>TX</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>SALES TAX</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>540-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>915-0000</AccNo>
    <Description>UPKEEP OF MOTOR VEHICLE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>913-0000</AccNo>
    <Description>TELEPHONE CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>909-0000</AccNo>
    <Description>OFFICE RENTAL</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>912-0000</AccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>905-0000</AccNo>
    <Description>GENERAL EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>911-0000</AccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>907-0000</AccNo>
    <Description>INTEREST ON CAPITAL</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-1000</AccNo>
    <Description>CASH SALES</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>440-0000</AccNo>
    <Description>DEPOSIT RECEIVED</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>101-0000</AccNo>
    <ParentAccNo>100-0000</ParentAccNo>
    <Description>ABC</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>102-0000</AccNo>
    <ParentAccNo>100-0000</ParentAccNo>
    <Description>DEF</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>103-0000</AccNo>
    <ParentAccNo>100-0000</ParentAccNo>
    <Description>GHI</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>101-0001</AccNo>
    <ParentAccNo>101-0000</ParentAccNo>
    <Description>PARTNER'S CAPITAL</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>101-0002</AccNo>
    <ParentAccNo>101-0000</ParentAccNo>
    <Description>PARTNER'S CURRENT A/C - B/F</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>101-0003</AccNo>
    <ParentAccNo>101-0000</ParentAccNo>
    <Description>SHARE OF PROFIT (%)</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>101-0004</AccNo>
    <ParentAccNo>101-0000</ParentAccNo>
    <Description>PARTNER'S DRAWING</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>102-0001</AccNo>
    <ParentAccNo>102-0000</ParentAccNo>
    <Description>PARTNER'S CAPITAL</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>102-0002</AccNo>
    <ParentAccNo>102-0000</ParentAccNo>
    <Description>PARTNER'S CURRENT A/C - B/F</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>102-0003</AccNo>
    <ParentAccNo>102-0000</ParentAccNo>
    <Description>SHARE OF PROFIT (%)</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>102-0004</AccNo>
    <ParentAccNo>102-0000</ParentAccNo>
    <Description>PARTNER'S DRAWING</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>103-0001</AccNo>
    <ParentAccNo>103-0000</ParentAccNo>
    <Description>PARTNER'S CAPITAL</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>103-0002</AccNo>
    <ParentAccNo>103-0000</ParentAccNo>
    <Description>PARTNER'S CURRENT A/C - B/F</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>103-0003</AccNo>
    <ParentAccNo>103-0000</ParentAccNo>
    <Description>SHARE OF PROFIT (%)</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>103-0004</AccNo>
    <ParentAccNo>103-0000</ParentAccNo>
    <Description>PARTNER'S DRAWING</Description>
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>910-0000</AccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <StockSet>
    <StockSetKey>1</StockSetKey>
    <OpenStock>600-0000</OpenStock>
    <CloseStock>620-0000</CloseStock>
    <BalanceStock>330-0000</BalanceStock>
  </StockSet>
  <Registry>
    <RegID>264</RegID>
    <RegType>3</RegType>
    <RegValue>500-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>304</RegID>
    <RegType>3</RegType>
    <RegValue>510-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>265</RegID>
    <RegType>3</RegType>
    <RegValue>500-1000</RegValue>
  </Registry>
  <Registry>
    <RegID>296</RegID>
    <RegType>3</RegType>
    <RegValue>520-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>268</RegID>
    <RegType>3</RegType>
    <RegValue>610-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>305</RegID>
    <RegType>3</RegType>
    <RegValue>612-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>301</RegID>
    <RegType>3</RegType>
    <RegValue>610-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>370</RegID>
    <RegType>3</RegType>
    <RegValue>490-0000</RegValue>
  </Registry>
</NewDataSet>Z<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Registry">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RegID" type="xs:int" minOccurs="0" />
                <xs:element name="RegType" type="xs:short" minOccurs="0" />
                <xs:element name="RegValue" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <Desc2 />
    <AccType>OA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TRADE DEBTORS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>STOCK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS</Description>
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>HIRE PURCHASE CREDITOR</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>SALES</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>600-0000</AccNo>
    <Description>STOCKS AT THE BEGINNING OF YEAR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>PURCHASES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>612-0000</AccNo>
    <Description>PURCHASES RETURN</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>615-0000</AccNo>
    <Description>CARRIAGE INWARDS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>STOCKS AT THE END OF YEAR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>BANK CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>905-0000</AccNo>
    <Description>TRAVELLING EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>906-0000</AccNo>
    <Description>UPKEEP OF MOTOR VEHICLE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>907-0000</AccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>908-0000</AccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>TAXATION</Description>
    <AccType>TX</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>SALES TAX</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>540-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>909-0000</AccNo>
    <Description>TELEPHONE CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>910-0000</AccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>911-0000</AccNo>
    <Description>INTEREST EXPENSE</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>912-0000</AccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>913-0000</AccNo>
    <Description>COMMISSION &amp; ALLOWANCES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>914-0000</AccNo>
    <Description>OFFICE RENTAL</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>915-0000</AccNo>
    <Description>GENERAL EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-1000</AccNo>
    <Description>CASH SALES</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>440-0000</AccNo>
    <Description>DEPOSIT RECEIVED</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <StockSet>
    <StockSetKey>1</StockSetKey>
    <OpenStock>600-0000</OpenStock>
    <CloseStock>620-0000</CloseStock>
    <BalanceStock>330-0000</BalanceStock>
  </StockSet>
  <Registry>
    <RegID>264</RegID>
    <RegType>3</RegType>
    <RegValue>500-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>265</RegID>
    <RegType>3</RegType>
    <RegValue>500-1000</RegValue>
  </Registry>
  <Registry>
    <RegID>304</RegID>
    <RegType>3</RegType>
    <RegValue>510-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>296</RegID>
    <RegType>3</RegType>
    <RegValue>520-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>268</RegID>
    <RegType>3</RegType>
    <RegValue>610-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>305</RegID>
    <RegType>3</RegType>
    <RegValue>612-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>301</RegID>
    <RegType>3</RegType>
    <RegValue>610-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>369</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
  <Registry>
    <RegID>371</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
  <Registry>
    <RegID>370</RegID>
    <RegType>3</RegType>
    <RegValue>490-0000</RegValue>
  </Registry>
</NewDataSet>�[<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Registry">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RegID" type="xs:int" minOccurs="0" />
                <xs:element name="RegType" type="xs:short" minOccurs="0" />
                <xs:element name="RegValue" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>REVENUE</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF TUITION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <Desc2 />
    <AccType>OA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TUITION DEBTORS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>916-0000</AccNo>
    <Description>TRAINING EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>DEPOSIT RECEIVED</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>LEASED CREDITORS</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>FEES RECEIVED</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>TUITION FEES PAYABLE</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>BANK CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>905-0000</AccNo>
    <Description>EPF</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>906-0000</AccNo>
    <Description>SOCSO</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>907-0000</AccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>908-0000</AccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>TAXATION</Description>
    <AccType>TX</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>LEASED INTEREST SUSPENSE</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0100</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>TRAINING FEES RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>540-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>909-0000</AccNo>
    <Description>TELEPHONE CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>910-0000</AccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>911-0000</AccNo>
    <Description>PHOTOSTATING CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>912-0000</AccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>913-0000</AccNo>
    <Description>NEWSPAPER &amp; PERIODICALS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>914-0000</AccNo>
    <Description>OFFICE RENTAL</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>915-0000</AccNo>
    <Description>MEDICAL FEES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0200</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>TUITION FEES RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>COMPUTER SYSTEMS (LEASED)</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. COMPUTER SYSTEMS (LEASED)</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>301-0000</AccNo>
    <Description>TRAINING DEBTORS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0300</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>COURSE FEES RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0400</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>REGISTRATION FEES RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0500</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>OTHER FEES RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-5000</AssetAccNo>
    <AssetDeprnAccNo>200-5005</AssetDeprnAccNo>
  </AssetLink>
  <Registry>
    <RegID>264</RegID>
    <RegType>3</RegType>
    <RegValue>500-0100</RegValue>
  </Registry>
  <Registry>
    <RegID>304</RegID>
    <RegType>3</RegType>
    <RegValue>510-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>369</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
  <Registry>
    <RegID>371</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
  <Registry>
    <RegID>265</RegID>
    <RegType>3</RegType>
    <RegValue>500-0100</RegValue>
  </Registry>
  <Registry>
    <RegID>296</RegID>
    <RegType>3</RegType>
    <RegValue>520-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>268</RegID>
    <RegType>3</RegType>
    <RegValue>610-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>305</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
  <Registry>
    <RegID>301</RegID>
    <RegType>3</RegType>
    <RegValue>610-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>370</RegID>
    <RegType>3</RegType>
    <RegValue>490-0000</RegValue>
  </Registry>
</NewDataSet>�n<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Registry">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="RegID" type="xs:int" minOccurs="0" />
                <xs:element name="RegType" type="xs:short" minOccurs="0" />
                <xs:element name="RegValue" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <Desc2 />
    <AccType>OA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TOURS DEBTORS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>REFUND ACCOUNT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS</Description>
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>HIRE PURCHASE CREDITOR</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>SALES</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>401-0000</AccNo>
    <Description>TOUR CREDITORS</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>TOUR PAYABLE</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>612-0000</AccNo>
    <Description>PURCHASES RETURN</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>450-0000</AccNo>
    <Description>AMOUNT OF OWING TO DIRECTORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>PRELIMINARY EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>PRE-TRADING EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>SALES &amp; PROMOTION EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>OFFICE &amp; ADMIN EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>TAXATION</Description>
    <AccType>TX</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>SALES TAX</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>540-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>440-0000</AccNo>
    <Description>DEPOSIT RECEIVED</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>301-0000</AccNo>
    <Description>AGENT DEBTORS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>460-0000</AccNo>
    <Description>EXCHANGE OF CHEQUES</Description>
    <AccType>CL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>120-0000</AccNo>
    <Description>SHARE APPLICATION MONIES A/C</Description>
    <AccType>OL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0010</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>TOUR RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0020</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>TOUR &amp; AIR TICKETS RECEIVED - AGENT</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0030</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>AIR TICKETS &amp; OTHERS RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0040</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>HOTEL RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0050</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>OTHERS RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0010</AccNo>
    <ParentAccNo>610-0000</ParentAccNo>
    <Description>AIR TICKETS PAYABLE</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0020</AccNo>
    <ParentAccNo>610-0000</ParentAccNo>
    <Description>TRANSFER CHARGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0030</AccNo>
    <ParentAccNo>610-0000</ParentAccNo>
    <Description>VISA CHARGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>TOUR &amp; TICKETS PAYABLE - AGENT</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>630-0000</AccNo>
    <Description>AIR TICKETS &amp; OTHERS PAYABLE - AGENT</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>640-0000</AccNo>
    <Description>HOTEL PAYABLE</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0000</AccNo>
    <Description>TOUR EXPENSES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0010</AccNo>
    <ParentAccNo>650-0000</ParentAccNo>
    <Description>VIDEO TAPES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0020</AccNo>
    <ParentAccNo>650-0000</ParentAccNo>
    <Description>FILM DISTRIBUTIONS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0030</AccNo>
    <ParentAccNo>650-0000</ParentAccNo>
    <Description>PERMIT FEES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0040</AccNo>
    <ParentAccNo>650-0000</ParentAccNo>
    <Description>TRAVEL BAGS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>550-0000</AccNo>
    <Description>LUGGAGE PAYABLE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0010</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0020</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>TOUR COMMISSION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0030</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>TOUR FORM &amp; CARDS EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0010</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0020</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>DIRECTOR'S REMUNERATION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0030</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>TELEPHONE &amp; FAX CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0040</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>EPF</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0050</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>SOCSO</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0060</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>RENT OF PREMISES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0070</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>TRAVELLING EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0080</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>940-0090</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>BANK CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>940-0100</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>940-0110</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>RM</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <Registry>
    <RegID>264</RegID>
    <RegType>3</RegType>
    <RegValue>500-0020</RegValue>
  </Registry>
  <Registry>
    <RegID>304</RegID>
    <RegType>3</RegType>
    <RegValue>510-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>265</RegID>
    <RegType>3</RegType>
    <RegValue>500-0020</RegValue>
  </Registry>
  <Registry>
    <RegID>296</RegID>
    <RegType>3</RegType>
    <RegValue>520-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>268</RegID>
    <RegType>3</RegType>
    <RegValue>620-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>305</RegID>
    <RegType>3</RegType>
    <RegValue>612-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>301</RegID>
    <RegType>3</RegType>
    <RegValue>610-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>370</RegID>
    <RegType>3</RegType>
    <RegValue>490-0000</RegValue>
  </Registry>
  <Registry>
    <RegID>369</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
  <Registry>
    <RegID>371</RegID>
    <RegType>3</RegType>
    <RegValue />
  </Registry>
</NewDataSet>�x<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
                <xs:element name="SGeFilingDataID" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
    <SGeFilingDataID>shareCapital</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>accumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>reservesOtherThanAccumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>propertyPlantAndEquipment</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>CONTAINER OFFICE</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. CONTAINER OFFICE</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-6000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MACHINERY</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-6005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. MACHINERY</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <Desc2 />
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>goodwill</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TRADE DEBTORS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradeReceivables(ExcludingContractAssets)DueFromThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherReceivables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>WORK IN PROGRESS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>InventoriesOthersCurrent</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherCurrentNonfinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS</Description>
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradePayables(ExcludingContractLiabilities)DueToThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>HIRE PURCHASE CREDITOR</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>GST CONTROL ACCOUNT</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>440-0000</AccNo>
    <Description>DEPOSIT RECEIVED</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>contractLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>450-0000</AccNo>
    <Description>PROGRESS PAYMENT REC. - ADVANCE</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>contractLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>SUB CONTRACT RECEIVED</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromConstructionContractsOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromConstructionContractsOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromConstructionContractsOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>600-0000</AccNo>
    <Description>WORK-IN-PROGRESS (OPENING)</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>601-0000</AccNo>
    <Description>PURCHASES - RAW MATERIALS</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>602-0000</AccNo>
    <Description>PURCHASES RETURN</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>603-0000</AccNo>
    <Description>CARRIAGE INWARDS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>604-0000</AccNo>
    <Description>TENDER DOCUMENT</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>605-0000</AccNo>
    <Description>SUB CONTRACT WAGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>606-0000</AccNo>
    <Description>FUEL &amp; LUBRICANTS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>607-0000</AccNo>
    <Description>CASE &amp; CRANE RENTAL</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>608-0000</AccNo>
    <Description>LOOSE TOOLS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>609-0000</AccNo>
    <Description>UPKEEP OF LORRY</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>UPKEEP OF MACHINERY</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>611-0000</AccNo>
    <Description>UPKEEP OF SITE OFFICE</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>612-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>WORK-IN-PROGRESS (CLOSING)</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>salesAndMarketingExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>BANK CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>bankCharges</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>depreciationExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffRemunerationOtherThanDirectorsRemuneration</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>905-0000</AccNo>
    <Description>CPF CONTRIBUTION</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cpfContribution</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>906-0000</AccNo>
    <Description>SKILL DEVELOPMENT LEVY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>skillsDevelopmentForeignWorkerLevy</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>907-0000</AccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>908-0000</AccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>909-0000</AccNo>
    <Description>TELEPHONE CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>910-0000</AccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>911-0000</AccNo>
    <Description>HIRE PURCHASE INTEREST EXPENSE</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>interestExpOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>912-0000</AccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>913-0000</AccNo>
    <Description>COMMISSION</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>commissionOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>914-0000</AccNo>
    <Description>ASSESSMENT &amp; QUIT RENT</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>915-0000</AccNo>
    <Description>GENERAL EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>916-0000</AccNo>
    <Description>DIRECTORS' REMUNERATION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>directorsRemunerationExcludingDirectorsFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>917-0000</AccNo>
    <Description>INSURANCE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>insuranceExpOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>918-0000</AccNo>
    <Description>LICENSE FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>919-0000</AccNo>
    <Description>MEDICAL FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>medicalExpIncludingMedicalInsurance</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>920-0000</AccNo>
    <Description>AUDIT FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>professionalFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>921-0000</AccNo>
    <Description>SECRETARIAL FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>professionalFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>922-0000</AccNo>
    <Description>UPKEEP OF OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>repairMaintenanceExcludingUpkeepOfPrivateVehiclesAndExpRentalIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>923-0000</AccNo>
    <Description>UPKEEP OF MOTOR VEHICLES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>repairsMaintenanceForPrivateVehicles</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>924-0000</AccNo>
    <Description>NEWSPAPER EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>TAXATION</Description>
    <AccType>TX</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>taxExpenseBenefitContinuingOperations</SGeFilingDataID>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-5000</AssetAccNo>
    <AssetDeprnAccNo>200-5005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-6000</AssetAccNo>
    <AssetDeprnAccNo>200-6005</AssetDeprnAccNo>
  </AssetLink>
  <StockSet>
    <StockSetKey>1</StockSetKey>
    <OpenStock>600-0000</OpenStock>
    <CloseStock>620-0000</CloseStock>
    <BalanceStock>330-0000</BalanceStock>
  </StockSet>
</NewDataSet>��<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
                <xs:element name="SGeFilingDataID" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>shareCapital</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>accumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>reservesOtherThanAccumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>propertyPlantAndEquipment</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>PLANT &amp; MACHINERY</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - PLANT &amp; MACHINERY</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FACTORY EQUIPMENT</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FACTORY EQUIPMENT</Description>
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-6000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-6005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>goodwill</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TRADE DEBTORS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradeReceivables(ExcludingContractAssets)DueFromThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherReceivables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>STOCK</Description>
    <AccType>CA</AccType>
    <SpecialAccType />
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>InventoriesOthersCurrent</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>330-1000</AccNo>
    <ParentAccNo>330-0000</ParentAccNo>
    <Description>STOCK - RAW MATERIALS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-2000</AccNo>
    <ParentAccNo>330-0000</ParentAccNo>
    <Description>STOCK - PACKING MATERIALS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-3000</AccNo>
    <ParentAccNo>330-0000</ParentAccNo>
    <Description>STOCK - WORK-IN-PROGRESS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>330-4000</AccNo>
    <ParentAccNo>330-0000</ParentAccNo>
    <Description>STOCK - FINISHED GOODS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherCurrentNonfinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS</Description>
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradePayables(ExcludingContractLiabilities)DueToThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>HIRE PURCHASE CREDITOR</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>SALES</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>600-0000</AccNo>
    <Description>OPENING STOCKS - FINISHED GOODS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>CLOSING STOCKS - FINISHED GOODS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>640-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>700-0000</AccNo>
    <Description>MANUFACTURING ACCOUNT</Description>
    <AccType>CO</AccType>
    <SpecialAccType />
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1000</AccNo>
    <ParentAccNo>700-0000</ParentAccNo>
    <Description>RAW MATERIALS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1005</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>OPENING STOCKS - RAW MATERIALS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1010</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>PURCHASES - RAW MATERIALS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1015</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>CARRIAGE INWARDS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1020</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>CUSTOM DUTIES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1025</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>CUSTOM SERVICE CHARGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-1090</AccNo>
    <ParentAccNo>700-1000</ParentAccNo>
    <Description>CLOSING STOCKS - RAW MATERIALS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-3000</AccNo>
    <ParentAccNo>700-0000</ParentAccNo>
    <Description>DIRECT LABOUR</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-3005</AccNo>
    <ParentAccNo>700-3000</ParentAccNo>
    <Description>PRODUCTION WAGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-3010</AccNo>
    <ParentAccNo>700-3000</ParentAccNo>
    <Description>E.P.F. CONTRIBUTIONS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-3015</AccNo>
    <ParentAccNo>700-3000</ParentAccNo>
    <Description>SOCSO CONTRIBUTIONS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5000</AccNo>
    <ParentAccNo>700-0000</ParentAccNo>
    <Description>FACTORY OVERHEAD</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5005</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>FACTORY RENTAL</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5010</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>UPKEEP OF FACTORY MACHINERY</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5015</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>UPKEEP OF FACTORY EQUIPMENT</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5020</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>SECURITY CHARGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5025</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>FACTORY GENERAL REQUISITE</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5030</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>DEPRECIATION OF PLANT &amp; MACHINERY</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-5035</AccNo>
    <ParentAccNo>700-5000</ParentAccNo>
    <Description>DEPRECIATION OF FACTORY &amp; EQUIPMENT</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-7000</AccNo>
    <ParentAccNo>700-0000</ParentAccNo>
    <Description>PACKING MATERIALS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-7005</AccNo>
    <ParentAccNo>700-7000</ParentAccNo>
    <Description>OPENING STOCKS - PACKING MATERIALS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-7015</AccNo>
    <ParentAccNo>700-7000</ParentAccNo>
    <Description>CLOSING STOCKS - PACKING MATERIALS</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-9000</AccNo>
    <ParentAccNo>700-0000</ParentAccNo>
    <Description>WORK IN PROGRESS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-9005</AccNo>
    <ParentAccNo>700-9000</ParentAccNo>
    <Description>WORK IN PROGRESS - OPENING</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>700-9010</AccNo>
    <ParentAccNo>700-9000</ParentAccNo>
    <Description>WORK IN PROGRESS - CLOSING</Description>
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0000</AccNo>
    <Description>ADMINISTRATIVE, SELLING &amp; GENERAL EXPS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0005</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>salesAndMarketingExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0010</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>AUDIT FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>professionalFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0015</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>BONUS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffRemunerationOtherThanDirectorsRemuneration</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0020</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>BANK INTEREST &amp; CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>interestExpOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0025</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>DIRECTOR REMUNERATION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>directorsRemunerationExcludingDirectorsFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0035</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>depreciationExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0040</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>ENTERTAINMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>c1_EntertainExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0045</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>CPF CONTRIBUTION</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cpfContribution</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0050</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>GENERAL EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0055</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>HIRE PURCHASE INTEREST</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>interestExpOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0060</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>LICENSE FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0065</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>MEDICAL FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>medicalExpIncludingMedicalInsurance</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0070</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>OFFICE RENTAL</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>rentExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0075</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>OFFICE REFRESHMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffWelfare</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0080</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0085</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0090</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>ROAD TAX &amp; INSURANCE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>upkeepPrivateVehicles</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-0095</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>SKILL DEVELOPMENT LEVY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>skillsDevelopmentForeignWorkerLevy</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1000</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>SECRETARIAL FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>professionalFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1005</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>STAFF SALARIES &amp; ALLOWANCES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffRemunerationOtherThanDirectorsRemuneration</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1010</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>TRAVELLING EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>c1_TransportExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1015</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>TELEPHONE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1020</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>UPKEEP OF MOTOR VEHICLES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>repairsMaintenanceForPrivateVehicles</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1025</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>900-1030</AccNo>
    <ParentAccNo>900-0000</ParentAccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-5000</AssetAccNo>
    <AssetDeprnAccNo>200-5005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-6000</AssetAccNo>
    <AssetDeprnAccNo>200-6005</AssetDeprnAccNo>
  </AssetLink>
  <StockSet>
    <StockSetKey>1</StockSetKey>
    <OpenStock>600-0000</OpenStock>
    <CloseStock>620-0000</CloseStock>
    <BalanceStock>330-4000</BalanceStock>
  </StockSet>
  <StockSet>
    <StockSetKey>2</StockSetKey>
    <OpenStock>700-1005</OpenStock>
    <CloseStock>700-1090</CloseStock>
    <BalanceStock>330-1000</BalanceStock>
  </StockSet>
  <StockSet>
    <StockSetKey>3</StockSetKey>
    <OpenStock>700-7005</OpenStock>
    <CloseStock>700-7015</CloseStock>
    <BalanceStock>330-2000</BalanceStock>
  </StockSet>
  <StockSet>
    <StockSetKey>4</StockSetKey>
    <OpenStock>700-9005</OpenStock>
    <CloseStock>700-9010</CloseStock>
    <BalanceStock>330-3000</BalanceStock>
  </StockSet>
</NewDataSet>+p<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
                <xs:element name="SGeFilingDataID" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>PARTNER'S CAPITAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
    <SGeFilingDataID>shareCapital</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>101-0000</AccNo>
    <ParentAccNo>100-0000</ParentAccNo>
    <Description>ABC</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>101-0001</AccNo>
    <ParentAccNo>101-0000</ParentAccNo>
    <Description>PARTNER'S CAPITAL</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>101-0002</AccNo>
    <ParentAccNo>101-0000</ParentAccNo>
    <Description>PARTNER'S CURRENT A/C - B/F</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>101-0003</AccNo>
    <ParentAccNo>101-0000</ParentAccNo>
    <Description>SHARE OF PROFIT (%)</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>101-0004</AccNo>
    <ParentAccNo>101-0000</ParentAccNo>
    <Description>PARTNER'S DRAWING</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>102-0000</AccNo>
    <ParentAccNo>100-0000</ParentAccNo>
    <Description>DEF</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>102-0001</AccNo>
    <ParentAccNo>102-0000</ParentAccNo>
    <Description>PARTNER'S CAPITAL</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>102-0002</AccNo>
    <ParentAccNo>102-0000</ParentAccNo>
    <Description>PARTNER'S CURRENT A/C - B/F</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>102-0003</AccNo>
    <ParentAccNo>102-0000</ParentAccNo>
    <Description>SHARE OF PROFIT (%)</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>102-0004</AccNo>
    <ParentAccNo>102-0000</ParentAccNo>
    <Description>PARTNER'S DRAWING</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>103-0000</AccNo>
    <ParentAccNo>100-0000</ParentAccNo>
    <Description>GHI</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>103-0001</AccNo>
    <ParentAccNo>103-0000</ParentAccNo>
    <Description>PARTNER'S CAPITAL</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>103-0002</AccNo>
    <ParentAccNo>103-0000</ParentAccNo>
    <Description>PARTNER'S CURRENT A/C - B/F</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>103-0003</AccNo>
    <ParentAccNo>103-0000</ParentAccNo>
    <Description>SHARE OF PROFIT (%)</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>103-0004</AccNo>
    <ParentAccNo>103-0000</ParentAccNo>
    <Description>PARTNER'S DRAWING</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>accumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>reservesOtherThanAccumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>propertyPlantAndEquipment</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <Desc2 />
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>goodwill</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TRADE DEBTORS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradeReceivables(ExcludingContractAssets)DueFromThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherReceivables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>STOCK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>InventoriesOthersCurrent</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherCurrentNonfinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS</Description>
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradePayables(ExcludingContractLiabilities)DueToThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>HIRE PURCHASE CREDITOR</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>GST CONTROL ACCOUNT</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>440-0000</AccNo>
    <Description>DEPOSIT RECEIVED</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>contractLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>SALES</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-1000</AccNo>
    <Description>CASH SALES</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>600-0000</AccNo>
    <Description>STOCKS AT THE BEGINNING OF YEAR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>PURCHASES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>611-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>612-0000</AccNo>
    <Description>PURCHASES RETURN</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>615-0000</AccNo>
    <Description>CARRIAGE INWARDS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>STOCKS AT THE END OF YEAR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>salesAndMarketingExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>BANK CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>bankCharges</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>COMMISSION</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>commissionOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>depreciationExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>905-0000</AccNo>
    <Description>GENERAL EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>906-0000</AccNo>
    <Description>HIRE PURCHASE INTEREST EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>interestExpOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>907-0000</AccNo>
    <Description>INTEREST ON CAPITAL</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>interestExpOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>908-0000</AccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>909-0000</AccNo>
    <Description>OFFICE RENTAL</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>rentExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>910-0000</AccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>911-0000</AccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>912-0000</AccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffRemunerationOtherThanDirectorsRemuneration</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>913-0000</AccNo>
    <Description>TELEPHONE CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>914-0000</AccNo>
    <Description>TRAVELLING EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>c1_TransportExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>915-0000</AccNo>
    <Description>UPKEEP OF MOTOR VEHICLE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>repairsMaintenanceForPrivateVehicles</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>916-0000</AccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>TAXATION</Description>
    <AccType>TX</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>taxExpenseBenefitContinuingOperations</SGeFilingDataID>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <StockSet>
    <StockSetKey>1</StockSetKey>
    <OpenStock>600-0000</OpenStock>
    <CloseStock>620-0000</CloseStock>
    <BalanceStock>330-0000</BalanceStock>
  </StockSet>
</NewDataSet>5`<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
                <xs:element name="SGeFilingDataID" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
    <SGeFilingDataID>shareCapital</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>accumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>reservesOtherThanAccumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>propertyPlantAndEquipment</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <Desc2 />
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>goodwill</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TRADE DEBTORS</Description>
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradeReceivables(ExcludingContractAssets)DueFromThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherReceivables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>STOCK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>InventoriesOthersCurrent</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherCurrentNonfinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS</Description>
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradePayables(ExcludingContractLiabilities)DueToThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>HIRE PURCHASE CREDITOR</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>GST CONTROL ACCOUNT</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>440-0000</AccNo>
    <Description>DEPOSIT RECEIVED</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>contractLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>SALES</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-1000</AccNo>
    <Description>CASH SALES</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>600-0000</AccNo>
    <Description>STOCKS AT THE BEGINNING OF YEAR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>PURCHASES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>611-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>612-0000</AccNo>
    <Description>PURCHASES RETURN</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>615-0000</AccNo>
    <Description>CARRIAGE INWARDS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>STOCKS AT THE END OF YEAR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>salesAndMarketingExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>BANK CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>bankCharges</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>depreciationExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffRemunerationOtherThanDirectorsRemuneration</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>905-0000</AccNo>
    <Description>TRAVELLING EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>c1_TransportExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>906-0000</AccNo>
    <Description>UPKEEP OF MOTOR VEHICLE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>repairsMaintenanceForPrivateVehicles</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>907-0000</AccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>908-0000</AccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>909-0000</AccNo>
    <Description>TELEPHONE CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>910-0000</AccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>911-0000</AccNo>
    <Description>INTEREST EXPENSE</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>interestExpOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>912-0000</AccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>913-0000</AccNo>
    <Description>COMMISSION</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>commissionOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>914-0000</AccNo>
    <Description>OFFICE RENTAL</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>rentExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>915-0000</AccNo>
    <Description>GENERAL EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>TAXATION</Description>
    <AccType>TX</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>taxExpenseBenefitContinuingOperations</SGeFilingDataID>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <StockSet>
    <StockSetKey>1</StockSetKey>
    <OpenStock>600-0000</OpenStock>
    <CloseStock>620-0000</CloseStock>
    <BalanceStock>330-0000</BalanceStock>
  </StockSet>
</NewDataSet>�_<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
                <xs:element name="SGeFilingDataID" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>REVENUE</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF TUITION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
    <SGeFilingDataID>shareCapital</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>accumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>reservesOtherThanAccumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>propertyPlantAndEquipment</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>COMPUTER SYSTEMS (LEASED)</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. COMPUTER SYSTEMS (LEASED)</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <Desc2 />
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>goodwill</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TUITION DEBTORS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradeReceivables(ExcludingContractAssets)DueFromThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>301-0000</AccNo>
    <Description>TRAINING DEBTORS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradeReceivables(ExcludingContractAssets)DueFromThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherReceivables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherCurrentNonfinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>LEASED CREDITORS</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>LEASED INTEREST SUSPENSE</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>DEPOSIT RECEIVED</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>contractLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>FEES RECEIVED</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0100</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>TRAINING FEES RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0200</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>TUITION FEES RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0300</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>COURSE FEES RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0400</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>REGISTRATION FEES RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0500</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>OTHER FEES RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>TUITION FEES PAYABLE</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>salesAndMarketingExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>BANK CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>bankCharges</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>depreciationExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffRemunerationOtherThanDirectorsRemuneration</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>905-0000</AccNo>
    <Description>CPF CONTRIBUTION</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cpfContribution</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>906-0000</AccNo>
    <Description>SKILL DEVELOPMENT LEVY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>skillsDevelopmentForeignWorkerLevy</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>907-0000</AccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>908-0000</AccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>909-0000</AccNo>
    <Description>TELEPHONE CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>910-0000</AccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>911-0000</AccNo>
    <Description>PHOTOSTATING CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>912-0000</AccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>913-0000</AccNo>
    <Description>NEWSPAPER &amp; PERIODICALS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>914-0000</AccNo>
    <Description>OFFICE RENTAL</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>rentExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>915-0000</AccNo>
    <Description>MEDICAL FEES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>medicalExpIncludingMedicalInsurance</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>916-0000</AccNo>
    <Description>TRAINING EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>training</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>TAXATION</Description>
    <AccType>TX</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>taxExpenseBenefitContinuingOperations</SGeFilingDataID>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-5000</AssetAccNo>
    <AssetDeprnAccNo>200-5005</AssetDeprnAccNo>
  </AssetLink>
</NewDataSet>u<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
                <xs:element name="SGeFilingDataID" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <Desc2 />
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>F</CashFlowCategory>
    <SGeFilingDataID>shareCapital</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>150-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>accumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>151-0000</AccNo>
    <Description>RESERVES</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>reservesOtherThanAccumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType />
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>propertyPlantAndEquipment</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. - MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>GOODWILL</Description>
    <Desc2 />
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>goodwill</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>TOURS DEBTORS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradeReceivables(ExcludingContractAssets)DueFromThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>301-0000</AccNo>
    <Description>AGENT DEBTORS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradeReceivables(ExcludingContractAssets)DueFromThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>OTHER DEBTORS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherReceivables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>CASH AT BANK</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>310-1000</AccNo>
    <ParentAccNo>310-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>DEPOSIT &amp; PREPAYMENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherCurrentNonfinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS</Description>
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradePayables(ExcludingContractLiabilities)DueToThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>401-0000</AccNo>
    <Description>TOUR CREDITORS</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradePayables(ExcludingContractLiabilities)DueToThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>OTHER CREDITORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>ACCRUALS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>HIRE PURCHASE CREDITOR</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>420-1000</AccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>I</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>GST CONTROL ACCOUNT</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>440-0000</AccNo>
    <Description>DEPOSIT RECEIVED</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>contractLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>450-0000</AccNo>
    <Description>AMOUNT OF OWING TO DIRECTORS</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>460-0000</AccNo>
    <Description>EXCHANGE OF CHEQUES</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>TEMPORARY ACCOUNT FOR CONTRA</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>SALES</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0010</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>TOUR RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0020</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>TOUR &amp; AIR TICKETS RECEIVED - AGENT</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0030</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>AIR TICKETS &amp; OTHERS RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0040</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>HOTEL RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0050</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>OTHERS RECEIVED</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>530-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>550-0000</AccNo>
    <Description>LUGGAGE PAYABLE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>sgOtherI</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>TOUR PAYABLE</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0010</AccNo>
    <ParentAccNo>610-0000</ParentAccNo>
    <Description>AIR TICKETS PAYABLE</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0020</AccNo>
    <ParentAccNo>610-0000</ParentAccNo>
    <Description>TRANSFER CHARGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0030</AccNo>
    <ParentAccNo>610-0000</ParentAccNo>
    <Description>VISA CHARGES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>611-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>612-0000</AccNo>
    <Description>PURCHASES RETURN</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>TOUR &amp; TICKETS PAYABLE - AGENT</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>630-0000</AccNo>
    <Description>AIR TICKETS &amp; OTHERS PAYABLE - AGENT</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>640-0000</AccNo>
    <Description>HOTEL PAYABLE</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0000</AccNo>
    <Description>TOUR EXPENSES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0010</AccNo>
    <ParentAccNo>650-0000</ParentAccNo>
    <Description>VIDEO TAPES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0020</AccNo>
    <ParentAccNo>650-0000</ParentAccNo>
    <Description>FILM DISTRIBUTIONS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0030</AccNo>
    <ParentAccNo>650-0000</ParentAccNo>
    <Description>PERMIT FEES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0040</AccNo>
    <ParentAccNo>650-0000</ParentAccNo>
    <Description>TRAVEL BAGS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>PRELIMINARY EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>PRE-TRADING EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>SALES &amp; PROMOTION EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0010</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>salesAndMarketingExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0020</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>TOUR COMMISSION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>commissionOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0030</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>TOUR FORM &amp; CARDS EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>salesAndMarketingExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>OFFICE &amp; ADMIN EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0010</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffRemunerationOtherThanDirectorsRemuneration</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0020</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>DIRECTOR'S REMUNERATION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>directorsRemunerationExcludingDirectorsFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0030</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>TELEPHONE &amp; FAX CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0040</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>CPF CONTRIBUTION</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cpfContribution</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0050</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>SKILL DEVELOPMENT LEVY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>skillsDevelopmentForeignWorkerLevy</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0060</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>RENT OF PREMISES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>rentExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0070</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>TRAVELLING EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>c1_TransportExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0080</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>depreciationExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>940-0090</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>BANK CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>bankCharges</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>940-0100</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>940-0110</AccNo>
    <ParentAccNo>904-0000</ParentAccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>TAXATION</Description>
    <AccType>TX</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>taxExpenseBenefitContinuingOperations</SGeFilingDataID>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>320-0000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>0</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>310-1000</BankAccount>
    <BankChargeAccount>902-0000</BankChargeAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>T</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cheque</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
</NewDataSet>S<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AccType">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="IsBSType" type="xs:string" minOccurs="0" />
                <xs:element name="IsSystemType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="GLMAST">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AccNo" type="xs:string" minOccurs="0" />
                <xs:element name="ParentAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="Desc2" type="xs:string" minOccurs="0" />
                <xs:element name="AccType" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" />
                <xs:element name="CashFlowCategory" type="xs:string" minOccurs="0" />
                <xs:element name="SGeFilingDataID" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PaymentMethod">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PaymentMethod" type="xs:string" minOccurs="0" />
                <xs:element name="BankAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargeAccount" type="xs:string" minOccurs="0" />
                <xs:element name="BankChargePercent" type="xs:decimal" minOccurs="0" />
                <xs:element name="MergeBankChargeTrans" type="xs:string" minOccurs="0" />
                <xs:element name="SpecialAccType" type="xs:string" minOccurs="0" />
                <xs:element name="JournalType" type="xs:string" minOccurs="0" />
                <xs:element name="AcceptChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="PaymentBy" type="xs:string" minOccurs="0" />
                <xs:element name="ODLimit" type="xs:decimal" minOccurs="0" />
                <xs:element name="PaymentFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="ReceiptFormatName" type="xs:string" minOccurs="0" />
                <xs:element name="NextChequeNo" type="xs:string" minOccurs="0" />
                <xs:element name="IsActive" type="xs:string" minOccurs="0" />
                <xs:element name="LastUpdate" type="xs:int" minOccurs="0" />
                <xs:element name="PaymentType" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="AssetLink">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="AssetAccNo" type="xs:string" minOccurs="0" />
                <xs:element name="AssetDeprnAccNo" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="StockSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="StockSetKey" type="xs:int" minOccurs="0" />
                <xs:element name="OpenStock" type="xs:string" minOccurs="0" />
                <xs:element name="CloseStock" type="xs:string" minOccurs="0" />
                <xs:element name="BalanceStock" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <AccType>
    <AccType>CP</AccType>
    <Description>CAPITAL</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>RE</AccType>
    <Description>RETAINED EARNING</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>FA</AccType>
    <Description>FIXED ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OA</AccType>
    <Description>OTHER ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CA</AccType>
    <Description>CURRENT ASSETS</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CL</AccType>
    <Description>CURRENT LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>LL</AccType>
    <Description>LONG TERM LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OL</AccType>
    <Description>OTHER LIABILITIES</Description>
    <Desc2 />
    <IsBSType>T</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SL</AccType>
    <Description>SALES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>SA</AccType>
    <Description>SALES ADJUSTMENTS</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>CO</AccType>
    <Description>COST OF GOODS SOLD</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>OI</AccType>
    <Description>OTHER INCOMES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EI</AccType>
    <Description>EXTRA-ORDINARY INCOME</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>EP</AccType>
    <Description>EXPENSES</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>TX</AccType>
    <Description>TAXATION</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <AccType>
    <AccType>AP</AccType>
    <Description>APPROPRIATION A/C</Description>
    <Desc2 />
    <IsBSType>F</IsBSType>
    <IsSystemType>T</IsSystemType>
  </AccType>
  <GLMAST>
    <AccNo>100-0000</AccNo>
    <Description>CAPITAL</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>shareCapital</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>110-0000</AccNo>
    <Description>TREASURY SHARE</Description>
    <AccType>CP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>treasuryShares</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>130-0000</AccNo>
    <Description>RETAINED EARNING</Description>
    <AccType>RE</AccType>
    <SpecialAccType>SRE</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>accumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>140-0000</AccNo>
    <Description>RESERVES</Description>
    <AccType>RE</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>reservesOtherThanAccumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>145-0000</AccNo>
    <Description>LESS: DIVIDEND DECLARED</Description>
    <Desc2 />
    <AccType>RE</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>accumulatedProfitsLosses</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-0000</AccNo>
    <Description>PROPERTY, PLANT AND EQUIPMENT, NON-CURRENT</Description>
    <AccType>FA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>propertyPlantAndEquipment</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>200-1000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-1005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. FURNITURES &amp; FITTINGS</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-2005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. OFFICE EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-3005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. MOTOR VEHICLES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>PLANT &amp; MACHINERY</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-4005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. PLANT &amp; MACHINERY</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5000</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>COMPUTER AND COMMUNICATION EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>200-5005</AccNo>
    <ParentAccNo>200-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. COMPUTER AND COMMUNICATION EQUIPMENT</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>201-0000</AccNo>
    <Description>INVESTMENT PROPERTIES, NON-CURRENT</Description>
    <AccType>FA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>investmentProperties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>201-1000</AccNo>
    <ParentAccNo>201-0000</ParentAccNo>
    <Description>INVESTMENT PROPERTIES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SFA</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>201-1005</AccNo>
    <ParentAccNo>201-0000</ParentAccNo>
    <Description>ACCUM. DEPRN. INVESTMENT PROPERTIES</Description>
    <Desc2 />
    <AccType>FA</AccType>
    <SpecialAccType>SAD</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>210-0000</AccNo>
    <Description>INVESTMENTS IN SUBSIDIARIES, JOINT VENTURES AND ASSOCIATES, NON-CURRENT</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>investmentsInSubsidiariesAssociatesOrJointVentures</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>221-0000</AccNo>
    <Description>FINANCIAL ASSETS - LEASE RECEIVABLES, NON-CURRENT</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>noncurrentFinanceLeaseReceivables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>222-0000</AccNo>
    <Description>FINANCIAL ASSETS - DERIVATIVES, NON-CURRENT</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>noncurrentDerivativeFinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>223-0000</AccNo>
    <Description>FINANCIAL ASSETS - AT FAIR VALUE THROUGH PROFIT OR LOSS, NON-CURRENT</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>noncurrentFinancialAssetsMeasuredAtFairValueThroughProfitOrLoss</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>224-0000</AccNo>
    <Description>OTHER FINANCIAL ASSETS, NON-CURRENT</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherNoncurrentFinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>225-0000</AccNo>
    <Description>OTHER NON-FINANCIAL ASSETS, NON-CURRENT</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherNoncurrentNonfinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>230-0000</AccNo>
    <Description>CONTRACT ASSETS, NON-CURRENT</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>contractAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>380-0000</AccNo>
    <Description>NON-CURRENT ASSETS OR DISPOSAL GROUPS CLASSIFIED AS HELD FOR SALE OR AS DISTRIBUTION TO OWNERS</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>noncurrentAssetsOrDisposalGroupsClassifiedAsHeldForSaleOrAsHeldForDistributionToOwners</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>240-0000</AccNo>
    <Description>DEFERRED TAX ASSETS, NON-CURRENT</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>deferredTaxAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>250-0000</AccNo>
    <Description>GOODWILL, NON-CURRENT</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>goodwill</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>260-0000</AccNo>
    <Description>INTANGIBLE ASSET (EXCLUDING GOODWILL), NON-CURRENT</Description>
    <AccType>OA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>intangibleAssetsOtherThanGoodwill</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>300-0000</AccNo>
    <Description>CASH AND BANK BALANCES, CURRENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cashAndBankBalances</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>300-1000</AccNo>
    <ParentAccNo>300-0000</ParentAccNo>
    <Description>CASH AT BANK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBK</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>300-8000</AccNo>
    <ParentAccNo>300-0000</ParentAccNo>
    <Description>CASH IN HAND</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SCH</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>305-0000</AccNo>
    <Description>TRADE DEBTORS (THIRD PARTIES)</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradeReceivables(ExcludingContractAssets)DueFromThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>306-0000</AccNo>
    <Description>TRADE DEBTORS (RELATED PARTIES)</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradeReceivables(ExcludingContractAssets)DueFromRelatedParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>307-0000</AccNo>
    <Description>CONTRACT ASSETS, CURRENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>contractAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>308-0000</AccNo>
    <Description>NON-TRADE RECEIVABLES</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherReceivables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>308-1000</AccNo>
    <ParentAccNo>308-0000</ParentAccNo>
    <Description>OTHER DEBTORS</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SDC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>308-5000</AccNo>
    <ParentAccNo>308-0000</ParentAccNo>
    <Description>DEPOSIT, CURRENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>310-0000</AccNo>
    <Description>FINANCIAL ASSETS - LEASE RECEIVABLES, CURRENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseReceivables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>320-0000</AccNo>
    <Description>FINANCIAL ASSETS - DERIVATIVES, CURRENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>currentDerivativeFinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>330-0000</AccNo>
    <Description>FINANCIAL ASSETS - AT FAIR VALUE THROUGH PROFIT OR LOSS, CURRENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>currentFinancialAssetsMeasuredAtFairValueThroughProfitOrLoss</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>340-0000</AccNo>
    <Description>OTHER FINANCIAL ASSETS, CURRENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherCurrentFinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>350-0000</AccNo>
    <Description>INVENTORIES - DEVELOPMENT PROPERTIES, CURRENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>developmentProperties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>360-0000</AccNo>
    <Description>INVENTORIES - OTHERS, CURRENT</Description>
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>InventoriesOthersCurrent</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>360-1000</AccNo>
    <ParentAccNo>360-0000</ParentAccNo>
    <Description>STOCK</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <SpecialAccType>SBS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>370-0000</AccNo>
    <Description>OTHER NON-FINANCIAL ASSETS, CURRENT</Description>
    <Desc2 />
    <AccType>CA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherCurrentNonfinancialAssets</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>400-0000</AccNo>
    <Description>TRADE CREDITORS (THIRD PARTIES)</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradePayables(ExcludingContractLiabilities)DueToThirdParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>401-0000</AccNo>
    <Description>TRADE CREDITORS (RELATED PARTIES)</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>tradePayables(ExcludingContractLiabilities)DueToRelatedParties</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>402-0000</AccNo>
    <Description>CONTRACT LIABILITIES, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>contractLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>402-1000</AccNo>
    <ParentAccNo>402-0000</ParentAccNo>
    <Description>DEPOSIT RECEIVED, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>402-2000</AccNo>
    <ParentAccNo>402-0000</ParentAccNo>
    <Description>DEFERRED REVENUE, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>405-0000</AccNo>
    <Description>NON-TRADE PAYABLES, CURRENT</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>405-1000</AccNo>
    <ParentAccNo>405-0000</ParentAccNo>
    <Description>OTHER CREDITORS</Description>
    <Desc2 />
    <AccType>CL</AccType>
    <SpecialAccType>SCC</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>405-5000</AccNo>
    <ParentAccNo>405-0000</ParentAccNo>
    <Description>ACCRUALS, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>405-6000</AccNo>
    <ParentAccNo>405-0000</ParentAccNo>
    <Description>GST CONTROL ACCOUNT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>410-0000</AccNo>
    <Description>LOANS AND BORROWINGS, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>currentLoansAndBorrowings</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>410-1000</AccNo>
    <ParentAccNo>410-0000</ParentAccNo>
    <Description>TERM LOAN, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>420-0000</AccNo>
    <Description>FINANCIAL LIABILITIES - DERIVATIVE AND AT FAIR VALUE THROUGH PROFIT OR LOSS, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>currentFinancialLiabilitiesDerivativesandMeasuredAtFairValueThroughProfitOrLoss</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>430-0000</AccNo>
    <Description>FINANCIAL LIABILITIES - LEASE LIABILITIES, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>currentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>430-1000</AccNo>
    <ParentAccNo>430-0000</ParentAccNo>
    <Description>HIRE PURCHASE CREDITOR, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>430-2000</AccNo>
    <ParentAccNo>430-0000</ParentAccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>440-0000</AccNo>
    <Description>OTHER FINANCIAL LIABILITIES, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherCurrentFinancialLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>450-0000</AccNo>
    <Description>INCOME TAX LIABILITIES</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>currentIncomeTaxLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>450-1000</AccNo>
    <ParentAccNo>450-0000</ParentAccNo>
    <Description>PROVISION FOR TAXATION</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>460-0000</AccNo>
    <Description>PROVISIONS (EXCLUDING INCOME TAX LIABILITIES), CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>currentProvisions</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>460-1000</AccNo>
    <ParentAccNo>460-0000</ParentAccNo>
    <Description>PROVISION FOR DIVIDEND</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>470-0000</AccNo>
    <Description>OTHER NON-FINANCIAL LIABILITIES, CURRENT</Description>
    <AccType>CL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherCurrentNonfinancialLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>480-0000</AccNo>
    <Description>LIABILITIES INCLUDED IN DISPOSAL GROUPS CLASSIFIED AS HELD FOR SALE</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>currentLiabilitiesOtherThanLiabilitiesClassifiedAsHeldForSale</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>490-0000</AccNo>
    <Description>CONTRACT LIABILITIES (INCLUDING DEFERRED INCOME), NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>contractLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>490-1000</AccNo>
    <ParentAccNo>490-0000</ParentAccNo>
    <Description>DEPOSIT RECEIVED, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>490-2000</AccNo>
    <ParentAccNo>490-0000</ParentAccNo>
    <Description>DEFERRED REVENUE, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>491-0000</AccNo>
    <Description>NON-TRADE PAYABLES, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPayables</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>492-0000</AccNo>
    <Description>LOANS AND BORROWINGS, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>noncurrentLoansAndBorrowings</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>492-1000</AccNo>
    <ParentAccNo>492-0000</ParentAccNo>
    <Description>TERM LOAN, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>493-0000</AccNo>
    <Description>FINANCIAL LIABILITIES - DERIVATIVES AND AT FAIR VALUE THROUGH PROFIT OR LOSS, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>noncurrentFinancialLiabilitiesDerivativesandMeasuredAtFairValueThroughProfitOrLoss</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>494-0000</AccNo>
    <Description>FINANCIAL LIABILITIES - LEASE LIABILITIES, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>noncurrentFinanceLeaseLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>494-1000</AccNo>
    <ParentAccNo>494-0000</ParentAccNo>
    <Description>HIRE PURCHASE CREDITOR, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>494-2000</AccNo>
    <ParentAccNo>494-0000</ParentAccNo>
    <Description>HIRE PURCHASE INTEREST SUSPENSE, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>495-0000</AccNo>
    <Description>OTHER FINANCIAL LIABILITIES, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherNoncurrentFinancialLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>496-0000</AccNo>
    <Description>DEFERRED TAX LIABILITIES, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>deferredTaxLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>497-0000</AccNo>
    <Description>PROVISIONS (INCLUDING NON-CURRENT INCOME TAX LIABILITIES), NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>noncurrentProvisions</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>498-0000</AccNo>
    <Description>OTHER NON-FINANCIAL LIABILITIES, NON-CURRENT</Description>
    <AccType>LL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherNoncurrentNonfinancialLiabilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-0000</AccNo>
    <Description>REVENUE</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>500-1000</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>REVENUE RECOGNISED AT A POINT TIME - PROPERTIES</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromPropertyTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-2000</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>REVENUE RECOGNISED AT A POINT TIME - GOODS</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-3000</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>REVENUE RECOGNISED AT A POINT TIME - SERVICES</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>500-9000</AccNo>
    <ParentAccNo>500-0000</ParentAccNo>
    <Description>REVENUE - OTHERS</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueOthers</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>501-0000</AccNo>
    <Description>CASH SALES</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>501-1000</AccNo>
    <ParentAccNo>501-0000</ParentAccNo>
    <Description>CASH SALES RECOGNISED AT A POINT TIME - PROPERTIES</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromPropertyTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>501-2000</AccNo>
    <ParentAccNo>501-0000</ParentAccNo>
    <Description>CASH SALES RECOGNISED AT A POINT TIME - GOODS</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>501-3000</AccNo>
    <ParentAccNo>501-0000</ParentAccNo>
    <Description>CASH SALES RECOGNISED AT A POINT TIME - SERVICES</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>505-0000</AccNo>
    <Description>REVENUE RECOGNISED OVER TIME</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>505-1000</AccNo>
    <ParentAccNo>505-0000</ParentAccNo>
    <Description>REVENUE RECOGNISED OVER TIME - PROPERTIES</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromPropertyTransferredOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>505-2000</AccNo>
    <ParentAccNo>505-0000</ParentAccNo>
    <Description>REVENUE RECOGNISED OVER TIME - CONSTRUCTION CONTRACTS</Description>
    <Desc2 />
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromConstructionContractsOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>505-3000</AccNo>
    <ParentAccNo>505-0000</ParentAccNo>
    <Description>REVENUE RECOGNISED OVER TIME - SERVICES</Description>
    <AccType>SL</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>510-0000</AccNo>
    <Description>RETURN INWARDS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>510-1000</AccNo>
    <ParentAccNo>510-0000</ParentAccNo>
    <Description>RETURN INWARDS AT A POINT TIME - PROPERTIES</Description>
    <Desc2 />
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromPropertyTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>510-2000</AccNo>
    <ParentAccNo>510-0000</ParentAccNo>
    <Description>RETURN INWARDS AT A POINT TIME - GOODS</Description>
    <Desc2 />
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>510-3000</AccNo>
    <ParentAccNo>510-0000</ParentAccNo>
    <Description>RETURN INWARDS AT A POINT TIME - SERVICES</Description>
    <Desc2 />
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>510-9000</AccNo>
    <ParentAccNo>510-0000</ParentAccNo>
    <Description>RETURN INWARDS - OTHERS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueOthers</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>520-0000</AccNo>
    <Description>DISCOUNT ALLOWED</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>520-1000</AccNo>
    <ParentAccNo>520-0000</ParentAccNo>
    <Description>DISCOUNT ALLOWED AT A POINT TIME - PROPERTIES</Description>
    <Desc2 />
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromPropertyTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>520-2000</AccNo>
    <ParentAccNo>520-0000</ParentAccNo>
    <Description>DISCOUNT ALLOWED AT A POINT TIME - GOODS</Description>
    <Desc2 />
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromGoodsTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>520-3000</AccNo>
    <ParentAccNo>520-0000</ParentAccNo>
    <Description>DISCOUNT ALLOWED AT A POINT TIME - SERVICES</Description>
    <Desc2 />
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredAtPointInTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>520-9000</AccNo>
    <ParentAccNo>520-0000</ParentAccNo>
    <Description>DISCOUNT ALLOWED - OTHERS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueOthers</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>545-0000</AccNo>
    <Description>RETURN INWARDS RECOGNISED OVER TIME</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>545-1000</AccNo>
    <ParentAccNo>545-0000</ParentAccNo>
    <Description>RETURN INWARDS RECOGNISED OVER TIME - PROPERTIES</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromPropertyTransferredOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>545-2000</AccNo>
    <ParentAccNo>545-0000</ParentAccNo>
    <Description>RETURN INWARDS RECOGNISED OVER TIME - CONSTRUCTION CONTRACTS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromConstructionContractsOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>545-3000</AccNo>
    <ParentAccNo>545-0000</ParentAccNo>
    <Description>RETURN INWARDS RECOGNISED OVER TIME - SERVICES</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>546-0000</AccNo>
    <Description>DISCOUNT ALLOWED RECOGNISED OVER TIME</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>546-1000</AccNo>
    <ParentAccNo>546-0000</ParentAccNo>
    <Description>DISCOUNT ALLOWED RECOGNISED OVER TIME - PROPERTIES</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromPropertyTransferredOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>546-2000</AccNo>
    <ParentAccNo>546-0000</ParentAccNo>
    <Description>DISCOUNT ALLOWED RECOGNISED OVER TIME - CONSTRUCTION CONTRACTS</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromConstructionContractsOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>546-3000</AccNo>
    <ParentAccNo>546-0000</ParentAccNo>
    <Description>DISCOUNT ALLOWED RECOGNISED OVER TIME - SERVICES</Description>
    <AccType>SA</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>revenueFromServicesTransferredOverTime</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>550-0000</AccNo>
    <Description>GAIN ON FOREIGN EXCHANGE</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>551-0000</AccNo>
    <Description>GAIN ON DISPOSAL OF ASSET</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnDisposalOfPPE</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>560-0000</AccNo>
    <Description>INTEREST INCOME</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>sgIntDisc</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>561-0000</AccNo>
    <Description>DIVIDEND INCOME</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>oneTierTaxDividendIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>562-0000</AccNo>
    <Description>RENTAL INCOME</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>c1_GrossRent</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>580-0000</AccNo>
    <Description>OTHER TAXABLE INCOME</Description>
    <Desc2 />
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>sgOtherI</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>581-0000</AccNo>
    <Description>OTHER NON TAXABLE INCOME</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherNonTaxableIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>590-0000</AccNo>
    <Description>SHARE OF PROFIT OF ASSOCIATES BY USING EQUITY METHOD</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>590-1000</AccNo>
    <ParentAccNo>590-0000</ParentAccNo>
    <Description>SHARE OF PROFIT OF JOINT VENTURES BY USING EQUITY METHOD</Description>
    <AccType>OI</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>shareOfProfitLossOfAssociatesAndJointVenturesAccountedForUsingEquityMethod</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>600-0000</AccNo>
    <Description>STOCKS AT THE BEGINNING OF YEAR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SOS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>610-0000</AccNo>
    <Description>PURCHASES</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>615-0000</AccNo>
    <Description>PURCHASES RETURN</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>616-0000</AccNo>
    <Description>CARRIAGE INWARDS</Description>
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>620-0000</AccNo>
    <Description>DISCOUNT RECEIVED</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>650-0000</AccNo>
    <Description>STOCKS AT THE END OF YEAR</Description>
    <Desc2 />
    <AccType>CO</AccType>
    <SpecialAccType>SCS</SpecialAccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>costOfGoodsSold</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>901-0000</AccNo>
    <Description>BANK CHARGES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>bankCharges</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>902-0000</AccNo>
    <Description>DIRECTOR REMUNERATION</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>902-1000</AccNo>
    <ParentAccNo>902-0000</ParentAccNo>
    <Description>DIRECTOR'S FEES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>directorsFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>902-2000</AccNo>
    <ParentAccNo>902-0000</ParentAccNo>
    <Description>DIRECTOR'S SALARIES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>directorsRemunerationExcludingDirectorsFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>902-3000</AccNo>
    <ParentAccNo>902-0000</ParentAccNo>
    <Description>DIRECTOR'S BONUS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>directorsRemunerationExcludingDirectorsFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>902-4000</AccNo>
    <ParentAccNo>902-0000</ParentAccNo>
    <Description>DIRECTOR'S CPF CONTRIBUTION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>directorsRemunerationExcludingDirectorsFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-0000</AccNo>
    <Description>STAFF COSTS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>903-1000</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>SALARIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffRemunerationOtherThanDirectorsRemuneration</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-2000</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>ALLOWANCES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffRemunerationOtherThanDirectorsRemuneration</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-2100</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>COMMISSION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>commissionOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-3000</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>BONUS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffRemunerationOtherThanDirectorsRemuneration</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-4000</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>CPF CONTRIBUTION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>cpfContribution</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-5000</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>SKILLS DEVELOPMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>skillsDevelopmentForeignWorkerLevy</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>903-6000</AccNo>
    <ParentAccNo>903-0000</ParentAccNo>
    <Description>FOREIGN WORKER LEVY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>skillsDevelopmentForeignWorkerLevy</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>904-0000</AccNo>
    <Description>STAFF WELFARE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>staffWelfare</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>905-0000</AccNo>
    <Description>STAFF TRAINING EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>training</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>906-0000</AccNo>
    <Description>MEDICAL</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>medicalExpIncludingMedicalInsurance</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>906-1000</AccNo>
    <ParentAccNo>906-0000</ParentAccNo>
    <Description>MEDICAL EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>906-2000</AccNo>
    <ParentAccNo>906-0000</ParentAccNo>
    <Description>MEDICAL INSURANCE</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>907-0000</AccNo>
    <Description>TRAVELLING EXPENSES FOR BUSINESS PURPOSE</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>c1_TransportExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>907-1000</AccNo>
    <ParentAccNo>907-0000</ParentAccNo>
    <Description>TAXI FARES / PUBLIC TRANSPORT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>907-2000</AccNo>
    <ParentAccNo>907-0000</ParentAccNo>
    <Description>AIR TICKET</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>908-0000</AccNo>
    <Description>MOTOR VEHICLE EXPENSES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>908-1000</AccNo>
    <ParentAccNo>908-0000</ParentAccNo>
    <Description>REPAIRS &amp; MAINTENANCE OF NON-PRIVATE MOTOR VEHICLES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>repairMaintenanceExcludingUpkeepOfPrivateVehiclesAndExpRentalIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>908-2000</AccNo>
    <ParentAccNo>908-0000</ParentAccNo>
    <Description>REPAIRS &amp; MAINTENANCE OF PRIVATE MOTOR VEHICLES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>repairsMaintenanceForPrivateVehicles</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>908-3000</AccNo>
    <ParentAccNo>908-0000</ParentAccNo>
    <Description>UPKEEP OF NON-PRIVATE MOTOR VEHICLES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>upkeepNonPrivateVehicles</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>908-3100</AccNo>
    <ParentAccNo>908-3000</ParentAccNo>
    <Description>PARKING FEE FOR COMMERCIAL VEHICLE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>908-3200</AccNo>
    <ParentAccNo>908-3000</ParentAccNo>
    <Description>PETROL FOR COMMERCIAL VEHICLE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>908-4000</AccNo>
    <ParentAccNo>908-0000</ParentAccNo>
    <Description>UPKEEP OF PRIVATE MOTOR VEHICLES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>upkeepPrivateVehicles</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>908-4300</AccNo>
    <ParentAccNo>908-4000</ParentAccNo>
    <Description>PARKING FEE FOR PRIVATE VEHICLE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>908-4400</AccNo>
    <ParentAccNo>908-4000</ParentAccNo>
    <Description>PETROL FOR PRIVATE VEHICLE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>909-0000</AccNo>
    <Description>UPKEEP OF OFFICE</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>repairMaintenanceExcludingUpkeepOfPrivateVehiclesAndExpRentalIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>910-0000</AccNo>
    <Description>OFFICE INSURANCE</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>insuranceExpOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>910-1000</AccNo>
    <ParentAccNo>910-0000</ParentAccNo>
    <Description>FIRE INSURANCE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>910-2000</AccNo>
    <ParentAccNo>910-0000</ParentAccNo>
    <Description>BURGLARY INSURANCE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>914-0000</AccNo>
    <Description>OFFICE RENTAL</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>rentExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>920-0000</AccNo>
    <Description>WATER &amp; ELECTRICITY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>921-0000</AccNo>
    <Description>TELEPHONE CHARGES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>telecommunicationOrUtilities</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>922-0000</AccNo>
    <Description>PRINTING &amp; STATIONERY</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>923-0000</AccNo>
    <Description>POSTAGES &amp; STAMPS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>924-0000</AccNo>
    <Description>GENERAL EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>925-0000</AccNo>
    <Description>DONATIONS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>donations</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>926-0000</AccNo>
    <Description>ADVERTISEMENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>salesAndMarketingExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>927-0000</AccNo>
    <Description>GIFT TO CUSTOMERS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>salesAndMarketingExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>931-0000</AccNo>
    <Description>ENTERTAINMENT</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>c1_EntertainExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>932-0000</AccNo>
    <Description>IMPAIRMENT LOSS FOR BAD DEBTS</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>impairmentLossReversalOfImpairmentLossForBadDebts</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>933-0000</AccNo>
    <Description>LOSS ON FOREIGN EXCHANGE</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnForex</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>940-0000</AccNo>
    <Description>PROFESSIONAL FEES</Description>
    <Desc2 />
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>professionalFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>941-0000</AccNo>
    <Description>AUDIT FEES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>professionalFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>942-0000</AccNo>
    <Description>SECRETARIAL FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>professionalFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>943-0000</AccNo>
    <Description>TAX AGENT FEE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>professionalFees</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>944-0000</AccNo>
    <Description>PENALTIES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>penaltiesOrFine</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-0000</AccNo>
    <Description>EXPENSES INCURRED TO DERIVE RENTAL INCOME</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>950-1000</AccNo>
    <ParentAccNo>950-0000</ParentAccNo>
    <Description>COMMISSION PAID TO PROPERTY AGENT</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>commissionExpRentalIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-2000</AccNo>
    <ParentAccNo>950-0000</ParentAccNo>
    <Description>INSURANCE FOR RENTAL PROPERTY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>insuranceExpRentalIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-3000</AccNo>
    <ParentAccNo>950-0000</ParentAccNo>
    <Description>INTEREST EXPENSES FOR RENTAL PROPERTY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>interestExpRentalIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-4000</AccNo>
    <ParentAccNo>950-0000</ParentAccNo>
    <Description>PROPERTY TAX FOR RENTAL PROPERTY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>propertyTaxExpRentalIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-5000</AccNo>
    <ParentAccNo>950-0000</ParentAccNo>
    <Description>REPAIR AND MAINTENANCE FOR RENTAL PROPERTY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>repairMaintenanceExpRentalIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>950-6000</AccNo>
    <ParentAccNo>950-0000</ParentAccNo>
    <Description>OTHER EXPENSES FOR RENTAL PROPERTY</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherExpRentalIncome</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>951-0000</AccNo>
    <Description>PROPERTY TAX</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>propertyTaxOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>952-0000</AccNo>
    <Description>OTHER PRIVATE OR CAPITAL EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherPrivateOrCapitalExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>953-0000</AccNo>
    <Description>LOSS ON DISPOSAL OF ASSET</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>netGainsOrLossesOnDisposalOfPPE</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>954-0000</AccNo>
    <Description>FIXED ASSETS WRITTEN-OFF</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>fixedAssetsExpdOff</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>955-0000</AccNo>
    <Description>DEPRECIATION OF FIXED ASSETS</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>depreciationExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>956-0000</AccNo>
    <Description>AMORTISATION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>amortisationExpense</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>957-0000</AccNo>
    <Description>PROVISION FOR WARRANTY EXPENSES</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>miscExp</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>960-0000</AccNo>
    <Description>FINANCE COST</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>960-1000</AccNo>
    <ParentAccNo>960-0000</ParentAccNo>
    <Description>INTEREST EXPENSE</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>interestExpOther</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>960-2000</AccNo>
    <ParentAccNo>960-0000</ParentAccNo>
    <Description>LEGAL FEE ON LOAN APPLICATION</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>otherFinanceCost</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>970-0000</AccNo>
    <Description>SHARE OF LOSS OF ASSOCIATES BY USING EQUITY METHOD</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
  </GLMAST>
  <GLMAST>
    <AccNo>970-1000</AccNo>
    <ParentAccNo>970-0000</ParentAccNo>
    <Description>SHARE OF LOSS OF JOINT VENTURES BY USING EQUITY METHOD</Description>
    <AccType>EP</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>shareOfProfitLossOfAssociatesAndJointVenturesAccountedForUsingEquityMethod</SGeFilingDataID>
  </GLMAST>
  <GLMAST>
    <AccNo>990-0000</AccNo>
    <Description>INCOME TAX (EXPENSE) BENEFIT FROM CONTINUING OPERATIONS</Description>
    <AccType>TX</AccType>
    <CurrencyCode>MYR</CurrencyCode>
    <CashFlowCategory>O</CashFlowCategory>
    <SGeFilingDataID>taxExpenseBenefitContinuingOperations</SGeFilingDataID>
  </GLMAST>
  <PaymentMethod>
    <PaymentMethod>BANK</PaymentMethod>
    <BankAccount>300-1000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>F</MergeBankChargeTrans>
    <SpecialAccType>SBK</SpecialAccType>
    <JournalType>BANK</JournalType>
    <AcceptChequeNo>T</AcceptChequeNo>
    <PaymentBy>CHEQUE</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
  </PaymentMethod>
  <PaymentMethod>
    <PaymentMethod>CASH</PaymentMethod>
    <BankAccount>300-8000</BankAccount>
    <BankChargePercent>0.000000</BankChargePercent>
    <MergeBankChargeTrans>F</MergeBankChargeTrans>
    <SpecialAccType>SCH</SpecialAccType>
    <JournalType>CASH</JournalType>
    <AcceptChequeNo>F</AcceptChequeNo>
    <PaymentBy>CASH</PaymentBy>
    <ODLimit>0.00</ODLimit>
    <PaymentFormatName>PV Default</PaymentFormatName>
    <ReceiptFormatName>RV Default</ReceiptFormatName>
    <IsActive>T</IsActive>
    <LastUpdate>-1</LastUpdate>
    <PaymentType>Cash</PaymentType>
  </PaymentMethod>
  <AssetLink>
    <AssetAccNo>200-1000</AssetAccNo>
    <AssetDeprnAccNo>200-1005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-2000</AssetAccNo>
    <AssetDeprnAccNo>200-2005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-3000</AssetAccNo>
    <AssetDeprnAccNo>200-3005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-4000</AssetAccNo>
    <AssetDeprnAccNo>200-4005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>200-5000</AssetAccNo>
    <AssetDeprnAccNo>200-5005</AssetDeprnAccNo>
  </AssetLink>
  <AssetLink>
    <AssetAccNo>201-1000</AssetAccNo>
    <AssetDeprnAccNo>201-1005</AssetDeprnAccNo>
  </AssetLink>
  <StockSet>
    <StockSetKey>1</StockSetKey>
    <OpenStock>600-0000</OpenStock>
    <CloseStock>650-0000</CloseStock>
    <BalanceStock>360-1000</BalanceStock>
  </StockSet>
</NewDataSet>�/* Support TaxRegisterNo in Debtor and Creditor table */
if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[Debtor]') and name='TaxRegisterNo')
  ALTER TABLE [dbo].[Debtor] ADD [TaxRegisterNo] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[Creditor]') and name='TaxRegisterNo')
  ALTER TABLE [dbo].[Creditor] ADD [TaxRegisterNo] [nvarchar] (20) NULL
GO

/* Support ProjNo, DeptNo in all KnockOff tables */
if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARPaymentKnockOff]') and name='ProjNo')
  ALTER TABLE [dbo].[ARPaymentKnockOff] ADD [ProjNo] [d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARPaymentKnockOff]') and name='DeptNo')
  ALTER TABLE [dbo].[ARPaymentKnockOff] ADD [DeptNo] [d_Dept] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARPaymentKnockOff]') and name='UseProjDept')
  ALTER TABLE [dbo].[ARPaymentKnockOff] ADD [UseProjDept] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARCNKnockOff]') and name='ProjNo')
  ALTER TABLE [dbo].[ARCNKnockOff] ADD [ProjNo] [d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARCNKnockOff]') and name='DeptNo')
  ALTER TABLE [dbo].[ARCNKnockOff] ADD [DeptNo] [d_Dept] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARCNKnockOff]') and name='UseProjDept')
  ALTER TABLE [dbo].[ARCNKnockOff] ADD [UseProjDept] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARRefundKnockOff]') and name='ProjNo')
  ALTER TABLE [dbo].[ARRefundKnockOff] ADD [ProjNo] [d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARRefundKnockOff]') and name='DeptNo')
  ALTER TABLE [dbo].[ARRefundKnockOff] ADD [DeptNo] [d_Dept] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARRefundKnockOff]') and name='UseProjDept')
  ALTER TABLE [dbo].[ARRefundKnockOff] ADD [UseProjDept] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARContraKnockOff]') and name='ProjNo')
  ALTER TABLE [dbo].[ARContraKnockOff] ADD [ProjNo] [d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARContraKnockOff]') and name='DeptNo')
  ALTER TABLE [dbo].[ARContraKnockOff] ADD [DeptNo] [d_Dept] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARContraKnockOff]') and name='UseProjDept')
  ALTER TABLE [dbo].[ARContraKnockOff] ADD [UseProjDept] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APPaymentKnockOff]') and name='ProjNo')
  ALTER TABLE [dbo].[APPaymentKnockOff] ADD [ProjNo] [d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APPaymentKnockOff]') and name='DeptNo')
  ALTER TABLE [dbo].[APPaymentKnockOff] ADD [DeptNo] [d_Dept] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APPaymentKnockOff]') and name='UseProjDept')
  ALTER TABLE [dbo].[APPaymentKnockOff] ADD [UseProjDept] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APCNKnockOff]') and name='ProjNo')
  ALTER TABLE [dbo].[APCNKnockOff] ADD [ProjNo] [d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APCNKnockOff]') and name='DeptNo')
  ALTER TABLE [dbo].[APCNKnockOff] ADD [DeptNo] [d_Dept] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APCNKnockOff]') and name='UseProjDept')
  ALTER TABLE [dbo].[APCNKnockOff] ADD [UseProjDept] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APRefundKnockOff]') and name='ProjNo')
  ALTER TABLE [dbo].[APRefundKnockOff] ADD [ProjNo] [d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APRefundKnockOff]') and name='DeptNo')
  ALTER TABLE [dbo].[APRefundKnockOff] ADD [DeptNo] [d_Dept] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APRefundKnockOff]') and name='UseProjDept')
  ALTER TABLE [dbo].[APRefundKnockOff] ADD [UseProjDept] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APContraKnockOff]') and name='ProjNo')
  ALTER TABLE [dbo].[APContraKnockOff] ADD [ProjNo] [d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APContraKnockOff]') and name='DeptNo')
  ALTER TABLE [dbo].[APContraKnockOff] ADD [DeptNo] [d_Dept] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[APContraKnockOff]') and name='UseProjDept')
  ALTER TABLE [dbo].[APContraKnockOff] ADD [UseProjDept] [d_Boolean] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.22' WHERE RegID = 2
GO
.if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WithholdingTaxTrans]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[WithholdingTaxTrans] (
		[TaxTransKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
		[SourceType] [d_SourceType] NOT NULL,
		[SourceKey] [bigint] NOT NULL,
		[SourceDtlKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[DocNo] [d_DocNo] NOT NULL,
		[DocDate] [DateTime] NOT NULL,
		[TaxableAccNo] [d_AccNo] NULL,
		[TaxableAmt] [d_Money] NULL,
		[LocalTaxableAmt] [d_Money] NULL,
		[Tax] [d_Money] NULL,
		[LocalTax] [d_Money] NULL,
	) ON [PRIMARY]
GO

UPDATE WithholdingTaxTrans
SET TaxableAccNo=NULL 
WHERE TaxableAccNo NOT IN (SELECT AccNo FROM GLMAST)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_WithholdingTaxTrans_TaxableAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[WithholdingTaxTrans] DROP CONSTRAINT [FK_WithholdingTaxTrans_TaxableAccNo]
GO

ALTER TABLE [dbo].[WithholdingTaxTrans] WITH CHECK ADD CONSTRAINT [FK_WithholdingTaxTrans_TaxableAccNo] 
FOREIGN KEY([TaxableAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

/* Add Foreign Key to all knock-off table */

UPDATE ARPaymentKnockOff
SET ProjNo=NULL 
WHERE ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARPaymentKnockOff_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARPaymentKnockOff] DROP CONSTRAINT [FK_ARPaymentKnockOff_ProjNo]
GO

ALTER TABLE [dbo].[ARPaymentKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARPaymentKnockOff_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

UPDATE ARPaymentKnockOff
SET DeptNo=NULL 
WHERE DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARPaymentKnockOff_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARPaymentKnockOff] DROP CONSTRAINT [FK_ARPaymentKnockOff_DeptNo]
GO

ALTER TABLE [dbo].[ARPaymentKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARPaymentKnockOff_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

UPDATE ARCNKnockOff
SET ProjNo=NULL 
WHERE ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARCNKnockOff_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARCNKnockOff] DROP CONSTRAINT [FK_ARCNKnockOff_ProjNo]
GO

ALTER TABLE [dbo].[ARCNKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARCNKnockOff_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

UPDATE ARCNKnockOff
SET DeptNo=NULL 
WHERE DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARCNKnockOff_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARCNKnockOff] DROP CONSTRAINT [FK_ARCNKnockOff_DeptNo]
GO

ALTER TABLE [dbo].[ARCNKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARCNKnockOff_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

UPDATE ARRefundKnockOff
SET ProjNo=NULL 
WHERE ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARRefundKnockOff_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundKnockOff] DROP CONSTRAINT [FK_ARRefundKnockOff_ProjNo]
GO

ALTER TABLE [dbo].[ARRefundKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARRefundKnockOff_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

UPDATE ARRefundKnockOff
SET DeptNo=NULL 
WHERE DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARRefundKnockOff_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundKnockOff] DROP CONSTRAINT [FK_ARRefundKnockOff_DeptNo]
GO

ALTER TABLE [dbo].[ARRefundKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARRefundKnockOff_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

UPDATE ARContraKnockOff
SET ProjNo=NULL 
WHERE ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARContraKnockOff_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARContraKnockOff] DROP CONSTRAINT [FK_ARContraKnockOff_ProjNo]
GO

ALTER TABLE [dbo].[ARContraKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARContraKnockOff_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

UPDATE ARContraKnockOff
SET DeptNo=NULL 
WHERE DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARContraKnockOff_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARContraKnockOff] DROP CONSTRAINT [FK_ARContraKnockOff_DeptNo]
GO

ALTER TABLE [dbo].[ARContraKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARContraKnockOff_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

UPDATE APPaymentKnockOff
SET ProjNo=NULL 
WHERE ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APPaymentKnockOff_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APPaymentKnockOff] DROP CONSTRAINT [FK_APPaymentKnockOff_ProjNo]
GO

ALTER TABLE [dbo].[APPaymentKnockOff] WITH CHECK ADD CONSTRAINT [FK_APPaymentKnockOff_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

UPDATE APPaymentKnockOff
SET DeptNo=NULL 
WHERE DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APPaymentKnockOff_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APPaymentKnockOff] DROP CONSTRAINT [FK_APPaymentKnockOff_DeptNo]
GO

ALTER TABLE [dbo].[APPaymentKnockOff] WITH CHECK ADD CONSTRAINT [FK_APPaymentKnockOff_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

UPDATE APCNKnockOff
SET ProjNo=NULL 
WHERE ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APCNKnockOff_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APCNKnockOff] DROP CONSTRAINT [FK_APCNKnockOff_ProjNo]
GO

ALTER TABLE [dbo].[APCNKnockOff] WITH CHECK ADD CONSTRAINT [FK_APCNKnockOff_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

UPDATE APCNKnockOff
SET DeptNo=NULL 
WHERE DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APCNKnockOff_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APCNKnockOff] DROP CONSTRAINT [FK_APCNKnockOff_DeptNo]
GO

ALTER TABLE [dbo].[APCNKnockOff] WITH CHECK ADD CONSTRAINT [FK_APCNKnockOff_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

UPDATE APRefundKnockOff
SET ProjNo=NULL 
WHERE ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APRefundKnockOff_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundKnockOff] DROP CONSTRAINT [FK_APRefundKnockOff_ProjNo]
GO

ALTER TABLE [dbo].[APRefundKnockOff] WITH CHECK ADD CONSTRAINT [FK_APRefundKnockOff_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

UPDATE APRefundKnockOff
SET DeptNo=NULL 
WHERE DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APRefundKnockOff_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundKnockOff] DROP CONSTRAINT [FK_APRefundKnockOff_DeptNo]
GO

ALTER TABLE [dbo].[APRefundKnockOff] WITH CHECK ADD CONSTRAINT [FK_APRefundKnockOff_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

UPDATE APContraKnockOff
SET ProjNo=NULL 
WHERE ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APContraKnockOff_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APContraKnockOff] DROP CONSTRAINT [FK_APContraKnockOff_ProjNo]
GO

ALTER TABLE [dbo].[APContraKnockOff] WITH CHECK ADD CONSTRAINT [FK_APContraKnockOff_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

UPDATE APContraKnockOff
SET DeptNo=NULL 
WHERE DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APContraKnockOff_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APContraKnockOff] DROP CONSTRAINT [FK_APContraKnockOff_DeptNo]
GO

ALTER TABLE [dbo].[APContraKnockOff] WITH CHECK ADD CONSTRAINT [FK_APContraKnockOff_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support WithholdingTax in A/R and A/P Payment and Refund */
INSERT @ListTable VALUES('ARPaymentDTL', 'WithholdingTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDTL', 'WithholdingTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APPaymentDTL', 'WithholdingTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APRefundDTL', 'WithholdingTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CBPaymentDTL', 'WithholdingTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARPaymentKnockOff', 'FCRevalueKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARCNKnockOff', 'FCRevalueKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARRefundKnockOff', 'FCRevalueKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARContraKnockOff', 'FCRevalueKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APPaymentKnockOff', 'FCRevalueKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APCNKnockOff', 'FCRevalueKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APRefundKnockOff', 'FCRevalueKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APContraKnockOff', 'FCRevalueKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('Debtor', 'WithholdingTaxPercent', '[d_Percent] NULL', 'A')
INSERT @ListTable VALUES('Creditor', 'WithholdingTaxPercent', '[d_Percent] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.23' WHERE RegID = 2
GO

�/* Change d_DisplayTerm size to 50 characters */

EXEC sp_addtype N'd_DisplayTerm_23', N'nvarchar (50)'
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40))

/* Support DocNo2 in A/RP Payment and Refund */
INSERT @ListTable VALUES('ARInvoice', 'DisplayTerm')
INSERT @ListTable VALUES('ARDN', 'DisplayTerm')
INSERT @ListTable VALUES('APInvoice', 'DisplayTerm')
INSERT @ListTable VALUES('APDN', 'DisplayTerm')
INSERT @ListTable VALUES('Debtor', 'DisplayTerm')
INSERT @ListTable VALUES('Creditor', 'DisplayTerm')
INSERT @ListTable VALUES('QT', 'DisplayTerm')
INSERT @ListTable VALUES('SO', 'DisplayTerm')
INSERT @ListTable VALUES('DO', 'DisplayTerm')
INSERT @ListTable VALUES('IV', 'DisplayTerm')
INSERT @ListTable VALUES('CS', 'DisplayTerm')
INSERT @ListTable VALUES('CN', 'DisplayTerm')
INSERT @ListTable VALUES('DN', 'DisplayTerm')
INSERT @ListTable VALUES('XS', 'DisplayTerm')
INSERT @ListTable VALUES('DR', 'DisplayTerm')
INSERT @ListTable VALUES('RQ', 'DisplayTerm')
INSERT @ListTable VALUES('PO', 'DisplayTerm')
INSERT @ListTable VALUES('GR', 'DisplayTerm')
INSERT @ListTable VALUES('PI', 'DisplayTerm')
INSERT @ListTable VALUES('CP', 'DisplayTerm')
INSERT @ListTable VALUES('PR', 'DisplayTerm')
INSERT @ListTable VALUES('XP', 'DisplayTerm')
INSERT @ListTable VALUES('GT', 'DisplayTerm')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  -- drop constraint first
  set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[FK_' + @tableName + '_DisplayTerm]'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [FK_' + @tableName + '_DisplayTerm]'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  -- change to new type
  set @sql = 'ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [d_DisplayTerm_23] NOT NULL'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PriceBookRule_DisplayTerm]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PriceBookRule] DROP CONSTRAINT [FK_PriceBookRule_DisplayTerm]
GO

ALTER TABLE [dbo].[PriceBookRule] ALTER COLUMN [DisplayTerm] [d_DisplayTerm_23] NULL
GO

ALTER TABLE [dbo].[Terms] ALTER COLUMN [DisplayTerm] [d_DisplayTerm_23] NOT NULL
GO

EXEC sp_droptype N'd_DisplayTerm'
GO

EXEC sp_rename N'd_DisplayTerm_23', N'd_DisplayTerm', N'USERDATATYPE';
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40))

/* Support DocNo2 in A/RP Payment and Refund */
INSERT @ListTable VALUES('ARInvoice', 'DisplayTerm')
INSERT @ListTable VALUES('ARDN', 'DisplayTerm')
INSERT @ListTable VALUES('APInvoice', 'DisplayTerm')
INSERT @ListTable VALUES('APDN', 'DisplayTerm')
INSERT @ListTable VALUES('Debtor', 'DisplayTerm')
INSERT @ListTable VALUES('Creditor', 'DisplayTerm')
INSERT @ListTable VALUES('QT', 'DisplayTerm')
INSERT @ListTable VALUES('SO', 'DisplayTerm')
INSERT @ListTable VALUES('DO', 'DisplayTerm')
INSERT @ListTable VALUES('IV', 'DisplayTerm')
INSERT @ListTable VALUES('CS', 'DisplayTerm')
INSERT @ListTable VALUES('CN', 'DisplayTerm')
INSERT @ListTable VALUES('DN', 'DisplayTerm')
INSERT @ListTable VALUES('XS', 'DisplayTerm')
INSERT @ListTable VALUES('DR', 'DisplayTerm')
INSERT @ListTable VALUES('RQ', 'DisplayTerm')
INSERT @ListTable VALUES('PO', 'DisplayTerm')
INSERT @ListTable VALUES('GR', 'DisplayTerm')
INSERT @ListTable VALUES('PI', 'DisplayTerm')
INSERT @ListTable VALUES('CP', 'DisplayTerm')
INSERT @ListTable VALUES('PR', 'DisplayTerm')
INSERT @ListTable VALUES('XP', 'DisplayTerm')
INSERT @ListTable VALUES('GT', 'DisplayTerm')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  -- add back constraint
  set @sql = 'ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT FK_' + @tableName + '_DisplayTerm FOREIGN KEY ([DisplayTerm]) REFERENCES dbo.Terms ([DisplayTerm])'
  
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

ALTER TABLE dbo.PriceBookRule WITH CHECK ADD CONSTRAINT
	FK_PriceBookRule_DisplayTerm FOREIGN KEY
	(
	[DisplayTerm]
	) REFERENCES dbo.Terms
	(
	[DisplayTerm]
	)
GO

�/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support ToTaxCurrencyRate to A/R, A/P, G/L, Sales, Purchase */
INSERT @ListTable VALUES('ARInvoice', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('ARCN', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('ARDN', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('APInvoice', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('APCN', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('APDN', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('CB', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('JE', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('QT', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('SO', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('DO', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('IV', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('CS', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('CN', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('DN', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('XS', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('DR', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('PO', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('GR', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('PI', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('CP', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('PR', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('XP', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
INSERT @ListTable VALUES('GT', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL', 'A')
/* Support RoundAdj and FinalTotal to IV and CS */
INSERT @ListTable VALUES('IV', 'RoundAdj', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'FinalTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'RoundAdj', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'FinalTotal', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  if @colName = 'ToTaxCurrencyRate'
  begin
    set @sql = 'update [dbo].[' + @tableName + '] set ToTaxCurrencyRate = CurrencyRate'
    
    Exec sp_executesql @sql
    IF @@ERROR <> 0
    BEGIN
      CLOSE @cur_Item
      DEALLOCATE @cur_Item
      RETURN
    END

    set @sql = 'alter table [dbo].[' + @tableName + '] alter column ToTaxCurrencyRate [d_CurrencyRate] NOT NULL'
    Exec sp_executesql @sql
    IF @@ERROR <> 0
    BEGIN
      CLOSE @cur_Item
      DEALLOCATE @cur_Item
      RETURN
    END
  end
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE IV SET RoundAdj = COALESCE (RoundAdj, 0), FinalTotal = NetTotal + COALESCE (RoundAdj, 0)
GO

UPDATE CS SET RoundAdj = COALESCE (RoundAdj, 0), FinalTotal = NetTotal + COALESCE (RoundAdj, 0)
GO

/* Support IsActive in Branch table */
if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[Branch]') and name='IsActive')
  ALTER TABLE [dbo].[Branch] ADD [IsActive] [d_Boolean] NOT NULL DEFAULT (('T'))
GO

UPDATE REGISTRY SET RegValue = '1.0.9.24' WHERE RegID = 2
GO

D/* Enforce NOT NULL to Item's BaseUOM column */
UPDATE Item 
SET BaseUOM = (select TOP 1 UOM from ItemUOM WHERE ItemUOM.ItemCode=Item.ItemCode AND ItemUOM.Rate = 1) 
WHERE BaseUOM IS NULL
GO

ALTER TABLE Item
ALTER COLUMN BaseUOM [d_UOM] NOT NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.25' WHERE RegID = 2
GO
^/* Add FRCustomText table to support Custom Description */
IF OBJECT_ID ('dbo.FRCustomText', 'U') IS NOT NULL
DROP TABLE [dbo].[FRCustomText]
GO

CREATE TABLE [dbo].[FRCustomText](
	[ID] [nvarchar](20) PRIMARY KEY NONCLUSTERED,
	[Text1] [nvarchar](100) NULL,
	[Text2] [nvarchar](100) NULL
) ON [PRIMARY]
GO

/* Support DocDate in SerialNoTrans and ItemSerialNo table */
if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[SerialNoTrans]') and name='DocDate')
  ALTER TABLE [dbo].[SerialNoTrans] ADD [DocDate] [DateTime] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ItemSerialNo]') and name='DocDate')
  ALTER TABLE [dbo].[ItemSerialNo] ADD [DocDate] [DateTime] NULL
GO

/* Support LastUpdate in Layout table */
if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[Layout]') and name='LastUpdate')
  ALTER TABLE [dbo].[Layout] ADD [LastUpdate] [bigint] NULL
GO

/* Support BackOrderControl in Item table */
if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[Item]') and name='BackOrderControl')
  ALTER TABLE [dbo].[Item] ADD [BackOrderControl] [d_Boolean] NOT NULL DEFAULT (('T'))
GO

/* Support PurchaseTaxType in Item table, added by CCP on 6 Jan 2014 */
if not exists (select * from dbo.syscolumns where id=object_id(N'[dbo].[Item]') and name = N'PurchaseTaxType')
  ALTER TABLE Item ADD PurchaseTaxType [d_TaxType] NULL
GO

if exists (select * from dbo.sysobjects where id=object_id(N'[dbo].[FK_Item_PurchaseTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE Item DROP CONSTRAINT [FK_Item_PurchaseTaxType]
GO

ALTER TABLE [dbo].[Item] WITH CHECK 
  ADD CONSTRAINT [FK_Item_PurchaseTaxType] FOREIGN KEY([PurchaseTaxType]) REFERENCES [dbo].[TaxType] ([TaxType])
GO

UPDATE REGISTRY SET RegValue = '1.0.9.26' WHERE RegID = 2
GO
/* Add BaseUOM to Item table */
if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[Item]') and name='BaseUOM') 
  ALTER TABLE [dbo].[Item] ADD [BaseUOM] [d_UOM] NULL
GO

update Item 
set BaseUOM = (select TOP 1 UOM from ItemUOM WHERE ItemUOM.ItemCode=Item.ItemCode AND ItemUOM.Rate = 1)
GO

UPDATE REGISTRY SET RegValue = '1.0.9.21' WHERE RegID = 2
GO
�/* Add Level to AccGroup table */
if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[AccGroup]') and name='Level') 
  ALTER TABLE [dbo].[AccGroup] ADD [Level] [int] NOT NULL DEFAULT 0
GO

/* Extend the length of ScriptName to 60 in UserScript table */
ALTER TABLE [dbo].[UserScript] ALTER COLUMN [ScriptName] [nvarchar](60) NOT NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.20' WHERE RegID = 2
GO
>5/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support DocNo2 in A/RP Payment and Refund */
INSERT @ListTable VALUES('ARPayment', 'DocNo2', '[nvarchar] (25) NULL', 'A')
INSERT @ListTable VALUES('ARRefund', 'DocNo2', '[nvarchar] (25) NULL', 'A')
INSERT @ListTable VALUES('APPayment', 'DocNo2', '[nvarchar] (25) NULL', 'A')
INSERT @ListTable VALUES('APRefund', 'DocNo2', '[nvarchar] (25) NULL', 'A')

/* Support TaxAdjustment in G/L, A/R and A/P */
INSERT @ListTable VALUES('ARInvoiceDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARDNDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARCNDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')

INSERT @ListTable VALUES('APInvoiceDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APDNDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APCNDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')

INSERT @ListTable VALUES('CBDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JEDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')

/* Support TaxAdjustment and TaxableAmt in Purchase */
INSERT @ListTable VALUES('PIDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PIDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CPDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CPDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PRDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PRDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')

/* Support TaxAdjustment and TaxableAmt in Sales */
INSERT @ListTable VALUES('IVDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add default constraint to Activity table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DF_Activity_ActivityDateTime]') and OBJECTPROPERTY(id, N'IsDefaultCnst') = 1) 
ALTER TABLE [dbo].[Activity] DROP CONSTRAINT [DF_Activity_ActivityDateTime]
GO

ALTER TABLE dbo.Activity ADD CONSTRAINT
	DF_Activity_ActivityDateTime DEFAULT getdate() FOR ActivityDateTime
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Activity]') and name = N'Detail')
  ALTER TABLE Activity ADD Detail [ntext] NULL
GO

/* The following will add table to support ItemPriceChangeHistory */

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemPriceChangeHistory]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[ItemPriceChangeHistory](
	[HKey] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[ChangeTime] [datetime] NOT NULL,
	[Price] [dbo].[d_Price] NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemPriceChangeHistory_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemPriceChangeHistory] DROP CONSTRAINT [FK_ItemPriceChangeHistory_ItemCode]
GO

ALTER TABLE [dbo].[ItemPriceChangeHistory] WITH CHECK ADD CONSTRAINT [FK_ItemPriceChangeHistory_ItemCode] 
FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemPriceChangeHistory_ItemCode_UOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemPriceChangeHistory] DROP CONSTRAINT [FK_ItemPriceChangeHistory_ItemCode_UOM]
GO

ALTER TABLE [dbo].[ItemPriceChangeHistory] WITH CHECK ADD CONSTRAINT [FK_ItemPriceChangeHistory_ItemCode_UOM] 
FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO

/* The following will add table to support ItemCostChangeHistory */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemCostChangeHistory]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[ItemCostChangeHistory](
	[HKey] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[ChangeTime] [datetime] NOT NULL,
	[Cost] [dbo].[d_Cost] NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemCostChangeHistory_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemCostChangeHistory] DROP CONSTRAINT [FK_ItemCostChangeHistory_ItemCode]
GO

ALTER TABLE [dbo].[ItemCostChangeHistory] WITH CHECK ADD CONSTRAINT [FK_ItemCostChangeHistory_ItemCode] 
FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemCostChangeHistory_ItemCode_UOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemCostChangeHistory] DROP CONSTRAINT [FK_ItemCostChangeHistory_ItemCode_UOM]
GO

ALTER TABLE [dbo].[ItemCostChangeHistory] WITH CHECK ADD CONSTRAINT [FK_ItemCostChangeHistory_ItemCode_UOM] 
FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support Tax columns in Journal Entry master table */
INSERT @ListTable VALUES('JE', 'TaxableDR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'TaxableCR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'TaxDR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'TaxCR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'ExTaxDR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'ExTaxCR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'NetTotalDR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'NetTotalCR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalTotalDR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalTotalCR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalTaxableDR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalTaxableCR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalTaxDR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalTaxCR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalExTaxDR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalExTaxCR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalNetTotalDR', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalNetTotalCR', '[d_Money] NULL', 'A')

/* Support TaxAdjustment and TaxableAmt in Purchase */
INSERT @ListTable VALUES('RQDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PODTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PODTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GRDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GRDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XPDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XPDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GTDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GTDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')

/* Support TaxAdjustment and TaxableAmt in Sales */
INSERT @ListTable VALUES('QTDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('QTDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SODTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SODTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DODTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DODTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XSDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XSDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DRDTL', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DRDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE RQDTL
SET TaxableAmt=SubTotal
GO
UPDATE PODTL
SET TaxableAmt=SubTotal
GO
UPDATE GRDTL
SET TaxableAmt=SubTotal
GO
UPDATE PIDTL
SET TaxableAmt=SubTotal
GO
UPDATE CPDTL
SET TaxableAmt=SubTotal
GO
UPDATE PRDTL
SET TaxableAmt=SubTotal
GO
UPDATE XPDTL
SET TaxableAmt=SubTotal
GO
UPDATE GTDTL
SET TaxableAmt=SubTotal
GO

UPDATE QTDTL
SET TaxableAmt=SubTotal
GO
UPDATE SODTL
SET TaxableAmt=SubTotal
GO
UPDATE DODTL
SET TaxableAmt=SubTotal
GO
UPDATE IVDTL
SET TaxableAmt=SubTotal
GO
UPDATE CSDTL
SET TaxableAmt=SubTotal
GO
UPDATE DNDTL
SET TaxableAmt=SubTotal
GO
UPDATE CNDTL
SET TaxableAmt=SubTotal
GO
UPDATE XSDTL
SET TaxableAmt=SubTotal
GO
UPDATE DRDTL
SET TaxableAmt=SubTotal
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40))

/* Support Tax columns in Journal Entry master table */
INSERT @ListTable VALUES('ARInvoice')
INSERT @ListTable VALUES('ARDN')
INSERT @ListTable VALUES('ARCN')
INSERT @ListTable VALUES('ARPayment')
INSERT @ListTable VALUES('ARRefund')
INSERT @ListTable VALUES('ARAPContra')
INSERT @ListTable VALUES('APInvoice')
INSERT @ListTable VALUES('APDN')
INSERT @ListTable VALUES('APCN')
INSERT @ListTable VALUES('APPayment')
INSERT @ListTable VALUES('APRefund')
INSERT @ListTable VALUES('QT')
INSERT @ListTable VALUES('SO')
INSERT @ListTable VALUES('DO')
INSERT @ListTable VALUES('IV')
INSERT @ListTable VALUES('CS')
INSERT @ListTable VALUES('DN')
INSERT @ListTable VALUES('CN')
INSERT @ListTable VALUES('XS')
INSERT @ListTable VALUES('DR')
INSERT @ListTable VALUES('RQ')
INSERT @ListTable VALUES('PO')
INSERT @ListTable VALUES('GR')
INSERT @ListTable VALUES('PI')
INSERT @ListTable VALUES('CP')
INSERT @ListTable VALUES('PR')
INSERT @ListTable VALUES('XP')
INSERT @ListTable VALUES('GT')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''Description'' and prec = 40) ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [Description] nvarchar(80) NULL'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.18' WHERE RegID = 2
GO
�/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support TaxExportCountry to A/R Invoice, ARCN, ARDN, CB, JE, IV, CS, CN, DN */
INSERT @ListTable VALUES('ARInvoiceDTL', 'TaxExportCountry', 'nvarchar(50) NULL', 'A')
INSERT @ListTable VALUES('ARCNDTL', 'TaxExportCountry', 'nvarchar(50) NULL', 'A')
INSERT @ListTable VALUES('ARDNDTL', 'TaxExportCountry', 'nvarchar(50) NULL', 'A')
INSERT @ListTable VALUES('CBDTL', 'TaxExportCountry', 'nvarchar(50) NULL', 'A')
INSERT @ListTable VALUES('JEDTL', 'TaxExportCountry', 'nvarchar(50) NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'TaxExportCountry', 'nvarchar(50) NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'TaxExportCountry', 'nvarchar(50) NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'TaxExportCountry', 'nvarchar(50) NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'TaxExportCountry', 'nvarchar(50) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.27' WHERE RegID = 2
GO

�//* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support PurchasePrice in PackageDTL table */
INSERT @ListTable VALUES('PackageDTL', 'PurchasePrice', '[d_Price] NULL', 'A')
/* Support PackageDocKey and ParentDtlKey in IPHIST table */
INSERT @ListTable VALUES('IPHIST', 'PackageDocKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('IPHIST', 'ParentDtlKey', '[bigint] NULL', 'A')
/* Support BankChargeProjNo and BankChargeDeptNo to A/R and A/P Payment and Refund, Cash Book Entry */
INSERT @ListTable VALUES('ARPaymentDTL', 'BankChargeProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('ARPaymentDTL', 'BankChargeDeptNo', '[d_Dept] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDTL', 'BankChargeProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDTL', 'BankChargeDeptNo', '[d_Dept] NULL', 'A')
INSERT @ListTable VALUES('ARDepositDTL', 'BankChargeProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('ARDepositDTL', 'BankChargeDeptNo', '[d_Dept] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDepositDTL', 'BankChargeProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDepositDTL', 'BankChargeDeptNo', '[d_Dept] NULL', 'A')
INSERT @ListTable VALUES('APPaymentDTL', 'BankChargeProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('APPaymentDTL', 'BankChargeDeptNo', '[d_Dept] NULL', 'A')
INSERT @ListTable VALUES('APRefundDTL', 'BankChargeProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('APRefundDTL', 'BankChargeDeptNo', '[d_Dept] NULL', 'A')
INSERT @ListTable VALUES('APDepositDTL', 'BankChargeProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('APDepositDTL', 'BankChargeDeptNo', '[d_Dept] NULL', 'A')
INSERT @ListTable VALUES('APRefundDepositDTL', 'BankChargeProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('APRefundDepositDTL', 'BankChargeDeptNo', '[d_Dept] NULL', 'A')
INSERT @ListTable VALUES('CBPaymentDTL', 'BankChargeProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('CBPaymentDTL', 'BankChargeDeptNo', '[d_Dept] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add Foreign Key to all A/R BankChargeProjNo and BankChargeDeptNo */

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARPaymentDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARPaymentDTL] DROP CONSTRAINT [FK_ARPaymentDTL_BankChargeProjNo]
GO

ALTER TABLE [dbo].[ARPaymentDTL] WITH CHECK ADD CONSTRAINT [FK_ARPaymentDTL_BankChargeProjNo] 
FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARRefundDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundDTL] DROP CONSTRAINT [FK_ARRefundDTL_BankChargeProjNo]
GO

ALTER TABLE [dbo].[ARRefundDTL] WITH CHECK ADD CONSTRAINT [FK_ARRefundDTL_BankChargeProjNo] 
FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDepositDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDepositDTL] DROP CONSTRAINT [FK_ARDepositDTL_BankChargeProjNo]
GO

ALTER TABLE [dbo].[ARDepositDTL] WITH CHECK ADD CONSTRAINT [FK_ARDepositDTL_BankChargeProjNo] 
FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARRefundDepositDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundDepositDTL] DROP CONSTRAINT [FK_ARRefundDepositDTL_BankChargeProjNo]
GO

ALTER TABLE [dbo].[ARRefundDepositDTL] WITH CHECK ADD CONSTRAINT [FK_ARRefundDepositDTL_BankChargeProjNo] 
FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARPaymentDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARPaymentDTL] DROP CONSTRAINT [FK_ARPaymentDTL_BankChargeDeptNo]
GO

ALTER TABLE [dbo].[ARPaymentDTL] WITH CHECK ADD CONSTRAINT [FK_ARPaymentDTL_BankChargeDeptNo] 
FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARRefundDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundDTL] DROP CONSTRAINT [FK_ARRefundDTL_BankChargeDeptNo]
GO

ALTER TABLE [dbo].[ARRefundDTL] WITH CHECK ADD CONSTRAINT [FK_ARRefundDTL_BankChargeDeptNo] 
FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDepositDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDepositDTL] DROP CONSTRAINT [FK_ARDepositDTL_BankChargeDeptNo]
GO

ALTER TABLE [dbo].[ARDepositDTL] WITH CHECK ADD CONSTRAINT [FK_ARDepositDTL_BankChargeDeptNo] 
FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARRefundDepositDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundDepositDTL] DROP CONSTRAINT [FK_ARRefundDepositDTL_BankChargeDeptNo]
GO

ALTER TABLE [dbo].[ARRefundDepositDTL] WITH CHECK ADD CONSTRAINT [FK_ARRefundDepositDTL_BankChargeDeptNo] 
FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

/* Add Foreign Key to all A/P BankChargeProjNo and BankChargeDeptNo */

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APPaymentDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APPaymentDTL] DROP CONSTRAINT [FK_APPaymentDTL_BankChargeProjNo]
GO

ALTER TABLE [dbo].[APPaymentDTL] WITH CHECK ADD CONSTRAINT [FK_APPaymentDTL_BankChargeProjNo] 
FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APRefundDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundDTL] DROP CONSTRAINT [FK_APRefundDTL_BankChargeProjNo]
GO

ALTER TABLE [dbo].[APRefundDTL] WITH CHECK ADD CONSTRAINT [FK_APRefundDTL_BankChargeProjNo] 
FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APDepositDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDepositDTL] DROP CONSTRAINT [FK_APDepositDTL_BankChargeProjNo]
GO

ALTER TABLE [dbo].[APDepositDTL] WITH CHECK ADD CONSTRAINT [FK_APDepositDTL_BankChargeProjNo] 
FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APRefundDepositDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundDepositDTL] DROP CONSTRAINT [FK_APRefundDepositDTL_BankChargeProjNo]
GO

ALTER TABLE [dbo].[APRefundDepositDTL] WITH CHECK ADD CONSTRAINT [FK_APRefundDepositDTL_BankChargeProjNo] 
FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APPaymentDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APPaymentDTL] DROP CONSTRAINT [FK_APPaymentDTL_BankChargeDeptNo]
GO

ALTER TABLE [dbo].[APPaymentDTL] WITH CHECK ADD CONSTRAINT [FK_APPaymentDTL_BankChargeDeptNo] 
FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APRefundDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundDTL] DROP CONSTRAINT [FK_APRefundDTL_BankChargeDeptNo]
GO

ALTER TABLE [dbo].[APRefundDTL] WITH CHECK ADD CONSTRAINT [FK_APRefundDTL_BankChargeDeptNo] 
FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APDepositDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDepositDTL] DROP CONSTRAINT [FK_APDepositDTL_BankChargeDeptNo]
GO

ALTER TABLE [dbo].[APDepositDTL] WITH CHECK ADD CONSTRAINT [FK_APDepositDTL_BankChargeDeptNo] 
FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APRefundDepositDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundDepositDTL] DROP CONSTRAINT [FK_APRefundDepositDTL_BankChargeDeptNo]
GO

ALTER TABLE [dbo].[APRefundDepositDTL] WITH CHECK ADD CONSTRAINT [FK_APRefundDepositDTL_BankChargeDeptNo] 
FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

/* General Add Index */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40))

/* Add Index on FromDocDtlKey to GTDTL, XPDTL, PODTL, GRDTL, PIDTL, CPDTL, PRDTL, SODTL, DODTL, IVDTL, CSDTL, CNDTL, ASMOrder */
INSERT @ListTable VALUES('GTDTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('XPDTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('PODTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('GRDTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('PIDTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('CPDTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('PRDTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('SODTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('DODTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('IVDTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('CSDTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('CNDTL', 'FromDocDtlKey')
INSERT @ListTable VALUES('ASMOrder', 'FromDocDtlKey')

DECLARE @sql NVARCHAR(600)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from sys.indexes where object_id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''IX_' + @tableName + '_' + @colName + ''') CREATE NONCLUSTERED INDEX [IX_' + @tableName + '_' + @colName + '] ON [dbo].[' + @tableName + '] ([' + @colName + '] ASC) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.28' WHERE RegID = 2
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support ProjNo and DeptNo in FCRevalueDocument table */
INSERT @ListTable VALUES('FCRevalueDocument', 'ProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('FCRevalueDocument', 'DeptNo', '[d_Dept] NULL', 'A')
/* Support ProjNo and DeptNo in UnrealizedGainLossDocument table */
INSERT @ListTable VALUES('UnrealizedGainLossDocument', 'ProjNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('UnrealizedGainLossDocument', 'DeptNo', '[d_Dept] NULL', 'A')
/* Support LocalSubTotalExTax in all Sales and Purchase document detail */
INSERT @ListTable VALUES('QTDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SODTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DODTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XSDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DRDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PODTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GRDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PIDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CPDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PRDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XPDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GTDTL', 'LocalSubTotalExTax', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add Foreign Key to FCRevalueDocument's ProjNo and DeptNo */

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FCRevalueDocument_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[FCRevalueDocument] DROP CONSTRAINT [FK_FCRevalueDocument_ProjNo]
GO

ALTER TABLE [dbo].[FCRevalueDocument] WITH CHECK ADD CONSTRAINT [FK_FCRevalueDocument_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FCRevalueDocument_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[FCRevalueDocument] DROP CONSTRAINT [FK_FCRevalueDocument_DeptNo]
GO

ALTER TABLE [dbo].[FCRevalueDocument] WITH CHECK ADD CONSTRAINT [FK_FCRevalueDocument_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

/* Add Foreign Key to UnrealizedGainLossDocument's ProjNo and DeptNo */

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossDocument_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossDocument] DROP CONSTRAINT [FK_UnrealizedGainLossDocument_ProjNo]
GO

ALTER TABLE [dbo].[UnrealizedGainLossDocument] WITH CHECK ADD CONSTRAINT [FK_UnrealizedGainLossDocument_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossDocument_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossDocument] DROP CONSTRAINT [FK_UnrealizedGainLossDocument_DeptNo]
GO

ALTER TABLE [dbo].[UnrealizedGainLossDocument] WITH CHECK ADD CONSTRAINT [FK_UnrealizedGainLossDocument_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

UPDATE REGISTRY SET RegValue = '1.0.9.29' WHERE RegID = 2
GO
'/* The following DDL will add EmailAddress column to Branch table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Branch]') and name = N'EmailAddress')
  ALTER TABLE Branch ADD EmailAddress [nvarchar] (80) NULL
GO

/* The following DDL will add CashPaymentMethod column to Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'CashPaymentMethod')
  ALTER TABLE Location ADD CashPaymentMethod [d_PaymentMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_CashPaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_CashPaymentMethod]
GO

ALTER TABLE [dbo].[Location] ADD 
	CONSTRAINT [FK_Location_CashPaymentMethod] FOREIGN KEY
	(
		[CashPaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] 
	(
		[PaymentMethod]
	)
GO

/* The following DDL will add DebitCardPaymentMethod column to Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'DebitCardPaymentMethod')
  ALTER TABLE Location ADD DebitCardPaymentMethod [d_PaymentMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_DebitCardPaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_DebitCardPaymentMethod]
GO

ALTER TABLE [dbo].[Location] ADD 
	CONSTRAINT [FK_Location_DebitCardPaymentMethod] FOREIGN KEY
	(
		[DebitCardPaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] 
	(
		[PaymentMethod]
	)
GO

/* The following DDL will add VoucherPaymentMethod column to Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'VoucherPaymentMethod')
  ALTER TABLE Location ADD VoucherPaymentMethod [d_PaymentMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_VoucherPaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_VoucherPaymentMethod]
GO

ALTER TABLE [dbo].[Location] ADD 
	CONSTRAINT [FK_Location_VoucherPaymentMethod] FOREIGN KEY
	(
		[VoucherPaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] 
	(
		[PaymentMethod]
	)
GO

/* The following DDL will add ChequePaymentMethod column to Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'ChequePaymentMethod')
  ALTER TABLE Location ADD ChequePaymentMethod [d_PaymentMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_ChequePaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_ChequePaymentMethod]
GO

ALTER TABLE [dbo].[Location] ADD 
	CONSTRAINT [FK_Location_ChequePaymentMethod] FOREIGN KEY
	(
		[ChequePaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] 
	(
		[PaymentMethod]
	)
GO

/* The following DDL will add PointPaymentMethod column to Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'PointPaymentMethod')
  ALTER TABLE Location ADD PointPaymentMethod [d_PaymentMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_PointPaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_PointPaymentMethod]
GO

ALTER TABLE [dbo].[Location] ADD 
	CONSTRAINT [FK_Location_PointPaymentMethod] FOREIGN KEY
	(
		[PointPaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] 
	(
		[PaymentMethod]
	)
GO

/* The following DDL will add RoundingAccNo column to Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'RoundingAccNo')
  ALTER TABLE Location ADD RoundingAccNo [d_AccNo] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_RoundingAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_RoundingAccNo]
GO

ALTER TABLE [dbo].[Location] ADD 
	CONSTRAINT [FK_Location_RoundingAccNo] FOREIGN KEY
	(
		[RoundingAccNo]
	) REFERENCES [dbo].[GLMast] 
	(
		[AccNo]
	)
GO

/* The following DDL will add DepositAccNo column to Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'DepositAccNo')
  ALTER TABLE Location ADD DepositAccNo [d_AccNo] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_DepositAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_DepositAccNo]
GO

ALTER TABLE [dbo].[Location] ADD 
	CONSTRAINT [FK_Location_DepositAccNo] FOREIGN KEY
	(
		[DepositAccNo]
	) REFERENCES [dbo].[GLMast] 
	(
		[AccNo]
	)
GO

UPDATE REGISTRY SET RegValue = '1.0.9.11' WHERE RegID = 2
GO
�/* The following will add table to support UnrealizedGainLoss for G/L account*/

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UnrealizedGainLossGLAccount]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[UnrealizedGainLossGLAccount](
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[UnrealizedGainLossKey] [bigint] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[RevalueRate] [d_CurrencyRate] NOT NULL,
	[Balance] [d_Money] NOT NULL,
	[NewHomeBalance] [d_Money] NOT NULL,
	[HomeBalance] [d_Money] NOT NULL,
	[GainLoss] [d_Money] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossGLAccount_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossGLAccount] DROP CONSTRAINT [FK_UnrealizedGainLossGLAccount_AccNo]
GO

ALTER TABLE [dbo].[UnrealizedGainLossGLAccount] WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossGLAccount_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[UnrealizedGainLossGLAccount] CHECK CONSTRAINT [FK_UnrealizedGainLossGLAccount_AccNo]
GO

/* The following will add table to support FCRevalue for G/L account*/

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FCRevalueGLAccount]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[FCRevalueGLAccount](
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[FCRevalueKey] [bigint] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[RevalueRate] [d_CurrencyRate] NOT NULL,
	[Balance] [d_Money] NOT NULL,
	[NewHomeBalance] [d_Money] NOT NULL,
	[HomeBalance] [d_Money] NOT NULL,
	[GainLoss] [d_Money] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FCRevalueGLAccount_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[FCRevalueGLAccount] DROP CONSTRAINT [FK_FCRevalueGLAccount_AccNo]
GO

ALTER TABLE [dbo].[FCRevalueGLAccount] WITH CHECK ADD  CONSTRAINT [FK_FCRevalueGLAccount_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[FCRevalueGLAccount] CHECK CONSTRAINT [FK_FCRevalueGLAccount_AccNo]
GO

/* The following DDL will add ForfeitedAccNo column to Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'ForfeitedAccNo')
  ALTER TABLE Location ADD ForfeitedAccNo [d_AccNo] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_ForfeitedAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_ForfeitedAccNo]
GO

ALTER TABLE [dbo].[Location] ADD 
	CONSTRAINT [FK_Location_ForfeitedAccNo] FOREIGN KEY
	(
		[ForfeitedAccNo]
	) REFERENCES [dbo].[GLMast] 
	(
		[AccNo]
	)
GO

UPDATE REGISTRY SET RegValue = '1.0.9.12' WHERE RegID = 2
GO
0
/* The following DDL will add GLGainAccount, GLLossAccount column to UnrealizedGainLoss and UnrealizedGainLossRate table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLoss]') and name = N'GLGainAccount')
  ALTER TABLE UnrealizedGainLoss ADD GLGainAccount [d_AccNo] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLoss]') and name = N'GLLossAccount')
  ALTER TABLE UnrealizedGainLoss ADD GLLossAccount [d_AccNo] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLossRate]') and name = N'GLGainAccount')
  ALTER TABLE UnrealizedGainLossRate ADD GLGainAccount [d_AccNo] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLossRate]') and name = N'GLLossAccount')
  ALTER TABLE UnrealizedGainLossRate ADD GLLossAccount [d_AccNo] NULL
GO

/* FK_UnrealizedGainLoss_GLGainAccount */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLoss_GLGainAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLoss] DROP CONSTRAINT [FK_UnrealizedGainLoss_GLGainAccount]
GO

ALTER TABLE [dbo].[UnrealizedGainLoss] WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_GLGainAccount] FOREIGN KEY([GLGainAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_GLGainAccount]
GO

/* FK_UnrealizedGainLoss_GLLossAccount */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLoss_GLLossAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLoss] DROP CONSTRAINT [FK_UnrealizedGainLoss_GLLossAccount]
GO

ALTER TABLE [dbo].[UnrealizedGainLoss] WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_GLLossAccount] FOREIGN KEY([GLLossAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_GLLossAccount]
GO

/* FK_UnrealizedGainLossRate_GLGainAccount */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossRate_GLGainAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossRate] DROP CONSTRAINT [FK_UnrealizedGainLossRate_GLGainAccount]
GO

ALTER TABLE [dbo].[UnrealizedGainLossRate] WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossRate_GLGainAccount] FOREIGN KEY([GLGainAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

ALTER TABLE [dbo].[UnrealizedGainLossRate] CHECK CONSTRAINT [FK_UnrealizedGainLossRate_GLGainAccount]
GO

/* FK_UnrealizedGainLossRate_GLLossAccount */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossRate_GLLossAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossRate] DROP CONSTRAINT [FK_UnrealizedGainLossRate_GLLossAccount]
GO

ALTER TABLE [dbo].[UnrealizedGainLossRate] WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossRate_GLLossAccount] FOREIGN KEY([GLLossAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

ALTER TABLE [dbo].[UnrealizedGainLossRate] CHECK CONSTRAINT [FK_UnrealizedGainLossRate_GLLossAccount]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.13' WHERE RegID = 2
GO
�/* The following DDL will add JEKey2, DocNo2 column to UnrealizedGainLoss table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLoss]') and name = N'JEKey2')
  ALTER TABLE UnrealizedGainLoss ADD JEKey2 [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLoss]') and name = N'DocNo2')
  ALTER TABLE UnrealizedGainLoss ADD DocNo2 [d_DocNo] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'POSMainPage')
  ALTER TABLE Users ADD POSMainPage [ntext] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.14' WHERE RegID = 2
GO
�/* The following will add BranchCode to A/R and A/P Documents, and add columns to TaxType, TaxTrans, IV, CS, DN, ISS */

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

INSERT @ListTable VALUES('ARInvoice', 'BranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('ARDN', 'BranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('ARCN', 'BranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('ARPayment', 'BranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('ARRefund', 'BranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('APInvoice', 'BranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('APDN', 'BranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('APCN', 'BranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('APPayment', 'BranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('APRefund', 'BranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('ARAPContra', 'DebtorBranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('ARAPContra', 'CreditorBranchCode', '[d_BranchCode] NULL', 'A')
INSERT @ListTable VALUES('TaxType', 'IRASTaxCode', '[varchar] (8) NULL', 'A')
INSERT @ListTable VALUES('TaxTrans', 'SourceDtlKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('TaxTrans', 'Seq', '[int] NULL', 'A')
INSERT @ListTable VALUES('IV', 'ReallocatePurchaseByProjectNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('CS', 'ReallocatePurchaseByProjectNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('DN', 'ReallocatePurchaseByProjectNo', '[d_Project] NULL', 'A')
INSERT @ListTable VALUES('ISS', 'ReallocatePurchaseByProjectNo', '[d_Project] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* The following will add foreign key to A/R and A/P's BranchCode */

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName1 nvarchar(40), ColumnName2 nvarchar(40))

INSERT @ListTable VALUES('ARInvoice', 'DebtorCode', 'BranchCode')
INSERT @ListTable VALUES('ARDN', 'DebtorCode', 'BranchCode')
INSERT @ListTable VALUES('ARCN', 'DebtorCode', 'BranchCode')
INSERT @ListTable VALUES('ARPayment', 'DebtorCode', 'BranchCode')
INSERT @ListTable VALUES('ARRefund', 'DebtorCode', 'BranchCode')
INSERT @ListTable VALUES('APInvoice', 'CreditorCode', 'BranchCode')
INSERT @ListTable VALUES('APDN', 'CreditorCode', 'BranchCode')
INSERT @ListTable VALUES('APCN', 'CreditorCode', 'BranchCode')
INSERT @ListTable VALUES('APPayment', 'CreditorCode', 'BranchCode')
INSERT @ListTable VALUES('APRefund', 'CreditorCode', 'BranchCode')
INSERT @ListTable VALUES('ARAPContra', 'DebtorCode', 'DebtorBranchCode')
INSERT @ListTable VALUES('ARAPContra', 'CreditorCode', 'CreditorBranchCode')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName1  NVARCHAR(40)
DECLARE @colName2  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName1, ColumnName2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName1, @colName2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[FK_' + @tableName + '_' + @colName2 + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [FK_' + @tableName + '_' + @colName2 + ']'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
	CLOSE @cur_Item
	DEALLOCATE @cur_Item
	RETURN
  END

  set @sql = 'ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT [FK_' + @tableName + '_' + @colName2 + '] FOREIGN KEY([' + @colName1 + '], [' + @colName2 + ']) REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
	CLOSE @cur_Item
	DEALLOCATE @cur_Item
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName1, @colName2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* The following will add foreign key to IV, CS, DN, ISS's ReallocatePurchaseByProjectNo */

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName1 nvarchar(40))

INSERT @ListTable VALUES('IV', 'ReallocatePurchaseByProjectNo')
INSERT @ListTable VALUES('CS', 'ReallocatePurchaseByProjectNo')
INSERT @ListTable VALUES('DN', 'ReallocatePurchaseByProjectNo')
INSERT @ListTable VALUES('ISS', 'ReallocatePurchaseByProjectNo')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName1  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName1 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName1

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[FK_' + @tableName + '_' + @colName1 + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [FK_' + @tableName + '_' + @colName1 + ']'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
	CLOSE @cur_Item
	DEALLOCATE @cur_Item
	RETURN
  END

  set @sql = 'ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT [FK_' + @tableName + '_' + @colName1 + '] FOREIGN KEY([' + @colName1 + ']) REFERENCES [dbo].[Project] ([ProjNo]) ON UPDATE CASCADE'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
	CLOSE @cur_Item
	DEALLOCATE @cur_Item
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName1
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.15' WHERE RegID = 2
GO
//* The following will add TaxPermitNo to APInvoiceDTL, APDNDTL, CBDTL, JEDTL, CPDTL, PIDTL, PRDTL */

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

INSERT @ListTable VALUES('APInvoiceDTL', 'TaxPermitNo', '[nvarchar] (20) NULL', 'A')
INSERT @ListTable VALUES('APDNDTL', 'TaxPermitNo', '[nvarchar] (20) NULL', 'A')
INSERT @ListTable VALUES('APCNDTL', 'TaxPermitNo', '[nvarchar] (20) NULL', 'A')
INSERT @ListTable VALUES('CBDTL', 'TaxPermitNo', '[nvarchar] (20) NULL', 'A')
INSERT @ListTable VALUES('JEDTL', 'TaxPermitNo', '[nvarchar] (20) NULL', 'A')
INSERT @ListTable VALUES('CPDTL', 'TaxPermitNo', '[nvarchar] (20) NULL', 'A')
INSERT @ListTable VALUES('PIDTL', 'TaxPermitNo', '[nvarchar] (20) NULL', 'A')
INSERT @ListTable VALUES('PRDTL', 'TaxPermitNo', '[nvarchar] (20) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* The following will add table to support Activity Stream */

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Activity]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[Activity](
	[ActivityKey] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[ActivityDateTime] [datetime] NOT NULL,
	[EventKey] [bigint] NULL,
	[UserID] [d_UserID] NULL,
	[ComputerName] [nvarchar] (20) NULL,
	[DocType] [d_DocType] NULL,
	[DocKey] [bigint] NULL,
	[Description] [nvarchar] (100) NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Activity_UserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Activity] DROP CONSTRAINT [FK_Activity_UserID]
GO

ALTER TABLE [dbo].[Activity] WITH CHECK ADD  CONSTRAINT [FK_Activity_UserID] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
GO

/* The following will add table to support Comment */

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Comment_UserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Comment] DROP CONSTRAINT [FK_Comment_UserID]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Comment]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[Comment](
	[CommentKey] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[CommentType] [tinyint] NOT NULL,
	[CommentDateTime] [datetime] NOT NULL,
	[UserID] [d_UserID] NULL,
	[DocType] [d_DocType] NULL,
	[DocKey] [bigint] NULL,
	[Comment] [ntext] NULL,
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Comment] WITH CHECK ADD  CONSTRAINT [FK_Comment_UserID] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
GO

UPDATE REGISTRY SET RegValue = '1.0.9.16' WHERE RegID = 2
GO
�/* Add SalesCreditLimitIncrementPercentage, SalesOverdueLimitIncrementPercentage to Users table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'SalesCreditLimitIncrementPercentage')
  ALTER TABLE Users ADD SalesCreditLimitIncrementPercentage [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'SalesOverdueLimitIncrementPercentage')
  ALTER TABLE Users ADD SalesOverdueLimitIncrementPercentage [d_Money] NULL
GO

/* Add PurchaseCreditLimitIncrementPercentage, PurchaseOverdueLimitIncrementPercentage to Users table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'PurchaseCreditLimitIncrementPercentage')
  ALTER TABLE Users ADD PurchaseCreditLimitIncrementPercentage [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'PurchaseOverdueLimitIncrementPercentage')
  ALTER TABLE Users ADD PurchaseOverdueLimitIncrementPercentage [d_Money] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.17' WHERE RegID = 2
GO
.N/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(40), AddDelete nvarchar(1))

/* The following DDL will modify GL Tables to suite to new rounding method */
INSERT @ListTable VALUES('CB', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CB', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CBDTL', 'LocalTax', '[d_Money] NULL', 'A')

/* The following DDL will modify AR and AP Tables to suite to new rounding method */
INSERT @ListTable VALUES('ARInvoice', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARInvoice', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARInvoice', 'Total2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARInvoice', 'LocalTotal2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARInvoiceDTL', 'SubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARInvoiceDTL', 'LocalSubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARInvoiceDTL', 'LocalAmount', '[d_Money] NULL', 'D')
INSERT @ListTable VALUES('ARDN', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARDN', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARDN', 'Total2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARDN', 'LocalTotal2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARDNDTL', 'SubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARDNDTL', 'LocalSubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARDNDTL', 'LocalAmount', '[d_Money] NULL', 'D')
INSERT @ListTable VALUES('ARCN', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARCN', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARCN', 'Total2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARCN', 'LocalTotal2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARCNDTL', 'SubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARCNDTL', 'LocalSubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARCNDTL', 'LocalAmount', '[d_Money] NULL', 'D')
INSERT @ListTable VALUES('APInvoice', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APInvoice', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APInvoice', 'Total2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APInvoice', 'LocalTotal2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APInvoiceDTL', 'SubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APInvoiceDTL', 'LocalSubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APInvoiceDTL', 'LocalAmount', '[d_Money] NULL', 'D')
INSERT @ListTable VALUES('APDN', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APDN', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APDN', 'Total2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APDN', 'LocalTotal2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APDNDTL', 'SubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APDNDTL', 'LocalSubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APDNDTL', 'LocalAmount', '[d_Money] NULL', 'D')
INSERT @ListTable VALUES('APCN', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APCN', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APCN', 'Total2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APCN', 'LocalTotal2', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APCNDTL', 'SubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APCNDTL', 'LocalSubTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APCNDTL', 'LocalAmount', '[d_Money] NULL', 'D')
INSERT @ListTable VALUES('ARPayment', 'LocalBankAmt', '[d_Money] NULL', 'D')
INSERT @ListTable VALUES('ARPayment', 'ReferCNDocKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARPayment', 'ReferCNDocDate', '[datetime] NULL', 'A')
INSERT @ListTable VALUES('ARPaymentDTL', 'LocalPaymentAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARPaymentKnockOff', 'DiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARRefund', 'LocalBankAmt', '[d_Money] NULL', 'D')
INSERT @ListTable VALUES('ARRefundDTL', 'LocalPaymentAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APPayment', 'LocalBankAmt', '[d_Money] NULL', 'D')
INSERT @ListTable VALUES('APPayment', 'ReferCNDocKey', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APPayment', 'ReferCNDocDate', '[datetime] NULL', 'A')
INSERT @ListTable VALUES('APPayment', 'ReferCNDocNo', '[d_DocNo] NULL', 'A')
INSERT @ListTable VALUES('APPaymentDTL', 'LocalPaymentAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APPaymentKnockOff', 'DiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APRefund', 'LocalBankAmt', '[d_Money] NULL', 'D')
INSERT @ListTable VALUES('APRefundDTL', 'LocalPaymentAmt', '[d_Money] NULL', 'A')

/* The following DDL will modify Sales and Purchase Tables to suite to new rounding method */
INSERT @ListTable VALUES('QT', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('QT', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('QT', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('QT', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('QT', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('QT', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('QT', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('QT', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('QTDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('QTDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SO', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SO', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SO', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SO', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SO', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SO', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SO', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SO', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SODTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SODTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DO', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DO', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DO', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DO', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DO', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DO', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DO', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DO', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DODTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DODTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CN', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CN', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CN', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CN', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CN', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CN', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CN', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CN', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DN', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DN', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DN', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DN', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DN', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DN', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DN', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DN', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XS', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XS', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XS', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XS', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XS', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XS', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XS', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XS', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XSDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XSDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DR', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DR', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DR', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DR', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DR', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DR', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DR', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DR', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DRDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DRDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PODTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PODTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GRDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GRDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PIDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PIDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CPDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CPDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PRDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PRDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XPDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XPDTL', 'LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'Footer1Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'Footer1LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'Footer2Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'Footer2LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'Footer3Tax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'Footer3LocalTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'ExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'LocalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GTDTL', 'SubTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GTDTL', 'LocalTax', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(200)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(40)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* The following DDL will modify ASMOrder and ASM to implement Multi-Level Stock Assembly */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrder]') and name = N'IsMultilevel')
  ALTER TABLE [dbo].[ASMOrder] 
    ADD [IsMultilevel][d_Boolean] NULL
GO

if (select count(*) from ASMOrder where IsMultiLevel is null) > 0 
  UPDATE ASMOrder SET IsMultiLevel = 'F' WHERE IsMultiLevel is null
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDtl]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[ASMOrderDtl] 
    ADD [ParentDtlKey][bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDtl]') and name = N'IsBOMItem')
  ALTER TABLE [dbo].[ASMOrderDtl] 
    ADD [IsBOMItem][d_Boolean] NULL
GO

if (select count(*) from ASMOrderDtl where IsBOMItem is null) > 0 
	UPDATE ASMOrderDtl SET IsBOMItem = 'F' WHERE IsBOMItem is null
GO

-------------------------------------------------------------------

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASM]') and name = N'IsMultilevel')
  ALTER TABLE [dbo].[ASM] 
    ADD [IsMultilevel][d_Boolean] NULL
GO

if (select count(*) from ASM where IsMultiLevel is null) > 0 
	UPDATE ASM SET IsMultiLevel = 'F' WHERE IsMultiLevel is null
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMDtl]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[ASMDtl] 
    ADD [ParentDtlKey][bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMDtl]') and name = N'IsBOMItem')
  ALTER TABLE [dbo].[ASMDtl] 
    ADD [IsBOMItem][d_Boolean] NULL
GO

if (select count(*) from ASMDtl where IsBOMItem is null) > 0 
	UPDATE ASMDtl SET IsBOMItem = 'F' WHERE IsBOMItem is null
GO

UPDATE REGISTRY SET RegValue = '1.0.9.0' WHERE RegID = 2
GO
v/* The following DDL will add BatchNo column to PriceBookRule table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'TransferPOQty')
  ALTER TABLE [dbo].[ASMOrderDTL] 
    ADD [TransferPOQty] [d_Qty] NULL
GO

/* The following DDL will alter the Header column of Notification to ntext type */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Notification]') and name = N'Header' and prec is not null)
  ALTER TABLE [dbo].[Notification] 
    ALTER COLUMN [Header] [ntext] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.1' WHERE RegID = 2
GO
�
/* The following DDL will add ItemSubCode to support additional item codes */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemSubCode]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE ItemSubCode
	(
		[ItemCode] [d_ItemCode] NOT NULL,
		[SubCode] [d_ItemCode] NOT NULL,
		CONSTRAINT [PK_ItemSubCode] PRIMARY KEY (ItemCode, SubCode)
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemSubCode_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemSubCode] DROP CONSTRAINT [FK_ItemSubCode_ItemCode]
GO

ALTER TABLE [dbo].[ItemSubCode] ADD 
	CONSTRAINT [FK_ItemSubCode_ItemCode] FOREIGN KEY
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] 
	(
		[ItemCode]
	)
GO

/* The following DDL will add AreaCode column to Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'AreaCode')
	ALTER TABLE Location ADD AreaCode [d_AreaCode] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_AreaCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_AreaCode]
GO

ALTER TABLE [dbo].[Location] ADD 
	CONSTRAINT [FK_Location_AreaCode] FOREIGN KEY
	(
		[AreaCode]
	) REFERENCES [dbo].[Area] 
	(
		[AreaCode]
	) ON UPDATE CASCADE
GO

/* The following DDL will add GoodsReturn column to CNDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'GoodsReturn')
	ALTER TABLE CNDTL ADD GoodsReturn [d_Boolean] NULL
GO

UPDATE CNDTL
SET GoodsReturn='T'
WHERE ItemCode IS NOT NULL
GO

/* The following DDL will add GoodsReturn column to PRDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRDTL]') and name = N'GoodsReturn')
	ALTER TABLE PRDTL ADD GoodsReturn [d_Boolean] NULL
GO

UPDATE PRDTL
SET GoodsReturn='T'
WHERE ItemCode IS NOT NULL
GO

/* The following DDL will add CNAmt column to GRDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GRDTL]') and name = N'CNAmt')
	ALTER TABLE GRDTL ADD CNAmt [d_Money] NULL
GO

/* The following DDL will add CNAmt column to PIDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PIDTL]') and name = N'CNAmt')
	ALTER TABLE PIDTL ADD CNAmt [d_Money] NULL
GO

/* The following DDL will add CNAmt column to CPDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CPDTL]') and name = N'CNAmt')
	ALTER TABLE CPDTL ADD CNAmt [d_Money] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.10' WHERE RegID = 2
GO
q/* The following DDL will add YourPONo, YourPODate column to CNDTL and DNDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'YourPONo')
  ALTER TABLE [dbo].[CNDTL] 
    ADD [YourPONo] [d_YourPONo] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'YourPODate')
  ALTER TABLE [dbo].[CNDTL] 
    ADD [YourPODate] [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'YourPONo')
  ALTER TABLE [dbo].[DNDTL] 
    ADD [YourPONo] [d_YourPONo] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'YourPODate')
  ALTER TABLE [dbo].[DNDTL] 
    ADD [YourPODate] [datetime] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.2' WHERE RegID = 2
GO
/*
   Thursday, July 05, 20073:04:06 PM
   User: 
   Server: CCP-PC\A2006
   Database: AED_A
   Application: 

   Description: Change ItemOpening table ItemOpeningKey column to bigint.
*/

/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
GO

ALTER TABLE dbo.ItemPrice
	DROP CONSTRAINT FK_ItemPrice_AccNo
GO

ALTER TABLE dbo.ItemPrice
	DROP CONSTRAINT FK_ItemPrice_PriceCategory
GO

ALTER TABLE dbo.ItemOpening
	DROP CONSTRAINT FK_ItemOpening_ItemBatch
GO

ALTER TABLE dbo.ItemOpening
	DROP CONSTRAINT FK_ItemOpening_Location
GO

ALTER TABLE dbo.ItemPrice
	DROP CONSTRAINT FK_ItemPrice_ItemUOM
GO

ALTER TABLE dbo.ItemOpening
	DROP CONSTRAINT FK_ItemOpening_ItemUOM
GO

ALTER TABLE dbo.ItemPrice WITH NOCHECK ADD CONSTRAINT
	FK_ItemPrice_ItemUOM FOREIGN KEY
	(
	ItemCode,
	UOM
	) REFERENCES dbo.ItemUOM
	(
	ItemCode,
	UOM
	)
GO

ALTER TABLE dbo.ItemPrice WITH NOCHECK ADD CONSTRAINT
	FK_ItemPrice_PriceCategory FOREIGN KEY
	(
	PriceCategory
	) REFERENCES dbo.PriceCategory
	(
	PriceCategory
	) ON UPDATE CASCADE
	
GO

ALTER TABLE dbo.ItemPrice WITH NOCHECK ADD CONSTRAINT
	FK_ItemPrice_AccNo FOREIGN KEY
	(
	AccNo
	) REFERENCES dbo.GLMast
	(
	AccNo
	)
GO

CREATE TABLE dbo.Tmp_ItemOpening
	(
	ItemOpeningKey bigint NOT NULL,
	ItemCode d_ItemCode NOT NULL,
	UOM d_UOM NOT NULL,
	Location d_Location NOT NULL,
	BatchNo d_BatchNo NULL,
	Seq int NOT NULL,
	Qty d_Qty NOT NULL,
	Cost d_Cost NOT NULL,
	LastUpdate int NOT NULL
	)  ON [PRIMARY]
GO

IF EXISTS(SELECT * FROM dbo.ItemOpening)
	 EXEC('INSERT INTO dbo.Tmp_ItemOpening (ItemOpeningKey, ItemCode, UOM, Location, BatchNo, Seq, Qty, Cost, LastUpdate)
		SELECT Convert(bigint, ItemOpeningKey), ItemCode, UOM, Location, BatchNo, Seq, Qty, Cost, LastUpdate FROM dbo.ItemOpening WITH (HOLDLOCK TABLOCKX)')
GO

DROP TABLE dbo.ItemOpening
GO

EXECUTE sp_rename N'dbo.Tmp_ItemOpening', N'ItemOpening', 'OBJECT' 
GO

ALTER TABLE dbo.ItemOpening ADD CONSTRAINT
	PK__ItemOpening__37A5467C PRIMARY KEY NONCLUSTERED 
	(
	ItemOpeningKey
	) ON [PRIMARY]

GO

CREATE NONCLUSTERED INDEX IX_ItemOpening ON dbo.ItemOpening
	(
	ItemCode,
	UOM,
	Location,
	BatchNo,
	Seq
	) ON [PRIMARY]
GO

ALTER TABLE dbo.ItemOpening WITH NOCHECK ADD CONSTRAINT
	FK_ItemOpening_ItemUOM FOREIGN KEY
	(
	ItemCode,
	UOM
	) REFERENCES dbo.ItemUOM
	(
	ItemCode,
	UOM
	)
GO

ALTER TABLE dbo.ItemOpening WITH NOCHECK ADD CONSTRAINT
	FK_ItemOpening_Location FOREIGN KEY
	(
	Location
	) REFERENCES dbo.Location
	(
	Location
	)
GO

ALTER TABLE dbo.ItemOpening WITH NOCHECK ADD CONSTRAINT
	FK_ItemOpening_ItemBatch FOREIGN KEY
	(
	ItemCode,
	BatchNo
	) REFERENCES dbo.ItemBatch
	(
	ItemCode,
	BatchNo
	)
GO

/*
   Thursday, July 05, 20073:02:06 PM
   User: 
   Server: CCP-PC\A2006
   Database: AED_A
   Application: 

   Description: Change ItemPrice table ItemPriceKey column to bigint.
*/

/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON

ALTER TABLE dbo.ItemPrice
	DROP CONSTRAINT FK_ItemPrice_AccNo
GO

ALTER TABLE dbo.ItemPrice
	DROP CONSTRAINT FK_ItemPrice_PriceCategory
GO

ALTER TABLE dbo.ItemPrice
	DROP CONSTRAINT FK_ItemPrice_ItemUOM
GO

CREATE TABLE dbo.Tmp_ItemPrice
	(
	ItemPriceKey bigint NOT NULL,
	ItemCode d_ItemCode NOT NULL,
	UOM d_UOM NOT NULL,
	PriceCategory d_PriceCategory NULL,
	AccNo d_AccNo NULL,
	SuppCustItemCode d_ItemCode NULL,
	Ref nvarchar(80) NULL,
	UseFixedPrice d_Boolean NOT NULL,
	FixedPrice d_Price NULL,
	FixedDetailDiscount nvarchar(20) NULL,
	Qty1 d_Qty NULL,
	Price1 d_Price NULL,
	DetailDiscount1 nvarchar(20) NULL,
	Qty2 d_Qty NULL,
	Price2 d_Price NULL,
	DetailDiscount2 nvarchar(20) NULL,
	Qty3 d_Qty NULL,
	Price3 d_Price NULL,
	DetailDiscount3 nvarchar(20) NULL,
	Qty4 d_Qty NULL,
	Price4 d_Price NULL,
	DetailDiscount4 nvarchar(20) NULL,
	FOCLevel d_Qty NULL,
	FOCQty d_Qty NULL,
	BonusPointQty d_Qty NULL,
	BonusPoint int NULL,
	LastUpdate int NOT NULL
	)  ON [PRIMARY]
GO

IF EXISTS(SELECT * FROM dbo.ItemPrice)
	 EXEC('INSERT INTO dbo.Tmp_ItemPrice (ItemPriceKey, ItemCode, UOM, PriceCategory, AccNo, SuppCustItemCode, Ref, UseFixedPrice, FixedPrice, FixedDetailDiscount, Qty1, Price1, DetailDiscount1, Qty2, Price2, DetailDiscount2, Qty3, Price3, DetailDiscount3, Qty4, Price4, DetailDiscount4, FOCLevel, FOCQty, BonusPointQty, BonusPoint, LastUpdate)
		SELECT Convert(bigint, ItemPriceKey), ItemCode, UOM, PriceCategory, AccNo, SuppCustItemCode, Ref, UseFixedPrice, FixedPrice, FixedDetailDiscount, Qty1, Price1, DetailDiscount1, Qty2, Price2, DetailDiscount2, Qty3, Price3, DetailDiscount3, Qty4, Price4, DetailDiscount4, FOCLevel, FOCQty, BonusPointQty, BonusPoint, LastUpdate FROM dbo.ItemPrice WITH (HOLDLOCK TABLOCKX)')
GO

DROP TABLE dbo.ItemPrice
GO

EXECUTE sp_rename N'dbo.Tmp_ItemPrice', N'ItemPrice', 'OBJECT' 
GO

ALTER TABLE dbo.ItemPrice ADD CONSTRAINT
	PK__ItemPrice__35BCFE0A PRIMARY KEY NONCLUSTERED 
	(
	ItemPriceKey
	) ON [PRIMARY]

GO

CREATE NONCLUSTERED INDEX IX_ItemPrice ON dbo.ItemPrice
	(
	ItemCode,
	UOM,
	PriceCategory,
	AccNo
	) ON [PRIMARY]
GO

ALTER TABLE dbo.ItemPrice WITH NOCHECK ADD CONSTRAINT
	FK_ItemPrice_ItemUOM FOREIGN KEY
	(
	ItemCode,
	UOM
	) REFERENCES dbo.ItemUOM
	(
	ItemCode,
	UOM
	)
GO

ALTER TABLE dbo.ItemPrice WITH NOCHECK ADD CONSTRAINT
	FK_ItemPrice_PriceCategory FOREIGN KEY
	(
	PriceCategory
	) REFERENCES dbo.PriceCategory
	(
	PriceCategory
	) ON UPDATE CASCADE
	
GO

ALTER TABLE dbo.ItemPrice WITH NOCHECK ADD CONSTRAINT
	FK_ItemPrice_AccNo FOREIGN KEY
	(
	AccNo
	) REFERENCES dbo.GLMast
	(
	AccNo
	)
GO

/* The following DDL will add Seq to ItemBOM table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemBOM]') and name = N'Seq')
  ALTER TABLE [dbo].[ItemBOM] 
    ADD [Seq] [int] NOT NULL DEFAULT -1
GO

DELETE FROM dbo.OBDTL
WHERE (ProjNo IS NOT NULL) AND (ProjNo NOT IN (SELECT ProjNo FROM Project))
GO

DELETE FROM dbo.OBDTL
WHERE (DeptNo IS NOT NULL) AND (DeptNo NOT IN (SELECT DeptNo FROM Dept))
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_OBDTL_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[OBDTL] DROP CONSTRAINT [FK_OBDTL_ProjNo]
GO

ALTER TABLE dbo.OBDTL WITH CHECK ADD CONSTRAINT
	FK_OBDTL_ProjNo FOREIGN KEY
	(
	ProjNo
	) REFERENCES dbo.Project
	(
	ProjNo
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_OBDTL_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[OBDTL] DROP CONSTRAINT [FK_OBDTL_DeptNo]
GO

ALTER TABLE dbo.OBDTL WITH CHECK ADD CONSTRAINT
	FK_OBDTL_DeptNo FOREIGN KEY
	(
	DeptNo
	) REFERENCES dbo.Dept
	(
	DeptNo
	)
GO

UPDATE REGISTRY SET RegValue = '1.0.9.3' WHERE RegID = 2
GO
�</* The following DDL will enlarge the size of RegisterNo column in Profile table to 25 */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'RegisterNo')
  ALTER TABLE [dbo].[Profile] 
    ALTER COLUMN [RegisterNo] [nvarchar] (25) NULL
GO

/* The following DDL will add UpdateProfileChangeCount trigger to Profile table */
if not exists (select * from dbo.ChangeCount where TableName = 'Profile')
insert into ChangeCount Values ('Profile', 1)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateProfileChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateProfileChangeCount]
GO

CREATE TRIGGER UpdateProfileChangeCount ON Profile
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Profile'
SET NOCOUNT OFF
GO

/* The following DDL will add InputCost column to StockDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'InputCost')
  ALTER TABLE [dbo].[StockDTL] 
    ADD [InputCost] [d_Cost] NOT NULL DEFAULT 0
GO

UPDATE [dbo].[StockDTL]
SET [InputCost]=[Cost]
GO

/* The following DDL will add HasPromoter column to Item table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'HasPromoter')
  ALTER TABLE [dbo].[Item] 
    ADD [HasPromoter] [d_Boolean] NOT NULL DEFAULT 'F'
GO

/* The following DDL will add ItemLocationPrice table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemLocationPrice]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE dbo.ItemLocationPrice
(
	[ItemCode] [d_ItemCode] NOT NULL,
	[UOM] [d_UOM] NOT NULL,
	[Location] [d_Location] NOT NULL,
	[Price] [d_Price] NULL,
	[LastUpdate] [int] NOT NULL,
)  ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_ItemLocationPrice]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[ItemLocationPrice] DROP CONSTRAINT [PK_ItemLocationPrice]
GO

ALTER TABLE dbo.ItemLocationPrice ADD CONSTRAINT
	PK_ItemLocationPrice PRIMARY KEY NONCLUSTERED 
	(
	[ItemCode], [UOM], [Location]
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemLocationPrice_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemLocationPrice] DROP CONSTRAINT [FK_ItemLocationPrice_ItemUOM]
GO

ALTER TABLE dbo.ItemLocationPrice WITH CHECK ADD CONSTRAINT
	FK_ItemLocationPrice_ItemUOM FOREIGN KEY
	(
	[ItemCode], [UOM]
	) REFERENCES dbo.ItemUOM
	(
	[ItemCode], [UOM]
	) ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemLocationPrice_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemLocationPrice] DROP CONSTRAINT [FK_ItemLocationPrice_Location]
GO

ALTER TABLE dbo.ItemLocationPrice WITH CHECK ADD CONSTRAINT
	FK_ItemLocationPrice_Location FOREIGN KEY
	(
	[Location]
	) REFERENCES dbo.Location
	(
	[Location]
	) ON UPDATE CASCADE
GO

/* The following DDL will add foreign key to AssetLink table */
DELETE FROM AssetLink WHERE (AssetAccNo NOT IN (SELECT AccNo FROM GLMAST WHERE SpecialAccType = 'SFA')) OR (AssetDeprnAccNo NOT IN (SELECT AccNo FROM GLMAST WHERE SpecialAccType = 'SAD'))
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AssetLink_AssetAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AssetLink] DROP CONSTRAINT [FK_AssetLink_AssetAccNo]
GO

ALTER TABLE dbo.AssetLink WITH CHECK ADD CONSTRAINT
	FK_AssetLink_AssetAccNo FOREIGN KEY
	(
	[AssetAccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AssetLink_AssetDeprnAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AssetLink] DROP CONSTRAINT [FK_AssetLink_AssetDeprnAccNo]
GO

ALTER TABLE dbo.AssetLink WITH CHECK ADD CONSTRAINT
	FK_AssetLink_AssetDeprnAccNo FOREIGN KEY
	(
	[AssetDeprnAccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add Foreign Key to CurrencyCode column in GLMast table */
UPDATE dbo.GLMast
SET CurrencyCode=(SELECT RegValue FROM Registry WHERE RegID=31)
WHERE AccNo IN
(
SELECT AccNo FROM dbo.GLMast WHERE CurrencyCode NOT IN (SELECT CurrencyCode FROM Currency)
)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GLMast_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[GLMast] DROP CONSTRAINT [FK_GLMast_CurrencyCode]
GO

ALTER TABLE dbo.GLMast WITH CHECK ADD CONSTRAINT
	FK_GLMast_CurrencyCode FOREIGN KEY
	(
	[CurrencyCode]
	) REFERENCES dbo.Currency
	(
	[CurrencyCode]
	)
GO

/* The following DDL will add Foreign Key to ItemType column in Item table */
UPDATE dbo.Item
SET ItemType=NULL WHERE ItemType IS NOT NULL AND ItemType NOT IN (SELECT ItemType FROM ItemType)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Item_ItemType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Item] DROP CONSTRAINT [FK_Item_ItemType]
GO

ALTER TABLE dbo.Item WITH NOCHECK ADD CONSTRAINT
	FK_Item_ItemType FOREIGN KEY
	(
	[ItemType]
	) REFERENCES dbo.ItemType
	(
	[ItemType]
	) ON UPDATE CASCADE
GO

/* Changes unique to new version only */

/* The following DDL will add BatchNo column to SODTL and PODTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'BatchNo')
  ALTER TABLE [dbo].[SODTL] 
    ADD [BatchNo] [d_BatchNo] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'BatchNo')
  ALTER TABLE [dbo].[PODTL] 
    ADD [BatchNo] [d_BatchNo] NULL
GO

/* The following DDL will add GlobalCode to Item table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'GlobalCode')
  ALTER TABLE [dbo].[Item] 
    ADD [GlobalCode] [d_ItemCode] NULL
GO

/* The following DDL will add ItemCurrencyPrice table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemCurrencyPrice]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE dbo.ItemCurrencyPrice
(
	[ItemCode] [d_ItemCode] NOT NULL,
	[UOM] [d_UOM] NOT NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[Price] [d_Price] NULL,
	[LastUpdate] [int] NOT NULL,
)  ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_ItemCurrencyPrice]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[ItemCurrencyPrice] DROP CONSTRAINT [PK_ItemCurrencyPrice]
GO

ALTER TABLE dbo.ItemCurrencyPrice ADD CONSTRAINT
	PK_ItemCurrencyPrice PRIMARY KEY NONCLUSTERED 
	(
	[ItemCode], [UOM], [CurrencyCode]
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemCurrencyPrice_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemCurrencyPrice] DROP CONSTRAINT [FK_ItemCurrencyPrice_ItemUOM]
GO

ALTER TABLE dbo.ItemCurrencyPrice WITH CHECK ADD CONSTRAINT
	FK_ItemCurrencyPrice_ItemUOM FOREIGN KEY
	(
	[ItemCode], [UOM]
	) REFERENCES dbo.ItemUOM
	(
	[ItemCode], [UOM]
	) ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemCurrencyPrice_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemCurrencyPrice] DROP CONSTRAINT [FK_ItemCurrencyPrice_CurrencyCode]
GO

ALTER TABLE dbo.ItemCurrencyPrice WITH CHECK ADD CONSTRAINT
	FK_ItemCurrencyPrice_CurrencyCode FOREIGN KEY
	(
	[CurrencyCode]
	) REFERENCES dbo.Currency
	(
	[CurrencyCode]
	) ON UPDATE CASCADE
GO

/* The following DDL will add ItemBrand and ItemModel to Item table */
if not exists (select * from dbo.systypes where name = N'd_ItemBrand')
  EXEC sp_addtype N'd_ItemBrand', N'nvarchar (20)'
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Item_ItemBrand]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Item] DROP CONSTRAINT [FK_Item_ItemBrand]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Item_ItemModel]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Item] DROP CONSTRAINT [FK_Item_ItemModel]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemBrand]'))
DROP TABLE [dbo].[ItemBrand]
GO

CREATE TABLE dbo.ItemBrand
(
	[ItemBrand] [d_ItemBrand] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL,
	[Note] [ntext] NULL,
	[LastUpdate] [int] NOT NULL,
	[MarkupRatio] [d_Percent] NULL,
)  ON [PRIMARY]
GO

ALTER TABLE dbo.ItemBrand ADD CONSTRAINT
	PK_ItemBrand PRIMARY KEY NONCLUSTERED 
	(
	ItemBrand
	) ON [PRIMARY]
GO

if not exists (select * from dbo.systypes where name = N'd_ItemModel')
  EXEC sp_addtype N'd_ItemModel', N'nvarchar (20)'
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemModel]'))
DROP TABLE [dbo].[ItemModel]
GO

CREATE TABLE dbo.ItemModel
(
	[ItemModel] [d_ItemModel] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL,
	[Note] [ntext] NULL,
	[LastUpdate] [int] NOT NULL,
	[MarkupRatio] [d_Percent] NULL,
)  ON [PRIMARY]
GO

ALTER TABLE dbo.ItemModel ADD CONSTRAINT
	PK_ItemModel PRIMARY KEY NONCLUSTERED 
	(
	ItemModel
	) ON [PRIMARY]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'ItemBrand')
  ALTER TABLE [dbo].[Item] 
    ADD [ItemBrand] [d_ItemBrand] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'ItemModel')
  ALTER TABLE [dbo].[Item] 
    ADD [ItemModel] [d_ItemModel] NULL
GO

ALTER TABLE dbo.Item WITH CHECK ADD CONSTRAINT
	FK_Item_ItemBrand FOREIGN KEY
	(
	[ItemBrand]
	) REFERENCES dbo.ItemBrand
	(
	[ItemBrand]
	) ON UPDATE CASCADE
GO

ALTER TABLE dbo.Item WITH CHECK ADD CONSTRAINT
	FK_Item_ItemModel FOREIGN KEY
	(
	[ItemModel]
	) REFERENCES dbo.ItemModel
	(
	[ItemModel]
	) ON UPDATE CASCADE
GO

/* The following DDL will add PWP and PWPDTL to implement Purchase With Purchase function */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PWP]'))
DROP TABLE [dbo].[PWP]
GO

CREATE TABLE dbo.PWP
(
	PWPKey bigint NOT NULL,
	FromDateTime datetime NULL,
	ToDateTime datetime NULL,
	ItemCode d_ItemCode NULL,
	UOM d_UOM NULL,
	PurchasedQty d_Qty NULL,
	PurchasedAmount d_Money NULL,
	IsActive d_Boolean NOT NULL
)  ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PWP_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PWP] DROP CONSTRAINT [FK_PWP_ItemUOM]
GO

ALTER TABLE dbo.PWP WITH CHECK ADD CONSTRAINT
	FK_PWP_ItemUOM FOREIGN KEY
	(
	[ItemCode], [UOM]
	) REFERENCES dbo.ItemUOM
	(
	[ItemCode], [UOM]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PWPDTL]'))
DROP TABLE [dbo].[PWPDTL]
GO

CREATE TABLE dbo.PWPDTL
(
	PWPDtlKey bigint NOT NULL,
	Seq int NOT NULL,
	PWPKey bigint NOT NULL,
	ItemCode d_ItemCode NULL,
	UOM d_UOM NULL,
	IsFOC d_Boolean NOT NULL,
	Qty d_Qty NOT NULL,
	UnitPrice d_Price NULL,
	Discount d_Discount NULL,
)  ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PWPDTL_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PWPDTL] DROP CONSTRAINT [FK_PWPDTL_ItemUOM]
GO

ALTER TABLE dbo.PWPDTL WITH CHECK ADD CONSTRAINT
	FK_PWPDTL_ItemUOM FOREIGN KEY
	(
	[ItemCode], [UOM]
	) REFERENCES dbo.ItemUOM
	(
	[ItemCode], [UOM]
	)
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(40), AddDelete nvarchar(1))

/* The following DDL will modify Sales and Purchase Tables to add in YourPONo and YourPODate to master table */
INSERT @ListTable VALUES('SO', 'YourPONo', '[d_YourPONo] NULL', 'A')
INSERT @ListTable VALUES('SO', 'YourPODate', '[datetime] NULL', 'A')
INSERT @ListTable VALUES('DO', 'YourPONo', '[d_YourPONo] NULL', 'A')
INSERT @ListTable VALUES('DO', 'YourPODate', '[datetime] NULL', 'A')
INSERT @ListTable VALUES('IV', 'YourPONo', '[d_YourPONo] NULL', 'A')
INSERT @ListTable VALUES('IV', 'YourPODate', '[datetime] NULL', 'A')
INSERT @ListTable VALUES('CS', 'YourPONo', '[d_YourPONo] NULL', 'A')
INSERT @ListTable VALUES('CS', 'YourPODate', '[datetime] NULL', 'A')
INSERT @ListTable VALUES('DN', 'YourPONo', '[d_YourPONo] NULL', 'A')
INSERT @ListTable VALUES('DN', 'YourPODate', '[datetime] NULL', 'A')
INSERT @ListTable VALUES('CN', 'YourPONo', '[d_YourPONo] NULL', 'A')
INSERT @ListTable VALUES('CN', 'YourPODate', '[datetime] NULL', 'A')
INSERT @ListTable VALUES('XS', 'YourPONo', '[d_YourPONo] NULL', 'A')
INSERT @ListTable VALUES('XS', 'YourPODate', '[datetime] NULL', 'A')
INSERT @ListTable VALUES('DR', 'YourPONo', '[d_YourPONo] NULL', 'A')
INSERT @ListTable VALUES('DR', 'YourPODate', '[datetime] NULL', 'A')

DECLARE @sql NVARCHAR(200)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(40)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* The following DDL will add PaymentMode, CashPayment, and CCApprovalCode to CP table to support new Cash Purchase function */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CP]') and name = N'PaymentMode')
  ALTER TABLE [dbo].[CP] 
    ADD [PaymentMode] [tinyint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CP]') and name = N'CashPayment')
  ALTER TABLE [dbo].[CP] 
    ADD [CashPayment] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CP]') and name = N'CCApprovalCode')
  ALTER TABLE [dbo].[CP] 
    ADD [CCApprovalCode] [nvarchar] (10) NULL
GO

/* The following DDL will add BankSlipNo column to BankTrans table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BankTrans]') and name = N'BankSlipNo')
  ALTER TABLE [dbo].[BankTrans] 
    ADD [BankSlipNo] [nvarchar] (20) NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.4' WHERE RegID = 2
GO
�/* The following DDL will enlarge the size of RegisterNo column in Debtor and Creditor table to 25 */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'RegisterNo')
  ALTER TABLE [dbo].[Debtor] 
    ALTER COLUMN [RegisterNo] [nvarchar] (25) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'RegisterNo')
  ALTER TABLE [dbo].[Creditor] 
    ALTER COLUMN [RegisterNo] [nvarchar] (25) NULL
GO

/* The following DDL will add GridListingFilter table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GridListingFilter]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE dbo.GridListingFilter
(
	[FilterName] [nvarchar] (40) NOT NULL,
	[Template] [ntext] NULL,
	[IsDefault] [d_Boolean] NOT NULL,
)  ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_GridListingFilter]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[GridListingFilter] DROP CONSTRAINT [PK_GridListingFilter]
GO

ALTER TABLE dbo.GridListingFilter ADD CONSTRAINT
	PK_GridListingFilter PRIMARY KEY NONCLUSTERED 
	(
	[FilterName]
	) ON [PRIMARY]
GO

/* The following DDL will add GridListingFilterUsers table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GridListingFilterUsers]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE dbo.GridListingFilterUsers
(
	[FilterName] [nvarchar] (40) NOT NULL,
	[UserID] [d_UserID] NOT NULL,
)  ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_GridListingFilterUsers]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[GridListingFilterUsers] DROP CONSTRAINT [PK_GridListingFilterUsers]
GO

ALTER TABLE dbo.GridListingFilterUsers ADD CONSTRAINT
	PK_GridListingFilterUsers PRIMARY KEY NONCLUSTERED 
	(
	[FilterName], [UserID]
	) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.5' WHERE RegID = 2
GO
	/* The following DDL will add DocNo2 column to CB table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CB]') and name = N'DocNo2')
  ALTER TABLE [dbo].[CB] 
    ADD [DocNo2] [nvarchar] (25) NULL
GO

/* The following DDL will add DocNo2 column to JE table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[JE]') and name = N'DocNo2')
  ALTER TABLE [dbo].[JE] 
    ADD [DocNo2] [nvarchar] (25) NULL
GO

/* The following DDL will add UnitPrice, SubTotal column to CSGNDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'UnitPrice')
  ALTER TABLE [dbo].[CSGNDTL] 
    ADD [UnitPrice] [d_Price] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'SubTotal')
  ALTER TABLE [dbo].[CSGNDTL] 
    ADD [SubTotal] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGN]') and name = N'NetTotal')
  ALTER TABLE [dbo].[CSGN] 
    ADD [NetTotal] [d_Money] NULL
GO

/* The following DDL will add UnitPrice, SubTotal column to SupplierCSGNDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'UnitPrice')
  ALTER TABLE [dbo].[SupplierCSGNDTL] 
    ADD [UnitPrice] [d_Price] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'SubTotal')
  ALTER TABLE [dbo].[SupplierCSGNDTL] 
    ADD [SubTotal] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGN]') and name = N'NetTotal')
  ALTER TABLE [dbo].[SupplierCSGN] 
    ADD [NetTotal] [d_Money] NULL
GO

/* The following DDL will add LeadTimeDay column to Item table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'LeadTimeDay')
  ALTER TABLE [dbo].[Item] 
    ADD [LeadTimeDay] [int] NULL
GO

/* The following DDL will add Transfered column to IPHIST table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IPHIST]') and name = N'Transfered')
  ALTER TABLE [dbo].[IPHIST] 
    ADD [Transfered] [d_Boolean] NULL
GO

/* The following DDL will add GridListingFilter table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[StockDTLChangeQ]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE dbo.StockDTLChangeQ
(
	[ChangeQKey] [bigint] NOT NULL,
	[ItemCode] [d_ItemCode] NOT NULL,
	[StockDTLKey] [bigint] NOT NULL,
	[Action] [char] (1) NOT NULL,
)  ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_StockDTLChangeQ]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[StockDTLChangeQ] DROP CONSTRAINT [PK_StockDTLChangeQ]
GO

ALTER TABLE dbo.StockDTLChangeQ ADD CONSTRAINT
	PK_StockDTLChangeQ PRIMARY KEY NONCLUSTERED 
	(
	[ChangeQKey]
	) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.6' WHERE RegID = 2
GO
/* The following DDL will add MinBankCharge column to PaymentMethod table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PaymentMethod]') and name = N'MinBankCharge')
  ALTER TABLE [dbo].[PaymentMethod] 
    ADD [MinBankCharge] [d_Money] NULL DEFAULT 0
GO

UPDATE PaymentMethod SET MinBankCharge=0 WHERE MinBankCharge IS NULL
GO

/* The following DDL will add ExternalLink column to Item table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'ExternalLink')
  ALTER TABLE [dbo].[Item] 
    ADD [ExternalLink] [ntext] NULL
GO

/* The following DDL will add Discontinued column to Item table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'Discontinued')
  ALTER TABLE [dbo].[Item] 
    ADD [Discontinued] [d_Boolean] NOT NULL DEFAULT 'F'
GO

UPDATE Item SET Discontinued='F' WHERE Discontinued IS NULL
GO

/* The following DDL will add IsActive column to ShippingMethod table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ShippingMethod]') and name = N'IsActive')
  ALTER TABLE [dbo].[ShippingMethod] 
    ADD [IsActive] [d_Boolean] NOT NULL DEFAULT 'T'
GO

UPDATE ShippingMethod SET IsActive='T' WHERE IsActive IS NULL
GO

/* The following DDL will add BalanceStockCode column to ItemGroup table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemGroup]') and name = N'BalanceStockCode')
  ALTER TABLE [dbo].[ItemGroup] 
    ADD [BalanceStockCode] [d_AccNo] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemGroup_BalanceStockCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemGroup] DROP CONSTRAINT [FK_ItemGroup_BalanceStockCode]
GO

ALTER TABLE dbo.ItemGroup WITH CHECK ADD CONSTRAINT
	FK_ItemGroup_BalanceStockCode FOREIGN KEY
	(
	[BalanceStockCode]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add ExternalLink column to Debtor table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'ExternalLink')
  ALTER TABLE [dbo].[Debtor] 
    ADD [ExternalLink] [ntext] NULL
GO

/* The following DDL will add ExternalLink column to Creditor table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'ExternalLink')
  ALTER TABLE [dbo].[Creditor] 
    ADD [ExternalLink] [ntext] NULL
GO

/* The following DDL will delete IPHIST column in IPHIST table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IPHIST]') and name = N'IPHIST')
  ALTER TABLE [dbo].[IPHIST] 
    DROP COLUMN [IPHIST]
GO

/* The following DDL will delete Transfered column to IPHIST table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IPHIST]') and name = N'Transfered')
  ALTER TABLE [dbo].[IPHIST] 
    ADD [Transfered] [d_Boolean] NULL
GO

/* The following DDL will change UpdatePostingAccountGroupChangeCount to make it under PostingAccountGroup table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdatePostingAccountGroupChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER UpdatePostingAccountGroupChangeCount
GO

CREATE TRIGGER UpdatePostingAccountGroupChangeCount ON PostingAccountGroup
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PostingAccountGroup'
SET NOCOUNT OFF
GO

/* The following DDL will add foreign key to IPHIST ProjNo */
DELETE FROM IPHIST
WHERE ProjNo IS NOT NULL AND ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IPHIST_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IPHIST] DROP CONSTRAINT [FK_IPHIST_ProjNo]
GO

ALTER TABLE dbo.IPHIST WITH CHECK ADD CONSTRAINT
	FK_IPHIST_ProjNo FOREIGN KEY
	(
	[ProjNo]
	) REFERENCES dbo.Project
	(
	[ProjNo]
	) ON UPDATE CASCADE
GO

/* The following DDL will add foreign key to IPHIST DeptNo */
DELETE FROM IPHIST
WHERE DeptNo IS NOT NULL AND DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IPHIST_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IPHIST] DROP CONSTRAINT [FK_IPHIST_DeptNo]
GO

ALTER TABLE dbo.IPHIST WITH CHECK ADD CONSTRAINT
	FK_IPHIST_DeptNo FOREIGN KEY
	(
	[DeptNo]
	) REFERENCES dbo.Dept
	(
	[DeptNo]
	) ON UPDATE CASCADE
GO

/* The following DDL will add foreign key to CSGNItemBalQty ProjNo */
DELETE FROM CSGNItemBalQty
WHERE ProjNo IS NOT NULL AND ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSGNItemBalQty_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CSGNItemBalQty] DROP CONSTRAINT [FK_CSGNItemBalQty_ProjNo]
GO

ALTER TABLE dbo.CSGNItemBalQty WITH CHECK ADD CONSTRAINT
	FK_CSGNItemBalQty_ProjNo FOREIGN KEY
	(
	[ProjNo]
	) REFERENCES dbo.Project
	(
	[ProjNo]
	) ON UPDATE CASCADE
GO

/* The following DDL will add foreign key to CSGNItemBalQty DeptNo */
DELETE FROM CSGNItemBalQty
WHERE DeptNo IS NOT NULL AND DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSGNItemBalQty_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CSGNItemBalQty] DROP CONSTRAINT [FK_CSGNItemBalQty_DeptNo]
GO

ALTER TABLE dbo.CSGNItemBalQty WITH CHECK ADD CONSTRAINT
	FK_CSGNItemBalQty_DeptNo FOREIGN KEY
	(
	[DeptNo]
	) REFERENCES dbo.Dept
	(
	[DeptNo]
	) ON UPDATE CASCADE
GO

/* The following DDL will add foreign key to BudgetPBalance AccNo */
DELETE FROM BudgetPBalance
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BudgetPBalance_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BudgetPBalance] DROP CONSTRAINT [FK_BudgetPBalance_AccNo]
GO

ALTER TABLE dbo.BudgetPBalance WITH CHECK ADD CONSTRAINT
	FK_BudgetPBalance_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to BudgetPBalance ProjNo */
DELETE FROM BudgetPBalance
WHERE ProjNo IS NOT NULL AND ProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BudgetPBalance_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BudgetPBalance] DROP CONSTRAINT [FK_BudgetPBalance_ProjNo]
GO

ALTER TABLE dbo.BudgetPBalance WITH CHECK ADD CONSTRAINT
	FK_BudgetPBalance_ProjNo FOREIGN KEY
	(
	[ProjNo]
	) REFERENCES dbo.Project
	(
	[ProjNo]
	) ON UPDATE CASCADE
GO

/* The following DDL will add foreign key to BudgetPBalance DeptNo */
DELETE FROM BudgetPBalance
WHERE DeptNo IS NOT NULL AND DeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BudgetPBalance_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BudgetPBalance] DROP CONSTRAINT [FK_BudgetPBalance_DeptNo]
GO

ALTER TABLE dbo.BudgetPBalance WITH CHECK ADD CONSTRAINT
	FK_BudgetPBalance_DeptNo FOREIGN KEY
	(
	[DeptNo]
	) REFERENCES dbo.Dept
	(
	[DeptNo]
	) ON UPDATE CASCADE
GO

/* The following DDL will add foreign key to Project ParentProjNo */
UPDATE Project
SET ParentProjNo=NULL WHERE ParentProjNo IS NOT NULL AND ParentProjNo NOT IN (SELECT ProjNo FROM Project)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Project_ParentProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Project] DROP CONSTRAINT [FK_Project_ParentProjNo]
GO

ALTER TABLE dbo.Project WITH CHECK ADD CONSTRAINT
	FK_Project_ParentProjNo FOREIGN KEY
	(
	[ParentProjNo]
	) REFERENCES dbo.Project
	(
	[ProjNo]
	)
GO

/* The following DDL will add foreign key to Dept ParentDeptNo */
UPDATE Dept
SET ParentDeptNo=NULL WHERE ParentDeptNo IS NOT NULL AND ParentDeptNo NOT IN (SELECT DeptNo FROM Dept)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Dept_ParentDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Dept] DROP CONSTRAINT [FK_Dept_ParentDeptNo]
GO

ALTER TABLE dbo.Dept WITH CHECK ADD CONSTRAINT
	FK_Dept_ParentDeptNo FOREIGN KEY
	(
	[ParentDeptNo]
	) REFERENCES dbo.Dept
	(
	[DeptNo]
	)
GO

/* The following DDL will add foreign key to ARAPContra TempAccNo */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARAPContra_TempAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARAPContra] DROP CONSTRAINT [FK_ARAPContra_TempAccNo]
GO

ALTER TABLE dbo.ARAPContra WITH CHECK ADD CONSTRAINT
	FK_ARAPContra_TempAccNo FOREIGN KEY
	(
	[TempAccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to AssetDisposal FixedAssetAccNo */
DELETE FROM AssetDisposal
WHERE FixedAssetAccNo IS NOT NULL AND FixedAssetAccNo NOT IN (SELECT AccNo FROM GLMAST)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AssetDisposal_FixedAssetAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AssetDisposal] DROP CONSTRAINT [FK_AssetDisposal_FixedAssetAccNo]
GO

ALTER TABLE dbo.AssetDisposal WITH CHECK ADD CONSTRAINT
	FK_AssetDisposal_FixedAssetAccNo FOREIGN KEY
	(
	[FixedAssetAccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to Contact AccNo */
DELETE FROM Contact
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMAST)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Contact_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Contact] DROP CONSTRAINT [FK_Contact_AccNo]
GO

ALTER TABLE dbo.Contact WITH CHECK ADD CONSTRAINT
	FK_Contact_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to CreditControlSync AccNo */
DELETE FROM CreditControlSync
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMAST)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CreditControlSync_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CreditControlSync] DROP CONSTRAINT [FK_CreditControlSync_AccNo]
GO

ALTER TABLE dbo.CreditControlSync WITH CHECK ADD CONSTRAINT
	FK_CreditControlSync_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to CreditControlSync CreatedUserID */
DELETE FROM CreditControlSync
WHERE CreatedUserID IS NOT NULL AND CreatedUserID NOT IN (SELECT UserID FROM Users)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CreditControlSync_CreatedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CreditControlSync] DROP CONSTRAINT [FK_CreditControlSync_CreatedUserID]
GO

ALTER TABLE dbo.CreditControlSync WITH CHECK ADD CONSTRAINT
	FK_CreditControlSync_CreatedUserID FOREIGN KEY
	(
	[CreatedUserID]
	) REFERENCES dbo.Users
	(
	[UserID]
	)
GO

/* The following DDL will add foreign key to Currency FCGainAccount */
UPDATE Currency
SET FCGainAccount=NULL
WHERE FCGainAccount IS NOT NULL AND FCGainAccount NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Currency_FCGainAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Currency] DROP CONSTRAINT [FK_Currency_FCGainAccount]
GO

ALTER TABLE dbo.Currency WITH CHECK ADD CONSTRAINT
	FK_Currency_FCGainAccount FOREIGN KEY
	(
	[FCGainAccount]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to Currency FCLossAccount */
UPDATE Currency
SET FCLossAccount=NULL
WHERE FCLossAccount IS NOT NULL AND FCLossAccount NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Currency_FCLossAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Currency] DROP CONSTRAINT [FK_Currency_FCLossAccount]
GO

ALTER TABLE dbo.Currency WITH CHECK ADD CONSTRAINT
	FK_Currency_FCLossAccount FOREIGN KEY
	(
	[FCLossAccount]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to Currency GainLossJournalType */
UPDATE Currency
SET GainLossJournalType=NULL
WHERE GainLossJournalType IS NOT NULL AND GainLossJournalType NOT IN (SELECT JournalType FROM Journal)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Currency_GainLossJournalType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Currency] DROP CONSTRAINT [FK_Currency_GainLossJournalType]
GO

ALTER TABLE dbo.Currency WITH CHECK ADD CONSTRAINT
	FK_Currency_GainLossJournalType FOREIGN KEY
	(
	[GainLossJournalType]
	) REFERENCES dbo.Journal
	(
	[JournalType]
	)
GO

/* The following DDL will add foreign key to Expenses AccNo */
DELETE FROM Expenses
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Expenses_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Expenses] DROP CONSTRAINT [FK_Expenses_AccNo]
GO

ALTER TABLE dbo.Expenses WITH CHECK ADD CONSTRAINT
	FK_Expenses_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to Footer AccNo */
UPDATE Footer
SET AccNo=NULL
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Footer_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Footer] DROP CONSTRAINT [FK_Footer_AccNo]
GO

ALTER TABLE dbo.Footer WITH CHECK ADD CONSTRAINT
	FK_Footer_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to TemporaryCredit AccNo */
DELETE FROM TemporaryCredit
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TemporaryCredit_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TemporaryCredit] DROP CONSTRAINT [FK_TemporaryCredit_AccNo]
GO

ALTER TABLE dbo.TemporaryCredit WITH CHECK ADD CONSTRAINT
	FK_TemporaryCredit_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to ARDeposit ForfeitedAccNo */
UPDATE ARDeposit
SET ForfeitedAccNo=NULL
WHERE ForfeitedAccNo IS NOT NULL AND ForfeitedAccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDeposit_ForfeitedAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDeposit] DROP CONSTRAINT [FK_ARDeposit_ForfeitedAccNo]
GO

ALTER TABLE dbo.ARDeposit WITH CHECK ADD CONSTRAINT
	FK_ARDeposit_ForfeitedAccNo FOREIGN KEY
	(
	[ForfeitedAccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to ARDeposit DepositPaymentMethod */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDeposit_DepositPaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDeposit] DROP CONSTRAINT [FK_ARDeposit_DepositPaymentMethod]
GO

ALTER TABLE dbo.ARDeposit WITH CHECK ADD CONSTRAINT
	FK_ARDeposit_DepositPaymentMethod FOREIGN KEY
	(
	[DepositPaymentMethod]
	) REFERENCES dbo.PaymentMethod
	(
	[PaymentMethod]
	)
GO


/* The following DDL will add foreign key to APDeposit ForfeitedAccNo */
UPDATE APDeposit
SET ForfeitedAccNo=NULL
WHERE ForfeitedAccNo IS NOT NULL AND ForfeitedAccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APDeposit_ForfeitedAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDeposit] DROP CONSTRAINT [FK_APDeposit_ForfeitedAccNo]
GO

ALTER TABLE dbo.APDeposit WITH CHECK ADD CONSTRAINT
	FK_APDeposit_ForfeitedAccNo FOREIGN KEY
	(
	[ForfeitedAccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to APDeposit DepositPaymentMethod */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APDeposit_DepositPaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDeposit] DROP CONSTRAINT [FK_APDeposit_DepositPaymentMethod]
GO

ALTER TABLE dbo.APDeposit WITH CHECK ADD CONSTRAINT
	FK_APDeposit_DepositPaymentMethod FOREIGN KEY
	(
	[DepositPaymentMethod]
	) REFERENCES dbo.PaymentMethod
	(
	[PaymentMethod]
	)
GO

/* The following DDL will add foreign key to CNDTL AccNo */
UPDATE CNDTL
SET AccNo=NULL
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CNDTL_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CNDTL] DROP CONSTRAINT [FK_CNDTL_AccNo]
GO

ALTER TABLE dbo.CNDTL WITH CHECK ADD CONSTRAINT
	FK_CNDTL_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to DNDTL AccNo */
UPDATE DNDTL
SET AccNo=NULL
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DNDTL_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DNDTL] DROP CONSTRAINT [FK_DNDTL_AccNo]
GO

ALTER TABLE dbo.DNDTL WITH CHECK ADD CONSTRAINT
	FK_DNDTL_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to IVDTL AccNo */
UPDATE IVDTL
SET AccNo=NULL
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IVDTL_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IVDTL] DROP CONSTRAINT [FK_IVDTL_AccNo]
GO

ALTER TABLE dbo.IVDTL WITH CHECK ADD CONSTRAINT
	FK_IVDTL_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to CSDTL AccNo */
UPDATE CSDTL
SET AccNo=NULL
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSDTL_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CSDTL] DROP CONSTRAINT [FK_CSDTL_AccNo]
GO

ALTER TABLE dbo.CSDTL WITH CHECK ADD CONSTRAINT
	FK_CSDTL_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to PIDTL AccNo */
UPDATE PIDTL
SET AccNo=NULL
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PIDTL_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PIDTL] DROP CONSTRAINT [FK_PIDTL_AccNo]
GO

ALTER TABLE dbo.PIDTL WITH CHECK ADD CONSTRAINT
	FK_PIDTL_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to PRDTL AccNo */
UPDATE PRDTL
SET AccNo=NULL
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRDTL_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRDTL] DROP CONSTRAINT [FK_PRDTL_AccNo]
GO

ALTER TABLE dbo.PRDTL WITH CHECK ADD CONSTRAINT
	FK_PRDTL_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to CPDTL AccNo */
UPDATE CPDTL
SET AccNo=NULL
WHERE AccNo IS NOT NULL AND AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CPDTL_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CPDTL] DROP CONSTRAINT [FK_CPDTL_AccNo]
GO

ALTER TABLE dbo.CPDTL WITH CHECK ADD CONSTRAINT
	FK_CPDTL_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to Creditor AccNo */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Creditor_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Creditor] DROP CONSTRAINT [FK_Creditor_AccNo]
GO

ALTER TABLE dbo.Creditor WITH CHECK ADD CONSTRAINT
	FK_Creditor_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to Debtor AccNo */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Debtor_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Debtor] DROP CONSTRAINT [FK_Debtor_AccNo]
GO

ALTER TABLE dbo.Debtor WITH CHECK ADD CONSTRAINT
	FK_Debtor_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

/* The following DDL will add foreign key to ItemBalQty Location */
DELETE FROM ItemBalQty
WHERE Location IS NOT NULL AND Location NOT IN (SELECT Location FROM Location)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemBalQty_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemBalQty] DROP CONSTRAINT [FK_ItemBalQty_Location]
GO

ALTER TABLE dbo.ItemBalQty WITH CHECK ADD CONSTRAINT
	FK_ItemBalQty_Location FOREIGN KEY
	(
	[Location]
	) REFERENCES dbo.Location
	(
	[Location]
	)
GO

/* The following DDL will add foreign key to ItemBalQty ItemCode, UOM */
DELETE FROM ItemBalQty
WHERE ItemCode IS NOT NULL AND ItemCode NOT IN (SELECT ItemCode FROM Item)
GO

DELETE FROM ITEMBALQTY 
WHERE ITEMCODE+CHAR(10)+UOM NOT IN (SELECT ITEMCODE+CHAR(10)+UOM FROM ITEMUOM)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemBalQty_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemBalQty] DROP CONSTRAINT [FK_ItemBalQty_ItemUOM]
GO

ALTER TABLE dbo.ItemBalQty WITH CHECK ADD CONSTRAINT
	FK_ItemBalQty_ItemUOM FOREIGN KEY
	(
	[ItemCode], [UOM]
	) REFERENCES dbo.ItemUOM
	(
	[ItemCode], [UOM]
	)
GO

/* The following DDL will add foreign key to ItemReplacement ItemCode */
DELETE FROM ItemReplacement
WHERE ItemCode IS NOT NULL AND ItemCode NOT IN (SELECT ItemCode FROM Item)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemReplacement_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemReplacement] DROP CONSTRAINT [FK_ItemReplacement_ItemCode]
GO

ALTER TABLE dbo.ItemReplacement WITH CHECK ADD CONSTRAINT
	FK_ItemReplacement_ItemCode FOREIGN KEY
	(
	[ItemCode]
	) REFERENCES dbo.Item
	(
	[ItemCode]
	)
GO

/* The following DDL will add foreign key to ItemReplacement ReplacementItemCode */
DELETE FROM ItemReplacement
WHERE ReplacementItemCode IS NOT NULL AND ReplacementItemCode NOT IN (SELECT ItemCode FROM Item)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemReplacement_ReplacementItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemReplacement] DROP CONSTRAINT [FK_ItemReplacement_ReplacementItemCode]
GO

ALTER TABLE dbo.ItemReplacement WITH CHECK ADD CONSTRAINT
	FK_ItemReplacement_ReplacementItemCode FOREIGN KEY
	(
	[ReplacementItemCode]
	) REFERENCES dbo.Item
	(
	[ItemCode]
	)
GO

/* The following DDL will add foreign key to BOMOptionalDTL SubItemCode */
DELETE FROM BOMOptionalDTL
WHERE SubItemCode IS NOT NULL AND SubItemCode NOT IN (SELECT ItemCode FROM Item)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BOMOptionalDTL_SubItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BOMOptionalDTL] DROP CONSTRAINT [FK_BOMOptionalDTL_SubItemCode]
GO

ALTER TABLE dbo.BOMOptionalDTL WITH CHECK ADD CONSTRAINT
	FK_BOMOptionalDTL_SubItemCode FOREIGN KEY
	(
	[SubItemCode]
	) REFERENCES dbo.Item
	(
	[ItemCode]
	)
GO

/* The following DDL will add foreign key to BOMOptionalLink BOMItemCode */
DELETE FROM BOMOptionalLink
WHERE BOMItemCode IS NOT NULL AND BOMItemCode NOT IN (SELECT ItemCode FROM Item)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BOMOptionalLink_BOMItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BOMOptionalLink] DROP CONSTRAINT [FK_BOMOptionalLink_BOMItemCode]
GO

ALTER TABLE dbo.BOMOptionalLink WITH CHECK ADD CONSTRAINT
	FK_BOMOptionalLink_BOMItemCode FOREIGN KEY
	(
	[BOMItemCode]
	) REFERENCES dbo.Item
	(
	[ItemCode]
	)
GO

/* The following DDL will add foreign key to StockDTLChangeQ ItemCode */
DELETE FROM StockDTLChangeQ
WHERE ItemCode IS NOT NULL AND ItemCode NOT IN (SELECT ItemCode FROM Item)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDTLChangeQ_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDTLChangeQ] DROP CONSTRAINT [FK_StockDTLChangeQ_ItemCode]
GO

ALTER TABLE dbo.StockDTLChangeQ WITH CHECK ADD CONSTRAINT
	FK_StockDTLChangeQ_ItemCode FOREIGN KEY
	(
	[ItemCode]
	) REFERENCES dbo.Item
	(
	[ItemCode]
	)
GO

/* The following DDL will add foreign key to Sales and Purchase Document's to Location table */
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

INSERT @ListTable VALUES('QT', 'SalesLocation')
INSERT @ListTable VALUES('SO', 'SalesLocation')
INSERT @ListTable VALUES('DO', 'SalesLocation')
INSERT @ListTable VALUES('IV', 'SalesLocation')
INSERT @ListTable VALUES('CS', 'SalesLocation')
INSERT @ListTable VALUES('CN', 'SalesLocation')
INSERT @ListTable VALUES('DN', 'SalesLocation')
INSERT @ListTable VALUES('XS', 'SalesLocation')
INSERT @ListTable VALUES('DR', 'SalesLocation')
INSERT @ListTable VALUES('CSGN', 'SalesLocation')
INSERT @ListTable VALUES('RQ', 'PurchaseLocation')
INSERT @ListTable VALUES('PO', 'PurchaseLocation')
INSERT @ListTable VALUES('GR', 'PurchaseLocation')
INSERT @ListTable VALUES('PI', 'PurchaseLocation')
INSERT @ListTable VALUES('CP', 'PurchaseLocation')
INSERT @ListTable VALUES('PR', 'PurchaseLocation')
INSERT @ListTable VALUES('XP', 'PurchaseLocation')
INSERT @ListTable VALUES('GT', 'PurchaseLocation')
INSERT @ListTable VALUES('SupplierCSGN', 'PurchaseLocation')
INSERT @ListTable VALUES('BonusPointRedemptionDTL', 'Location')

DECLARE @fkName NVARCHAR(50)
DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(50)
DECLARE @colName  NVARCHAR(50)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = NULL WHERE [' + @colName + '] IS NOT NULL AND [' + @colName + '] NOT IN (SELECT Location FROM Location)'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @fkName = 'FK_' + @tableName + '_' + @colName

  set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'ALTER TABLE dbo.' + @tableName + ' WITH CHECK ADD CONSTRAINT ' + @fkName + ' FOREIGN KEY (' + @colName + ') REFERENCES dbo.Location ([Location])'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

/* To support MemberType, Member */
if not exists (select * from dbo.systypes where name = N'd_MemberType')
  EXEC sp_addtype N'd_MemberType', N'nvarchar (20)'
GO

if not exists (select * from dbo.systypes where name = N'd_MemberNo')
  EXEC sp_addtype N'd_MemberNo', N'nvarchar (20)'
GO

if not exists (select * from dbo.systypes where name = N'd_Race')
  EXEC sp_addtype N'd_Race', N'nvarchar (10)'
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MemberType]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[MemberType](
		[MemberType] [d_MemberType] NOT NULL PRIMARY KEY NONCLUSTERED,
		[Description] [nvarchar] (80) NULL,
		[Guid] [uniqueidentifier] NOT NULL,
		[LastUpdate] [int] NOT NULL,
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Race]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[Race](
		[Race] [d_Race] NOT NULL PRIMARY KEY NONCLUSTERED,
		[Description] [nvarchar] (80) NULL,
		[Guid] [uniqueidentifier] NOT NULL,
		[LastUpdate] [int] NOT NULL,
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Member]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[Member](
		[MemberNo] [d_MemberNo] NOT NULL PRIMARY KEY NONCLUSTERED,
		[MemberType] [d_MemberType] NOT NULL,
		[ID] [nvarchar] (20) NULL,
		[Name] [d_AccDescription] NULL,
		[Address1] [d_Address] NULL,
		[Address2] [d_Address] NULL,
		[Address3] [d_Address] NULL,
		[Address4] [d_Address] NULL,
		[PostCode] [d_PostCode] NULL,
		[AreaCode] [d_AreaCode] NULL,
		[Individual] [d_Boolean] NOT NULL,
		[Race] [d_Race] NULL,
		[Sex] [char](1) NULL,
		[DOB] [datetime] NULL,
		[DebtorCode] [d_AccNo] NULL,
		[CompanyName] [d_AccDescription] NULL,
		[Department] [nvarchar](30) NULL,
		[Title] [nvarchar](40) NULL,
		[MobilePhone] [d_Phone] NULL,
		[DirectPhone] [d_Phone] NULL,
		[DirectFax] [d_Phone] NULL,
		[EmailAddress] [d_EmailAddress] NULL,
		[IMAddress] [d_IMAddress] NULL,
		[Note] [ntext] NULL,
		[OpeningPoints] [int] NULL,
		[Guid] [uniqueidentifier] NOT NULL,
		[LastUpdate] [int] NOT NULL,
	) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Member_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Member] DROP CONSTRAINT [FK_Member_AccNo]
GO

ALTER TABLE dbo.Member WITH CHECK ADD CONSTRAINT
	FK_Member_AccNo FOREIGN KEY
	(
	[DebtorCode]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Member_AreaCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Member] DROP CONSTRAINT [FK_Member_AreaCode]
GO

ALTER TABLE dbo.Member WITH CHECK ADD CONSTRAINT
	FK_Member_AreaCode FOREIGN KEY
	(
	[AreaCode]
	) REFERENCES dbo.Area
	(
	[AreaCode]
	) ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Member_Race]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Member] DROP CONSTRAINT [FK_Member_Race]
GO

ALTER TABLE dbo.Member WITH CHECK ADD CONSTRAINT
	FK_Member_Race FOREIGN KEY
	(
	[Race]
	) REFERENCES dbo.Race
	(
	[Race]
	) ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Member_MemberType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Member] DROP CONSTRAINT [FK_Member_MemberType]
GO

ALTER TABLE dbo.Member WITH CHECK ADD CONSTRAINT
	FK_Member_MemberType FOREIGN KEY
	(
	[MemberType]
	) REFERENCES dbo.MemberType
	(
	[MemberType]
	) ON UPDATE CASCADE
GO

/* To support Point System */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PointTrans]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PointTrans](
		[PointTransKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
		[SourceType] [varchar] (2) NOT NULL,
		[SourceKey] [bigint] NOT NULL,
		[MemberNo] [d_MemberNo] NULL,
		[DocNo] [d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[Points] [int] NOT NULL,
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PointTrans_MemberNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PointTrans] DROP CONSTRAINT [FK_PointTrans_MemberNo]
GO

ALTER TABLE dbo.PointTrans WITH CHECK ADD CONSTRAINT
	FK_PointTrans_MemberNo FOREIGN KEY
	(
	[MemberNo]
	) REFERENCES dbo.Member
	(
	[MemberNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PointTrans_MemberNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PointTrans] DROP CONSTRAINT [FK_PointTrans_MemberNo]
GO

ALTER TABLE dbo.PointTrans WITH CHECK ADD CONSTRAINT
	FK_PointTrans_MemberNo FOREIGN KEY
	(
	[MemberNo]
	) REFERENCES dbo.Member
	(
	[MemberNo]
	)
GO

/* To support Promotion */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Promotion]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[Promotion] (
		PromotionKey bigint NOT NULL PRIMARY KEY NONCLUSTERED,
		PromotionCode [nvarchar] (20) NOT NULL,
		Description [nvarchar] (80) NULL,
		FromDate datetime NULL,
		ToDate datetime NULL,
		FromTime datetime NULL,
		ToTime datetime NULL,
		ValidOnWeekDay1 [d_Boolean] NOT NULL,
		ValidOnWeekDay2 [d_Boolean] NOT NULL,
		ValidOnWeekDay3 [d_Boolean] NOT NULL,
		ValidOnWeekDay4 [d_Boolean] NOT NULL,
		ValidOnWeekDay5 [d_Boolean] NOT NULL,
		ValidOnWeekDay6 [d_Boolean] NOT NULL,
		ValidOnWeekDay7 [d_Boolean] NOT NULL,
		ValidForAllOutlet [d_Boolean] NOT NULL,
		ValidForAllMember [d_Boolean] NOT NULL,
		ValidForAllMemberType [d_Boolean] NOT NULL,
		ValidForAllAccount [d_Boolean] NOT NULL,
		IsActive [d_Boolean] NOT NULL,
		[Guid] [uniqueidentifier] NOT NULL,
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PromotionLocation]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PromotionLocation] (
		PromotionKey bigint NOT NULL,
		Location [d_Location] NOT NULL,
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionLocation_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionLocation] DROP CONSTRAINT [FK_PromotionLocation_Location]
GO

ALTER TABLE dbo.PromotionLocation WITH CHECK ADD CONSTRAINT
	FK_PromotionLocation_Location FOREIGN KEY
	(
	[Location]
	) REFERENCES dbo.Location
	(
	[Location]
	)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PromotionMemberType]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PromotionMemberType] (
		PromotionKey bigint NOT NULL,
		MemberType [d_MemberType] NOT NULL,
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionMemberType_MemberType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionMemberType] DROP CONSTRAINT [FK_PromotionMemberType_MemberType]
GO

ALTER TABLE dbo.PromotionMemberType WITH CHECK ADD CONSTRAINT
	FK_PromotionMemberType_MemberType FOREIGN KEY
	(
	[MemberType]
	) REFERENCES dbo.MemberType
	(
	[MemberType]
	) ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PromotionMember]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PromotionMember] (
		PromotionKey bigint NOT NULL,
		MemberNo [d_MemberNo] NOT NULL,
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionMember_MemberNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionMember] DROP CONSTRAINT [FK_PromotionMember_MemberNo]
GO

ALTER TABLE dbo.PromotionMember WITH CHECK ADD CONSTRAINT
	FK_PromotionMember_MemberNo FOREIGN KEY
	(
	[MemberNo]
	) REFERENCES dbo.Member
	(
	[MemberNo]
	) ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PromotionAccount]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PromotionAccount] (
		PromotionKey bigint NOT NULL,
		AccNo [d_AccNo] NOT NULL,
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionAccount_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionAccount] DROP CONSTRAINT [FK_PromotionAccount_AccNo]
GO

ALTER TABLE dbo.PromotionAccount WITH CHECK ADD CONSTRAINT
	FK_PromotionAccount_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_PromotionAccount]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[PromotionAccount] DROP CONSTRAINT [PK_PromotionAccount]
GO

ALTER TABLE dbo.PromotionAccount WITH CHECK ADD CONSTRAINT
	PK_PromotionAccount PRIMARY KEY(PromotionKey, AccNo)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_PromotionLocation]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[PromotionLocation] DROP CONSTRAINT [PK_PromotionLocation]
GO

ALTER TABLE dbo.PromotionLocation WITH CHECK ADD CONSTRAINT
	PK_PromotionLocation PRIMARY KEY(PromotionKey, Location)
GO


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_PromotionMember]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[PromotionMember] DROP CONSTRAINT [PK_PromotionMember]
GO

ALTER TABLE dbo.PromotionMember WITH CHECK ADD CONSTRAINT
	PK_PromotionMember PRIMARY KEY(PromotionKey, MemberNo)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_PromotionMemberType]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[PromotionMemberType] DROP CONSTRAINT [PK_PromotionMemberType]
GO

ALTER TABLE dbo.PromotionMemberType WITH CHECK ADD CONSTRAINT
	PK_PromotionMemberType PRIMARY KEY(PromotionKey, MemberType)
GO


if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PromotionDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PromotionDTL] (
		DtlKey bigint NOT NULL PRIMARY KEY NONCLUSTERED,
		PromotionKey bigint NOT NULL,
		Seq int NOT NULL,
		ItemCode [d_ItemCode] NULL,
		UOM [d_UOM] NULL,
		MinPurchasedQty [d_Qty] NULL,
		UnitPrice [d_Price] NULL,
		Discount [nvarchar] (20) NULL,
		MemberPrice1 [d_Price] NULL,
		MemberDiscount1 [nvarchar] (20) NULL,
		MemberPrice2 [d_Price] NULL,
		MemberDiscount2 [nvarchar] (20) NULL,
		MemberPrice3 [d_Price] NULL,
		MemberDiscount3 [nvarchar] (20) NULL,
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionDTL_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionDTL] DROP CONSTRAINT [FK_PromotionDTL_ItemUOM]
GO

ALTER TABLE dbo.PromotionDTL WITH CHECK ADD CONSTRAINT
	FK_PromotionDTL_ItemUOM FOREIGN KEY
	(
	[ItemCode], [UOM]
	) REFERENCES dbo.ItemUOM
	(
	[ItemCode], [UOM]
	)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PromotionPWP]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PromotionPWP] (
		PWPKey bigint NOT NULL PRIMARY KEY NONCLUSTERED,
		PromotionKey bigint NOT NULL,
		ItemCode [d_ItemCode] NULL,
		UOM [d_UOM] NULL,
		PurchasedQty [d_Qty] NULL,
		PurchasedAmt [d_Money] NULL,
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionPWP_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionPWP] DROP CONSTRAINT [FK_PromotionPWP_ItemUOM]
GO

ALTER TABLE dbo.PromotionPWP WITH CHECK ADD CONSTRAINT
	FK_PromotionPWP_ItemUOM FOREIGN KEY
	(
	[ItemCode], [UOM]
	) REFERENCES dbo.ItemUOM
	(
	[ItemCode], [UOM]
	)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PromotionPWPDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE dbo.PromotionPWPDTL
	(
		PWPDtlKey bigint NOT NULL PRIMARY KEY NONCLUSTERED,
		Seq int NOT NULL,
		PWPKey bigint NOT NULL,
		ItemCode [d_ItemCode] NULL,
		UOM [d_UOM] NULL,
		IsFOC [d_Boolean] NOT NULL,
		Qty [d_Qty] NOT NULL,
		UnitPrice [d_Price] NULL,
		Discount [d_Discount] NULL,
	)  ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionPWPDTL_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionPWPDTL] DROP CONSTRAINT [FK_PromotionPWPDTL_ItemUOM]
GO

ALTER TABLE dbo.PromotionPWPDTL WITH CHECK ADD CONSTRAINT
	FK_PromotionPWPDTL_ItemUOM FOREIGN KEY
	(
	[ItemCode], [UOM]
	) REFERENCES dbo.ItemUOM
	(
	[ItemCode], [UOM]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[IX_Promotion_PromotionCode]'))
  ALTER TABLE [dbo].[Promotion] DROP CONSTRAINT [IX_Promotion_PromotionCode]
GO

ALTER TABLE [dbo].[Promotion] WITH CHECK ADD 
	CONSTRAINT [IX_Promotion_PromotionCode] 	UNIQUE NONCLUSTERED (
		[PromotionCode]
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionDTL_PromotionKey]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionDTL] DROP CONSTRAINT [FK_PromotionDTL_PromotionKey]
GO
ALTER TABLE [dbo].[PromotionDTL] WITH CHECK ADD 
	CONSTRAINT [FK_PromotionDTL_PromotionKey] FOREIGN KEY (
		[PromotionKey]
	) REFERENCES [dbo].[Promotion] (
		[PromotionKey]	
	) ON DELETE CASCADE
GO


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionAccount_PromotionKey]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionAccount] DROP CONSTRAINT [FK_PromotionAccount_PromotionKey]
GO
ALTER TABLE [dbo].[PromotionAccount] WITH CHECK ADD 
	CONSTRAINT [FK_PromotionAccount_PromotionKey] FOREIGN KEY (
		[PromotionKey]
	) REFERENCES [dbo].[Promotion] (
		[PromotionKey]	
	) ON DELETE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionLocation_PromotionKey]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionLocation] DROP CONSTRAINT [FK_PromotionLocation_PromotionKey]
GO
ALTER TABLE [dbo].[PromotionLocation] WITH CHECK ADD 
	CONSTRAINT [FK_PromotionLocation_PromotionKey] FOREIGN KEY (
		[PromotionKey]
	) REFERENCES [dbo].[Promotion] (
		[PromotionKey]	
	) ON DELETE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionMember_PromotionKey]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionMember] DROP CONSTRAINT [FK_PromotionMember_PromotionKey]
GO
ALTER TABLE [dbo].[PromotionMember] WITH CHECK ADD 
	CONSTRAINT [FK_PromotionMember_PromotionKey] FOREIGN KEY (
		[PromotionKey]
	) REFERENCES [dbo].[Promotion] (
		[PromotionKey]	
	) ON DELETE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionMemberType_PromotionKey]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionMemberType] DROP CONSTRAINT [FK_PromotionMemberType_PromotionKey]
GO
ALTER TABLE [dbo].[PromotionMemberType] WITH CHECK ADD 
	CONSTRAINT [FK_PromotionMemberType_PromotionKey] FOREIGN KEY (
		[PromotionKey]
	) REFERENCES [dbo].[Promotion] (
		[PromotionKey]	
	) ON DELETE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionPWP_PromotionKey]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionPWP] DROP CONSTRAINT [FK_PromotionPWP_PromotionKey]
GO
ALTER TABLE [dbo].[PromotionPWP] WITH CHECK ADD 
	CONSTRAINT [FK_PromotionPWP_PromotionKey] FOREIGN KEY (
		[PromotionKey]
	) REFERENCES [dbo].[Promotion] (
		[PromotionKey]	
	) ON DELETE CASCADE
GO


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PromotionPWPDTL_PWPKey]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PromotionPWPDTL] DROP CONSTRAINT [FK_PromotionPWPDTL_PWPKey]
GO
ALTER TABLE [dbo].[PromotionPWPDTL] WITH CHECK ADD 
	CONSTRAINT [FK_PromotionPWPDTL_PWPKey] FOREIGN KEY (
		[PWPKey]
	) REFERENCES [dbo].[PromotionPWP] (
		[PWPKey]	
	) ON DELETE CASCADE
GO

if not exists (select * from [ChangeCount] where TableName = 'Race') 
  INSERT INTO [ChangeCount] VALUES('Race',0);
GO

if not exists (select * from [ChangeCount] where TableName = 'MemberType') 
  INSERT INTO [ChangeCount] VALUES('MemberType',0);
GO

if not exists (select * from [ChangeCount] where TableName = 'Member') 
  INSERT INTO [ChangeCount] VALUES('Member',0);
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Update_MemberType]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER Update_MemberType
GO

CREATE TRIGGER Update_MemberType ON MemberType
AFTER Insert, Update, Delete 
AS 
SET NOCOUNT ON 
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='MemberType' 
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Update_Member]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER Update_Member
GO

CREATE TRIGGER Update_Member ON Member
AFTER Insert, Update, Delete 
AS 
SET NOCOUNT ON 
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Member' 
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Update_Race]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER Update_Race
GO

CREATE TRIGGER Update_Race ON Member
AFTER Insert, Update, Delete 
AS 
SET NOCOUNT ON 
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Race' 
SET NOCOUNT OFF
GO

/* To support UnapprovedDocument */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UnapprovedDocument]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[UnapprovedDocument]
GO

CREATE TABLE [dbo].[UnapprovedDocument](
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocType] [d_DocType] NOT NULL,
	[SaveTime] [datetime] NOT NULL,
	[DocNo] [d_DocNo] NOT NULL,
	[AccNo] [d_AccNo] NULL,
	[UserID] [d_UserID] NOT NULL,
	[NetTotal] [d_Money] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[Data] [image] NULL,
) ON [PRIMARY]

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnapprovedDocument_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnapprovedDocument] DROP CONSTRAINT [FK_UnapprovedDocument_AccNo]
GO

ALTER TABLE dbo.UnapprovedDocument WITH CHECK ADD CONSTRAINT
	FK_UnapprovedDocument_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnapprovedDocument_UserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnapprovedDocument] DROP CONSTRAINT [FK_UnapprovedDocument_UserID]
GO

ALTER TABLE dbo.UnapprovedDocument WITH CHECK ADD CONSTRAINT
	FK_UnapprovedDocument_UserID FOREIGN KEY
	(
	[UserID]
	) REFERENCES dbo.Users
	(
	[UserID]
	)
GO

/* The following DDL will add MinQty, MaxQty, NormalLevel, ReOLevel columns to ItemLocationPrice table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemLocationPrice]') and name = N'MinQty')
  ALTER TABLE [dbo].[ItemLocationPrice] 
    ADD [MinQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemLocationPrice]') and name = N'MaxQty')
  ALTER TABLE [dbo].[ItemLocationPrice] 
    ADD [MaxQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemLocationPrice]') and name = N'NormalLevel')
  ALTER TABLE [dbo].[ItemLocationPrice] 
    ADD [NormalLevel] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemLocationPrice]') and name = N'ReOLevel')
  ALTER TABLE [dbo].[ItemLocationPrice] 
    ADD [ReOLevel] [d_Qty] NULL
GO

/* The following will drop BankSlipNo column in BankTrans table, but will add a BankSlipDocKey column in BankTrans table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BankTrans]') and name = N'BankSlipNo')
  ALTER TABLE [dbo].[BankTrans] 
	DROP COLUMN [BankSlipNo]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BankTrans]') and name = N'BankSlipDocKey')
  ALTER TABLE [dbo].[BankTrans] 
	ADD [BankSlipDocKey] [bigint] NULL
GO

/* The following will add BankSlip table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BankSlip]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  CREATE TABLE [dbo].[BankSlip](
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[BankAccNo] [d_AccNo] NOT NULL,
  ) ON [PRIMARY]
GO

/* The following will add AutoUOMConversion to Item table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'AutoUOMConversion') 
  ALTER TABLE [dbo].[Item] ADD [AutoUOMConversion] [d_Boolean] NULL DEFAULT 'T'
GO

UPDATE Item SET AutoUOMConversion='T' WHERE AutoUOMConversion IS NULL
GO

/* The following will add UnitPrice, Discount, DiscountAmt, SubTotal, Lost to CSGNDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'UnitPrice')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [UnitPrice] [d_Price] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'Discount')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [Discount] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'DiscountAmt')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [DiscountAmt] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'SubTotal')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [SubTotal] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'Lost')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [Lost] [d_Boolean] NULL DEFAULT 'F'
GO

UPDATE CSGNDTL SET Lost='F' WHERE Lost IS NULL
GO

/* The following will add ReferAdjDocKey to CSGN table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGN]') and name = N'ReferAdjDocKey')
  ALTER TABLE [dbo].[CSGN] 
	ADD [ReferAdjDocKey] [bigint] NULL
GO

/* The following will add UnitPrice, Discount, DiscountAmt, SubTotal, Lost to SupplierCSGNDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'UnitPrice')
  ALTER TABLE [dbo].[SupplierCSGNDTL] 
	ADD [UnitPrice] [d_Price] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'Discount')
  ALTER TABLE [dbo].[SupplierCSGNDTL] 
	ADD [Discount] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'DiscountAmt')
  ALTER TABLE [dbo].[SupplierCSGNDTL] 
	ADD [DiscountAmt] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'SubTotal')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [SubTotal] [d_Money] NULL
GO

/* The following will add ObjectEventLog table */

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ObjectEventLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  CREATE TABLE dbo.ObjectEventLog
  (
	EventKey bigint NOT NULL PRIMARY KEY NONCLUSTERED,
	OccurTime datetime NOT NULL DEFAULT GetDate(),
	EventType char (1) NOT NULL,
	UserID [d_UserID] NOT NULL,
	ObjType [d_DocType] NULL,
	ObjKey bigint NULL,	
	ObjCode nvarchar (30) NULL,	
  )  ON [PRIMARY]
GO

/* The following will add AnalysisNetTotal and LocalAnalysisNetTotal to Purchase Documents */

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* The following DDL will modify Sales and Purchase Tables to add in YourPONo and YourPODate to master table */
INSERT @ListTable VALUES('RQ', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(200)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* The following will add Guid to support Export Import SSP */

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* The following DDL will modify Sales and Purchase Tables to add in YourPONo and YourPODate to master table */
INSERT @ListTable VALUES('QT', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('QTDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('SO', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('SODTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DO', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DODTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('IV', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('IVDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CS', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CSDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CN', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CNDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('XS', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('XSDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DR', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DRDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DN', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DNDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('RQ', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('RQDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PO', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PODTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('GR', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('GRDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PI', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PIDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CP', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CPDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PR', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PRDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('XP', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('XPDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('GT', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('GTDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('ASMOrder', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ASMOrderDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ASM', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ASMDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('ADJ', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ADJDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('ISS', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ISSDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('RCV', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('RCVDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('XFER', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('XFERDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('WOFF', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('WOFFDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('SerialNoTrans', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ItemOpening', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 

DECLARE @sql NVARCHAR(200)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* The following will add ItemPackage to ChangeCount table */

if not exists (select * from [ChangeCount] where TableName = 'ItemPackage') 
  INSERT INTO [ChangeCount] VALUES ('ItemPackage', 0)
GO

/* The following will add UpdateItemPackageChangeCount Trigger */

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateItemPackageChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER UpdateItemPackageChangeCount
GO

CREATE TRIGGER UpdateItemPackageChangeCount ON Package AFTER Insert, Update, Delete 
AS
  SET NOCOUNT ON 
  UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemPackage' 
  SET NOCOUNT OFF
GO

/* The following will add table to support UnrealizedGainLoss */

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UnrealizedGainLoss]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[UnrealizedGainLoss](
	[UnrealizedGainLossKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[UnrealizedGainAccount] [d_AccNo] NOT NULL,
	[UnrealizedLossAccount] [d_AccNo] NOT NULL,
	[GainLossJournalType] [d_JournalType] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Note] [ntext] NULL,
	[TotalGainLoss] [d_Money] NOT NULL,
	[JEKey] [bigint] NULL,
	[PrintCount] [smallint] NULL,
	[RefCount] [bigint] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLoss_GainLossJournalType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLoss] DROP CONSTRAINT [FK_UnrealizedGainLoss_GainLossJournalType]
GO

ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_GainLossJournalType] FOREIGN KEY([GainLossJournalType])
REFERENCES [dbo].[Journal] ([JournalType])
GO

ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_GainLossJournalType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLoss_UnrealizedGainAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLoss] DROP CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedGainAccount]
GO

ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedGainAccount] FOREIGN KEY([UnrealizedGainAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedGainAccount]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLoss_UnrealizedLossAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLoss] DROP CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedLossAccount]
GO

ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedLossAccount] FOREIGN KEY([UnrealizedLossAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedLossAccount]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UnrealizedGainLossDocument]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[UnrealizedGainLossDocument](
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[UnrealizedGainLossKey] [bigint] NOT NULL,
	[Category] [varchar](2) NOT NULL,
	[DocType] [d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DocNo] [d_DocNo] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[CompanyName] [d_AccDescription] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[NewRate] [d_CurrencyRate] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[Outstanding] [d_Money] NOT NULL,
	[GainLoss] [d_Money] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossDocument_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossDocument] DROP CONSTRAINT [FK_UnrealizedGainLossDocument_AccNo]
GO

ALTER TABLE [dbo].[UnrealizedGainLossDocument]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossDocument_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[UnrealizedGainLossDocument] CHECK CONSTRAINT [FK_UnrealizedGainLossDocument_AccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossDocument_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossDocument] DROP CONSTRAINT [FK_UnrealizedGainLossDocument_CurrencyCode]
GO

ALTER TABLE [dbo].[UnrealizedGainLossDocument]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossDocument_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[UnrealizedGainLossDocument] CHECK CONSTRAINT [FK_UnrealizedGainLossDocument_CurrencyCode]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UnrealizedGainLossRate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[UnrealizedGainLossRate](
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[UnrealizedGainLossKey] [bigint] NOT NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossRate_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossRate] DROP CONSTRAINT [FK_UnrealizedGainLossRate_CurrencyCode]
GO

ALTER TABLE [dbo].[UnrealizedGainLossRate]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossRate_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[UnrealizedGainLossRate] CHECK CONSTRAINT [FK_UnrealizedGainLossRate_CurrencyCode]
GO

/* The following will add SalesAgent and PurchaseAgent to Branch table */

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Branch]') and name = N'SalesAgent') 
  ALTER TABLE [dbo].[Branch] ADD [SalesAgent] [d_Agent] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Branch]') and name = N'PurchaseAgent') 
  ALTER TABLE [dbo].[Branch] ADD [PurchaseAgent] [d_Agent] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Branch_SalesAgent]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[Branch] DROP CONSTRAINT [FK_Branch_SalesAgent]
GO

ALTER TABLE dbo.Branch WITH CHECK 
  ADD CONSTRAINT FK_Branch_SalesAgent FOREIGN KEY ([SalesAgent]) 
REFERENCES dbo.SalesAgent ([SalesAgent])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Branch_PurchaseAgent]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[Branch] DROP CONSTRAINT [FK_Branch_PurchaseAgent]
GO

ALTER TABLE dbo.Branch WITH CHECK 
  ADD CONSTRAINT FK_Branch_PurchaseAgent FOREIGN KEY ([PurchaseAgent]) 
REFERENCES dbo.PurchaseAgent ([PurchaseAgent])
GO

/* The following will add ReferCNDocNo to ARPayment table */

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARPayment]') and name = N'ReferCNDocNo') 
  ALTER TABLE [dbo].[ARPayment] ADD [ReferCNDocNo] [d_DocNo] NULL
GO
  
/* The following will fix Negative Zero problem in A/R and A/P tables */

UPDATE ARINVOICEDTL SET NETAMOUNT=0, LOCALNETAMOUNT=0 WHERE NETAMOUNT+0=0 AND NETAMOUNT<>0
GO

UPDATE ARDNDTL SET NETAMOUNT=0, LOCALNETAMOUNT=0 WHERE NETAMOUNT+0=0 AND NETAMOUNT<>0
GO

UPDATE ARCNDTL SET NETAMOUNT=0, LOCALNETAMOUNT=0 WHERE NETAMOUNT+0=0 AND NETAMOUNT<>0
GO

UPDATE APINVOICEDTL SET NETAMOUNT=0, LOCALNETAMOUNT=0 WHERE NETAMOUNT+0=0 AND NETAMOUNT<>0
GO

UPDATE APDNDTL SET NETAMOUNT=0, LOCALNETAMOUNT=0 WHERE NETAMOUNT+0=0 AND NETAMOUNT<>0
GO

UPDATE APCNDTL SET NETAMOUNT=0, LOCALNETAMOUNT=0 WHERE NETAMOUNT+0=0 AND NETAMOUNT<>0
GO

/* The following will add PriceBookMatrix table */

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PriceBookMatrix]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[PriceBookMatrix](
	[MatrixKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[MatrixName] [nvarchar] (20) NOT NULL,
	[FromDate] [dateTime] NULL,
	[ToDate] [dateTime] NULL,
	[Y] [nvarchar] (20) NOT NULL,
	[YCriteria] [ntext] NULL,
	[X] [nvarchar] (20) NULL,
	[XCriteria] [ntext] NULL,
	[UnitPrice] [d_boolean] NULL,
	[Discount] [d_boolean] NULL,
	[GEQty] [d_Qty] NULL,
	[IsActive] [d_boolean] NULL,
) ON [PRIMARY]
GO
	
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PriceBookRule]') and name = N'MatrixKey')
BEGIN    
  ALTER TABLE [dbo].[PriceBookRule] ADD [MatrixKey] [bigint] NULL

  ALTER TABLE [dbo].[PriceBookRule] WITH CHECK ADD 
	CONSTRAINT [FK_PriceBookRule_MatrixKey] FOREIGN KEY (
		[MatrixKey]
	) REFERENCES [dbo].[PriceBookMatrix] (
		[MatrixKey]	
	) ON DELETE CASCADE
END
GO

/* The following will add RuleNo to Sales documents */

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

INSERT @ListTable VALUES('QTDTL', 'RuleNo', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('SODTL', 'RuleNo', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('DODTL', 'RuleNo', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'RuleNo', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'RuleNo', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'RuleNo', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'RuleNo', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('XSDTL', 'RuleNo', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('DRDTL', 'RuleNo', '[bigint] NULL', 'A')

DECLARE @sql NVARCHAR(200)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.7' WHERE RegID = 2
GO
�/* The following DDL will add AverageCost column to UTDStockCost table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UTDStockCost]') and name = N'AverageCost')
  ALTER TABLE [dbo].[UTDStockCost] 
    ADD [AverageCost] [d_Cost] NULL DEFAULT 0
GO

/* The following DDL will add FromSODocList column to PODTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'FromSODocList')
  ALTER TABLE [dbo].[PODTL] 
    ADD [FromSODocList] [ntext] NULL
GO

/* The following DDL will add IsActive column to PriceBookMatrix table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PriceBookMatrix]') and name = N'IsActive')
	ALTER TABLE [PriceBookMatrix] ADD [IsActive] [d_boolean] NULL

/* The following DDL will add YCriteria column to PriceBookMatrix table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PriceBookMatrix]') and name = N'YCriteria')
	ALTER TABLE [PriceBookMatrix] ADD [YCriteria] [ntext] NULL

/* The following DDL will add XCriteria column to PriceBookMatrix table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PriceBookMatrix]') and name = N'XCriteria')
	ALTER TABLE [PriceBookMatrix] ADD [XCriteria] [ntext] NULL
	
/* The following DDL will add UseSingleGainLossAccount column to FCRevalue table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[FCRevalue]') and name = N'UseSingleGainLossAccount')
	ALTER TABLE [FCRevalue] ADD [UseSingleGainLossAccount] [d_Boolean] NOT NULL DEFAULT 'T'
	
/* The following DDL will add UnrealizedGainAccount column to FCRevalueRate table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[FCRevalueRate]') and name = N'UnrealizedGainAccount')
	ALTER TABLE [FCRevalueRate] ADD [UnrealizedGainAccount] [d_AccNo] NULL
	
/* The following DDL will add UnrealizedGainAccount column to FCRevalueRate table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[FCRevalueRate]') and name = N'UnrealizedLossAccount')
	ALTER TABLE [FCRevalueRate] ADD [UnrealizedLossAccount] [d_AccNo] NULL
	
/* The following DDL will add UseSingleGainLossAccount column to UnrealizedGainLoss table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLoss]') and name = N'UseSingleGainLossAccount')
	ALTER TABLE [UnrealizedGainLoss] ADD [UseSingleGainLossAccount] [d_Boolean] NOT NULL DEFAULT 'T'
	
/* The following DDL will add UnrealizedGainAccount column to UnrealizedGainLossRate table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLossRate]') and name = N'UnrealizedGainAccount')
	ALTER TABLE [UnrealizedGainLossRate] ADD [UnrealizedGainAccount] [d_AccNo] NULL
	
/* The following DDL will add UnrealizedGainAccount column to UnrealizedGainLossRate table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLossRate]') and name = N'UnrealizedLossAccount')
	ALTER TABLE [UnrealizedGainLossRate] ADD [UnrealizedLossAccount] [d_AccNo] NULL

UPDATE REGISTRY SET RegValue = '1.0.9.8' WHERE RegID = 2
GO
�/* The following DDL will add Foreign key of ItemSerialNo to Item table */
DELETE FROM ItemSerialNo
WHERE ItemCode NOT IN (SELECT ItemCode FROM Item)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemSerialNo_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemSerialNo] DROP CONSTRAINT [FK_ItemSerialNo_ItemCode]
GO

ALTER TABLE dbo.ItemSerialNo WITH CHECK ADD CONSTRAINT
	FK_ItemSerialNo_ItemCode FOREIGN KEY
	(
	[ItemCode]
	) REFERENCES dbo.Item
	(
	[ItemCode]
	)
GO

/* The following DDL will add ItemSerialNoDtl to support new Serial Number function */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemSerialNoDtl]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE ItemSerialNoDtl
	(
		[SerialNumber] [d_SerialNo] NOT NULL,
		[ItemCode] [d_ItemCode] NOT NULL,
		[Location] [d_Location] NOT NULL,
		[Qty] [int] NULL,
		[CSGNQty] [int] NULL,
		[Cost][d_Cost] NULL,
		CONSTRAINT [PK_ItemSerialNoDtl] PRIMARY KEY (SerialNumber, ItemCode, Location) 
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemSerialNoDtl_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemSerialNoDtl] DROP CONSTRAINT [FK_ItemSerialNoDtl_ItemCode]
GO

ALTER TABLE [dbo].[ItemSerialNoDtl] ADD 
	CONSTRAINT [FK_ItemSerialNoDtl_ItemCode] FOREIGN KEY
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] 
	(
		[ItemCode]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemSerialNoDtl_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemSerialNoDtl] DROP CONSTRAINT [FK_ItemSerialNoDtl_Location]
GO

ALTER TABLE [dbo].[ItemSerialNoDtl] ADD 
	CONSTRAINT [FK_ItemSerialNoDtl_Location] FOREIGN KEY
	(
		[Location]
	) REFERENCES [dbo].[Location] 
	(
		[Location]
	) ON UPDATE CASCADE 
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemSerialNo]') and name = N'Location')
	ALTER TABLE ItemSerialNo DROP Constraint FK_ItemSerialNo_Location
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemSerialNo]') and name = N'Location')
	ALTER TABLE ItemSerialNo DROP COLUMN Location
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemSerialNo]') and name = N'Note')
	ALTER TABLE ItemSerialNo ADD Note [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SerialNoTrans]') and name = N'Note')
	ALTER TABLE SerialNoTrans ADD Note [ntext] NULL
GO

/* The following DDL will add rename DeliveryDate to EstimatedDeliveryDate, and Add a new column DeliveryDate to affected tables */
DECLARE @ListTable TABLE(TableName nvarchar(50))

INSERT @ListTable VALUES('QTDTL')
INSERT @ListTable VALUES('SODTL')
INSERT @ListTable VALUES('DODTL')
INSERT @ListTable VALUES('CSDTL')
INSERT @ListTable VALUES('IVDTL')
INSERT @ListTable VALUES('XSDTL')
INSERT @ListTable VALUES('DRDTL')
INSERT @ListTable VALUES('RQDTL')
INSERT @ListTable VALUES('PODTL')
INSERT @ListTable VALUES('GRDTL')
INSERT @ListTable VALUES('PIDTL')
INSERT @ListTable VALUES('CPDTL')
INSERT @ListTable VALUES('XPDTL')
INSERT @ListTable VALUES('GTDTL')
INSERT @ListTable VALUES('AORProcessing')
INSERT @ListTable VALUES('DRProcessing')
INSERT @ListTable VALUES('PRProcessing')

DECLARE @sql NVARCHAR(400)
DECLARE @tableName  NVARCHAR(50)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if (exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' 
			+ @tableName + ']'') and name = N''DeliveryDate'') and ' +
			'not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].['
			+ @tableName + ']'') and name = N''EstimatedDeliveryDate'')) ' +
			'EXEC sp_rename N''dbo.' + @tableName + '.DeliveryDate'', N''EstimatedDeliveryDate'', ''COLUMN'''

  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''DeliveryDate'') ALTER TABLE [dbo].[' + @tableName + '] ADD [DeliveryDate] datetime NULL'

  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ColumnLock]') and name = N'EstimatedDeliveryDate') ALTER TABLE [dbo].[ColumnLock] ADD [EstimatedDeliveryDate] d_Boolean NOT NULL DEFAULT 'F'
GO

UPDATE ColumnLock
SET EstimatedDeliveryDate=DeliveryDate
GO

UPDATE REGISTRY SET RegValue = '1.0.9.9' WHERE RegID = 2
GO
aif not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARPaymentDTL]') and name = N'BankChargeDtlKey')
ALTER TABLE [dbo].[ARPaymentDTL]
  ADD [BankChargeDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APPaymentDTL]') and name = N'BankChargeDtlKey')
ALTER TABLE [dbo].[APPaymentDTL]
  ADD [BankChargeDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARRefundDTL]') and name = N'BankChargeDtlKey')
ALTER TABLE [dbo].[ARRefundDTL]
  ADD [BankChargeDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APRefundDTL]') and name = N'BankChargeDtlKey')
ALTER TABLE [dbo].[APRefundDTL]
  ADD [BankChargeDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CBPaymentDTL]') and name = N'BankChargeDtlKey')
ALTER TABLE [dbo].[CBPaymentDTL]
  ADD [BankChargeDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDepositDTL]') and name = N'BankChargeDtlKey')
ALTER TABLE [dbo].[ARDepositDTL]
  ADD [BankChargeDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDepositDTL]') and name = N'BankChargeDtlKey')
ALTER TABLE [dbo].[APDepositDTL]
  ADD [BankChargeDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARRefundDepositDTL]') and name = N'BankChargeDtlKey')
ALTER TABLE [dbo].[ARRefundDepositDTL]
  ADD [BankChargeDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APRefundDepositDTL]') and name = N'BankChargeDtlKey')
ALTER TABLE [dbo].[APRefundDepositDTL]
  ADD [BankChargeDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'MainPage')
ALTER TABLE [dbo].[Users]
  ADD [MainPage] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CreditControlSync]') and name = N'ComputerName')
ALTER TABLE [dbo].[CreditControlSync]
  ADD [ComputerName] [nvarchar] (50) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CreditControlSync]') and name = N'RequestDateTime')
ALTER TABLE [dbo].[CreditControlSync]
  ADD [RequestDateTime] [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CreditControlSync]') and name = N'CreatedUserID')
ALTER TABLE [dbo].[CreditControlSync]
  ADD [CreatedUserID] [d_UserID] NULL
GO

ALTER TABLE [dbo].[CreditControlSync]
  ALTER COLUMN [DocNo] [nvarchar] (50) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SO]') and name = N'FromDocList')
ALTER TABLE [dbo].[SO]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DO]') and name = N'FromDocList')
ALTER TABLE [dbo].[DO]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'FromDocList')
ALTER TABLE [dbo].[IV]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'FromDocList')
ALTER TABLE [dbo].[CS]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'FromDocList')
ALTER TABLE [dbo].[CN]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XS]') and name = N'FromDocList')
ALTER TABLE [dbo].[XS]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DR]') and name = N'FromDocList')
ALTER TABLE [dbo].[DR]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PO]') and name = N'FromDocList')
ALTER TABLE [dbo].[PO]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GR]') and name = N'FromDocList')
ALTER TABLE [dbo].[GR]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PI]') and name = N'FromDocList')
ALTER TABLE [dbo].[PI]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CP]') and name = N'FromDocList')
ALTER TABLE [dbo].[CP]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PR]') and name = N'FromDocList')
ALTER TABLE [dbo].[PR]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XP]') and name = N'FromDocList')
ALTER TABLE [dbo].[XP]
  ADD [FromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GT]') and name = N'FromDocList')
ALTER TABLE [dbo].[GT]
  ADD [FromDocList] [ntext] NULL
GO

INSERT INTO [ChangeCount] VALUES ('Profile', 0);
GO

CREATE TRIGGER UpdateCompanyProfileChangeCount ON Profile
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Profile'
SET NOCOUNT OFF
GO

UPDATE REGISTRY SET RegValue = '1.0.8.0' WHERE RegID = 2
GO
�-- Drop BonusPointContact and all Foreign Keys that link to it
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BonusPointTrans_BonusPointContact]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BonusPointTrans] DROP CONSTRAINT [FK_BonusPointTrans_BonusPointContact]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_IV_BonusPointContact]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[IV] DROP CONSTRAINT [FK_IV_BonusPointContact]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CS_BonusPointContact]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CS] DROP CONSTRAINT [FK_CS_BonusPointContact]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DN_BonusPointContact]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DN] DROP CONSTRAINT [FK_DN_BonusPointContact]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CN_BonusPointContact]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CN] DROP CONSTRAINT [FK_CN_BonusPointContact]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BonusPointContact]') and OBJECTPROPERTY(id, N'IsTable') = 1)
  DROP TABLE [dbo].[BonusPointContact]
GO

-- Drop BonusPointContact columns that exists in IV, CS, CN, DN, and BonusPointTrans
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'BonusPointContact')
ALTER TABLE [dbo].[IV]
  DROP COLUMN [BonusPointContact]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'BonusPointContact')
ALTER TABLE [dbo].[CS]
  DROP COLUMN [BonusPointContact]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'BonusPointContact')
ALTER TABLE [dbo].[DN]
  DROP COLUMN [BonusPointContact]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'BonusPointContact')
ALTER TABLE [dbo].[CN]
  DROP COLUMN [BonusPointContact]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointTrans]') and name = N'BonusPointContact')
ALTER TABLE [dbo].[BonusPointTrans]
  DROP COLUMN [BonusPointContact]
GO

-- Add new BonusPointAccount table
if not exists (select * from dbo.systypes where name = N'd_BonusPointAccNo')
  EXEC sp_addtype N'd_BonusPointAccNo', N'nvarchar (20)'
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BonusPointAccount]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE [dbo].[BonusPointAccount] (
	[BonusPointAccNo] [d_BonusPointAccNo] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Name] [d_AccDescription] NULL,
	[Address1] [d_Address] NULL,
	[Address2] [d_Address] NULL,
	[Address3] [d_Address] NULL,
	[Address4] [d_Address] NULL,
	[AccNo] [d_AccNo] NULL,
	[CompanyName] [d_AccDescription] NULL,
	[Department] [nvarchar] (30) NULL, 
	[Title] [nvarchar] (40) NULL, 
	[MobilePhone] [d_Phone] NULL, 
	[DirectPhone] [d_Phone] NULL, 
	[DirectFax] [d_Phone] NULL, 
	[EmailAddress] [d_EmailAddress] NULL, 
	[IMAddress] [d_IMAddress] NULL, 
	[Note] [ntext] NULL, 
	[OpeningBonusPoint] [int] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

if not exists (select * from dbo.sysindexes where name = N'IX_BonusPointAccount_AccNo')
  CREATE INDEX [IX_BonusPointAccount_AccNo] ON [dbo].[BonusPointAccount]([AccNo]) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BonusPointAccount_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BonusPointAccount] DROP CONSTRAINT [FK_BonusPointAccount_AccNo]
GO

ALTER TABLE [dbo].[BonusPointAccount] ADD
	CONSTRAINT [FK_BonusPointAccount_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BonusPointTrans_DebtorCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BonusPointTrans] DROP CONSTRAINT [FK_BonusPointTrans_DebtorCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BonusPointTrans_BonusPointAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BonusPointTrans] DROP CONSTRAINT [FK_BonusPointTrans_BonusPointAccNo]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointTrans]') and name = N'BonusPointAccNo')
ALTER TABLE [dbo].[BonusPointTrans]
  ADD [BonusPointAccNo] [d_BonusPointAccNo] NULL
GO

ALTER TABLE [dbo].[BonusPointTrans] ADD
	CONSTRAINT [FK_BonusPointTrans_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	),
	CONSTRAINT [FK_BonusPointTrans_BonusPointAccNo] FOREIGN KEY 
	(
		[BonusPointAccNo]
	) REFERENCES [dbo].[BonusPointAccount] (
		[BonusPointAccNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BankRecon_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BankRecon] DROP CONSTRAINT [FK_BankRecon_AccNo]
GO

ALTER TABLE [dbo].[BankRecon] ADD
	CONSTRAINT [FK_BankRecon_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) 
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BankTrans_AccNo_BankStatementDate]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BankTrans] DROP CONSTRAINT [FK_BankTrans_AccNo_BankStatementDate]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BankTrans_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BankTrans] DROP CONSTRAINT [FK_BankTrans_AccNo]
GO

ALTER TABLE [dbo].[BankTrans] ADD
	CONSTRAINT [FK_BankTrans_AccNo_BankStatementDate] FOREIGN KEY
	(
		[AccNo],
		[BankStatementDate]
	) REFERENCES [dbo].[BankRecon] (
		[AccNo],
		[BankStatementDate]
	),
	CONSTRAINT [FK_BankTrans_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) 
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemPrice_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemPrice] DROP CONSTRAINT [FK_ItemPrice_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemPrice_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemPrice] DROP CONSTRAINT [FK_ItemPrice_ItemUOM]
GO

ALTER TABLE [dbo].[ItemPrice] ADD
	CONSTRAINT [FK_ItemPrice_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemOpening_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemOpening] DROP CONSTRAINT [FK_ItemOpening_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemOpening_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemOpening] DROP CONSTRAINT [FK_ItemOpening_ItemUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemOpening_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemOpening] DROP CONSTRAINT [FK_ItemOpening_Location]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemOpening_ItemBatch]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemOpening] DROP CONSTRAINT [FK_ItemOpening_ItemBatch]
GO

ALTER TABLE [dbo].[ItemOpening] ADD
	CONSTRAINT [FK_ItemOpening_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	),
	CONSTRAINT [FK_ItemOpening_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	),
	CONSTRAINT [FK_ItemOpening_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SNTrans_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[SNTrans] DROP CONSTRAINT [FK_SNTrans_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SNTrans_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[SNTrans] DROP CONSTRAINT [FK_SNTrans_ItemUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SNTrans_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[SNTrans] DROP CONSTRAINT [FK_SNTrans_Location]
GO

ALTER TABLE [dbo].[SNTrans] ADD
	CONSTRAINT [FK_SNTrans_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	),
	CONSTRAINT [FK_SNTrans_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

DELETE FROM [dbo].[ItemBatchBalQty]
GO

INSERT INTO [dbo].[ItemBatchBalQty] (ItemCode, UOM, Location, BatchNo, BalQty)
SELECT ItemCode, UOM, Location, '', SUM(Qty) FROM StockDTL
WHERE BatchNo IS NULL
GROUP BY ItemCode, UOM, Location
GO

INSERT INTO [dbo].[ItemBatchBalQty] (ItemCode, UOM, Location, BatchNo, BalQty)
SELECT ItemCode, UOM, Location, BatchNo, SUM(Qty) FROM StockDTL
WHERE BatchNo IS NOT NULL
GROUP BY ItemCode, UOM, Location, BatchNo
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemBatchBalQty_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemBatchBalQty] DROP CONSTRAINT [FK_ItemBatchBalQty_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemBatchBalQty_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemBatchBalQty] DROP CONSTRAINT [FK_ItemBatchBalQty_ItemUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemBatchBalQty_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemBatchBalQty] DROP CONSTRAINT [FK_ItemBatchBalQty_Location]
GO

ALTER TABLE [dbo].[ItemBatchBalQty] ADD 
	CONSTRAINT [FK_ItemBatchBalQty_ItemUOM] FOREIGN KEY
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	),
	CONSTRAINT [FK_ItemBatchBalQty_Location] FOREIGN KEY
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemBOM_SubItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemBOM] DROP CONSTRAINT [FK_ItemBOM_SubItemCode]
GO

ALTER TABLE [dbo].[ItemBOM] ADD 
	CONSTRAINT [FK_ItemBOM_SubItemCode] FOREIGN KEY
	(
		[SubItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IPHIST_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IPHIST] DROP CONSTRAINT [FK_IPHIST_AccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IPHIST_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IPHIST] DROP CONSTRAINT [FK_IPHIST_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IPHIST_Branch]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IPHIST] DROP CONSTRAINT [FK_IPHIST_Branch]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IPHIST_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IPHIST] DROP CONSTRAINT [FK_IPHIST_Location]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IPHIST_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IPHIST] DROP CONSTRAINT [FK_IPHIST_ItemUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IPHIST_ItemBatch]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IPHIST] DROP CONSTRAINT [FK_IPHIST_ItemBatch]
GO

ALTER TABLE [dbo].[IPHIST] ADD 
	CONSTRAINT [FK_IPHIST_AccNo] FOREIGN KEY
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast](
		[AccNo]
	),
	CONSTRAINT [FK_IPHIST_Branch] FOREIGN KEY
	(
		[AccNo], [BranchCode]
	) REFERENCES [dbo].[Branch](
		[AccNo], [BranchCode]
	),
	CONSTRAINT [FK_IPHIST_Location] FOREIGN KEY
	(
		[Location]
	) REFERENCES [dbo].[Location](
		[Location]
	),
	CONSTRAINT [FK_IPHIST_ItemUOM] FOREIGN KEY
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM](
		[ItemCode], [UOM]
	),
	CONSTRAINT [FK_IPHIST_ItemBatch] FOREIGN KEY
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch](
		[ItemCode], [BatchNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GLMAST_ParentAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[GLMAST] DROP CONSTRAINT [FK_GLMAST_ParentAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PackageDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PackageDTL] DROP CONSTRAINT [FK_PackageDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_QTDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[QTDTL] DROP CONSTRAINT [FK_QTDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_QTDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[QTDTL] DROP CONSTRAINT [FK_QTDTL_Location]
GO

ALTER TABLE [dbo].[QTDTL] ADD 
	CONSTRAINT [FK_QTDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SODTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[SODTL] DROP CONSTRAINT [FK_SODTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SODTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[SODTL] DROP CONSTRAINT [FK_SODTL_Location]
GO

ALTER TABLE [dbo].[SODTL] ADD 
	CONSTRAINT [FK_SODTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DODTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DODTL] DROP CONSTRAINT [FK_DODTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DODTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DODTL] DROP CONSTRAINT [FK_DODTL_Location]
GO

ALTER TABLE [dbo].[DODTL] ADD 
	CONSTRAINT [FK_DODTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IVDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[IVDTL] DROP CONSTRAINT [FK_IVDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IVDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[IVDTL] DROP CONSTRAINT [FK_IVDTL_Location]
GO

ALTER TABLE [dbo].[IVDTL] ADD 
	CONSTRAINT [FK_IVDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CSDTL] DROP CONSTRAINT [FK_CSDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CSDTL] DROP CONSTRAINT [FK_CSDTL_Location]
GO

ALTER TABLE [dbo].[CSDTL] ADD 
	CONSTRAINT [FK_CSDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DNDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DNDTL] DROP CONSTRAINT [FK_DNDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DNDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DNDTL] DROP CONSTRAINT [FK_DNDTL_Location]
GO

ALTER TABLE [dbo].[DNDTL] ADD 
	CONSTRAINT [FK_DNDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CNDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CNDTL] DROP CONSTRAINT [FK_CNDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CNDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CNDTL] DROP CONSTRAINT [FK_CNDTL_Location]
GO

ALTER TABLE [dbo].[CNDTL] ADD 
	CONSTRAINT [FK_CNDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_XSDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XSDTL] DROP CONSTRAINT [FK_XSDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_XSDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XSDTL] DROP CONSTRAINT [FK_XSDTL_Location]
GO

ALTER TABLE [dbo].[XSDTL] ADD 
	CONSTRAINT [FK_XSDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DRDTL] DROP CONSTRAINT [FK_DRDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DRDTL] DROP CONSTRAINT [FK_DRDTL_Location]
GO

ALTER TABLE [dbo].[DRDTL] ADD 
	CONSTRAINT [FK_DRDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_RQDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[RQDTL] DROP CONSTRAINT [FK_RQDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_RQDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[RQDTL] DROP CONSTRAINT [FK_RQDTL_Location]
GO

ALTER TABLE [dbo].[RQDTL] ADD 
	CONSTRAINT [FK_RQDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PODTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PODTL] DROP CONSTRAINT [FK_PODTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PODTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PODTL] DROP CONSTRAINT [FK_PODTL_Location]
GO

ALTER TABLE [dbo].[PODTL] ADD 
	CONSTRAINT [FK_PODTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GRDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GRDTL] DROP CONSTRAINT [FK_GRDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GRDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GRDTL] DROP CONSTRAINT [FK_GRDTL_Location]
GO

ALTER TABLE [dbo].[GRDTL] ADD 
	CONSTRAINT [FK_GRDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PIDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PIDTL] DROP CONSTRAINT [FK_PIDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PIDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PIDTL] DROP CONSTRAINT [FK_PIDTL_Location]
GO

ALTER TABLE [dbo].[PIDTL] ADD 
	CONSTRAINT [FK_PIDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CPDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CPDTL] DROP CONSTRAINT [FK_CPDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CPDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CPDTL] DROP CONSTRAINT [FK_CPDTL_Location]
GO

ALTER TABLE [dbo].[CPDTL] ADD 
	CONSTRAINT [FK_CPDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO	

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PRDTL] DROP CONSTRAINT [FK_PRDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PRDTL] DROP CONSTRAINT [FK_PRDTL_Location]
GO

ALTER TABLE [dbo].[PRDTL] ADD 
	CONSTRAINT [FK_PRDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_XPDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XPDTL] DROP CONSTRAINT [FK_XPDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_XPDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XPDTL] DROP CONSTRAINT [FK_XPDTL_Location]
GO

ALTER TABLE [dbo].[XPDTL] ADD 
	CONSTRAINT [FK_XPDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GTDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GTDTL] DROP CONSTRAINT [FK_GTDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GTDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GTDTL] DROP CONSTRAINT [FK_GTDTL_Location]
GO

ALTER TABLE [dbo].[GTDTL] ADD 
	CONSTRAINT [FK_GTDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_XFERDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XFERDTL] DROP CONSTRAINT [FK_XFERDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADJDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ADJDTL] DROP CONSTRAINT [FK_ADJDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADJDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ADJDTL] DROP CONSTRAINT [FK_ADJDTL_Location]
GO

ALTER TABLE [dbo].[ADJDTL] ADD 
	CONSTRAINT [FK_ADJDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ISSDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ISSDTL] DROP CONSTRAINT [FK_ISSDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ISSDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ISSDTL] DROP CONSTRAINT [FK_ISSDTL_Location]
GO

ALTER TABLE [dbo].[ISSDTL] ADD 
	CONSTRAINT [FK_ISSDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_RCVDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[RCVDTL] DROP CONSTRAINT [FK_RCVDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_RCVDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[RCVDTL] DROP CONSTRAINT [FK_RCVDTL_Location]
GO

ALTER TABLE [dbo].[RCVDTL] ADD 
	CONSTRAINT [FK_RCVDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_WOFFDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[WOFFDTL] DROP CONSTRAINT [FK_WOFFDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_WOFFDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[WOFFDTL] DROP CONSTRAINT [FK_WOFFDTL_Location]
GO

ALTER TABLE [dbo].[WOFFDTL] ADD 
	CONSTRAINT [FK_WOFFDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UOMConvDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[UOMConvDTL] DROP CONSTRAINT [FK_UOMConvDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UOMConvDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[UOMConvDTL] DROP CONSTRAINT [FK_UOMConvDTL_Location]
GO

ALTER TABLE [dbo].[UOMConvDTL] ADD 
	CONSTRAINT [FK_UOMConvDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UpdateCostDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[UpdateCostDTL] DROP CONSTRAINT [FK_UpdateCostDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ASM_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ASM] DROP CONSTRAINT [FK_ASM_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ASM_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ASM] DROP CONSTRAINT [FK_ASM_Location]
GO

ALTER TABLE [dbo].[ASM] ADD 
	CONSTRAINT [FK_ASM_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UTDStockCost_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[UTDStockCost] DROP CONSTRAINT [FK_UTDStockCost_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UTDStockCost_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[UTDStockCost] DROP CONSTRAINT [FK_UTDStockCost_Location]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UTDStockCost_BatchNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[UTDStockCost] DROP CONSTRAINT [FK_UTDStockCost_BatchNo]
GO

ALTER TABLE [dbo].[UTDStockCost] ADD
	CONSTRAINT [FK_UTDStockCost_ItemCode] FOREIGN KEY
	(
		[ItemCode],[UOM]
	) REFERENCES [dbo].[ItemUOM] ( 
		[ItemCode],[UOM]
	),
	CONSTRAINT [FK_UTDStockCost_Location] FOREIGN KEY
	(
		[Location]
	) REFERENCES [dbo].[Location] ( 
		[Location]
	),
	CONSTRAINT [FK_UTDStockCost_BatchNo] FOREIGN KEY
	(
		[ItemCode],[BatchNo]
	) REFERENCES [dbo].[ItemBatch] ( 
		[ItemCode],[BatchNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSGNDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CSGNDTL] DROP CONSTRAINT [FK_CSGNDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSGNDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CSGNDTL] DROP CONSTRAINT [FK_CSGNDTL_Location]
GO

ALTER TABLE [dbo].[CSGNDTL] ADD 
	CONSTRAINT [FK_CSGNDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SupplierCSGNDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[SupplierCSGNDTL] DROP CONSTRAINT [FK_SupplierCSGNDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SupplierCSGNDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[SupplierCSGNDTL] DROP CONSTRAINT [FK_SupplierCSGNDTL_Location]
GO

ALTER TABLE [dbo].[SupplierCSGNDTL] ADD 
	CONSTRAINT [FK_SupplierCSGNDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDTL_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[StockDTL] DROP CONSTRAINT [FK_StockDTL_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDTL_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[StockDTL] DROP CONSTRAINT [FK_StockDTL_Location]
GO

ALTER TABLE [dbo].[StockDTL] ADD 
	CONSTRAINT [FK_StockDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSGNItemBalQty_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CSGNItemBalQty] DROP CONSTRAINT [FK_CSGNItemBalQty_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSGNItemBalQty_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CSGNItemBalQty] DROP CONSTRAINT [FK_CSGNItemBalQty_ItemUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSGNItemBalQty_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CSGNItemBalQty] DROP CONSTRAINT [FK_CSGNItemBalQty_Location]
GO

ALTER TABLE [dbo].[CSGNItemBalQty] ADD 
	CONSTRAINT [FK_CSGNItemBalQty_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	),
	CONSTRAINT [FK_CSGNItemBalQty_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemCostHistory_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ItemCostHistory] DROP CONSTRAINT [FK_ItemCostHistory_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemCostHistory_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ItemCostHistory] DROP CONSTRAINT [FK_ItemCostHistory_ItemUOM]
GO

ALTER TABLE [dbo].[ItemCostHistory] ADD 
	CONSTRAINT [FK_ItemCostHistory_ItemUOM] FOREIGN KEY
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	)
GO 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_OBDTL_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[OBDTL] DROP CONSTRAINT [FK_OBDTL_AccNo]
GO

ALTER TABLE [dbo].[OBDTL] ADD
	CONSTRAINT [FK_OBDTL_AccNo] FOREIGN KEY
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast](
		[AccNo]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UsersGroup_UserGroupID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[UsersGroup] DROP CONSTRAINT [FK_UsersGroup_UserGroupID]
GO

ALTER TABLE [dbo].[UsersGroup] ADD
	CONSTRAINT [FK_UsersGroup_UserGroupID] FOREIGN KEY 
	(
		[UserGroupID]
	) REFERENCES [dbo].[UserGroup](
		[UserGroupID]
	) ON UPDATE CASCADE
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDeposit_CurrencyCode]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ARDeposit] DROP CONSTRAINT [FK_ARDeposit_CurrencyCode]
GO

ALTER TABLE [dbo].[ARDeposit] ADD 
	CONSTRAINT [FK_ARDeposit_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[CURRENCY] (
		[CurrencyCode]
	) ON UPDATE CASCADE
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_APDeposit_CurrencyCode]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[APDeposit] DROP CONSTRAINT [FK_APDeposit_CurrencyCode]
GO

ALTER TABLE [dbo].[APDeposit] ADD
	CONSTRAINT [FK_APDeposit_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[CURRENCY] (
		[CurrencyCode]
	) ON UPDATE CASCADE
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_Debtor_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Debtor] DROP CONSTRAINT [FK_Debtor_TaxType]
GO

ALTER TABLE [dbo].[Debtor] ADD
	CONSTRAINT [FK_Debtor_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_Creditor_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Creditor] DROP CONSTRAINT [FK_Creditor_TaxType]
GO

ALTER TABLE [dbo].[Creditor] ADD
	CONSTRAINT [FK_Creditor_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_Item_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Item] DROP CONSTRAINT [FK_Item_TaxType]
GO

ALTER TABLE [dbo].[Item] ADD
	CONSTRAINT [FK_Item_TaxType] FOREIGN KEY
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_ARInvoiceDTL_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ARInvoiceDTL] DROP CONSTRAINT [FK_ARInvoiceDTL_TaxType]
GO

ALTER TABLE [dbo].[ARInvoiceDTL] ADD
	CONSTRAINT [FK_ARInvoiceDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDNDTL_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ARDNDTL] DROP CONSTRAINT [FK_ARDNDTL_TaxType]
GO

ALTER TABLE [dbo].[ARDNDTL] ADD
	CONSTRAINT [FK_ARDNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_ARCNDTL_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ARCNDTL] DROP CONSTRAINT [FK_ARCNDTL_TaxType]
GO

ALTER TABLE [dbo].[ARCNDTL] ADD
	CONSTRAINT [FK_ARCNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_APInvoiceDTL_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[APInvoiceDTL] DROP CONSTRAINT [FK_APInvoiceDTL_TaxType]
GO

ALTER TABLE [dbo].[APInvoiceDTL] ADD
	CONSTRAINT [FK_APInvoiceDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_APDNDTL_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[APDNDTL] DROP CONSTRAINT [FK_APDNDTL_TaxType]
GO

ALTER TABLE [dbo].[APDNDTL] ADD
	CONSTRAINT [FK_APDNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_APCNDTL_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[APCNDTL] DROP CONSTRAINT [FK_APCNDTL_TaxType]
GO

ALTER TABLE [dbo].[APCNDTL] ADD
	CONSTRAINT [FK_APCNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_APCNDTL_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[APCNDTL] DROP CONSTRAINT [FK_APCNDTL_TaxType]
GO

ALTER TABLE [dbo].[APCNDTL] ADD
	CONSTRAINT [FK_APCNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_QT_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[QT] DROP CONSTRAINT [FK_QT_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_QT_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[QT] DROP CONSTRAINT [FK_QT_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_QT_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[QT] DROP CONSTRAINT [FK_QT_Footer3TaxType]
GO

ALTER TABLE [dbo].[QT] ADD
	CONSTRAINT [FK_QT_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_QT_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_QT_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_SO_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[SO] DROP CONSTRAINT [FK_SO_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_SO_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[SO] DROP CONSTRAINT [FK_SO_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_SO_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[SO] DROP CONSTRAINT [FK_SO_Footer3TaxType]
GO

ALTER TABLE [dbo].[SO] ADD
	CONSTRAINT [FK_SO_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_SO_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_SO_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DO_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DO] DROP CONSTRAINT [FK_DO_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DO_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DO] DROP CONSTRAINT [FK_DO_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DO_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DO] DROP CONSTRAINT [FK_DO_Footer3TaxType]
GO

ALTER TABLE [dbo].[DO] ADD
	CONSTRAINT [FK_DO_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_DO_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_DO_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_IV_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[IV] DROP CONSTRAINT [FK_IV_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_IV_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[IV] DROP CONSTRAINT [FK_IV_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_IV_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[IV] DROP CONSTRAINT [FK_IV_Footer3TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_IV_BonusPointAccNo]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[IV] DROP CONSTRAINT [FK_IV_BonusPointAccNo]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'BonusPointAccNo')
ALTER TABLE [dbo].[IV]
  ADD [BonusPointAccNo] [d_BonusPointAccNo] NULL
GO

ALTER TABLE [dbo].[IV] ADD
	CONSTRAINT [FK_IV_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_IV_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_IV_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_IV_BonusPointAccNo] FOREIGN KEY 
	(
		[BonusPointAccNo]
	) REFERENCES [dbo].[BonusPointAccount] (
		[BonusPointAccNo]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CS_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CS] DROP CONSTRAINT [FK_CS_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CS_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CS] DROP CONSTRAINT [FK_CS_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CS_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CS] DROP CONSTRAINT [FK_CS_Footer3TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CS_BonusPointAccNo]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CS] DROP CONSTRAINT [FK_CS_BonusPointAccNo]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'BonusPointAccNo')
ALTER TABLE [dbo].[CS]
  ADD [BonusPointAccNo] [d_BonusPointAccNo] NULL
GO

ALTER TABLE [dbo].[CS] ADD
	CONSTRAINT [FK_CS_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_CS_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_CS_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_CS_BonusPointAccNo] FOREIGN KEY 
	(
		[BonusPointAccNo]
	) REFERENCES [dbo].[BonusPointAccount] (
		[BonusPointAccNo]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DN_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DN] DROP CONSTRAINT [FK_DN_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DN_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DN] DROP CONSTRAINT [FK_DN_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DN_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DN] DROP CONSTRAINT [FK_DN_Footer3TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DN_BonusPointAccNo]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DN] DROP CONSTRAINT [FK_DN_BonusPointAccNo]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'BonusPointAccNo')
ALTER TABLE [dbo].[DN]
  ADD [BonusPointAccNo] [d_BonusPointAccNo] NULL
GO

ALTER TABLE [dbo].[DN] ADD
	CONSTRAINT [FK_DN_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_DN_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_DN_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_DN_BonusPointAccNo] FOREIGN KEY 
	(
		[BonusPointAccNo]
	) REFERENCES [dbo].[BonusPointAccount] (
		[BonusPointAccNo]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CN_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CN] DROP CONSTRAINT [FK_CN_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CN_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CN] DROP CONSTRAINT [FK_CN_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CN_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CN] DROP CONSTRAINT [FK_CN_Footer3TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CN_BonusPointAccNo]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CN] DROP CONSTRAINT [FK_CN_BonusPointAccNo]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'BonusPointAccNo')
ALTER TABLE [dbo].[CN]
  ADD [BonusPointAccNo] [d_BonusPointAccNo] NULL
GO

ALTER TABLE [dbo].[CN] ADD
	CONSTRAINT [FK_CN_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_CN_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_CN_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_CN_BonusPointAccNo] FOREIGN KEY 
	(
		[BonusPointAccNo]
	) REFERENCES [dbo].[BonusPointAccount] (
		[BonusPointAccNo]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_XS_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XS] DROP CONSTRAINT [FK_XS_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_XS_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XS] DROP CONSTRAINT [FK_XS_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_XS_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XS] DROP CONSTRAINT [FK_XS_Footer3TaxType]
GO

ALTER TABLE [dbo].[XS] ADD
	CONSTRAINT [FK_XS_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_XS_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_XS_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DR_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DR] DROP CONSTRAINT [FK_DR_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DR_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DR] DROP CONSTRAINT [FK_DR_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DR_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DR] DROP CONSTRAINT [FK_DR_Footer3TaxType]
GO

ALTER TABLE [dbo].[DR] ADD
	CONSTRAINT [FK_DR_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_DR_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_DR_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_RQ_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[RQ] DROP CONSTRAINT [FK_RQ_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_RQ_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[RQ] DROP CONSTRAINT [FK_RQ_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_RQ_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[RQ] DROP CONSTRAINT [FK_RQ_Footer3TaxType]
GO

ALTER TABLE [dbo].[RQ] ADD
	CONSTRAINT [FK_RQ_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_RQ_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_RQ_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_PO_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PO] DROP CONSTRAINT [FK_PO_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_PO_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PO] DROP CONSTRAINT [FK_PO_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_PO_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PO] DROP CONSTRAINT [FK_PO_Footer3TaxType]
GO

ALTER TABLE [dbo].[PO] ADD
	CONSTRAINT [FK_PO_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_PO_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_PO_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_GR_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GR] DROP CONSTRAINT [FK_GR_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_GR_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GR] DROP CONSTRAINT [FK_GR_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_GR_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GR] DROP CONSTRAINT [FK_GR_Footer3TaxType]
GO

ALTER TABLE [dbo].[GR] ADD
	CONSTRAINT [FK_GR_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_GR_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_GR_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_PI_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PI] DROP CONSTRAINT [FK_PI_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_PI_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PI] DROP CONSTRAINT [FK_PI_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_PI_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PI] DROP CONSTRAINT [FK_PI_Footer3TaxType]
GO

ALTER TABLE [dbo].[PI] ADD
	CONSTRAINT [FK_PI_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_PI_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_PI_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CP_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CP] DROP CONSTRAINT [FK_CP_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CP_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CP] DROP CONSTRAINT [FK_CP_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CP_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CP] DROP CONSTRAINT [FK_CP_Footer3TaxType]
GO

ALTER TABLE [dbo].[CP] ADD
	CONSTRAINT [FK_CP_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_CP_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_CP_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_PR_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PR] DROP CONSTRAINT [FK_PR_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_PR_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PR] DROP CONSTRAINT [FK_PR_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_PR_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[PR] DROP CONSTRAINT [FK_PR_Footer3TaxType]
GO

ALTER TABLE [dbo].[PR] ADD
	CONSTRAINT [FK_PR_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_PR_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_PR_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_XP_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XP] DROP CONSTRAINT [FK_XP_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_XP_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XP] DROP CONSTRAINT [FK_XP_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_XP_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[XP] DROP CONSTRAINT [FK_XP_Footer3TaxType]
GO

ALTER TABLE [dbo].[XP] ADD
	CONSTRAINT [FK_XP_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_XP_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_XP_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_GT_Footer1TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GT] DROP CONSTRAINT [FK_GT_Footer1TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_GT_Footer2TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GT] DROP CONSTRAINT [FK_GT_Footer2TaxType]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_GT_Footer3TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GT] DROP CONSTRAINT [FK_GT_Footer3TaxType]
GO

ALTER TABLE [dbo].[GT] ADD
	CONSTRAINT [FK_GT_Footer1TaxType] FOREIGN KEY 
	(
		[Footer1TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_GT_Footer2TaxType] FOREIGN KEY 
	(
		[Footer2TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	),
	CONSTRAINT [FK_GT_Footer3TaxType] FOREIGN KEY 
	(
		[Footer3TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CBDTL_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CBDTL] DROP CONSTRAINT [FK_CBDTL_TaxType]
GO

ALTER TABLE [dbo].[CBDTL] ADD
	CONSTRAINT [FK_CBDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_JEDTL_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[JEDTL] DROP CONSTRAINT [FK_JEDTL_TaxType]
GO

ALTER TABLE [dbo].[JEDTL] ADD
	CONSTRAINT [FK_JEDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTrans_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[TaxTrans] DROP CONSTRAINT [FK_TaxTrans_TaxType]
GO

ALTER TABLE [dbo].[TaxTrans] ADD
	CONSTRAINT [FK_TaxTrans_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

UPDATE [dbo].[Footer]
SET [TaxType]=NULL
WHERE [TaxType]=''
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_Footer_TaxType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Footer] DROP CONSTRAINT [FK_Footer_TaxType]
GO

ALTER TABLE [dbo].[Footer] ADD
	CONSTRAINT [FK_Footer_TaxType] FOREIGN KEY
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] 
	(	
		[TaxType]
	)
GO

-- Start of Stored Procedure
-- bsp_ChangeBranch
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeAccNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeAccNo]
GO

CREATE PROCEDURE bsp_ChangeAccNo(@OldAccNo d_AccNo, @NewAccNo d_AccNo) AS 

IF @OldAccNo = @NewAccNo
    RETURN
   
--Create New Record For GLMast
BEGIN TRANSACTION

INSERT INTO GLMast(AccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, CurrencyCode, CashFlowCategory) 
SELECT @NewAccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, 
CurrencyCode, CashFlowCategory FROM GLMast WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Create New Record For Branch 
INSERT INTO Branch(AccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate) 
SELECT @NewAccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate FROM Branch WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update related tables
UPDATE [GLMast] SET ParentAccNo = @NewAccNo WHERE ParentAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankRecon] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankTrans] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CBDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [JEDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Debtor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Creditor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Contact] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TemporaryCredit] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemPrice] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [OBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IPHIST] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BudgetPBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DocNoFormatAccNo] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Footer] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNItemBalQty] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CreditControlSync] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IVDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PIDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CPDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PRDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET DEAccNo = @NewAccNo WHERE DEAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointTrans] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointAccount] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoice] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARPayment] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARRefund] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [QT] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IV] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DR] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET TempAccNo = @NewAccNo WHERE TempAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [APInvoice] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APPayment] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APRefund] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [RQ] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PO] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PI] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GT] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SupplierCSGN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [ItemGroup] SET SalesCode = @NewAccNo WHERE SalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET CashSalesCode = @NewAccNo WHERE CashSalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesReturnCode = @NewAccNo WHERE SalesReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesDiscountCode = @NewAccNo WHERE SalesDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseDiscountCode = @NewAccNo WHERE PurchaseDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseCode = @NewAccNo WHERE PurchaseCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseReturnCode = @NewAccNo WHERE PurchaseReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [CURRENCY] SET FCGainAccount = @NewAccNo WHERE FCGainAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CURRENCY] SET FCLossAccount = @NewAccNo WHERE FCLossAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [AssetLink] SET AssetAccNo = @NewAccNo WHERE AssetAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [AssetLink] SET AssetDeprnAccNo = @NewAccNo WHERE AssetDeprnAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [TaxType] SET TaxAccNo = @NewAccNo WHERE TaxAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TaxTrans] SET TaxableAccNo = @NewAccNo WHERE TaxableAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [PaymentMethod] SET BankAccount = @NewAccNo WHERE BankAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PaymentMethod] SET BankChargeAccount = @NewAccNo WHERE BankChargeAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [StockSet] SET OpenStock = @NewAccNo WHERE OpenStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET CloseStock = @NewAccNo WHERE CloseStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET BalanceStock = @NewAccNo WHERE BalanceStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update Account No in REGISTRY table
UPDATE [Registry] SET RegValue = @NewAccNo WHERE RegID IN (0x108, 0x109, 0x130, 0x128, 0x10C, 0x131, 0x12D, 0x171, 0x172, 0x173) AND RegValue = @OldAccNo
IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION 
    RETURN
  END
  
DELETE FROM Branch WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

DELETE FROM GLMast WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

COMMIT TRANSACTION
GO

-- bsp_ChangeBranch
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeBranch]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeBranch]
GO

CREATE PROCEDURE bsp_ChangeBranch(@AccNo d_AccNo, 
	@OldBranchCode d_BranchCode, @NewBranchCode d_BranchCode) AS 

IF @OldBranchCode = @NewBranchCode
    RETURN
   
BEGIN TRANSACTION
--Create New Record For Branch
INSERT INTO Branch(AccNo, BranchCode, BranchName, Address1, Address2, Address3, 
Address4, PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate) 
SELECT AccNo, @NewBranchCode, BranchName, Address1, Address2, Address3, 
Address4, PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate 
FROM Branch WHERE AccNo = @AccNo AND BranchCode = @OldBranchCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [IPHIST] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND AccNo = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGN] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGN] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END



DELETE FROM Branch WHERE AccNo = @AccNo AND BranchCode = @OldBranchCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeCurrency
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeCurrency]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeCurrency]
GO

CREATE PROCEDURE bsp_ChangeCurrency(@OldCurrencyCode d_CurrencyCode, 
			@NewCurrencyCode d_CurrencyCode) AS 

IF @OldCurrencyCode = @NewCurrencyCode
    RETURN
   
BEGIN TRANSACTION
--Update related tables
UPDATE [GLMast] SET CurrencyCode = @NewCurrencyCode WHERE CurrencyCode = @OldCurrencyCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Currency] SET CurrencyCode = @NewCurrencyCode WHERE CurrencyCode = @OldCurrencyCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeItemBatch
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemBatch]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemBatch]
GO

CREATE PROCEDURE bsp_ChangeItemBatch(@ItemCode d_ItemCode, 
	@OldItemBatch d_BatchNo, @NewItemBatch d_BatchNo) AS 

IF @OldItemBatch = @NewItemBatch
    RETURN
   
BEGIN TRANSACTION
--Create New Record For ItemBatch
INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty) 
SELECT ItemCode, @NewItemBatch, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @ItemCode AND BatchNo = @OldItemBatch

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [ItemBatchBalQty] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [ASMDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [StockDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemBatch WHERE ItemCode = @ItemCode AND BatchNo = @OldItemBatch
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeItemCode
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemCode]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemCode]
GO

CREATE PROCEDURE bsp_ChangeItemCode(@OldItemCode d_ItemCode, @NewItemCode d_ItemCode) AS 

BEGIN TRANSACTION
--Create New Record For Item
INSERT INTO Item(ItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate) 
SELECT @NewItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate FROM Item WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT @NewItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemBatch
INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty) 
SELECT @NewItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [ItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBatchBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemPrice] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SNTrans] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL]  SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCostDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ReplacementItemCode = @NewItemCode WHERE ReplacementItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET SubItemCode = @NewItemCode WHERE SubItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemUOM WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemBatch WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Item WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeItemUOM
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemUOM]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemUOM]
GO

CREATE PROCEDURE bsp_ChangeItemUOM(@ItemCode d_ItemCode, 
	@OldItemUOM d_UOM, @NewItemUOM d_UOM) AS 

IF @OldItemUOM = @NewItemUOM
    RETURN
   
BEGIN TRANSACTION
--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT ItemCode, @NewItemUOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @ItemCode AND UOM = @OldItemUOM 

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [Item] SET SalesUOM = @NewItemUOM WHERE SalesUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET PurchaseUOM = @NewItemUOM WHERE PurchaseUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET ReportUOM = @NewItemUOM WHERE ReportUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [ItemBatchBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemPrice] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SNTrans] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCostDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET FromUOM = @NewItemUOM WHERE FromUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET ToUOM = @NewItemUOM WHERE ToUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemUOM WHERE ItemCode = @ItemCode AND UOM = @OldItemUOM
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeTaxType
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeTaxType]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeTaxType]
GO

CREATE PROCEDURE bsp_ChangeTaxType(@OldTaxType d_TaxType, @NewTaxType d_TaxType) AS 

IF @OldTaxType = @NewTaxType
    RETURN
   
BEGIN TRANSACTION
--Create New Record For TaxType
INSERT INTO TaxType(TaxType, Description, TaxRate, Inclusive, TaxAccNo, IsActive, LastUpdate) 
SELECT @NewTaxType, Description, TaxRate, Inclusive, TaxAccNo, IsActive, LastUpdate 
FROM TaxType WHERE TaxType = @OldTaxType

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [CBDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [JEDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [TaxTrans] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Debtor] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Creditor] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARInvoiceDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARCNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APInvoiceDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APCNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Footer] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END


UPDATE [QT] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [SO] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [DO] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [IV]SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [CS] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [DN] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [CN] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [XS] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [DR] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [RQ] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [PO] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [GR] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [PI] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [CP] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [PR] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [GT] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [XP] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM TaxType WHERE TaxType = @OldTaxType
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeUserID
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeUserID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeUserID]
GO

CREATE PROCEDURE bsp_ChangeUserID(@OldUserID d_UserID, @NewUserID d_UserID) AS 

IF @OldUserID = @NewUserID
    RETURN
   
-- Check to disallow @NewUserID same with any UserGroupID
IF EXISTS(SELECT * FROM UserGroup WHERE UserGroupID = @NewUserID)
  BEGIN
    RAISERROR ('New User ID is an existing User Group ID, cannot change to this New User ID.', 11, 1)
  RETURN 
  END
--End new added

BEGIN TRANSACTION
--Create New Record For GLMast
INSERT INTO Users(UserID, UserName, Department, Passwd, Signature, EmailAddress, 
FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate) 
SELECT @NewUserID, UserName, Department, Passwd, Signature, EmailAddress, 
FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate FROM Users WHERE UserID=@OldUserID

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [MRU] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [LayoutUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GLDTL] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersSalesAgent] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersPurchaseAgent] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [AccessRight] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Session] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DocNoFormatUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersGroup] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersGroup] SET UserGroupID = @NewUserID WHERE UserGroupID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [CB] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CB] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [JE] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [JE] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Debtor] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Debtor] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Creditor] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Creditor] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDeposit] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDeposit] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDeposit] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDeposit] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARInvoice] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARInvoice] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARPayment] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARPayment]SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARCN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARCN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARRefund] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARRefund] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARAPContra] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARAPContra] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APInvoice] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APInvoice] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APPayment] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APPayment] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APCN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APCN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APRefund] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APRefund] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJ] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJ] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCV] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCV] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFF] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFF] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConv] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConv] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCost] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCost] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET ApprovalUserID = @NewUserID WHERE ApprovalUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Users WHERE UserID = @OldUserID

COMMIT TRANSACTION

GO

UPDATE REGISTRY SET RegValue = '1.0.8.1' WHERE RegID = 2
GO
�/* The following DDL will add CurrencyRate to IPHIST */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IPHIST]') and name = N'CurrencyRate')
  ALTER TABLE [dbo].[IPHIST] 
    ADD [CurrencyRate] [d_CurrencyRate] NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM QT B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='QT' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM SO B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='SO' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM DO B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='DO' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM IV B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='IV' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM CS B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='CS' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM CN B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='CN' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM DN B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='DN' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM XS B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='XS' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM DR B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='DR' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM RQ B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='RQ' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM PO B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='PO' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM GR B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='GR' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM PI B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='PI' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM CP B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='CP' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM PR B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='PR' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM XP B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='XP' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT CurrencyRate FROM GT B WHERE IPHIST.DocKey=B.DocKey)
WHERE DocType='GT' AND CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT C.BankBuyRate FROM DEBTOR B, CURRENCY C WHERE IPHIST.AccNo=B.AccNo AND B.CurrencyCode=C.CurrencyCode)
WHERE CurrencyRate IS NULL
GO

UPDATE IPHIST
SET CurrencyRate=(SELECT C.BankSellRate FROM CREDITOR B, CURRENCY C WHERE IPHIST.AccNo=B.AccNo AND B.CurrencyCode=C.CurrencyCode)
WHERE CurrencyRate IS NULL
GO

/* The following DDL will add OurDONo and OurDODate to IVDTL and CSDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'OurDONo')
  ALTER TABLE [dbo].[IVDTL] 
    ADD [OurDONo] [d_DocNo] NULL
GO

UPDATE IVDTL
SET OurDONo=FromDocNo
WHERE FromDocType='DO'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'OurDODate')
  ALTER TABLE [dbo].[IVDTL] 
    ADD [OurDODate] [DateTime] NULL
GO

UPDATE IVDTL
SET OurDODate=(SELECT A.DocDate FROM DO A, DODTL B WHERE A.DocKey=B.DocKey AND B.DtlKey=IVDTL.FromDocDtlKey)
WHERE FromDocType='DO'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'OurDONo')
  ALTER TABLE [dbo].[CSDTL] 
    ADD [OurDONo] [d_DocNo] NULL
GO

UPDATE CSDTL
SET OurDONo=FromDocNo
WHERE FromDocType='DO'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'OurDODate')
  ALTER TABLE [dbo].[CSDTL] 
    ADD [OurDODate] [DateTime] NULL
GO

UPDATE CSDTL
SET OurDODate=(SELECT A.DocDate FROM DO A, DODTL B WHERE A.DocKey=B.DocKey AND B.DtlKey=CSDTL.FromDocDtlKey)
WHERE FromDocType='DO'
GO

/* The following DDL will add ShipVia and ShipInfo to CSGN, SupplierCSGN */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGN]') and name = N'ShipVia')
  ALTER TABLE [dbo].[CSGN] 
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSGN_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CSGN] DROP CONSTRAINT [FK_CSGN_ShipVia]
GO

ALTER TABLE [dbo].[CSGN] ADD
	CONSTRAINT [FK_CSGN_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGN]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[CSGN]
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGN]') and name = N'ShipVia')
  ALTER TABLE [dbo].[SupplierCSGN] 
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SupplierCSGN_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[SupplierCSGN] DROP CONSTRAINT [FK_SupplierCSGN_ShipVia]
GO

ALTER TABLE [dbo].[SupplierCSGN] ADD
	CONSTRAINT [FK_SupplierCSGN_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGN]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[SupplierCSGN]
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

/* To support Audit Trail */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TempDocument]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[TempDocument]
GO

CREATE TABLE [dbo].[TempDocument] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocType] [d_DocType] NOT NULL,
	[SaveTime] [DateTime] NOT NULL,
	[DocNo] [d_DocNo] NULL,
	[UserID] [d_UserID] NOT NULL ,
	[SaveReason] [nvarchar] (20) NULL,
	[Description] [nvarchar] (80) NULL,
	[Compressed] [d_Boolean] NOT NULL,
	[Data] [image] NULL,
) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.8.10' WHERE RegID = 2
GO
30/* The following DDL will add ContactInfo to Debtor and Creditor */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'ContactInfo')
  ALTER TABLE [dbo].[Debtor] 
    ADD [ContactInfo] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'ContactInfo')
  ALTER TABLE [dbo].[Creditor] 
    ADD [ContactInfo] [ntext] NULL
GO

/* The following DDL will add IncludeInContactInfo to Contact */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Contact]') and name = N'IncludeInContactInfo')
  ALTER TABLE [dbo].[Contact] 
    ADD [IncludeInContactInfo] [d_Boolean] NULL
GO

/* The following DDL will set the IncludeInContactInfo of Contact to 'T' */
UPDATE Contact
SET IncludeInContactInfo = 'T'
GO

/* The following DDL will update the ContactInfo of Debtor */
UPDATE Debtor
SET ContactInfo = 'Contact: ' + (SELECT TOP 1 Name FROM Contact B WHERE Debtor.AccNo=B.AccNo) + ', Tel: ' + Phone1 + ', Terms: ' + DisplayTerm
GO

/* The following DDL will update the ContactInfo of Creditor */
UPDATE Creditor
SET ContactInfo = 'Contact: ' + (SELECT TOP 1 Name FROM Contact B WHERE Creditor.AccNo=B.AccNo) + ', Tel: ' + Phone1 + ', Terms: ' + DisplayTerm
GO

/* The following DDL will update the ComponentName of Layout table, this is to fix the grid view name changed problem */
UPDATE Layout
SET FormName='FormCashBookPrintListing'
WHERE FormName = 'FormCashBookPrintSearch'
GO

UPDATE Layout
SET FormName='FormJournalEntryPrintListing'
WHERE FormName = 'FormJournalEntryPrintSearch'
GO

UPDATE Layout
SET FormName='FormAPDepositPrintListing'
WHERE FormName = 'FormAPDepositPrintSearch'
GO

UPDATE Layout
SET FormName='FormARDepositPrintListing'
WHERE FormName = 'FormARDepositPrintSearch'
GO

UPDATE Layout
SET FormName='FormStockWriteOffPrintListing'
WHERE FormName = 'FormStockWriteOffPrintSearch'
GO

UPDATE Layout
SET FormName='FormStockUpdateCostPrintListing'
WHERE FormName = 'FormStockUpdateCostPrintSearch'
GO

UPDATE Layout
SET FormName='FormStockUOMConversionPrintListing'
WHERE FormName = 'FormStockUOMConversionPrintSearch'
GO

UPDATE Layout
SET FormName='FormStockTransferPrintListing'
WHERE FormName = 'FormStockTransferPrintSearch'
GO

UPDATE Layout
SET FormName='FormStockReceivePrintListing'
WHERE FormName = 'FormStockReceivePrintSearch'
GO

UPDATE Layout
SET FormName='FormStockIssuePrintListing'
WHERE FormName = 'FormStockIssuePrintSearch'
GO

UPDATE Layout
SET FormName='FormStockAssemblyPrintListing'
WHERE FormName = 'FormStockAssemblyPrintSearch'
GO

UPDATE Layout
SET FormName='FormStockAdjustmentPrintListing'
WHERE FormName = 'FormStockAdjustmentPrintSearch'
GO

/* The following DDL will update the ComponentName of Layout table, this is to fix the grid view name changed problem */
UPDATE Layout
SET ComponentName='myGridView'
WHERE FormName IN ('FormQTCmd', 'FormQTFind', 'FormQTPrintSearch', 'FormQTList',
				   'FormSOCmd', 'FormSOFind', 'FormSOPrintSearch', 'FormSOList',
				   'FormDeliveryOrderCmd', 'FormDeliveryOrderFind', 'FormDOPrintSearch', 'FormDeliveryOrderSearch',
				   'FormInvoiceCmd', 'FormInvoiceFind', 'FormInvPrintSearch', 'FormInvoiceSearch',
				   'FormCashSaleCmd', 'FormCashSaleFind', 'FormCSPrintSearch', 'FormCashSaleSearch',
				   'FormCreditNoteCmd', 'FormCreditNoteFind', 'FormCNPrintSearch', 'FormCreditNoteSearch',
				   'FormDebitNoteCmd', 'FormDebitNoteFind', 'FormDNPrintSearch', 'FormDebitNoteSearch',
				   'FormCancelSOCmd', 'FormCancelSOFind', 'FormXSPrintSearch', 'FormCancelSOSearch',
				   'FormDeliveryReturnCmd', 'FormDeliveryReturnFind', 'FormDRPrintSearch', 'FormDeliveryReturnSearch',
				   'FormConsignmentCmd', 'FormConsignmentFind', 'FormConsignmentPrintSearch', 'FormConsignmentSearch',
				   'FormRequestQuotationCmd', 'FormRequestQuotationFind', 'FormRQPrintSearch', 'FormRequestQuotationSearch',
				   'FormPurchaseOrderCmd', 'FormPurchaseOrderFind', 'FormPOPrintSearch', 'FormPurchaseOrderSearch',
				   'FormGoodsReceivedNoteCmd', 'FormGoodsReceivedNoteFind', 'FormGRPrintSearch', 'FormGoodsReceivedNoteSearch',
				   'FormPurchaseInvoiceCmd', 'FormPurchaseInvoiceFind', 'FormPIPrintSearch', 'FormPurchaseInvoiceSearch',
				   'FormCashPurchaseCmd', 'FormCashPurchaseFind', 'FormCPPrintSearch', 'FormCashPurchaseSearch',
				   'FormPurchaseReturnCmd', 'FormPurchaseReturnFind', 'FormPRPrintSearch', 'FormPurchaseReturnSearch',
				   'FormGoodsReturnCmd', 'FormGoodsReturnFind', 'FormGTPrintSearch', 'FormGoodsReturnSearch',
				   'FormStockTransferCmd', 'FormStockTransferFind', 'FormStockTransferPrintSearch', 'FormStockTransferSearch')
GO

/* The following DDL will update the ComponentName and FormName of Layout table, this is to fix the form name and grid view name changed problem */
UPDATE Layout
SET ComponentName='myGridView', FormName='FormCancelPOCmd'
WHERE FormName = 'FormXPCmd'
GO

UPDATE Layout
SET ComponentName='myGridView', FormName='FormCancelPOFind'
WHERE FormName = 'FormXPFind'
GO

UPDATE Layout
SET ComponentName='myGridView', FormName='FormCancelPOPrintListing'
WHERE FormName = 'FormXPPrintSearch'
GO

UPDATE Layout
SET ComponentName='myGridView', FormName='FormCancelPOSearch'
WHERE FormName = 'FormXPSearch'
GO

/* The following DDL will update the ComponentName of Layout table, this is to fix the grid view name changed problem for Sales and Purchase Documents */
UPDATE Layout
SET FormName='FormQuotationCmd'
WHERE FormName = 'FormQTCmd'
GO

UPDATE Layout
SET FormName='FormQuotationEntry'
WHERE FormName = 'FormQuotation'
GO

UPDATE Layout
SET FormName='FormQuotationPrintListing'
WHERE FormName = 'FormQTPrintSearch'
GO

UPDATE Layout
SET FormName='FormQuotationPrintDetailListing'
WHERE FormName = 'FormQTDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormDeliveryOrderEntry'
WHERE FormName = 'FormDeliveryOrder'
GO

UPDATE Layout
SET FormName='FormDeliveryOrderPrintListing'
WHERE FormName = 'FormDOPrintSearch'
GO

UPDATE Layout
SET FormName='FormDeliveryOrderPrintDetailListing'
WHERE FormName = 'FormDODetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormDeliveryOrderPrintOutstandingListing'
WHERE FormName = 'FormDOOutstandingPrintSearch'
GO

UPDATE Layout
SET FormName='FormSalesOrderCmd'
WHERE FormName = 'FormSOCmd'
GO

UPDATE Layout
SET FormName='FormSalesOrderEntry'
WHERE FormName = 'FormSalesOrder'
GO

UPDATE Layout
SET FormName='FormSalesOrderPrintListing'
WHERE FormName = 'FormSOPrintSearch'
GO

UPDATE Layout
SET FormName='FormSalesOrderPrintDetailListing'
WHERE FormName = 'FormSODetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormSalesOrderPrintOutstandingListing'
WHERE FormName = 'FormSOOutstandingPrintSearch'
GO

UPDATE Layout
SET FormName='FormInvoiceEntry'
WHERE FormName = 'FormInvoice'
GO

UPDATE Layout
SET FormName='FormInvoicePrintListing'
WHERE FormName = 'FormInvPrintSearch'
GO

UPDATE Layout
SET FormName='FormInvoicePrintDetailListing'
WHERE FormName = 'FormInvDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormCashSaleEntry'
WHERE FormName = 'FormCashSale'
GO

UPDATE Layout
SET FormName='FormCashSalePrintListing'
WHERE FormName = 'FormCSPrintSearch'
GO

UPDATE Layout
SET FormName='FormCashSalePrintDetailListing'
WHERE FormName = 'FormCSDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormCreditNoteEntry'
WHERE FormName = 'FormCreditNote'
GO

UPDATE Layout
SET FormName='FormCreditNotePrintListing'
WHERE FormName = 'FormCNPrintSearch'
GO

UPDATE Layout
SET FormName='FormCreditNotePrintDetailListing'
WHERE FormName = 'FormCNDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormDebitNoteEntry'
WHERE FormName = 'FormDebitNote'
GO

UPDATE Layout
SET FormName='FormDebitNotePrintListing'
WHERE FormName = 'FormDNPrintSearch'
GO

UPDATE Layout
SET FormName='FormDebitNotePrintListing'
WHERE FormName = 'FormDNDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormDeliveryReturnEntry'
WHERE FormName = 'FormDeliveryReturn'
GO

UPDATE Layout
SET FormName='FormDeliveryReturnPrintListing'
WHERE FormName = 'FormDRPrintSearch'
GO

UPDATE Layout
SET FormName='FormDeliveryReturnPrintDetailListing'
WHERE FormName = 'FormDRDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormCancelSOEntry'
WHERE FormName = 'FormCancelSO'
GO

UPDATE Layout
SET FormName='FormCancelSOPrintListing'
WHERE FormName = 'FormXSPrintSearch'
GO

UPDATE Layout
SET FormName='FormCancelSOPrintDetailListing'
WHERE FormName = 'FormXSDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormRequestQuotationEntry'
WHERE FormName = 'FormRequestQuotation'
GO

UPDATE Layout
SET FormName='FormRequestQuotationPrintListing'
WHERE FormName = 'FormRQPrintSearch'
GO

UPDATE Layout
SET FormName='FormRequestQuotationPrintDetailListing'
WHERE FormName = 'FormRQDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormPurchaseOrderEntry'
WHERE FormName = 'FormPurchaseOrder'
GO

UPDATE Layout
SET FormName='FormPurchaseOrderPrintListing'
WHERE FormName = 'FormPOPrintSearch'
GO

UPDATE Layout
SET FormName='FormPurchaseOrderPrintDetailListing'
WHERE FormName = 'FormPODetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormGoodsReceivedNoteEntry'
WHERE FormName = 'FormGoodsReceivedNote'
GO

UPDATE Layout
SET FormName='FormGoodsReceivedNotePrintListing'
WHERE FormName = 'FormGRPrintSearch'
GO

UPDATE Layout
SET FormName='FormGoodsReceivedNotePrintDetailListing'
WHERE FormName = 'FormGRDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormPurchaseInvoiceEntry'
WHERE FormName = 'FormPurchaseInvoice'
GO

UPDATE Layout
SET FormName='FormPurchaseInvoicePrintListing'
WHERE FormName = 'FormPIPrintSearch'
GO

UPDATE Layout
SET FormName='FormPurchaseInvoicePrintDetailListing'
WHERE FormName = 'FormPIDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormCashPurchaseEntry'
WHERE FormName = 'FormCashPurchase'
GO

UPDATE Layout
SET FormName='FormCashPurchasePrintListing'
WHERE FormName = 'FormCPPrintSearch'
GO

UPDATE Layout
SET FormName='FormCashPurchasePrintDetailListing'
WHERE FormName = 'FormCPDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormPurchaseReturnEntry'
WHERE FormName = 'FormPurchaseReturn'
GO

UPDATE Layout
SET FormName='FormPurchaseReturnPrintListing'
WHERE FormName = 'FormPRPrintSearch'
GO

UPDATE Layout
SET FormName='FormPurchaseReturnPrintDetailListing'
WHERE FormName = 'FormPRDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormGoodsReturnEntry'
WHERE FormName = 'FormGoodsReturn'
GO

UPDATE Layout
SET FormName='FormGoodsReturnPrintListing'
WHERE FormName = 'FormGTPrintSearch'
GO

UPDATE Layout
SET FormName='FormGoodsReturnPrintDetailListing'
WHERE FormName = 'FormGTDetailListingPrintSearch'
GO

UPDATE Layout
SET FormName='FormCancelPOPrintDetailListing'
WHERE FormName = 'FormCancelPODetailListingPrintSearch'
GO

/* The following DDL will create a list function */
IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[List]') AND xtype in (N'FN', N'IF', N'TF'))
DROP FUNCTION dbo.List
GO

CREATE FUNCTION dbo.List(@List ntext)
RETURNS @ListTable TABLE(Item nvarchar(100))
BEGIN
	DECLARE @Pos int, @ChunkPos int, @Length int, @ChunkLen smallint,
		@Chunk nvarchar(4000), @LeftOver nvarchar(4000)

	SET @Pos = 1
	SET @Length = DATALENGTH(@List) / 2
	SET @LeftOver = ''

	WHILE @Pos <= @Length
	BEGIN
		SET @ChunkLen = 4000 - DATALENGTH(@LeftOver) / 2
		SET @Chunk = @LeftOver + SUBSTRING(@List, @Pos, @ChunkLen)
		SET @Pos = @Pos + @ChunkLen
		SET @ChunkPos = CHARINDEX(',', @Chunk)

		WHILE @ChunkPos > 0
		BEGIN
			INSERT @ListTable VALUES(LTRIM(RTRIM(LEFT(@Chunk, @ChunkPos - 1))))
			SET @Chunk = SUBSTRING(@Chunk, @ChunkPos + 1, LEN(@Chunk))
			SET @ChunkPos = CHARINDEX(',', @Chunk)
		END

		SET @LeftOver = @Chunk
	END

	INSERT @ListTable VALUES(LTRIM(RTRIM(@LeftOver)))
	RETURN
END
GO

UPDATE REGISTRY SET RegValue = '1.0.8.11' WHERE RegID = 2
GO
�/* The following DDL will add Cancelled to IPHIST */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IPHIST]') and name = N'Cancelled')
  ALTER TABLE [dbo].[IPHIST] 
    ADD [Cancelled] [d_Boolean] NOT NULL DEFAULT 'F'
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='QT' AND DocKey IN (SELECT DocKey FROM QT WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='SO' AND DocKey IN (SELECT DocKey FROM SO WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='DO' AND DocKey IN (SELECT DocKey FROM DO WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='IV' AND DocKey IN (SELECT DocKey FROM IV WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='CS' AND DocKey IN (SELECT DocKey FROM CS WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='CN' AND DocKey IN (SELECT DocKey FROM CN WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='DN' AND DocKey IN (SELECT DocKey FROM DN WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='XS' AND DocKey IN (SELECT DocKey FROM XS WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='DR' AND DocKey IN (SELECT DocKey FROM DR WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='RQ' AND DocKey IN (SELECT DocKey FROM RQ WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='PO' AND DocKey IN (SELECT DocKey FROM PO WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='GR' AND DocKey IN (SELECT DocKey FROM GR WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='PI' AND DocKey IN (SELECT DocKey FROM PI WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='CP' AND DocKey IN (SELECT DocKey FROM CP WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='PR' AND DocKey IN (SELECT DocKey FROM PR WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='XP' AND DocKey IN (SELECT DocKey FROM XP WHERE Cancelled='T')
GO

UPDATE IPHIST
SET Cancelled='T'
WHERE DocType='GT' AND DocKey IN (SELECT DocKey FROM GT WHERE Cancelled='T')
GO

/* The following DDL will add FK_ItemPrice_AccNo to ItemPrice */
UPDATE ItemPrice
SET AccNo=NULL
WHERE AccNo=''
GO

DELETE FROM ItemPrice
WHERE AccNo NOT IN (SELECT AccNo FROM GLMAST)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemPrice_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemPrice] DROP CONSTRAINT [FK_ItemPrice_AccNo]
GO

ALTER TABLE [dbo].[ItemPrice] ADD
	CONSTRAINT [FK_ItemPrice_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMAST] (
		[AccNo]
	)
GO

/* The following DDL will update the FormStockCard */
UPDATE Layout
SET FormName='FormStockCard'
WHERE FormName = 'FormStockCards'
GO

/* The following DDL will add ReallocatePurchaseByProjectJEDocKey to IV, CS, DN, ISS to help implement the ReallocatePurchaseByProject feature */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'ReallocatePurchaseByProjectJEDocKey')
  ALTER TABLE [dbo].[IV] 
    ADD [ReallocatePurchaseByProjectJEDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'ReallocatePurchaseByProjectJEDocKey')
  ALTER TABLE [dbo].[CS] 
    ADD [ReallocatePurchaseByProjectJEDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'ReallocatePurchaseByProjectJEDocKey')
  ALTER TABLE [dbo].[DN] 
    ADD [ReallocatePurchaseByProjectJEDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ISS]') and name = N'ReallocatePurchaseByProjectJEDocKey')
  ALTER TABLE [dbo].[ISS] 
    ADD [ReallocatePurchaseByProjectJEDocKey] [bigint] NULL
GO

/* The following DDL will fix the BankStatementDate problem */
UPDATE BankTrans
SET BankStatementDate=NULL
WHERE BankStatementDate<DocDate
GO

UPDATE REGISTRY SET RegValue = '1.0.8.12' WHERE RegID = 2
GO
o/* The following DDL will add Serial No module related Tables and Columns */

/* SNTrans is no more use, so we drop it here */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SNTrans]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[SNTrans]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemSerialNo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[ItemSerialNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SerialNoTrans]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[SerialNoTrans]
GO

EXEC sp_droptype N'd_SerialNo'
GO

EXEC sp_addtype N'd_SerialNo', N'nvarchar (30)'
GO

CREATE TABLE [ItemSerialNo] (
	[SerialNumber] [d_SerialNo] NOT NULL ,
	[ItemCode] [d_ItemCode] NOT NULL ,
	[BatchNo] [d_BatchNo] NULL ,
	[ManufacturedDate] [datetime] NULL ,
	[ExpiryDate] [datetime] NULL ,
	[LastSalesDate] [datetime] NULL ,
	[Remarks] [nvarchar] (20) NULL ,
	[Qty] [int] NULL ,
	[Location] [d_Location] NULL ,
	[CSGNQty] [int] NULL ,
	CONSTRAINT [PK_ItemSerialNo] PRIMARY KEY NONCLUSTERED 
	(
		[SerialNumber],
		[ItemCode]
	)  ON [PRIMARY] 
) ON [PRIMARY]
GO

CREATE TABLE [SerialNoTrans] (
	[TransKey] [bigint] NOT NULL ,
	[DocType] [d_DocType] NULL ,
	[DocKey] [bigint] NULL ,
	[DtlKey] [bigint] NULL ,
	[FromSerialNo] [d_SerialNo] NULL ,
	[ToSerialNo] [d_SerialNo] NULL ,
	[Count] [bigint] NULL ,
	[ItemCode] [d_ItemCode] NULL ,
	[TransferedSN] [ntext] NULL ,
	[FromDocDtlKey] [bigint] NULL ,
	[ManufacturedDate] [datetime] NULL ,
	[ExpiryDate] [datetime] NULL ,
	[LastSalesDate] [datetime] NULL ,
	[Remarks] [nvarchar] (20) NULL ,
	[Cancelled] [d_Boolean] NULL ,
	CONSTRAINT [PK_SerialNoTrans] PRIMARY KEY NONCLUSTERED 
	(
		[TransKey]
	)  ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DODTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[DODTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[IVDTL]
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[CSDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[CNDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[DNDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DRDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[DRDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GRDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[GRDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PIDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[PIDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CPDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[CPDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[PRDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GTDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[GTDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

/* The following DDL will support Cash Flow Forecast Report */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CashFlowForecast]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[CashFlowForecast]
GO

CREATE TABLE [dbo].[CashFlowForecast] (
	[DocKey] [bigint] NOT NULL ,
	[Section] [nvarchar] (20) NOT NULL ,
	[Description] [nvarchar] (50) NOT NULL ,
	[StartDate] [datetime] NOT NULL ,
	[Frequency] [nvarchar] (12) NOT NULL ,
	[Amount] [d_Money] NOT NULL ,
	[EndDate] [datetime] NULL 
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Expenses]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Expenses]
GO

CREATE TABLE [dbo].[Expenses] (
	[DocKey] [bigint] NOT NULL ,
	[AccNo] [d_AccNo] NOT NULL ,
	[StartDate] [datetime] NOT NULL ,
	[Frequency] [nvarchar] (12) NOT NULL ,
	[Amount] [d_Money] NOT NULL ,
	[EndDate] [datetime] NULL 
) ON [PRIMARY]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARInvoice]') and name = N'ForecastDueDate')
  ALTER TABLE [dbo].[ARInvoice] 
    ADD [ForecastDueDate] [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDN]') and name = N'ForecastDueDate')
  ALTER TABLE [dbo].[ARDN] 
    ADD [ForecastDueDate] [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APInvoice]') and name = N'ForecastDueDate')
  ALTER TABLE [dbo].[APInvoice] 
    ADD [ForecastDueDate] [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDN]') and name = N'ForecastDueDate')
  ALTER TABLE [dbo].[APDN] 
    ADD [ForecastDueDate] [datetime] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.8.13' WHERE RegID = 2
GO
�c/* The following DDL will change the DeliveryDate column of QTDTL, SODTL, DODTL, IVDTL, CSDTL, XSDTL, DRDTL, RQDTL, PODTL, GRDTL, PIDTL, CPDTL, GTDTL to nvarchar(20) type */
/* Change the DeliveryDate column of QTDTL */
ALTER TABLE [dbo].[QTDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE QTDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[QTDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[QTDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE QTDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[QTDTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of SODTL */
ALTER TABLE [dbo].[SODTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE SODTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[SODTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[SODTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE SODTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[SODTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of DODTL */
ALTER TABLE [dbo].[DODTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE DODTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[DODTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[DODTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE DODTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[DODTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of IVDTL */
ALTER TABLE [dbo].[IVDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE IVDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[IVDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[IVDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE IVDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[IVDTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of CSDTL */
ALTER TABLE [dbo].[CSDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE CSDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[CSDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[CSDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE CSDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[CSDTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of XSDTL */
ALTER TABLE [dbo].[XSDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE XSDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[XSDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[XSDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE XSDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[XSDTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of DRDTL */
ALTER TABLE [dbo].[DRDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE DRDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[DRDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[DRDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE DRDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[DRDTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of RQDTL */
ALTER TABLE [dbo].[RQDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE RQDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[RQDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[RQDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE RQDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[RQDTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of RQDTL */
ALTER TABLE [dbo].[PODTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE PODTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[PODTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[PODTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE PODTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[PODTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of GRDTL */
ALTER TABLE [dbo].[GRDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE GRDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[GRDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[GRDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE GRDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[GRDTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of PIDTL */
ALTER TABLE [dbo].[PIDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE PIDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[PIDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[PIDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE PIDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[PIDTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of CPDTL */
ALTER TABLE [dbo].[CPDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE CPDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[CPDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[CPDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE CPDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[CPDTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* Change the DeliveryDate column of GTDTL */
ALTER TABLE [dbo].[GTDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE GTDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[GTDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[GTDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE GTDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[GTDTL]
  DROP COLUMN [NewDeliveryDate]
GO

/* The following DDL will add ItemSerialNo constraints */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemSerialNo_ItemBatch]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ItemSerialNo] DROP CONSTRAINT [FK_ItemSerialNo_ItemBatch]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemSerialNo_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ItemSerialNo] DROP CONSTRAINT [FK_ItemSerialNo_Location]
GO

UPDATE [dbo].[ItemSerialNo]
SET BatchNo=NULL
WHERE BatchNo=''
GO

ALTER TABLE [dbo].[ItemSerialNo] ADD 
	CONSTRAINT [FK_ItemSerialNo_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ItemSerialNo_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SerialNoTrans_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[SerialNoTrans] DROP CONSTRAINT [FK_SerialNoTrans_ItemCode]
GO

ALTER TABLE [dbo].[SerialNoTrans] ADD 
	CONSTRAINT [FK_SerialNoTrans_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ADJDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[ADJDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ISSDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[ISSDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RCVDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[RCVDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XFERDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[XFERDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WOFFDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[WOFFDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[CSGNDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[SupplierCSGNDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASM]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[ASM] 
    ADD [SerialNoList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[ASMDTL] 
    ADD [SerialNoList] [ntext] NULL
GO

/* The following DDL will change the bsp_ChangeItemBatch and bsp_ChangeItemCode procedure */
-- bsp_ChangeItemBatch
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemBatch]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemBatch]
GO

CREATE PROCEDURE bsp_ChangeItemBatch(@ItemCode d_ItemCode, 
	@OldItemBatch d_BatchNo, @NewItemBatch d_BatchNo) AS 

IF @OldItemBatch = @NewItemBatch
    RETURN
   
BEGIN TRANSACTION
--Create New Record For ItemBatch
INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty) 
SELECT ItemCode, @NewItemBatch, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @ItemCode AND BatchNo = @OldItemBatch

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [ItemBatchBalQty] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemSerialNo] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [ASMDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [StockDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemBatch WHERE ItemCode = @ItemCode AND BatchNo = @OldItemBatch
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeItemCode
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemCode]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemCode]
GO

CREATE PROCEDURE bsp_ChangeItemCode(@OldItemCode d_ItemCode, @NewItemCode d_ItemCode) AS 

BEGIN TRANSACTION
--Create New Record For Item
INSERT INTO Item(ItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate) 
SELECT @NewItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate FROM Item WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT @NewItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemBatch
INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty) 
SELECT @NewItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [ItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBatchBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemPrice] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemSerialNo] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SerialNoTrans] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL]  SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCostDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ReplacementItemCode = @NewItemCode WHERE ReplacementItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET SubItemCode = @NewItemCode WHERE SubItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemUOM WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemBatch WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Item WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

UPDATE REGISTRY SET RegValue = '1.0.8.14' WHERE RegID = 2
GO
/* The following DDL will add a SNFormatName to support automatic creation of Serial Number in Stock Assembly's Serial Number function */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'SNFormatName')
  ALTER TABLE [dbo].[Item] 
    ADD [SNFormatName] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SalesAgent]') and name = N'Signature')
  ALTER TABLE [dbo].[SalesAgent] 
	ADD [Signature] [image] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseAgent]') and name = N'Signature')
  ALTER TABLE [dbo].[PurchaseAgent] 
	ADD [Signature] [image] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.8.15' WHERE RegID = 2
GO
./* The following DDL will add a Criteria table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Criteria]') and OBJECTPROPERTY(id, N'IsTable') = 1)
  DROP TABLE [dbo].[Criteria]
GO

CREATE TABLE [dbo].[Criteria] (
	[CriteriaName] [nvarchar] (80) NOT NULL PRIMARY KEY NONCLUSTERED,
	[CriteriaType] [nvarchar] (8) NOT NULL,
	[Data] [image] NULL,
) ON [PRIMARY]
GO

CREATE INDEX [IX_Criteria_CriteriaType] ON [dbo].[Criteria]([CriteriaType]) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.8.16' WHERE RegID = 2
GO
	 -- bsp_ChangeItemUOM
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemUOM]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemUOM]
GO

CREATE PROCEDURE bsp_ChangeItemUOM(@ItemCode d_ItemCode, 
	@OldItemUOM d_UOM, @NewItemUOM d_UOM) AS 

IF @OldItemUOM = @NewItemUOM
    RETURN
   
BEGIN TRANSACTION
--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT ItemCode, @NewItemUOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @ItemCode AND UOM = @OldItemUOM 

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [Item] SET SalesUOM = @NewItemUOM WHERE SalesUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET PurchaseUOM = @NewItemUOM WHERE PurchaseUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET ReportUOM = @NewItemUOM WHERE ReportUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [ItemBatchBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemPrice] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCostDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET FromUOM = @NewItemUOM WHERE FromUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET ToUOM = @NewItemUOM WHERE ToUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemUOM WHERE ItemCode = @ItemCode AND UOM = @OldItemUOM
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

UPDATE REGISTRY SET RegValue = '1.0.8.17' WHERE RegID = 2
GO
�/* The following DDL will fix the ItemUOM's BalQty, this problem occurs when the database has copied Item from other database */
UPDATE ItemUOM
SET BalQty=(SELECT COALESCE(SUM(BalQty), 0) FROM ItemBalQty WHERE ItemUOM.ItemCode=ItemBalQty.ItemCode AND ItemUOM.UOM=ItemBalQty.UOM)
GO

/* The following DDL add a ReportDenyList table to implement deny users in Report Framework */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ReportDenyList]') and OBJECTPROPERTY(id, N'IsTable') = 1)
  DROP TABLE [dbo].[ReportDenyList]
GO

CREATE TABLE [dbo].[ReportDenyList] (
	[ReportName] [nvarchar] (100) NOT NULL PRIMARY KEY,
	[DenyUsers] [ntext]
) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.8.18' WHERE RegID = 2
GO
�[/* The following DDL will add a Package table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Package]') and OBJECTPROPERTY(id, N'IsTable') = 1)
  DROP TABLE [dbo].[Package]
GO

CREATE TABLE [Package] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[PackageCode] [d_ItemCode] NOT NULL ,
	[Description] [nvarchar] (80) NULL ,
	[ExpiryDate] [datetime] NULL ,
	[OpeningQty] [d_Qty] NULL ,
	[UnitPrice] [d_Price] NULL ,
	[LimitedQty] [d_Qty] NULL ,
	[SoldQty] [d_Qty] NULL ,
	[NetTotal] [d_Money] NULL ,
	[IsActive] [d_Boolean] NULL ,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PackageDTL]') and OBJECTPROPERTY(id, N'IsTable') = 1)
  DROP TABLE [dbo].[PackageDTL]
GO

CREATE TABLE [PackageDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL ,
	[Seq] [int] NOT NULL ,
	[ItemCode] [d_ItemCode] NULL ,
	[Description] [d_ItemDescription] NULL ,
	[FurtherDescription] [ntext] NULL ,
	[UOM] [d_UOM] NULL ,
	[Qty] [d_Qty] NULL ,
	[UnitPrice] [d_Price] NULL ,
	[SubTotal] [d_Price] NULL ,
	[PrintOut] [d_Boolean] NOT NULL ,
	CONSTRAINT [FK_PackageDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode],
		[UOM]
	) REFERENCES [ItemUOM] (
		[ItemCode],
		[UOM]
	) ON UPDATE CASCADE , 
	CONSTRAINT [FK_PackageDTL_Package] FOREIGN KEY 
	(
		[DocKey]
	) REFERENCES [Package] (
		[DocKey]
	)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE INDEX [IX_PackageDTL_DocKey] ON [dbo].[PackageDTL]([DocKey]) ON [PRIMARY]
GO

/* Add PackageDocKey and ParentDtlKey to QTDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QTDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[QTDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QTDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[QTDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

/* Add PackageDocKey and ParentDtlKey to SODTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[SODTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[SODTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

/* Add PackageDocKey and ParentDtlKey to DODTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DODTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[DODTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DODTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[DODTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

/* Add PackageDocKey and ParentDtlKey to IVDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[IVDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[IVDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

/* Add PackageDocKey and ParentDtlKey to CSDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[CSDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[CSDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

/* Add PackageDocKey and ParentDtlKey to CNDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[CNDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[CNDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

/* Add PackageDocKey and ParentDtlKey to DNDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[DNDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[DNDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

/* Add PackageDocKey and ParentDtlKey to XSDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XSDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[XSDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XSDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[XSDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

/* Add PackageDocKey and ParentDtlKey to DRDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DRDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[DRDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DRDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[DRDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

-- bsp_ChangeItemUOM
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemUOM]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemUOM]
GO

CREATE PROCEDURE bsp_ChangeItemUOM(@ItemCode d_ItemCode, 
	@OldItemUOM d_UOM, @NewItemUOM d_UOM) AS 

IF @OldItemUOM = @NewItemUOM
    RETURN
   
BEGIN TRANSACTION
--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT ItemCode, @NewItemUOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @ItemCode AND UOM = @OldItemUOM 

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [Item] SET SalesUOM = @NewItemUOM WHERE SalesUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET PurchaseUOM = @NewItemUOM WHERE PurchaseUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET ReportUOM = @NewItemUOM WHERE ReportUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [ItemBatchBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemPrice] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCostDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET FromUOM = @NewItemUOM WHERE FromUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET ToUOM = @NewItemUOM WHERE ToUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemUOM WHERE ItemCode = @ItemCode AND UOM = @OldItemUOM
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO


-- bsp_ChangeItemCode
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemCode]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemCode]
GO

CREATE PROCEDURE bsp_ChangeItemCode(@OldItemCode d_ItemCode, @NewItemCode d_ItemCode) AS 

BEGIN TRANSACTION
--Create New Record For Item
INSERT INTO Item(ItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate) 
SELECT @NewItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate FROM Item WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT @NewItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemBatch
INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty) 
SELECT @NewItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [ItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBatchBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemPrice] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemSerialNo] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SerialNoTrans] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL]  SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCostDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ReplacementItemCode = @NewItemCode WHERE ReplacementItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET SubItemCode = @NewItemCode WHERE SubItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemUOM WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemBatch WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Item WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO


UPDATE REGISTRY SET RegValue = '1.0.8.19' WHERE RegID = 2
GO
jif exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SO]') and name = N'FromDocList')
ALTER TABLE [dbo].[SO]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DO]') and name = N'FromDocList')
ALTER TABLE [dbo].[DO]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'FromDocList')
ALTER TABLE [dbo].[IV]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'FromDocList')
ALTER TABLE [dbo].[CS]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'FromDocList')
ALTER TABLE [dbo].[CN]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XS]') and name = N'FromDocList')
ALTER TABLE [dbo].[XS]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DR]') and name = N'FromDocList')
ALTER TABLE [dbo].[DR]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PO]') and name = N'FromDocList')
ALTER TABLE [dbo].[PO]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GR]') and name = N'FromDocList')
ALTER TABLE [dbo].[GR]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PI]') and name = N'FromDocList')
ALTER TABLE [dbo].[PI]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CP]') and name = N'FromDocList')
ALTER TABLE [dbo].[CP]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PR]') and name = N'FromDocList')
ALTER TABLE [dbo].[PR]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XP]') and name = N'FromDocList')
ALTER TABLE [dbo].[XP]
  DROP COLUMN [FromDocList]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GT]') and name = N'FromDocList')
ALTER TABLE [dbo].[GT]
  DROP COLUMN [FromDocList]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[SODTL]
  ADD [FullTransferFromDocList] [ntext] NULL,
      [TransferedPOQty] [d_Qty] NULL,
      [FOCTransferedPOQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DODTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[DODTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[IVDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[CSDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[CNDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XSDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[XSDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DRDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[DRDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[PODTL]
  ADD [FullTransferFromDocList] [ntext] NULL,
      [FromSODtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GRDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[GRDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PIDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[PIDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CPDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[CPDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[PRDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XPDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[XPDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GTDTL]') and name = N'FullTransferFromDocList')
ALTER TABLE [dbo].[GTDTL]
  ADD [FullTransferFromDocList] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QT]') and name = N'ToDtlKey')
ALTER TABLE [dbo].[QT]
  ADD [ToDtlKey] [bigint] NULL,
      [FullTransferOption] [d_FullTransferOption] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SO]') and name = N'ToDtlKey')
ALTER TABLE [dbo].[SO]
  ADD [ToDtlKey] [bigint] NULL,
      [FullTransferOption] [d_FullTransferOption] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DO]') and name = N'ToDtlKey')
ALTER TABLE [dbo].[DO]
  ADD [ToDtlKey] [bigint] NULL,
      [FullTransferOption] [d_FullTransferOption] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'ToDtlKey')
ALTER TABLE [dbo].[IV]
  ADD [ToDtlKey] [bigint] NULL,
      [FullTransferOption] [d_FullTransferOption] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'ToDtlKey')
ALTER TABLE [dbo].[CS]
  ADD [ToDtlKey] [bigint] NULL,
      [FullTransferOption] [d_FullTransferOption] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQ]') and name = N'ToDtlKey')
ALTER TABLE [dbo].[RQ]
  ADD [ToDtlKey] [bigint] NULL,
      [FullTransferOption] [d_FullTransferOption] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PO]') and name = N'ToDtlKey')
ALTER TABLE [dbo].[PO]
  ADD [ToDtlKey] [bigint] NULL,
      [FullTransferOption] [d_FullTransferOption] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GR]') and name = N'ToDtlKey')
ALTER TABLE [dbo].[GR]
  ADD [ToDtlKey] [bigint] NULL,
      [FullTransferOption] [d_FullTransferOption] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PI]') and name = N'ToDtlKey')
ALTER TABLE [dbo].[PI]
  ADD [ToDtlKey] [bigint] NULL,
      [FullTransferOption] [d_FullTransferOption] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CP]') and name = N'ToDtlKey')
ALTER TABLE [dbo].[CP]
  ADD [ToDtlKey] [bigint] NULL,
      [FullTransferOption] [d_FullTransferOption] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.8.2' WHERE RegID = 2
GO
٫/* The following DDL will add ASMOrder (Assembly Order) table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ASMOrder]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ASMOrder]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ASMOrderDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ASMOrderDTL]
GO

CREATE TABLE [dbo].[ASMOrder] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[ItemCode] [d_ItemCode] NOT NULL,
	[Location] [d_Location] NOT NULL,
	[BatchNo] [d_BatchNo] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Qty] [d_Qty] NULL ,
	[TransferedQty] [d_Qty] NULL ,
	[Total] [d_money] NULL ,
	[AssemblyCost] [d_money] NULL ,	
	[NetTotal] [d_money] NULL ,
	[FromDocType] [d_DocType] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[Note] [nText] NULL ,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NULL, 
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [nText] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ASMOrderDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NULL ,
	[Seq] [int] NOT NULL, 
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [nText] NULL ,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Rate] [d_Qty] NULL,
	[Qty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NULL ,
	[ItemCost] [d_Cost] NULL,
	[OverHeadCost] [money] NULL,
	[SubTotalCost] [money] NULL,
	[Remark] [d_Remark] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ASMOrder] ADD 
	CONSTRAINT [IX_ASMOrder_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY],
	CONSTRAINT [FK_ASMOrder_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMOrder_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMOrder_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMOrder_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMOrder_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMOrder_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ASMOrder_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ASMOrderDTL] ADD 
	CONSTRAINT [FK_ASMOrderDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMOrderDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMOrderDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMOrderDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMOrderDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE 
GO

CREATE  INDEX [IX_ASMOrderDTL_DocKey] ON [dbo].[ASMOrderDTL]([DocKey]) ON [PRIMARY]
GO

if not exists (select * from DocNoFormat where Name = 'ASM Order Default')
INSERT INTO [DocNoFormat] VALUES ('ASM Order Default', 'AO', 1, 'AO-<000000>', 'AO-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
GO

if not exists (select * from ChangeCount where TableName = 'ASMOrder')
INSERT INTO [ChangeCount] VALUES ('ASMOrder', 0);
GO

CREATE TRIGGER UpdateASMOrderChangeCount ON ASM
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ASMOrder'
SET NOCOUNT OFF
GO

/* The following DDL will add FromASMOrderDocKey to ASM to indicate whether this ASM was transfered from which ASMOrder */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASM]') and name = N'FromASMOrderDocKey')
  ALTER TABLE [dbo].[ASM] 
    ADD [FromASMOrderDocKey] [bigint] NULL
GO

/* The following DDL will add TransferedAOQty to SODTL to indicate whether this SODTL has been transfered to Assembly Order */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'TransferedAOQty')
  ALTER TABLE [dbo].[SODTL] 
    ADD [TransferedAOQty] [d_Qty] NULL DEFAULT 0
GO

/* The following DDL will add a PriceBookRule table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PriceBookRule]') and OBJECTPROPERTY(id, N'IsTable') = 1)
  DROP TABLE [dbo].[PriceBookRule]
GO

CREATE TABLE [PriceBookRule] (
	[RuleNo] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[FromDate] [datetime] NULL,
	[ToDate] [datetime] NULL,
	[FromItemType] [d_ItemType] NULL,
	[ToItemType] [d_ItemType] NULL,
	[FromItemGroup] [d_ItemGroup] NULL,
	[ToItemGroup] [d_ItemGroup] NULL,
	[FromItemCode] [d_ItemCode] NULL,
	[ToItemCode] [d_ItemCode] NULL,
	[UOM] [d_UOM] NULL,
	[FromLocation] [d_Location] NULL,
	[ToLocation] [d_Location] NULL,
	[FromProjNo] [d_Project] NULL,
	[ToProjNo] [d_Project] NULL,
	[FromDeptNo] [d_Dept] NULL,
	[ToDeptNo] [d_Dept] NULL,
	[FromSalesAgent] [d_Agent] NULL,
	[ToSalesAgent] [d_Agent] NULL,
	[FromPriceCategory] [d_PriceCategory] NULL,
	[ToPriceCategory] [d_PriceCategory] NULL,
	[FromDebtorType] [d_DebtorType] NULL,
	[ToDebtorType] [d_DebtorType] NULL,
	[FromAreaCode] [d_AreaCode] NULL,
	[ToAreaCode] [d_AreaCode] NULL,
	[FromDebtorCode] [d_AccNo] NULL,
	[ToDebtorCode] [d_AccNo] NULL,
	[CurrencyCode] [d_CurrencyCode] NULL,
	[DisplayTerm] [d_DisplayTerm] NULL,
	[GEQty] [d_Qty] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[IsActive] [d_Boolean] NULL,
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PriceBookRule] ADD 
	CONSTRAINT [FK_PriceBookRule_FromItemType] FOREIGN KEY 
	(
		[FromItemType]
	) REFERENCES [dbo].[ItemType] (
		[ItemType]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToItemType] FOREIGN KEY 
	(
		[ToItemType]
	) REFERENCES [dbo].[ItemType] (
		[ItemType]
	) ,
	CONSTRAINT [FK_PriceBookRule_FromItemGroup] FOREIGN KEY 
	(
		[FromItemGroup]
	) REFERENCES [dbo].[ItemGroup] (
		[ItemGroup]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToItemGroup] FOREIGN KEY 
	(
		[ToItemGroup]
	) REFERENCES [dbo].[ItemGroup] (
		[ItemGroup]
	) ,
	CONSTRAINT [FK_PriceBookRule_FromItemCode] FOREIGN KEY 
	(
		[FromItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToItemCode] FOREIGN KEY 
	(
		[ToItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ,
	CONSTRAINT [FK_PriceBookRule_FromLocation] FOREIGN KEY 
	(
		[FromLocation]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToLocation] FOREIGN KEY 
	(
		[ToLocation]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ,
	CONSTRAINT [FK_PriceBookRule_FromProjNo] FOREIGN KEY 
	(
		[FromProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToProjNo] FOREIGN KEY 
	(
		[ToProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ,
	CONSTRAINT [FK_PriceBookRule_FromDeptNo] FOREIGN KEY 
	(
		[FromDeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToDeptNo] FOREIGN KEY 
	(
		[ToDeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ,
	CONSTRAINT [FK_PriceBookRule_FromSalesAgent] FOREIGN KEY 
	(
		[FromSalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToSalesAgent] FOREIGN KEY 
	(
		[ToSalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ,
	CONSTRAINT [FK_PriceBookRule_FromPriceCategory] FOREIGN KEY 
	(
		[FromPriceCategory]
	) REFERENCES [dbo].[PriceCategory] (
		[PriceCategory]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToPriceCategory] FOREIGN KEY 
	(
		[ToPriceCategory]
	) REFERENCES [dbo].[PriceCategory] (
		[PriceCategory]
	) ,
	CONSTRAINT [FK_PriceBookRule_FromDebtorType] FOREIGN KEY 
	(
		[FromDebtorType]
	) REFERENCES [dbo].[DebtorType] (
		[DebtorType]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToDebtorType] FOREIGN KEY 
	(
		[ToDebtorType]
	) REFERENCES [dbo].[DebtorType] (
		[DebtorType]
	) ,
	CONSTRAINT [FK_PriceBookRule_FromAreaCode] FOREIGN KEY 
	(
		[FromAreaCode]
	) REFERENCES [dbo].[Area] (
		[AreaCode]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToAreaCode] FOREIGN KEY 
	(
		[ToAreaCode]
	) REFERENCES [dbo].[Area] (
		[AreaCode]
	) ,
	CONSTRAINT [FK_PriceBookRule_FromDebtorCode] FOREIGN KEY 
	(
		[FromDebtorCode]
	) REFERENCES [dbo].[Debtor] (
		[AccNo]
	) ,
	CONSTRAINT [FK_PriceBookRule_ToDebtorCode] FOREIGN KEY 
	(
		[ToDebtorCode]
	) REFERENCES [dbo].[Debtor] (
		[AccNo]
	) ,
	CONSTRAINT [FK_PriceBookRule_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PriceBookRule_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE
GO

/* The following DDL will add SubQty to QTDTL, SODTL, DODTL, IVDTL, CSDTL, CNDTL, DNDTL, DRDTL, XSDTL, it will be used by Item Package */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QTDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[QTDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[SODTL] 
    ADD [SubQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DODTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[DODTL] 
    ADD [SubQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[IVDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[CSDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[CNDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[DNDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DRDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[DRDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XSDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[XSDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

/* The following DDL will change the bsp_ChangeItemBatch and bsp_ChangeItemCode procedure */
-- bsp_ChangeItemBatch
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemBatch]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemBatch]
GO

CREATE PROCEDURE bsp_ChangeItemBatch(@ItemCode d_ItemCode, 
	@OldItemBatch d_BatchNo, @NewItemBatch d_BatchNo) AS 

IF @OldItemBatch = @NewItemBatch
    RETURN
   
BEGIN TRANSACTION
--Create New Record For ItemBatch
INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty) 
SELECT ItemCode, @NewItemBatch, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @ItemCode AND BatchNo = @OldItemBatch

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [ItemBatchBalQty] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemSerialNo] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrder] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrderDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [StockDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemBatch WHERE ItemCode = @ItemCode AND BatchNo = @OldItemBatch
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeItemCode
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemCode]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemCode]
GO

CREATE PROCEDURE bsp_ChangeItemCode(@OldItemCode d_ItemCode, @NewItemCode d_ItemCode) AS 

BEGIN TRANSACTION
--Create New Record For Item
INSERT INTO Item(ItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate) 
SELECT @NewItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate FROM Item WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT @NewItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemBatch
INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty) 
SELECT @NewItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [ItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBatchBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemPrice] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemSerialNo] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SerialNoTrans] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL]  SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCostDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrder] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrderDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ReplacementItemCode = @NewItemCode WHERE ReplacementItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET SubItemCode = @NewItemCode WHERE SubItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PriceBookRule] SET FromItemCode = @NewItemCode WHERE FromItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PriceBookRule] SET ToItemCode = @NewItemCode WHERE ToItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemUOM WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemBatch WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Item WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeAccNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeAccNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeAccNo]
GO

CREATE PROCEDURE bsp_ChangeAccNo(@OldAccNo d_AccNo, @NewAccNo d_AccNo) AS 

IF @OldAccNo = @NewAccNo
    RETURN
   
--Create New Record For GLMast
BEGIN TRANSACTION

INSERT INTO GLMast(AccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, CurrencyCode, CashFlowCategory) 
SELECT @NewAccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, 
CurrencyCode, CashFlowCategory FROM GLMast WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Create New Record For Branch 
INSERT INTO Branch(AccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate) 
SELECT @NewAccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate FROM Branch WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update related tables
UPDATE [GLMast] SET ParentAccNo = @NewAccNo WHERE ParentAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankRecon] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankTrans] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CBDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [JEDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Debtor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Creditor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Contact] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TemporaryCredit] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemPrice] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [OBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [OBDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IPHIST] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BudgetPBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DocNoFormatAccNo] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Footer] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNItemBalQty] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CreditControlSync] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IVDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PIDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CPDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PRDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET DEAccNo = @NewAccNo WHERE DEAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointTrans] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointAccount] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoice] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARPayment] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARRefund] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [QT] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNXFER] SET FromDebtorCode = @NewAccNo WHERE FromDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNXFER] SET ToDebtorCode = @NewAccNo WHERE ToDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IV] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DR] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET TempAccNo = @NewAccNo WHERE TempAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [APInvoice] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APPayment] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APRefund] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [RQ] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PO] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PI] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GT] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SupplierCSGN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [ItemGroup] SET SalesCode = @NewAccNo WHERE SalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET CashSalesCode = @NewAccNo WHERE CashSalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesReturnCode = @NewAccNo WHERE SalesReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesDiscountCode = @NewAccNo WHERE SalesDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseDiscountCode = @NewAccNo WHERE PurchaseDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseCode = @NewAccNo WHERE PurchaseCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseReturnCode = @NewAccNo WHERE PurchaseReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [CURRENCY] SET FCGainAccount = @NewAccNo WHERE FCGainAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CURRENCY] SET FCLossAccount = @NewAccNo WHERE FCLossAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [AssetLink] SET AssetAccNo = @NewAccNo WHERE AssetAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [AssetLink] SET AssetDeprnAccNo = @NewAccNo WHERE AssetDeprnAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [TaxType] SET TaxAccNo = @NewAccNo WHERE TaxAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TaxTrans] SET TaxableAccNo = @NewAccNo WHERE TaxableAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [PaymentMethod] SET BankAccount = @NewAccNo WHERE BankAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PaymentMethod] SET BankChargeAccount = @NewAccNo WHERE BankChargeAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [StockSet] SET OpenStock = @NewAccNo WHERE OpenStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET CloseStock = @NewAccNo WHERE CloseStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET BalanceStock = @NewAccNo WHERE BalanceStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PriceBookRule] SET FromDebtorCode = @NewAccNo WHERE FromDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PriceBookRule] SET ToDebtorCode = @NewAccNo WHERE ToDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update Account No in REGISTRY table
UPDATE [Registry] SET RegValue = @NewAccNo WHERE RegID IN (0x108, 0x109, 0x130, 0x128, 0x10C, 0x131, 0x12D, 0x171, 0x172, 0x173) AND RegValue = @OldAccNo
IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION 
    RETURN
  END
  
DELETE FROM Branch WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

DELETE FROM GLMast WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '1.0.8.20' WHERE RegID = 2
GO
�/* The following DDL will add FromASMOrderDtlKey to ASMDTL to indicate whether this ASMDTL was transfered from which ASMOrderDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMDTL]') and name = N'FromASMOrderDtlKey')
  ALTER TABLE [dbo].[ASMDTL] 
    ADD [FromASMOrderDtlKey] [bigint] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.8.21' WHERE RegID = 2
GO
�/* To support Audit Trail */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EventLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[EventLog]
GO

CREATE TABLE [dbo].[EventLog] (
	[EventKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[EventDateTime] [DateTime] NOT NULL DEFAULT GetDate(),
	[UserID] [d_UserID] NOT NULL ,
	[ComputerName] [nvarchar] (20) NULL ,
	[DocType] [d_DocType] NULL,
	[DocKey] [bigint] NULL,
	[EventType] [tinyint] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[EventMessage] [ntext] NULL,
) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.8.22' WHERE RegID = 2
GO
�,/* Change the DeliveryDate column of XPDTL */
ALTER TABLE [dbo].[XPDTL] 
  ADD [NewDeliveryDate] [nvarchar] (10) NULL
GO

UPDATE XPDTL SET NewDeliveryDate = Convert(nvarchar(10), DeliveryDate, 103)
WHERE DeliveryDate IS NOT NULL
GO

ALTER TABLE [dbo].[XPDTL]
  DROP COLUMN [DeliveryDate]
GO

ALTER TABLE [dbo].[XPDTL] 
  ADD [DeliveryDate] [nvarchar] (20) NULL
GO

UPDATE XPDTL SET DeliveryDate=NewDeliveryDate
GO

ALTER TABLE [dbo].[XPDTL]
  DROP COLUMN [NewDeliveryDate]
GO

-- bsp_ChangeItemCode
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemCode]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemCode]
GO

CREATE PROCEDURE bsp_ChangeItemCode(@OldItemCode d_ItemCode, @NewItemCode d_ItemCode) AS 

BEGIN TRANSACTION
--Create New Record For Item
INSERT INTO Item(ItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate) 
SELECT @NewItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate FROM Item WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

declare @sql nvarchar(200)
declare @dec nvarchar(100)
DECLARE @colName  NVARCHAR(20)

declare @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT FieldName From UDF where TableName = 'Item'

OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @colName

WHILE @@FETCH_STATUS = 0
   BEGIN
     
	set @sql = 'update item set [UDF_' + @colName + '] = (select [UDF_' + @colName + '] from Item where ItemCode = @oldItemCode ) WHERE ItemCode = @NewItemCode'

	set @dec = '@newItemCode d_itemCode, @OldItemCode d_itemCode'

	Exec sp_executesql @sql, @dec, @NewItemCode, @OldItemCode

	FETCH NEXT FROM @cur_Item INTO @colName
   END

CLOSE @cur_Item
DEALLOCATE @cur_Item

IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN
END

--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT @NewItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemBatch
INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty) 
SELECT @NewItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [ItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBatchBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemPrice] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemSerialNo] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SerialNoTrans] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL]  SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCostDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrder] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrderDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ReplacementItemCode = @NewItemCode WHERE ReplacementItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET SubItemCode = @NewItemCode WHERE SubItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PriceBookRule] SET FromItemCode = @NewItemCode WHERE FromItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PriceBookRule] SET ToItemCode = @NewItemCode WHERE ToItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemUOM WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemBatch WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Item WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '1.0.8.23' WHERE RegID = 2
GO

|/* The following DDL will change the size of Description to 50 in EventLog table */
ALTER TABLE [dbo].[EventLog] 
  ALTER COLUMN [Description] [nvarchar] (50) NULL
GO

/* The following DDL will add Revalue (bool) and RevalueRate to all A/R and A/P master table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARInvoice]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[ARInvoice] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARInvoice]') and name = N'TotalRevalueGainLoss')
  ALTER TABLE [dbo].[ARInvoice] 
    ADD [TotalRevalueGainLoss] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDN]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[ARDN] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDN]') and name = N'TotalRevalueGainLoss')
  ALTER TABLE [dbo].[ARDN] 
    ADD [TotalRevalueGainLoss] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCN]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[ARCN] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCNKnockOff]') and name = N'Revalue')
  ALTER TABLE [dbo].[ARCNKnockOff] 
    ADD [Revalue] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCN]') and name = N'TotalRevalueGainLoss')
  ALTER TABLE [dbo].[ARCN] 
    ADD [TotalRevalueGainLoss] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARPayment]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[ARPayment] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARPaymentKnockOff]') and name = N'Revalue')
  ALTER TABLE [dbo].[ARPaymentKnockOff] 
    ADD [Revalue] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARPayment]') and name = N'TotalRevalueGainLoss')
  ALTER TABLE [dbo].[ARPayment] 
    ADD [TotalRevalueGainLoss] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARRefund]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[ARRefund] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARRefundKnockOff]') and name = N'Revalue')
  ALTER TABLE [dbo].[ARRefundKnockOff] 
    ADD [Revalue] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARAPContra]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[ARAPContra] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARContraKnockOff]') and name = N'Revalue')
  ALTER TABLE [dbo].[ARContraKnockOff] 
    ADD [Revalue] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APContraKnockOff]') and name = N'Revalue')
  ALTER TABLE [dbo].[APContraKnockOff] 
    ADD [Revalue] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APInvoice]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[APInvoice] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APInvoice]') and name = N'TotalRevalueGainLoss')
  ALTER TABLE [dbo].[APInvoice] 
    ADD [TotalRevalueGainLoss] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDN]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[APDN] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDN]') and name = N'TotalRevalueGainLoss')
  ALTER TABLE [dbo].[APDN] 
    ADD [TotalRevalueGainLoss] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCN]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[APCN] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCNKnockOff]') and name = N'Revalue')
  ALTER TABLE [dbo].[APCNKnockOff] 
    ADD [Revalue] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCN]') and name = N'TotalRevalueGainLoss')
  ALTER TABLE [dbo].[APCN] 
    ADD [TotalRevalueGainLoss] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APPayment]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[APPayment] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APPaymentKnockOff]') and name = N'Revalue')
  ALTER TABLE [dbo].[APPaymentKnockOff] 
    ADD [Revalue] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APPayment]') and name = N'TotalRevalueGainLoss')
  ALTER TABLE [dbo].[APPayment] 
    ADD [TotalRevalueGainLoss] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APRefund]') and name = N'RevalueRate')
  ALTER TABLE [dbo].[APRefund] 
    ADD [RevalueRate] [d_CurrencyRate] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APRefundKnockOff]') and name = N'Revalue')
  ALTER TABLE [dbo].[APRefundKnockOff] 
    ADD [Revalue] [d_Boolean] NULL
GO

/* The following DDL will add FCRevalue (Foreign Currency Revaluation) table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FCRevalue]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[FCRevalue] (
	[FCRevalueKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[UnrealizedGainAccount] [d_AccNo] NOT NULL,
	[UnrealizedLossAccount] [d_AccNo] NOT NULL,
	[GainLossJournalType] [d_JournalType] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[Note] [nText] NULL ,
	[TotalGainLoss] [d_Money] NOT NULL,
	[JEKey] [bigint] NULL,
	[PrintCount] [smallint] NULL, 
	[RefCount] [bigint] NOT NULL, 
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FCRevalue_UnrealizedGainAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[FCRevalue] DROP CONSTRAINT [FK_FCRevalue_UnrealizedGainAccount]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FCRevalue_UnrealizedLossAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[FCRevalue] DROP CONSTRAINT [FK_FCRevalue_UnrealizedLossAccount]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FCRevalue_GainLossJournalType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[FCRevalue] DROP CONSTRAINT [FK_FCRevalue_GainLossJournalType]
GO

ALTER TABLE [dbo].[FCRevalue] ADD 
	CONSTRAINT [FK_FCRevalue_UnrealizedGainAccount] FOREIGN KEY 
	(
		[UnrealizedGainAccount]
	) REFERENCES [dbo].[GLMAST] (
		[AccNo]
	),
	CONSTRAINT [FK_FCRevalue_UnrealizedLossAccount] FOREIGN KEY 
	(
		[UnrealizedLossAccount]
	) REFERENCES [dbo].[GLMAST] (
		[AccNo]
	),
	CONSTRAINT [FK_FCRevalue_GainLossJournalType] FOREIGN KEY 
	(
		[GainLossJournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FCRevalueRate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[FCRevalueRate] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[FCRevalueKey] [bigint] NOT NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FCRevalueRate_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[FCRevalueRate] DROP CONSTRAINT [FK_FCRevalueRate_CurrencyCode]
GO

ALTER TABLE [dbo].[FCRevalueRate] ADD 
	CONSTRAINT [FK_FCRevalueRate_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FCRevalueDocument]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[FCRevalueDocument] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[FCRevalueKey] [bigint] NOT NULL ,
	[Category] [varchar] (2) NOT NULL,
	[DocType] [d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DocNo] [d_DocNo] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[CompanyName] [d_AccDescription] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[RevalueRate] [d_CurrencyRate] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[Outstanding] [d_Money] NOT NULL,
	[GainLoss] [d_Money] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FCRevalueDocument_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[FCRevalueDocument] DROP CONSTRAINT [FK_FCRevalueDocument_AccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FCRevalueDocument_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[FCRevalueDocument] DROP CONSTRAINT [FK_FCRevalueDocument_CurrencyCode]
GO

ALTER TABLE [dbo].[FCRevalueDocument] ADD 
	CONSTRAINT [FK_FCRevalueDocument_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMAST] (
		[AccNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_FCRevalueDocument_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FCRevalueLock]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[FCRevalueLock] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[FCRevalueKey] [bigint] NOT NULL ,
	[ObjType] [d_DocType] NOT NULL,
	[ObjKey] [bigint] NOT NULL,
    [PrevRevalue] [d_Boolean] NULL,
	[PrevRevalueRate] [d_CurrencyRate] NULL,
	[RevalueRate] [d_CurrencyRate] NULL,
) ON [PRIMARY]
GO

/* The following DDL will add Primary Key to CashFlowForecast and Expenses tables */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_CashFlowForecast]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[CashFlowForecast] 
	ADD CONSTRAINT [PK_CashFlowForecast] PRIMARY KEY NONCLUSTERED 
	(
		[DocKey]
	)  ON [PRIMARY] 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_Expenses]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[Expenses] 
	ADD CONSTRAINT [PK_Expenses] PRIMARY KEY NONCLUSTERED 
	(
		[DocKey]
	)  ON [PRIMARY] 
GO

/* The following DDL will add AreaCode to Branch table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Branch]') and name = N'AreaCode')
  ALTER TABLE [dbo].[Branch] 
    ADD [AreaCode] [d_AreaCode] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Branch_AreaCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Branch] DROP CONSTRAINT [FK_Branch_AreaCode]
GO

ALTER TABLE [dbo].[Branch] ADD 
	CONSTRAINT [FK_Branch_AreaCode] FOREIGN KEY 
	(
		[AreaCode]
	) REFERENCES [dbo].[Area] (
		[AreaCode]
	) ON UPDATE CASCADE
GO

/* The following DDL will add InputTaxAccNo and OutputTaxAccNo to TaxType table, and DROP TaxAccNo from TaxType table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'InputTaxAccNo')
  ALTER TABLE [dbo].[TaxType] 
    ADD [InputTaxAccNo] [d_AccNo] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'OutputTaxAccNo')
  ALTER TABLE [dbo].[TaxType] 
    ADD [OutputTaxAccNo] [d_AccNo] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'TaxAccNo')
  UPDATE TaxType
  SET InputTaxAccNo=TaxAccNo, OutputTaxAccNo=TaxAccNo
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxType_TaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxType] DROP CONSTRAINT [FK_TaxType_TaxAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxType_InputTaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxType] DROP CONSTRAINT [FK_TaxType_InputTaxAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxType_OutputTaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxType] DROP CONSTRAINT [FK_TaxType_OutputTaxAccNo]
GO

ALTER TABLE [dbo].[TaxType] ADD 
	CONSTRAINT [FK_TaxType_InputTaxAccNo] FOREIGN KEY 
	(
		[InputTaxAccNo]
	) REFERENCES [dbo].[GLMAST] (
		[AccNo]
	),
	CONSTRAINT [FK_TaxType_OutputTaxAccNo] FOREIGN KEY 
	(
		[OutputTaxAccNo]
	) REFERENCES [dbo].[GLMAST] (
		[AccNo]
	)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'TaxAccNo')
  ALTER TABLE [dbo].[TaxType] 
    DROP COLUMN [TaxAccNo]
GO
  
/* The following DDL will add Foreign Key to EventLog table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_EventLog_UserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[EventLog] DROP CONSTRAINT [FK_EventLog_UserID]
GO

ALTER TABLE [dbo].[EventLog] ADD 
	CONSTRAINT [FK_EventLog_UserID] FOREIGN KEY 
	(
		[UserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ON UPDATE CASCADE
GO

-- bsp_ChangeProjNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeProjNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeProjNo]
GO

CREATE PROCEDURE bsp_ChangeProjNo(@OldProjNo d_Project, 
			@NewProjNo d_Project) AS 

IF @OldProjNo = @NewProjNo
    RETURN
   
BEGIN TRANSACTION
--Update related tables
UPDATE [Project] SET ParentProjNo = @NewProjNo WHERE ParentProjNo = @OldProjNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Project] SET ProjNo = @NewProjNo WHERE ProjNo = @OldProjNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeDeptNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeDeptNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeDeptNo]
GO

CREATE PROCEDURE bsp_ChangeDeptNo(@OldDeptNo d_Dept, 
			@NewDeptNo d_Dept) AS 

IF @OldDeptNo = @NewDeptNo
    RETURN
   
BEGIN TRANSACTION
--Update related tables
UPDATE [Dept] SET ParentDeptNo = @NewDeptNo WHERE ParentDeptNo = @OldDeptNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Dept] SET DeptNo = @NewDeptNo WHERE DeptNo = @OldDeptNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO


-- bsp_ChangeAccNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeAccNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeAccNo]
GO

CREATE PROCEDURE bsp_ChangeAccNo(@OldAccNo d_AccNo, @NewAccNo d_AccNo) AS 

IF @OldAccNo = @NewAccNo
    RETURN
   
--Create New Record For GLMast
BEGIN TRANSACTION

INSERT INTO GLMast(AccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, CurrencyCode, CashFlowCategory) 
SELECT @NewAccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, 
CurrencyCode, CashFlowCategory FROM GLMast WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Create New Record For Branch 
INSERT INTO Branch(AccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate) 
SELECT @NewAccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate FROM Branch WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update related tables
UPDATE [GLMast] SET ParentAccNo = @NewAccNo WHERE ParentAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankRecon] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankTrans] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CBDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [JEDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Debtor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Creditor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Contact] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TemporaryCredit] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemPrice] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [OBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [OBDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IPHIST] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BudgetPBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DocNoFormatAccNo] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Footer] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNItemBalQty] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CreditControlSync] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IVDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PIDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CPDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PRDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET DEAccNo = @NewAccNo WHERE DEAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointTrans] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointAccount] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoice] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARPayment] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARRefund] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [QT] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNXFER] SET FromDebtorCode = @NewAccNo WHERE FromDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNXFER] SET ToDebtorCode = @NewAccNo WHERE ToDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IV] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DR] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET TempAccNo = @NewAccNo WHERE TempAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [APInvoice] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APPayment] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APRefund] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [RQ] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PO] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PI] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GT] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SupplierCSGN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [ItemGroup] SET SalesCode = @NewAccNo WHERE SalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET CashSalesCode = @NewAccNo WHERE CashSalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesReturnCode = @NewAccNo WHERE SalesReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesDiscountCode = @NewAccNo WHERE SalesDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseDiscountCode = @NewAccNo WHERE PurchaseDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseCode = @NewAccNo WHERE PurchaseCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseReturnCode = @NewAccNo WHERE PurchaseReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [CURRENCY] SET FCGainAccount = @NewAccNo WHERE FCGainAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CURRENCY] SET FCLossAccount = @NewAccNo WHERE FCLossAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [AssetLink] SET AssetAccNo = @NewAccNo WHERE AssetAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [AssetLink] SET AssetDeprnAccNo = @NewAccNo WHERE AssetDeprnAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [TaxType] SET InputTaxAccNo = @NewAccNo WHERE InputTaxAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TaxType] SET OutputTaxAccNo = @NewAccNo WHERE OutputTaxAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TaxTrans] SET TaxableAccNo = @NewAccNo WHERE TaxableAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [PaymentMethod] SET BankAccount = @NewAccNo WHERE BankAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PaymentMethod] SET BankChargeAccount = @NewAccNo WHERE BankChargeAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [StockSet] SET OpenStock = @NewAccNo WHERE OpenStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET CloseStock = @NewAccNo WHERE CloseStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET BalanceStock = @NewAccNo WHERE BalanceStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PriceBookRule] SET FromDebtorCode = @NewAccNo WHERE FromDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PriceBookRule] SET ToDebtorCode = @NewAccNo WHERE ToDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [FCRevalue] SET UnrealizedGainAccount = @NewAccNo WHERE UnrealizedGainAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [FCRevalue] SET UnrealizedLossAccount = @NewAccNo WHERE UnrealizedLossAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [FCRevalueDocument] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update Account No in REGISTRY table
UPDATE [Registry] SET RegValue = @NewAccNo WHERE RegID IN (0x108, 0x109, 0x130, 0x128, 0x10C, 0x131, 0x12D, 0x171, 0x172, 0x173) AND RegValue = @OldAccNo
IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION 
    RETURN
  END
  
DELETE FROM Branch WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

DELETE FROM GLMast WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '1.0.8.24' WHERE RegID = 2
GO
�*/* The following DDL will add TaxableAmt to AR */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARInvoiceDTL]') and name = N'TaxableAmt')
  ALTER TABLE [dbo].[ARInvoiceDTL] 
    ADD [TaxableAmt] [d_Money] NULL
GO

UPDATE [dbo].[ARInvoiceDTL]
SET TaxableAmt=Amount
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDNDTL]') and name = N'TaxableAmt')
  ALTER TABLE [dbo].[ARDNDTL] 
    ADD [TaxableAmt] [d_Money] NULL
GO

UPDATE [dbo].[ARDNDTL]
SET TaxableAmt=Amount
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCNDTL]') and name = N'TaxableAmt')
  ALTER TABLE [dbo].[ARCNDTL] 
    ADD [TaxableAmt] [d_Money] NULL
GO

UPDATE [dbo].[ARCNDTL]
SET TaxableAmt=Amount
GO

/* The following DDL will add TaxableAmt to AP */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APInvoiceDTL]') and name = N'TaxableAmt')
  ALTER TABLE [dbo].[APInvoiceDTL] 
    ADD [TaxableAmt] [d_Money] NULL
GO

UPDATE [dbo].[APInvoiceDTL]
SET TaxableAmt=Amount
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDNDTL]') and name = N'TaxableAmt')
  ALTER TABLE [dbo].[APDNDTL] 
    ADD [TaxableAmt] [d_Money] NULL
GO

UPDATE [dbo].[APDNDTL]
SET TaxableAmt=Amount
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCNDTL]') and name = N'TaxableAmt')
  ALTER TABLE [dbo].[APCNDTL] 
    ADD [TaxableAmt] [d_Money] NULL
GO

UPDATE [dbo].[APCNDTL]
SET TaxableAmt=Amount
GO

/* The following DDL will add TaxableAmt to CBDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CBDTL]') and name = N'TaxableAmt')
  ALTER TABLE [dbo].[CBDTL] 
    ADD [TaxableAmt] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CBDTL]') and name = N'Tax')
  ALTER TABLE [dbo].[CBDTL] 
    ADD [Tax] [d_Money] NULL
GO

UPDATE [dbo].[CBDTL]
SET TaxableAmt=Amount
GO

UPDATE [dbo].[CBDTL]
SET Tax=0
WHERE TaxType IS NULL
GO

UPDATE [dbo].[CBDTL]
SET Tax=ROUND(Amount * (SELECT TaxRate FROM TaxType WHERE CBDTL.TaxType=TaxType.TaxType), 2)
WHERE TaxType IS NOT NULL
GO

/* The following DDL will add TaxableDR and TaxableCR to JEDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[JEDTL]') and name = N'TaxableDR')
  ALTER TABLE [dbo].[JEDTL] 
    ADD [TaxableDR] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[JEDTL]') and name = N'TaxableCR')
  ALTER TABLE [dbo].[JEDTL] 
    ADD [TaxableCR] [d_Money] NULL
GO

UPDATE [dbo].[JEDTL]
SET TaxableDR=DR, TaxableCR=CR
GO

/* The following DDL will increase the size of Discount from nvarchar(12) to nvarchar(20) */
ALTER TABLE [dbo].[Debtor]
  ALTER COLUMN DetailDiscount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[Creditor]
  ALTER COLUMN DetailDiscount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[ItemPrice]
  ALTER COLUMN FixedDetailDiscount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[ItemPrice]
  ALTER COLUMN DetailDiscount1 [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[ItemPrice]
  ALTER COLUMN DetailDiscount2 [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[ItemPrice]
  ALTER COLUMN DetailDiscount3 [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[ItemPrice]
  ALTER COLUMN DetailDiscount4 [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[PriceCategory]
  ALTER COLUMN DetailDiscount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[IPHIST]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[QTDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[SODTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[DODTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[IVDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[CSDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[CNDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[DNDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[XSDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[DRDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[RQDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[PODTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[GRDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[PIDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[CPDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[PRDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[XPDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[GTDTL]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

ALTER TABLE [dbo].[PriceBookRule]
  ALTER COLUMN Discount [nvarchar] (20) NULL
GO

/* The following DDL will add BonusPoint Redemption table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BonusPointRedemption]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
   DROP TABLE [dbo].[BonusPointRedemption]
GO

CREATE TABLE [dbo].[BonusPointRedemption](
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[BonusPointAccNo] [d_BonusPointAccNo] NULL,
	[DebtorCode] [d_AccNo] NULL,
	[TotalPointRedeem] [bigint] NULL,
	[DocNo] [d_DocNo] NULL,
	[DocDate] [datetime] NULL,
	[Description] [nvarchar] (40) NULL,
	[Note] [ntext] NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX IX_DocNo ON dbo.BonusPointRedemption (DocNo) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX IX_BonusPointAccNo ON dbo.BonusPointRedemption(BonusPointAccNo) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX IX_DebtorCode ON dbo.BonusPointRedemption(DebtorCode) ON [PRIMARY]
GO

ALTER TABLE dbo.BonusPointRedemption ADD
	CONSTRAINT FK_BonusPointRedemption_BonusPointAccount FOREIGN KEY
	(
		BonusPointAccNo
	) REFERENCES dbo.BonusPointAccount
	(
		BonusPointAccNo
	) ON UPDATE CASCADE,
	CONSTRAINT FK_BonusPointRedemption_Debtor FOREIGN KEY
	(
		DebtorCode
	) REFERENCES dbo.GLMAST
	(
		AccNo
	) ON UPDATE CASCADE
GO

CREATE TABLE [dbo].[BonusPointRedemptionDTL](
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[Qty] [bigint] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[UnitPoint] [bigint] NULL,
	[SubTotal] [bigint] NULL,
	[PostToStockDate] [datetime] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
) ON [PRIMARY]
Go

CREATE NONCLUSTERED INDEX IX_ItemCode ON dbo.BonusPointRedemptionDTL (ItemCode) ON [PRIMARY]
GO

ALTER TABLE dbo.BonusPointRedemptionDTL ADD
	CONSTRAINT FK_BonusPointRedemptionDTL_DocKey FOREIGN KEY
	(
		DocKey
	) REFERENCES dbo.BonusPointRedemption
	(
		DocKey
	),
	CONSTRAINT FK_BonusPointRedemptionDTL_ProjNo FOREIGN KEY
	(
		ProjNo
	) REFERENCES dbo.Project
	(
		ProjNo
	) ON UPDATE CASCADE,
	CONSTRAINT FK_BonusPointRedemptionDTL_DeptNo FOREIGN KEY
	(
		DeptNo
	) REFERENCES dbo.Dept
	(
		DeptNo
	) ON UPDATE CASCADE,
	CONSTRAINT FK_BonusPointRedemptionDTL_ItemUOM FOREIGN KEY
	(
		ItemCode, UOM
	) REFERENCES dbo.ItemUOM
	(
		ItemCode, UOM
	) ON UPDATE CASCADE,
	CONSTRAINT FK_BonusPointRedemptionDTL_ItemBatch FOREIGN KEY
	(
		ItemCode, BatchNo
	) REFERENCES dbo.ItemBatch
	(
		ItemCode, BatchNo
	) ON UPDATE CASCADE
GO

if not exists (select * from DocNoFormat where Name = 'BP Redeem Default')
INSERT INTO [DocNoFormat] VALUES ('BP Redeem Default', 'BR', 1, 'BR-<000000>', 'BR-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
GO

if not exists (select * from ChangeCount where TableName = 'BonusPointRedemption')
INSERT INTO [ChangeCount] VALUES ('BonusPointRedemption', 0);
GO

CREATE TRIGGER UpdateBonusPointRedemptionChangeCount ON BonusPointRedemption
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='BonusPointRedemption'
SET NOCOUNT OFF
GO

/* The following DDL will add RedeemBonusPoint to item table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemUOM]') and name = N'RedeemBonusPoint')
  ALTER TABLE [dbo].[ItemUOM] 
    ADD [RedeemBonusPoint] [int] NULL
GO

ALTER TABLE [dbo].[BonusPointTrans] 
  ALTER COLUMN [DebtorCode] [d_AccNo] NULL
GO

/* The following DDL will add BOMOptional table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BOMOptional]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[BOMOptional]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BOMOptionalDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[BOMOptionalDTL]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BOMOptionalLink]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[BOMOptionalLink]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ASMBOMOptional]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ASMBOMOptional]
GO

CREATE TABLE [dbo].[BOMOptional] (
	[BOMOptionalKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[BOMOptionalCode] [d_ItemCode] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[Desc2] [nvarchar] (100) NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BOMOptionalDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[BOMOptionalKey] [bigint] NOT NULL,
	[SubItemCode] [d_ItemCode] NOT NULL,
	[Qty] [d_Qty] NOT NULL,
	[OverheadCost] [d_Cost] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BOMOptionalLink] (
	[BOMOptionalLinkKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[BOMOptionalKey] [bigint] NOT NULL,
	[BOMItemCode] [d_ItemCode] NOT NULL,
	[Qty] [d_Qty] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ASMBOMOptional] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NULL,
	[BOMOptionalKey] [bigint] NULL,
	[Qty] [d_Qty] NOT NULL,
) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.8.25' WHERE RegID = 2
GO
3/* The following DDL will add DismantledQty to ASMDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'PasswordAge')
  ALTER TABLE [dbo].[Users] 
    ADD [PasswordAge] [int] NOT NULL DEFAULT -1
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'LastPasswordDate')
  ALTER TABLE [dbo].[Users] 
    ADD [LastPasswordDate] [DateTime] NULL
GO

/* The following DDL will add DismantledQty to ASMDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMDTL]') and name = N'DismantledQty')
  ALTER TABLE [dbo].[ASMDTL] 
    ADD [DismantledQty] [d_Qty] NULL
GO

/* The following DDL will add Dismantled to ASM */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASM]') and name = N'Dismantled')
  ALTER TABLE [dbo].[ASM] 
    ADD [Dismantled] [d_Boolean] NOT NULL DEFAULT 'F'
GO

/* The following DDL will add StockReceived to SODTL and ASMOrderDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'StockReceived')
  ALTER TABLE [dbo].[SODTL] 
    ADD [StockReceived] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'StockReceived')
  ALTER TABLE [dbo].[ASMOrderDTL] 
    ADD [StockReceived] [d_Boolean] NOT NULL DEFAULT 'F'
GO

/* The following DDL will add FromAODtlKey to PODTL to allow transfer from AO to PO */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'FromAODtlKey')
  ALTER TABLE [dbo].[PODTL] 
    ADD [FromAODtlKey] [bigint] NULL
GO

/* The following DDL will add RefNo2 to ARInvoice, ARDN, ARCN, ARAPContra, APInvoice, APDN, APCN, JEDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARInvoice]') and name = N'RefNo2')
  ALTER TABLE [dbo].[ARInvoice] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDN]') and name = N'RefNo2')
  ALTER TABLE [dbo].[ARDN] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCN]') and name = N'RefNo2')
  ALTER TABLE [dbo].[ARCN] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARAPContra]') and name = N'RefNo2')
  ALTER TABLE [dbo].[ARAPContra] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APInvoice]') and name = N'RefNo2')
  ALTER TABLE [dbo].[APInvoice] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDN]') and name = N'RefNo2')
  ALTER TABLE [dbo].[APDN] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCN]') and name = N'RefNo2')
  ALTER TABLE [dbo].[APCN] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[JEDTL]') and name = N'RefNo2')
  ALTER TABLE [dbo].[JEDTL] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

/* The following DDL will add table to support AutoCount Notification */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Notification]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[Notification] (
	[NotificationKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Header] [nvarchar] (80) NULL,
	[Detail] [ntext] NULL,
	[UserName] [nvarchar] (40) NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[NotifAllowUsers]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[NotifAllowUsers] (
	[NotificationKey] [bigint] NOT NULL,
	[UserID] [d_UserID] NOT NULL,
) ON [PRIMARY]
GO

/* The following DDL will add primary key to NotifAllowUsers */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_NotifAllowUsers]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[NotifAllowUsers] DROP CONSTRAINT [PK_NotifAllowUsers]
GO

ALTER TABLE [dbo].[NotifAllowUsers] WITH NOCHECK ADD 
	CONSTRAINT [PK_NotifAllowUsers] PRIMARY KEY  CLUSTERED 
	(
		[NotificationKey],
		[UserID]
	)  ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[NotifReadUsers]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[NotifReadUsers] (
	[NotificationKey] [bigint] NOT NULL,
	[UserID] [d_UserID] NOT NULL,
) ON [PRIMARY]
GO

/* The following DDL will add primary key to NotifReadUsers */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_NotifReadUsers]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1)
  ALTER TABLE [dbo].[NotifReadUsers] DROP CONSTRAINT [PK_NotifReadUsers]
GO

ALTER TABLE [dbo].[NotifReadUsers] WITH NOCHECK ADD 
	CONSTRAINT [PK_NotifReadUsers] PRIMARY KEY  CLUSTERED 
	(
		[NotificationKey],
		[UserID]
	)  ON [PRIMARY]
GO

/* The following DDL will add more foreign key constraints to BonusPointRedemption */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BonusPointRedemption_LastModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BonusPointRedemption] DROP CONSTRAINT [FK_BonusPointRedemption_LastModifiedUserID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BonusPointRedemption_CreatedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BonusPointRedemption] DROP CONSTRAINT [FK_BonusPointRedemption_CreatedUserID]
GO

ALTER TABLE [dbo].[BonusPointRedemption] ADD
	CONSTRAINT [FK_BonusPointRedemption_LastModifiedUserID] FOREIGN KEY
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users]
	(
		[UserID]
	),
	CONSTRAINT [FK_BonusPointRedemption_CreatedUserID] FOREIGN KEY
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users]
	(
		[UserID]
	)
GO

-- bsp_ChangeUserID
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeUserID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeUserID]
GO

CREATE PROCEDURE bsp_ChangeUserID(@OldUserID d_UserID, @NewUserID d_UserID) AS 

IF @OldUserID = @NewUserID
    RETURN
   
-- Check to disallow @NewUserID same with any UserGroupID
IF EXISTS(SELECT * FROM UserGroup WHERE UserGroupID = @NewUserID)
  BEGIN
    RAISERROR ('New User ID is an existing User Group ID, cannot change to this New User ID.', 11, 1)
  RETURN 
  END
--End new added

BEGIN TRANSACTION
--Create New Record For GLMast
INSERT INTO Users(UserID, UserName, Department, Passwd, Signature, EmailAddress, 
FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate) 
SELECT @NewUserID, UserName, Department, Passwd, Signature, EmailAddress, 
FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate FROM Users WHERE UserID=@OldUserID

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [MRU] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [LayoutUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GLDTL] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersSalesAgent] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersPurchaseAgent] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [AccessRight] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Session] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DocNoFormatUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersGroup] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersGroup] SET UserGroupID = @NewUserID WHERE UserGroupID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [CB] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CB] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [JE] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [JE] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Debtor] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Debtor] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Creditor] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Creditor] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDeposit] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDeposit] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDeposit] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDeposit] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARInvoice] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARInvoice] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARPayment] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARPayment]SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARCN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARCN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARRefund] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARRefund] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARAPContra] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARAPContra] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APInvoice] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APInvoice] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APPayment] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APPayment] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APCN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APCN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APRefund] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APRefund] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFER] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFER] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJ] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJ] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCV] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCV] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFF] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFF] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConv] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConv] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCost] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCost] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET ApprovalUserID = @NewUserID WHERE ApprovalUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrder] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrder] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [BonusPointRedemption] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [BonusPointRedemption] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [NotifAllowUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [NotifReadUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Users WHERE UserID = @OldUserID

COMMIT TRANSACTION

GO

-- bsp_ChangeLocation
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeLocation]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeLocation]
GO

CREATE PROCEDURE [dbo].[bsp_ChangeLocation](@OldLocation d_Location, @NewLocation d_Location) AS 

IF @OldLocation = @NewLocation
    RETURN
   
BEGIN TRANSACTION
--Create New Record For Location
INSERT INTO Location([Location], [Description], [Desc2], [Address1], [Address2], [Address3], [Address4], [PostCode], [Phone1],
[Phone2], [Fax1], [Fax2], [Contact], [Note], [IsActive], [LastUpdate]) 
SELECT @NewLocation,[Description], [Desc2], [Address1], [Address2], [Address3], [Address4], [PostCode], [Phone1], [Phone2], [Fax1], 
[Fax2], [Contact], [Note], [IsActive], [LastUpdate]
FROM Location WHERE Location = @OldLocation

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [GTDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrder] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET FromLocation = @NewLocation WHERE FromLocation = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET ToLocation = @NewLocation WHERE ToLocation = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBatchBalQty] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBalQty] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrderDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [BonusPointRedemptionDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PriceBookRule] SET FromLocation = @NewLocation WHERE FromLocation = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PriceBookRule] SET ToLocation = @NewLocation WHERE ToLocation = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemSerialNo] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Location WHERE Location = @OldLocation
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '1.0.8.26' WHERE RegID = 2
GO
&/* The following DDL will add Location, ProjNo, DeptNo to Users */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'Location')
  ALTER TABLE [dbo].[Users] 
    ADD [Location] [d_Location] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'ProjNo')
  ALTER TABLE [dbo].[Users] 
    ADD [ProjNo] [d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'DeptNo')
  ALTER TABLE [dbo].[Users] 
    ADD [DeptNo] [d_Dept] NULL
GO

/* The following DDL will add Foreign Key to Users table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Users_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Users] DROP CONSTRAINT [FK_Users_Location]
GO

ALTER TABLE [dbo].[Users] ADD 
	CONSTRAINT [FK_Users_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Users_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Users] DROP CONSTRAINT [FK_Users_ProjNo]
GO

ALTER TABLE [dbo].[Users] ADD 
	CONSTRAINT [FK_Users_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Users_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Users] DROP CONSTRAINT [FK_Users_DeptNo]
GO

ALTER TABLE [dbo].[Users] ADD 
	CONSTRAINT [FK_Users_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE
GO

/* The following DDL will add RefNo2 to ARInvoice, ARDN, ARCN, ARAPContra, APInvoice, APDN, APCN, JEDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'RefNo2')
  ALTER TABLE [dbo].[IV] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'RefNo2')
  ALTER TABLE [dbo].[CS] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'RefNo2')
  ALTER TABLE [dbo].[CN] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'RefNo2')
  ALTER TABLE [dbo].[DN] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PI]') and name = N'RefNo2')
  ALTER TABLE [dbo].[PI] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CP]') and name = N'RefNo2')
  ALTER TABLE [dbo].[CP] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PR]') and name = N'RefNo2')
  ALTER TABLE [dbo].[PR] 
    ADD [RefNo2] [nvarchar] (20) NULL
GO

/* The following DDL will support Business Flow */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'TotalPurchaseRequestQty')
  ALTER TABLE [dbo].[SODTL] 
	ADD TotalPurchaseRequestQty [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'TotalDeliveryRequestQty')
  ALTER TABLE [dbo].[SODTL] 
	ADD TotalDeliveryRequestQty [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'TotalAssemblyOrderRequestQty')
  ALTER TABLE [dbo].[SODTL] 
	ADD TotalAssemblyOrderRequestQty [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'PurchaseStatus')
  ALTER TABLE [dbo].[SODTL] 
	ADD PurchaseStatus [smallint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'DeliveryStatus')
  ALTER TABLE [dbo].[SODTL] 
	ADD DeliveryStatus [smallint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'AssemblyOrderStatus')
  ALTER TABLE [dbo].[SODTL] 
	ADD AssemblyOrderStatus [smallint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'LastOPModified')
  ALTER TABLE [dbo].[SODTL] 
	ADD LastOPModified [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'LastOPModifiedUserID')
  ALTER TABLE [dbo].[SODTL] 
	ADD LastOPModifiedUserID [d_UserID] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'LastDRPModified')
  ALTER TABLE [dbo].[SODTL] 
	ADD LastDRPModified [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'LastAORPModified')
  ALTER TABLE [dbo].[SODTL] 
	ADD LastAORPModified [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'LastDRPModifiedUserID')
  ALTER TABLE [dbo].[SODTL] 
	ADD LastDRPModifiedUserID [d_UserID] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'LastAORPModifiedUserID')
  ALTER TABLE [dbo].[SODTL] 
	ADD LastAORPModifiedUserID [d_UserID] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SODTL_LastOPModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[SODTL] DROP CONSTRAINT [FK_SODTL_LastOPModifiedUserID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SODTL_LastDRPModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[SODTL] DROP CONSTRAINT [FK_SODTL_LastDRPModifiedUserID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SODTL_LastAORPModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[SODTL] DROP CONSTRAINT FK_SODTL_LastAORPModifiedUserID
GO

ALTER TABLE [dbo].[SODTL] ADD
	CONSTRAINT [FK_SODTL_LastOPModifiedUserID] FOREIGN KEY
	(
		[LastOPModifiedUserID]
	) REFERENCES [dbo].[Users] 
	(
		[UserID]
	),
	CONSTRAINT [FK_SODTL_LastDRPModifiedUserID] FOREIGN KEY
	(
		[LastDRPModifiedUserID]
	) REFERENCES [dbo].[Users] 
	(
		[UserID]
	),
	CONSTRAINT [FK_SODTL_LastAORPModifiedUserID] FOREIGN KEY
	(
		[LastAORPModifiedUserID]
	) REFERENCES [dbo].[Users] 
	(
		[UserID]
	)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PRProcessing]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[PRProcessing](
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[SODtlKey] [bigint] NOT NULL,
	--May need change to FromDocKey
	[SODocKey] [bigint] NOT NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Description] [d_ItemDescription] NULL,
	[SODescription] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[DeliveryDate] [nvarchar](20) NULL,
	[Location] [d_Location] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[CreditorCode] [d_AccNo] NULL,
	[RequestQty] [d_Qty] NULL,
	[RequestUOM] [d_UOM] NULL,
	[IsAllowOPEdit] [d_Boolean] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessing_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessing] DROP CONSTRAINT [FK_PRProcessing_ItemUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessing_RequestUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessing] DROP CONSTRAINT [FK_PRProcessing_RequestUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessing_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessing] DROP CONSTRAINT [FK_PRProcessing_Location]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessing_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessing] DROP CONSTRAINT [FK_PRProcessing_ProjNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessing_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessing] DROP CONSTRAINT [FK_PRProcessing_DeptNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessing_CreditorCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessing] DROP CONSTRAINT [FK_PRProcessing_CreditorCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessing_CreatedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessing] DROP CONSTRAINT [FK_PRProcessing_CreatedUserID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessing_LastModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessing] DROP CONSTRAINT [FK_PRProcessing_LastModifiedUserID]
GO

ALTER TABLE [dbo].[PRProcessing] ADD 
	CONSTRAINT [FK_PRProcessing_RequestUOM] FOREIGN KEY 
	(
		[ItemCode], [RequestUOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	),
	CONSTRAINT [FK_PRProcessing_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_PRProcessing_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_PRProcessing_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_PRProcessing_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_PRProcessing_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	),
	CONSTRAINT [FK_PRProcessing_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PRProcessingPO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[PRProcessingPO](
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[PRPKey] [bigint] NOT NULL,
	[SODtlKey] [bigint] NOT NULL,
	[SODocKey] [bigint] NOT NULL,
	[RefDocKey] [bigint] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[RefDocType] [d_DocType] NULL,
	[RefDtlKey] [bigint] NULL,
	[CreditorCode] [d_AccNo] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[OrderQty] [d_Qty] NULL,
	[OrderUOM] [d_UOM] NULL,
	[OrderRate] [d_Qty] NULL,
	[KIV] [d_Boolean] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessingPO_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessingPO] DROP CONSTRAINT [FK_PRProcessingPO_ItemUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessingPO_CreditorCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessingPO] DROP CONSTRAINT [FK_PRProcessingPO_CreditorCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessingPO_CreatedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessingPO] DROP CONSTRAINT [FK_PRProcessingPO_CreatedUserID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRProcessingPO_LastModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRProcessingPO] DROP CONSTRAINT [FK_PRProcessingPO_LastModifiedUserID]
GO

ALTER TABLE [dbo].[PRProcessingPO] ADD 
	CONSTRAINT [FK_PRProcessingPO_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [OrderUOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	),
	CONSTRAINT [FK_PRProcessingPO_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_PRProcessingPO_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	),
	CONSTRAINT [FK_PRProcessingPO_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DRProcessing]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[DRProcessing](
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[SODtlKey] [bigint] NOT NULL,
	[SODocKey] [bigint] NOT NULL,
	[DODocKey] [bigint] NULL,
	[DODocNo] [d_DocNo] NULL,
	[DODtlKey] [bigint] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[DeliveryDate] [nvarchar](20) NULL,
	[Location] [d_Location] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[DebtorCode] [d_AccNo] NULL,
	[DeliveryQty] [d_Qty] NULL,
	[DeliveryUOM] [d_UOM] NULL,
	[DeliveryRate] [d_Qty] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[TaxType] [d_TaxType] NULL,
	[KIV] [d_Boolean] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessing_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DRProcessing] DROP CONSTRAINT [FK_DRProcessing_ItemUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessing_DeliveryUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DRProcessing] DROP CONSTRAINT [FK_DRProcessing_DeliveryUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessing_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DRProcessing] DROP CONSTRAINT [FK_DRProcessing_Location]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessing_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DRProcessing] DROP CONSTRAINT [FK_DRProcessing_ProjNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessing_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DRProcessing] DROP CONSTRAINT [FK_DRProcessing_DeptNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessing_DebtorCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DRProcessing] DROP CONSTRAINT [FK_DRProcessing_DebtorCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessing_TaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DRProcessing] DROP CONSTRAINT [FK_DRProcessing_TaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessing_CreatedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DRProcessing] DROP CONSTRAINT [FK_DRProcessing_CreatedUserID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessing_LastModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DRProcessing] DROP CONSTRAINT [FK_DRProcessing_LastModifiedUserID]
GO

ALTER TABLE [dbo].[DRProcessing] ADD 
	CONSTRAINT [FK_DRProcessing_DeliveryUOM] FOREIGN KEY 
	(
		[ItemCode], [DeliveryUOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	),
	CONSTRAINT [FK_DRProcessing_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_DRProcessing_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_DRProcessing_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_DRProcessing_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_DRProcessing_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_DRProcessing_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	),
	CONSTRAINT [FK_DRProcessing_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AORProcessing]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[AORProcessing](
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[SODtlKey] [bigint] NOT NULL,
	[SODocKey] [bigint] NOT NULL,
	[AODocKey] [bigint] NULL,
	[AODocNo] [d_DocNo] NULL,
	[AODtlKey] [bigint] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[DeliveryDate] [nvarchar](20) NULL,
	[Location] [d_Location] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	--Smallest UOM
	[RequestQty] [d_Qty] NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AORProcessing_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AORProcessing] DROP CONSTRAINT [FK_AORProcessing_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AORProcessing_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AORProcessing] DROP CONSTRAINT [FK_AORProcessing_Location]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AORProcessing_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AORProcessing] DROP CONSTRAINT [FK_AORProcessing_ProjNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AORProcessing_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AORProcessing] DROP CONSTRAINT [FK_AORProcessing_DeptNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AORProcessing_CreatedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AORProcessing] DROP CONSTRAINT [FK_AORProcessing_CreatedUserID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AORProcessing_LastModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AORProcessing] DROP CONSTRAINT [FK_AORProcessing_LastModifiedUserID]
GO

ALTER TABLE [dbo].[AORProcessing] ADD 
	CONSTRAINT [FK_AORProcessing_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	),
	CONSTRAINT [FK_AORProcessing_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_AORProcessing_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_AORProcessing_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_AORProcessing_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	),
	CONSTRAINT [FK_AORProcessing_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrder]') and name = N'TotalAssemblyRequestQty')
  ALTER TABLE [dbo].[ASMOrder] 
	ADD TotalAssemblyRequestQty [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrder]') and name = N'AssemblyStatus')
  ALTER TABLE [dbo].[ASMOrder] 
	ADD AssemblyStatus [smallint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrder]') and name = N'LastAOPModified')
  ALTER TABLE [dbo].[ASMOrder] 
	ADD LastAOPModified [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrder]') and name = N'LastAOPModifiedUserID')
  ALTER TABLE [dbo].[ASMOrder] 
	ADD LastAOPModifiedUserID [d_UserID] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ASMOrder_LastAOPModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ASMOrder] DROP CONSTRAINT [FK_ASMOrder_LastAOPModifiedUserID]
GO

ALTER TABLE [dbo].[ASMOrder] ADD 
	CONSTRAINT [FK_ASMOrder_LastAOPModifiedUserID] FOREIGN KEY 
	(
		[LastAOPModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'TotalPurchaseRequestQty')
  ALTER TABLE [dbo].[ASMOrderDTL] 
	ADD TotalPurchaseRequestQty [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'TotalAssemblyOrderRequestQty')
  ALTER TABLE [dbo].[ASMOrderDTL] 
	ADD TotalAssemblyOrderRequestQty [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'PurchaseStatus')
  ALTER TABLE [dbo].[ASMOrderDTL] 
	ADD PurchaseStatus [smallint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'AssemblyOrderStatus')
  ALTER TABLE [dbo].[ASMOrderDTL] 
	ADD AssemblyOrderStatus [smallint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'LastPRModified')
  ALTER TABLE [dbo].[ASMOrderDTL] 
	ADD LastPRModified [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'LastPRModifiedUserID')
  ALTER TABLE [dbo].[ASMOrderDTL] 
	ADD LastPRModifiedUserID [d_UserID] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'LastAORPModified')
  ALTER TABLE [dbo].[ASMOrderDTL] 
	ADD LastAORPModified [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'LastAORPModifiedUserID')
  ALTER TABLE [dbo].[ASMOrderDTL] 
	ADD LastAORPModifiedUserID [d_UserID] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ASMOrderDTL_LastPRModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ASMOrderDTL] DROP CONSTRAINT [FK_ASMOrderDTL_LastPRModifiedUserID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ASMOrderDTL_LastAORPModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ASMOrderDTL] DROP CONSTRAINT [FK_ASMOrderDTL_LastAORPModifiedUserID]
GO

ALTER TABLE [dbo].[ASMOrderDTL] ADD 
	CONSTRAINT [FK_ASMOrderDTL_LastPRModifiedUserID] FOREIGN KEY 
	(
		[LastPRModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	),
	CONSTRAINT [FK_ASMOrderDTL_LastAORPModifiedUserID] FOREIGN KEY 
	(
		[LastAORPModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AsmRProcessing]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[AsmRProcessing](
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[AODocKey] [bigint] NOT NULL,
	[ASMDocKey] [bigint] NULL,
	[ASMDocNo] [d_DocNo] NULL,
	--[ASMDtlKey] [bigint] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Description] [d_ItemDescription] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	--Smallest UOM
	[RequestQty] [d_Qty] NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AsmRProcessing_ItemCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AsmRProcessing] DROP CONSTRAINT [FK_AsmRProcessing_ItemCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AsmRProcessing_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AsmRProcessing] DROP CONSTRAINT [FK_AsmRProcessing_Location]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AsmRProcessing_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AsmRProcessing] DROP CONSTRAINT [FK_AsmRProcessing_ProjNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AsmRProcessing_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AsmRProcessing] DROP CONSTRAINT [FK_AsmRProcessing_DeptNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AsmRProcessing_CreatedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AsmRProcessing] DROP CONSTRAINT [FK_AsmRProcessing_CreatedUserID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_AsmRProcessing_LastModifiedUserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[AsmRProcessing] DROP CONSTRAINT [FK_AsmRProcessing_LastModifiedUserID]
GO

ALTER TABLE [dbo].[AsmRProcessing] ADD 
	CONSTRAINT [FK_AsmRProcessing_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	),
	CONSTRAINT [FK_AsmRProcessing_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_AsmRProcessing_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_AsmRProcessing_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_AsmRProcessing_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	),
	CONSTRAINT [FK_AsmRProcessing_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRProcessing]') and name = N'FromDocType')
  ALTER TABLE [dbo].[PRProcessing] 
	ADD FromDocType [d_DocType] NULL
GO

UPDATE [PRProcessing] SET FromDocType = 'SO' 
WHERE FromDocType IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRProcessing]') and name = N'SODtlKey')
  EXEC sp_rename 'PRProcessing.SODtlKey', 'FromDtlKey', 'COLUMN'
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRProcessing]') and name = N'SODocKey')
  EXEC sp_rename 'PRProcessing.SODocKey', 'FromDocKey', 'COLUMN'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRProcessingPO]') and name = N'FromDocType')
  ALTER TABLE [dbo].[PRProcessingPO] 
	ADD FromDocType [d_DocType] NULL
GO

UPDATE [PRProcessingPO] SET FromDocType = 'SO' 
WHERE FromDocType IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRProcessingPO]') and name = N'SODtlKey')
  EXEC sp_rename 'PRProcessingPO.SODtlKey', 'FromDtlKey', 'COLUMN'
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRProcessingPO]') and name = N'SODocKey')
  EXEC sp_rename 'PRProcessingPO.SODocKey', 'FromDocKey', 'COLUMN'
GO

-- bsp_ChangeLocation
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeLocation]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeLocation]
GO

CREATE PROCEDURE [dbo].[bsp_ChangeLocation](@OldLocation d_Location, @NewLocation d_Location) AS 

IF @OldLocation = @NewLocation
    RETURN
   
BEGIN TRANSACTION
--Create New Record For Location
INSERT INTO Location([Location], [Description], [Desc2], [Address1], [Address2], [Address3], [Address4], [PostCode], [Phone1],
[Phone2], [Fax1], [Fax2], [Contact], [Note], [IsActive], [LastUpdate]) 
SELECT @NewLocation,[Description], [Desc2], [Address1], [Address2], [Address3], [Address4], [PostCode], [Phone1], [Phone2], [Fax1], 
[Fax2], [Contact], [Note], [IsActive], [LastUpdate]
FROM Location WHERE Location = @OldLocation

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [GTDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrder] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET FromLocation = @NewLocation WHERE FromLocation = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET ToLocation = @NewLocation WHERE ToLocation = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBatchBalQty] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBalQty] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrderDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [BonusPointRedemptionDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PriceBookRule] SET FromLocation = @NewLocation WHERE FromLocation = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PriceBookRule] SET ToLocation = @NewLocation WHERE ToLocation = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMDTL] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemSerialNo] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Users] SET Location = @NewLocation WHERE Location = @OldLocation 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Registry] SET RegValue = @NewLocation WHERE RegID = 13584 AND RegValue = @OldLocation
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Location WHERE Location = @OldLocation
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION
GO

-- bsp_ChangeProjNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeProjNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeProjNo]
GO

CREATE PROCEDURE bsp_ChangeProjNo(@OldProjNo d_Project, 
			@NewProjNo d_Project) AS 

IF @OldProjNo = @NewProjNo
    RETURN
   
BEGIN TRANSACTION
--Update related tables
UPDATE [Project] SET ParentProjNo = @NewProjNo WHERE ParentProjNo = @OldProjNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Project] SET ProjNo = @NewProjNo WHERE ProjNo = @OldProjNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Registry] SET RegValue = @NewProjNo WHERE RegID = 13585 AND RegValue = @OldProjNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeDeptNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeDeptNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeDeptNo]
GO

CREATE PROCEDURE bsp_ChangeDeptNo(@OldDeptNo d_Dept, 
			@NewDeptNo d_Dept) AS 

IF @OldDeptNo = @NewDeptNo
    RETURN
   
BEGIN TRANSACTION
--Update related tables
UPDATE [Dept] SET ParentDeptNo = @NewDeptNo WHERE ParentDeptNo = @OldDeptNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Dept] SET DeptNo = @NewDeptNo WHERE DeptNo = @OldDeptNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Registry] SET RegValue = @NewDeptNo WHERE RegID = 13586 AND RegValue = @OldDeptNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeUserID
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeUserID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeUserID]
GO

CREATE PROCEDURE bsp_ChangeUserID(@OldUserID d_UserID, @NewUserID d_UserID) AS 

IF @OldUserID = @NewUserID
    RETURN
   
-- Check to disallow @NewUserID same with any UserGroupID
IF EXISTS(SELECT * FROM UserGroup WHERE UserGroupID = @NewUserID)
  BEGIN
    RAISERROR ('New User ID is an existing User Group ID, cannot change to this New User ID.', 11, 1)
  RETURN 
  END
--End new added

BEGIN TRANSACTION
--Create New Record For GLMast
INSERT INTO Users(UserID, UserName, Department, Passwd, Signature, EmailAddress, 
FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate) 
SELECT @NewUserID, UserName, Department, Passwd, Signature, EmailAddress, 
FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate FROM Users WHERE UserID=@OldUserID

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [MRU] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [LayoutUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GLDTL] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersSalesAgent] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersPurchaseAgent] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [AccessRight] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Session] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DocNoFormatUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersGroup] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersGroup] SET UserGroupID = @NewUserID WHERE UserGroupID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [CB] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CB] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [JE] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [JE] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Debtor] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Debtor] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Creditor] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Creditor] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDeposit] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDeposit] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDeposit] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDeposit] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARInvoice] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARInvoice] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARPayment] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARPayment]SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARCN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARCN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARRefund] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARRefund] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARAPContra] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARAPContra] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APInvoice] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APInvoice] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APPayment] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APPayment] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APCN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APCN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APRefund] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APRefund] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFER] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFER] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJ] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJ] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCV] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCV] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFF] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFF] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConv] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConv] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCost] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCost] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET ApprovalUserID = @NewUserID WHERE ApprovalUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrder] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrder] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [BonusPointRedemption] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [BonusPointRedemption] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [NotifAllowUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [NotifReadUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET LastOPModifiedUserID = @NewUserID WHERE LastOPModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET LastDRPModifiedUserID = @NewUserID WHERE LastDRPModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET LastAORPModifiedUserID = @NewUserID WHERE LastAORPModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRProcessing] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRProcessing] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRProcessingPO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRProcessingPO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRProcessing] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRProcessing] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [AORProcessing] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [AORProcessing] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrder] SET LastAOPModifiedUserID = @NewUserID WHERE LastAOPModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrderDTL] SET LastPRModifiedUserID = @NewUserID WHERE LastPRModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMOrderDTL] SET LastAORPModifiedUserID = @NewUserID WHERE LastAORPModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [AsmRProcessing] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [AsmRProcessing] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Users WHERE UserID = @OldUserID

COMMIT TRANSACTION

GO

-- bsp_ChangeTaxType
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeTaxType]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeTaxType]
GO

CREATE PROCEDURE bsp_ChangeTaxType(@OldTaxType d_TaxType, @NewTaxType d_TaxType) AS 

IF @OldTaxType = @NewTaxType
    RETURN
   
BEGIN TRANSACTION
--Create New Record For TaxType
INSERT INTO TaxType(TaxType, Description, TaxRate, Inclusive, InputTaxAccNo, OutputTaxAccNo, IsActive, LastUpdate, TaxTypeCategory) 
SELECT @NewTaxType, Description, TaxRate, Inclusive, InputTaxAccNo, OutputTaxAccNo, IsActive, LastUpdate , TaxTypeCategory
FROM TaxType WHERE TaxType = @OldTaxType

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [CBDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [JEDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [TaxTrans] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Debtor] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Creditor] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARInvoiceDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARCNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APInvoiceDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APCNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Footer] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [QT] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [SO] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [DO] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [IV]SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [CS] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [DN] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [CN] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [XS] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [DR] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [RQ] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [PO] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [GR] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [PI] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [CP] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [PR] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [GT] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [XP] SET Footer1TaxType = @NewTaxType WHERE Footer1TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET Footer2TaxType = @NewTaxType WHERE Footer2TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET Footer3TaxType = @NewTaxType WHERE Footer3TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [DRProcessing] SET TaxType = @NewTaxType WHERE TaxType = @OldTaxType 
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM TaxType WHERE TaxType = @OldTaxType
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- List function
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[List]') AND xtype in (N'FN', N'IF', N'TF'))
DROP FUNCTION dbo.List
GO

CREATE FUNCTION dbo.List(@List ntext)
RETURNS @ListTable TABLE(Item nvarchar(100) COLLATE database_default)
BEGIN
	DECLARE @Pos int, @ChunkPos int, @Length int, @ChunkLen smallint,
		@Chunk nvarchar(4000), @LeftOver nvarchar(4000)

	SET @Pos = 1
	SET @Length = DATALENGTH(@List) / 2
	SET @LeftOver = ''

	WHILE @Pos <= @Length
	BEGIN
		SET @ChunkLen = 4000 - DATALENGTH(@LeftOver) / 2
		SET @Chunk = @LeftOver + SUBSTRING(@List, @Pos, @ChunkLen)
		SET @Pos = @Pos + @ChunkLen
		SET @ChunkPos = CHARINDEX(',', @Chunk)

		WHILE @ChunkPos > 0
		BEGIN
			INSERT @ListTable VALUES(LTRIM(RTRIM(LEFT(@Chunk, @ChunkPos - 1))))
			SET @Chunk = SUBSTRING(@Chunk, @ChunkPos + 1, LEN(@Chunk))
			SET @ChunkPos = CHARINDEX(',', @Chunk)
		END

		SET @LeftOver = @Chunk
	END

	INSERT @ListTable VALUES(LTRIM(RTRIM(@LeftOver)))
	RETURN
END
GO

-- List2 function
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[List2]') AND xtype in (N'FN', N'IF', N'TF'))
DROP FUNCTION dbo.List2
GO

CREATE FUNCTION dbo.List2(@List ntext)
RETURNS @ListTable TABLE(Item nvarchar(100))
BEGIN
	DECLARE @Pos int, @ChunkPos int, @Length int, @ChunkLen smallint,
		@Chunk nvarchar(4000), @LeftOver nvarchar(4000)

	SET @Pos = 1
	SET @Length = DATALENGTH(@List) / 2
	SET @LeftOver = ''

	WHILE @Pos <= @Length
	BEGIN
		SET @ChunkLen = 4000 - DATALENGTH(@LeftOver) / 2
		SET @Chunk = @LeftOver + SUBSTRING(@List, @Pos, @ChunkLen)
		SET @Pos = @Pos + @ChunkLen
		SET @ChunkPos = CHARINDEX('
', @Chunk)

		WHILE @ChunkPos > 0
		BEGIN
			INSERT @ListTable VALUES(LTRIM(RTRIM(LEFT(@Chunk, @ChunkPos - 1))))
			SET @Chunk = SUBSTRING(@Chunk, @ChunkPos + 1, LEN(@Chunk))
			SET @ChunkPos = CHARINDEX('
', @Chunk)
		END

		SET @LeftOver = @Chunk
	END

	INSERT @ListTable VALUES(LTRIM(RTRIM(@LeftOver)))
	RETURN
END
GO

UPDATE REGISTRY SET RegValue = '1.0.8.27' WHERE RegID = 2
GO
�	/* The following DDL will add IsCalcBonusPoint to Item and Footer */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'IsCalcBonusPoint')
  ALTER TABLE [dbo].[Item] 
    ADD [IsCalcBonusPoint] [d_Boolean] NULL
GO

UPDATE [dbo].[Item]
SET IsCalcBonusPoint=StockControl
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Footer]') and name = N'IsCalcBonusPoint')
  ALTER TABLE [dbo].[Footer] 
    ADD [IsCalcBonusPoint] [d_Boolean] NULL
GO

UPDATE [dbo].[Footer]
SET IsCalcBonusPoint='F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'IsCalcBonusPoint')
  ALTER TABLE [dbo].[IVDTL] 
    ADD [IsCalcBonusPoint] [d_Boolean] NULL
GO

UPDATE [dbo].[IVDTL]
SET IsCalcBonusPoint=(SELECT IsCalcBonusPoint FROM Item WHERE IVDTL.ItemCode=Item.ItemCode)
GO

UPDATE [dbo].[IVDTL]
SET IsCalcBonusPoint='F'
WHERE IsCalcBonusPoint IS NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'IsCalcBonusPoint')
  ALTER TABLE [dbo].[CSDTL] 
    ADD [IsCalcBonusPoint] [d_Boolean] NULL
GO

UPDATE [dbo].[CSDTL]
SET IsCalcBonusPoint=(SELECT IsCalcBonusPoint FROM Item WHERE CSDTL.ItemCode=Item.ItemCode)
GO

UPDATE [dbo].[CSDTL]
SET IsCalcBonusPoint='F'
WHERE IsCalcBonusPoint IS NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'IsCalcBonusPoint')
  ALTER TABLE [dbo].[CNDTL] 
    ADD [IsCalcBonusPoint] [d_Boolean] NULL
GO

UPDATE [dbo].[CNDTL]
SET IsCalcBonusPoint=(SELECT IsCalcBonusPoint FROM Item WHERE CNDTL.ItemCode=Item.ItemCode)
GO

UPDATE [dbo].[CNDTL]
SET IsCalcBonusPoint='F'
WHERE IsCalcBonusPoint IS NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'IsCalcBonusPoint')
  ALTER TABLE [dbo].[DNDTL] 
    ADD [IsCalcBonusPoint] [d_Boolean] NULL
GO

UPDATE [dbo].[DNDTL]
SET IsCalcBonusPoint=(SELECT IsCalcBonusPoint FROM Item WHERE DNDTL.ItemCode=Item.ItemCode)
GO

UPDATE [dbo].[DNDTL]
SET IsCalcBonusPoint='F'
WHERE IsCalcBonusPoint IS NULL
GO

INSERT INTO [ChangeCount] VALUES('BOMOptional',0)
GO

CREATE TRIGGER UpdateBOMOptionalChangeCount ON BOMOptional
AFTER Insert, Update, Delete 
AS 
SET NOCOUNT ON 
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='BOMOptional' 
SET NOCOUNT OFF
GO

UPDATE REGISTRY SET RegValue = '1.0.8.28' WHERE RegID = 2
GO
�/* The following DDL will add PaymentType to PaymentMethod table, the valid value of Payment Type 
   are 'Cash', 'Cheque', 'Credit Card'. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PaymentMethod]') and name = N'PaymentType')
  ALTER TABLE [dbo].[PaymentMethod] 
    ADD [PaymentType] [nvarchar] (12) NULL
GO

/* The following DDL will add PaymentMode to CS table, valid value are
   0 - Multiple Payment
   1 - Cash
   2 - Credit Card */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'PaymentMode')
  ALTER TABLE [dbo].[CS] 
    ADD [PaymentMode] [tinyint] NULL DEFAULT 0;
GO

/* The following DDL will add CashPayment to CS table. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'CashPayment')
  ALTER TABLE [dbo].[CS] 
    ADD [CashPayment] [d_Money] NULL
GO

/* The following DDL will add CCApprovalCode to CS table. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'CCApprovalCode')
  ALTER TABLE [dbo].[CS] 
    ADD [CCApprovalCode] [nvarchar] (10) NULL
GO

/* The following DDL will add ExpectedCompletedDate to ASMOrder table. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrder]') and name = N'ExpectedCompletedDate')
  ALTER TABLE [dbo].[ASMOrder] 
    ADD [ExpectedCompletedDate] [datetime] NULL
GO

/* The following DDL will add FK_Branch_AccNo Foreign Key to Branch table. */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Branch_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Branch] DROP CONSTRAINT [FK_Branch_AccNo]
GO

DELETE FROM Branch
WHERE AccNo NOT IN (SELECT AccNo FROM GLMast)
GO

ALTER TABLE [dbo].[Branch] ADD 
	CONSTRAINT [FK_Branch_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	)
GO

/* The following DDL will add PostingAccountGroup table */
if not exists (select * from dbo.systypes where name = N'd_PostingAccountGroup')
  EXEC sp_addtype N'd_PostingAccountGroup', N'nvarchar (12)'
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PostingAccountGroup]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE [dbo].[PostingAccountGroup] (
	[AccountGroup] [d_PostingAccountGroup] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL,
	[SalesCode] [d_AccNo] NULL,
	[CashSalesCode] [d_AccNo] NULL,
	[SalesReturnCode] [d_AccNo] NULL,
	[SalesDiscountCode] [d_AccNo] NULL,
	[PurchaseDiscountCode] [d_AccNo] NULL,
	[PurchaseCode] [d_AccNo] NULL,
	[PurchaseReturnCode] [d_AccNo] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'AccountGroup')
  ALTER TABLE [dbo].[Debtor] 
    ADD [AccountGroup] [d_PostingAccountGroup] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'AccountGroup')
  ALTER TABLE [dbo].[Creditor] 
    ADD [AccountGroup] [d_PostingAccountGroup] NULL
GO

if not exists (select * from ChangeCount where TableName='PostingAccountGroup')
  INSERT INTO [ChangeCount] VALUES ('PostingAccountGroup', 0);
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdatePostingAccountGroupChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER UpdatePostingAccountGroupChangeCount
GO

CREATE TRIGGER UpdatePostingAccountGroupChangeCount ON GLMast
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PostingAccountGroup'
SET NOCOUNT OFF
GO

/* The following DDL will add List2 function */
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[List2]') AND xtype in (N'FN', N'IF', N'TF'))
  DROP FUNCTION dbo.List2
GO

CREATE FUNCTION dbo.List2(@List ntext)
RETURNS @ListTable TABLE(Item nvarchar(100) COLLATE database_default)
BEGIN
	DECLARE @Pos int, @ChunkPos int, @Length int, @ChunkLen smallint,
		@Chunk nvarchar(4000), @LeftOver nvarchar(4000)

	SET @Pos = 1
	SET @Length = DATALENGTH(@List) / 2
	SET @LeftOver = ''

	WHILE @Pos <= @Length
	BEGIN
		SET @ChunkLen = 4000 - DATALENGTH(@LeftOver) / 2
		SET @Chunk = @LeftOver + SUBSTRING(@List, @Pos, @ChunkLen)
		SET @Pos = @Pos + @ChunkLen
		SET @ChunkPos = CHARINDEX('
', @Chunk)

		WHILE @ChunkPos > 0
		BEGIN
			INSERT @ListTable VALUES(LTRIM(RTRIM(LEFT(@Chunk, @ChunkPos - 1))))
			SET @Chunk = SUBSTRING(@Chunk, @ChunkPos + 2, LEN(@Chunk))
			SET @ChunkPos = CHARINDEX('
', @Chunk)
		END

		SET @LeftOver = @Chunk
	END

	INSERT @ListTable VALUES(LTRIM(RTRIM(@LeftOver)))
	RETURN
END
GO

-- bsp_ChangeAccNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeAccNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeAccNo]
GO

CREATE PROCEDURE [dbo].[bsp_ChangeAccNo](@OldAccNo d_AccNo, @NewAccNo d_AccNo) AS 

IF @OldAccNo = @NewAccNo
    RETURN
   
BEGIN TRANSACTION

IF NOT EXISTS (select * from GLMast where AccNo = @NewAccNo)
BEGIN
  --Create New Record For @NewAccNo
  INSERT INTO GLMast(AccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, CurrencyCode, CashFlowCategory) 
  SELECT @NewAccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, 
  CurrencyCode, CashFlowCategory FROM GLMast WHERE AccNo = @OldAccNo

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
END

IF NOT EXISTS (select * from Branch where AccNo = @NewAccNo)
BEGIN
  --Create New Record For Branch 
  INSERT INTO Branch(AccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
  PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate) 
  SELECT @NewAccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
  PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate FROM Branch WHERE AccNo = @OldAccNo

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

INSERT @ListTable VALUES('GLMast', 'ParentAccNo')
INSERT @ListTable VALUES('BankRecon', 'AccNo')
INSERT @ListTable VALUES('BankTrans', 'AccNo')
INSERT @ListTable VALUES('CBDTL', 'AccNo')
INSERT @ListTable VALUES('JEDTL', 'AccNo')
INSERT @ListTable VALUES('Debtor', 'AccNo')
INSERT @ListTable VALUES('Creditor', 'AccNo')
INSERT @ListTable VALUES('Contact', 'AccNo')
INSERT @ListTable VALUES('TemporaryCredit', 'AccNo')
INSERT @ListTable VALUES('ItemPrice', 'AccNo')
INSERT @ListTable VALUES('ARInvoiceDTL', 'AccNo')
INSERT @ListTable VALUES('ARDNDTL', 'AccNo')
INSERT @ListTable VALUES('ARCNDTL', 'AccNo')
INSERT @ListTable VALUES('APInvoiceDTL', 'AccNo')
INSERT @ListTable VALUES('APDNDTL', 'AccNo')
INSERT @ListTable VALUES('APCNDTL', 'AccNo')
INSERT @ListTable VALUES('PBalance', 'AccNo')
INSERT @ListTable VALUES('OBalance', 'AccNo')
INSERT @ListTable VALUES('OBDTL', 'AccNo')
INSERT @ListTable VALUES('IPHIST', 'AccNo')
INSERT @ListTable VALUES('BudgetPBalance', 'AccNo')
INSERT @ListTable VALUES('DocNoFormatAccNo', 'AccNo')
INSERT @ListTable VALUES('Footer', 'AccNo')
INSERT @ListTable VALUES('CSGNItemBalQty', 'AccNo')
INSERT @ListTable VALUES('CreditControlSync', 'AccNo')
INSERT @ListTable VALUES('IVDTL', 'AccNo')
INSERT @ListTable VALUES('CSDTL', 'AccNo')
INSERT @ListTable VALUES('DNDTL', 'AccNo')
INSERT @ListTable VALUES('CNDTL', 'AccNo')
INSERT @ListTable VALUES('PIDTL', 'AccNo')
INSERT @ListTable VALUES('CPDTL', 'AccNo')
INSERT @ListTable VALUES('PRDTL', 'AccNo')
INSERT @ListTable VALUES('GLDTL', 'AccNo')
INSERT @ListTable VALUES('GLDTL', 'DEAccNo')
INSERT @ListTable VALUES('BonusPointAccount', 'AccNo')
INSERT @ListTable VALUES('BonusPointTrans', 'DebtorCode')
INSERT @ListTable VALUES('ARInvoice', 'DebtorCode')
INSERT @ListTable VALUES('ARDN', 'DebtorCode')
INSERT @ListTable VALUES('ARPayment', 'DebtorCode')
INSERT @ListTable VALUES('ARCN', 'DebtorCode')
INSERT @ListTable VALUES('ARRefund', 'DebtorCode')
INSERT @ListTable VALUES('ARDeposit', 'DebtorCode')
INSERT @ListTable VALUES('ARDeposit', 'ForfeitedAccNo')
INSERT @ListTable VALUES('CSGN', 'DebtorCode')
INSERT @ListTable VALUES('CSGNXFER', 'FromDebtorCode')
INSERT @ListTable VALUES('CSGNXFER', 'ToDebtorCode')
INSERT @ListTable VALUES('QT', 'DebtorCode')
INSERT @ListTable VALUES('SO', 'DebtorCode')
INSERT @ListTable VALUES('DO', 'DebtorCode')
INSERT @ListTable VALUES('IV', 'DebtorCode')
INSERT @ListTable VALUES('CS', 'DebtorCode')
INSERT @ListTable VALUES('DN', 'DebtorCode')
INSERT @ListTable VALUES('CN', 'DebtorCode')
INSERT @ListTable VALUES('XS', 'DebtorCode')
INSERT @ListTable VALUES('DR', 'DebtorCode')
INSERT @ListTable VALUES('ARAPContra', 'DebtorCode')
INSERT @ListTable VALUES('ARAPContra', 'CreditorCode')
INSERT @ListTable VALUES('ARAPContra', 'TempAccNo')
INSERT @ListTable VALUES('APInvoice', 'CreditorCode')
INSERT @ListTable VALUES('APDN', 'CreditorCode')
INSERT @ListTable VALUES('APPayment', 'CreditorCode')
INSERT @ListTable VALUES('APCN', 'CreditorCode')
INSERT @ListTable VALUES('APRefund', 'CreditorCode')
INSERT @ListTable VALUES('APDeposit', 'CreditorCode')
INSERT @ListTable VALUES('APDeposit', 'ForfeitedAccNo')
INSERT @ListTable VALUES('RQ', 'CreditorCode')
INSERT @ListTable VALUES('PO', 'CreditorCode')
INSERT @ListTable VALUES('GR', 'CreditorCode')
INSERT @ListTable VALUES('PI', 'CreditorCode')
INSERT @ListTable VALUES('CP', 'CreditorCode')
INSERT @ListTable VALUES('PR', 'CreditorCode')
INSERT @ListTable VALUES('XP', 'CreditorCode')
INSERT @ListTable VALUES('GT', 'CreditorCode')
INSERT @ListTable VALUES('SupplierCSGN', 'CreditorCode')
INSERT @ListTable VALUES('ItemGroup', 'SalesCode')
INSERT @ListTable VALUES('ItemGroup', 'CashSalesCode')
INSERT @ListTable VALUES('ItemGroup', 'SalesReturnCode')
INSERT @ListTable VALUES('ItemGroup', 'SalesDiscountCode')
INSERT @ListTable VALUES('ItemGroup', 'PurchaseDiscountCode')
INSERT @ListTable VALUES('ItemGroup', 'PurchaseCode')
INSERT @ListTable VALUES('ItemGroup', 'PurchaseReturnCode')
INSERT @ListTable VALUES('Currency', 'FCGainAccount')
INSERT @ListTable VALUES('Currency', 'FCLossAccount')
INSERT @ListTable VALUES('AssetLink', 'AssetAccNo')
INSERT @ListTable VALUES('AssetLink', 'AssetDeprnAccNo')
INSERT @ListTable VALUES('TaxType', 'InputTaxAccNo')
INSERT @ListTable VALUES('TaxType', 'OutputTaxAccNo')
INSERT @ListTable VALUES('TaxTrans', 'TaxableAccNo')
INSERT @ListTable VALUES('PaymentMethod', 'BankAccount')
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeAccount')
INSERT @ListTable VALUES('StockSet', 'OpenStock')
INSERT @ListTable VALUES('StockSet', 'CloseStock')
INSERT @ListTable VALUES('StockSet', 'BalanceStock')
INSERT @ListTable VALUES('PriceBookRule', 'FromDebtorCode')
INSERT @ListTable VALUES('PriceBookRule', 'ToDebtorCode')
INSERT @ListTable VALUES('FCRevalue', 'UnrealizedGainAccount')
INSERT @ListTable VALUES('FCRevalue', 'UnrealizedLossAccount')
INSERT @ListTable VALUES('FCRevalueDocument', 'AccNo')
INSERT @ListTable VALUES('PRProcessing', 'CreditorCode')
INSERT @ListTable VALUES('PRProcessingPO', 'CreditorCode')
INSERT @ListTable VALUES('DRProcessing', 'DebtorCode')

DECLARE @sql NVARCHAR(200)
DECLARE @dec NVARCHAR(100)
DECLARE @tableName  NVARCHAR(50)
DECLARE @colName  NVARCHAR(50)
set @dec = '@NewAccNo d_AccNo, @OldAccNo d_AccNo'

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewAccNo WHERE [' + @colName + '] = @OldAccNo'

  Exec sp_executesql @sql, @dec, @NewAccNo, @OldAccNo
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

--Update Account No in REGISTRY table
UPDATE [Registry] SET RegValue = @NewAccNo WHERE RegID IN (0x108, 0x109, 0x130, 0x128, 0x10C, 0x131, 0x12D, 0x171, 0x172, 0x173) AND RegValue = @OldAccNo
IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION 
    RETURN
  END

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeAccNo_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @OldAccNo, @NewAccNo
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldAccNo  
DELETE FROM Branch WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

DELETE FROM GLMast WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

COMMIT TRANSACTION
GO

-- bsp_ChangeBranch
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeBranch]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeBranch]
GO

CREATE PROCEDURE bsp_ChangeBranch(@AccNo d_AccNo, 
	@OldBranchCode d_BranchCode, @NewBranchCode d_BranchCode) AS 

IF @OldBranchCode = @NewBranchCode
    RETURN
   
BEGIN TRANSACTION

IF NOT EXISTS (select * from Branch where AccNo = @AccNo AND BranchCode = @NewBranchCode)
BEGIN
  --Create New Record For Branch
  INSERT INTO Branch(AccNo, BranchCode, BranchName, Address1, Address2, Address3, 
  Address4, PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate) 
  SELECT AccNo, @NewBranchCode, BranchName, Address1, Address2, Address3, 
  Address4, PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate 
  FROM Branch WHERE AccNo = @AccNo AND BranchCode = @OldBranchCode

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50), AccNoName nvarchar(50))

INSERT @ListTable VALUES('IPHIST', 'BranchCode', 'AccNo')
INSERT @ListTable VALUES('QT', 'BranchCode', 'DebtorCode')
INSERT @ListTable VALUES('SO', 'BranchCode', 'DebtorCode')
INSERT @ListTable VALUES('DO', 'BranchCode', 'DebtorCode')
INSERT @ListTable VALUES('IV', 'BranchCode', 'DebtorCode')
INSERT @ListTable VALUES('CS', 'BranchCode', 'DebtorCode')
INSERT @ListTable VALUES('DN', 'BranchCode', 'DebtorCode')
INSERT @ListTable VALUES('CN', 'BranchCode', 'DebtorCode')
INSERT @ListTable VALUES('XS', 'BranchCode', 'DebtorCode')
INSERT @ListTable VALUES('DR', 'BranchCode', 'DebtorCode')
INSERT @ListTable VALUES('CSGNItemBalQty', 'BranchCode', 'AccNo')
INSERT @ListTable VALUES('CSGN', 'BranchCode', 'DebtorCode')
INSERT @ListTable VALUES('CSGNXFER', 'FromBranchCode', 'FromDebtorCode')
INSERT @ListTable VALUES('CSGNXFER', 'ToBranchCode', 'ToDebtorCode')
INSERT @ListTable VALUES('RQ', 'BranchCode', 'CreditorCode')
INSERT @ListTable VALUES('PO', 'BranchCode', 'CreditorCode')
INSERT @ListTable VALUES('GR', 'BranchCode', 'CreditorCode')
INSERT @ListTable VALUES('PI', 'BranchCode', 'CreditorCode')
INSERT @ListTable VALUES('CP', 'BranchCode', 'CreditorCode')
INSERT @ListTable VALUES('PR', 'BranchCode', 'CreditorCode')
INSERT @ListTable VALUES('XP', 'BranchCode', 'CreditorCode')
INSERT @ListTable VALUES('GT', 'BranchCode', 'CreditorCode')
INSERT @ListTable VALUES('SupplierCSGN', 'BranchCode', 'CreditorCode')

DECLARE @sql NVARCHAR(200)
DECLARE @dec NVARCHAR(100)
DECLARE @tableName  NVARCHAR(50)
DECLARE @colName  NVARCHAR(50)
DECLARE @accNoName  NVARCHAR(50)
set @dec = '@NewBranchCode d_BranchCode, @OldBranchCode d_BranchCode, @AccNo d_AccNo'

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, AccNoName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @accNoName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewBranchCode WHERE [' + @colName + '] = @OldBranchCode AND [' + @accNoName + '] = @AccNo'

  Exec sp_executesql @sql, @dec, @NewBranchCode, @OldBranchCode, @AccNo
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @accNoName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeBranch_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @AccNo, @OldBranchCode, @NewBranchCode
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldBranchCode
DELETE FROM Branch WHERE AccNo = @AccNo AND BranchCode = @OldBranchCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeCurrency
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeCurrency]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeCurrency]
GO

CREATE PROCEDURE bsp_ChangeCurrency(@OldCurrencyCode d_CurrencyCode, @NewCurrencyCode d_CurrencyCode) AS 

IF @OldCurrencyCode = @NewCurrencyCode
    RETURN
   
BEGIN TRANSACTION
IF NOT EXISTS (select * from Currency where CurrencyCode = @NewCurrencyCode)
BEGIN
  --Create New Record For @NewCurrencyCode
  INSERT INTO Currency(CurrencyCode, CurrencyWord, CurrencyWord2, CurrencySymbol, BankBuyRate, BankSellRate, FCGainAccount, FCLossAccount, GainLossJournalType, LastUpdate)
  SELECT @NewCurrencyCode, CurrencyWord, CurrencyWord2, CurrencySymbol, BankBuyRate, BankSellRate, FCGainAccount, FCLossAccount, GainLossJournalType, LastUpdate
  FROM Currency WHERE CurrencyCode = @OldCurrencyCode

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

INSERT @ListTable VALUES('Debtor', 'CurrencyCode')
INSERT @ListTable VALUES('ARInvoice', 'CurrencyCode')
INSERT @ListTable VALUES('ARDN', 'CurrencyCode')
INSERT @ListTable VALUES('ARCN', 'CurrencyCode')
INSERT @ListTable VALUES('ARPayment', 'CurrencyCode')
INSERT @ListTable VALUES('ARRefund', 'CurrencyCode')
INSERT @ListTable VALUES('ARAPContra', 'CurrencyCode')
INSERT @ListTable VALUES('ARDeposit', 'CurrencyCode')
INSERT @ListTable VALUES('Creditor', 'CurrencyCode')
INSERT @ListTable VALUES('APInvoice', 'CurrencyCode')
INSERT @ListTable VALUES('APDN', 'CurrencyCode')
INSERT @ListTable VALUES('APCN', 'CurrencyCode')
INSERT @ListTable VALUES('APPayment', 'CurrencyCode')
INSERT @ListTable VALUES('APRefund', 'CurrencyCode')
INSERT @ListTable VALUES('APDeposit', 'CurrencyCode')
INSERT @ListTable VALUES('CB', 'CurrencyCode')
INSERT @ListTable VALUES('JE', 'CurrencyCode')
INSERT @ListTable VALUES('FCValueDocument', 'CurrencyCode')
INSERT @ListTable VALUES('FCValueRate', 'CurrencyCode')
INSERT @ListTable VALUES('GLDTL', 'CurrencyCode')
INSERT @ListTable VALUES('GLMast', 'CurrencyCode')
INSERT @ListTable VALUES('RQ', 'CurrencyCode')
INSERT @ListTable VALUES('PO', 'CurrencyCode')
INSERT @ListTable VALUES('GR', 'CurrencyCode')
INSERT @ListTable VALUES('PI', 'CurrencyCode')
INSERT @ListTable VALUES('CP', 'CurrencyCode')
INSERT @ListTable VALUES('PR', 'CurrencyCode')
INSERT @ListTable VALUES('XP', 'CurrencyCode')
INSERT @ListTable VALUES('GT', 'CurrencyCode')
INSERT @ListTable VALUES('QT', 'CurrencyCode')
INSERT @ListTable VALUES('SO', 'CurrencyCode')
INSERT @ListTable VALUES('DO', 'CurrencyCode')
INSERT @ListTable VALUES('IV', 'CurrencyCode')
INSERT @ListTable VALUES('CS', 'CurrencyCode')
INSERT @ListTable VALUES('CN', 'CurrencyCode')
INSERT @ListTable VALUES('DN', 'CurrencyCode')
INSERT @ListTable VALUES('XS', 'CurrencyCode')
INSERT @ListTable VALUES('DR', 'CurrencyCode')
INSERT @ListTable VALUES('PriceBookRule', 'CurrencyCode')
INSERT @ListTable VALUES('CurrRate', 'CurrencyCode')

DECLARE @sql NVARCHAR(200)
DECLARE @dec NVARCHAR(100)
DECLARE @tableName  NVARCHAR(50)
DECLARE @colName  NVARCHAR(50)
set @dec = '@NewCurrencyCode d_CurrencyCode, @OldCurrencyCode d_CurrencyCode'

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewCurrencyCode WHERE [' + @colName + '] = @OldCurrencyCode'

  Exec sp_executesql @sql, @dec, @NewCurrencyCode, @OldCurrencyCode
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeCurrency_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @OldCurrencyCode, @NewCurrencyCode
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldCurrencyCode
DELETE FROM Currency WHERE CurrencyCode = @OldCurrencyCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeItemCode
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemCode]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemCode]
GO

CREATE PROCEDURE bsp_ChangeItemCode(@OldItemCode d_ItemCode, @NewItemCode d_ItemCode) AS 

BEGIN TRANSACTION

IF NOT EXISTS (select * from Item where ItemCode = @NewItemCode)
BEGIN
  --Create New Record For Item
  INSERT INTO Item(ItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
  ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
  DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
  PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
  CreatedUserID, IsActive, LastUpdate) 
  SELECT @NewItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
  ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
  DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
  PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
  CreatedUserID, IsActive, LastUpdate FROM Item WHERE ItemCode = @OldItemCode

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

  DECLARE @sql NVARCHAR(200)
  DECLARE @dec NVARCHAR(100)
  DECLARE @colName  NVARCHAR(50)

  DECLARE @cur_item cursor
  SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT FieldName From UDF where TableName = 'Item'

  OPEN @cur_Item
  FETCH NEXT FROM @cur_Item INTO @colName

  WHILE @@FETCH_STATUS = 0
  BEGIN
	set @sql = 'update item set [UDF_' + @colName + '] = (select [UDF_' + @colName + '] from Item where ItemCode = @oldItemCode ) WHERE ItemCode = @NewItemCode'

	set @dec = '@newItemCode d_itemCode, @OldItemCode d_itemCode'

	Exec sp_executesql @sql, @dec, @NewItemCode, @OldItemCode

	FETCH NEXT FROM @cur_Item INTO @colName
  END

  CLOSE @cur_Item
  DEALLOCATE @cur_Item

  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    RETURN
  END
END

IF NOT EXISTS (select * from ItemUOM where ItemCode = @NewItemCode)
BEGIN
  --Create New Record For ItemUOM
  INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
  MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
  ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
  Volume, VolumeUOM, BarCode, LastUpdate) 
  SELECT @NewItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
  MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
  ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
  Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @OldItemCode

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
END

IF NOT EXISTS (select * from ItemBatch where ItemCode = @NewItemCode)
BEGIN
  --Create New Record For ItemBatch
  INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
  LastSaleDate, BalQty) 
  SELECT @NewItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
  LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @OldItemCode

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

INSERT @ListTable VALUES('ItemBalQty', 'ItemCode')
INSERT @ListTable VALUES('ItemBatchBalQty', 'ItemCode')
INSERT @ListTable VALUES('ItemPrice', 'ItemCode')
INSERT @ListTable VALUES('ItemOpening', 'ItemCode')
INSERT @ListTable VALUES('ItemSerialNo', 'ItemCode')
INSERT @ListTable VALUES('SerialNoTrans', 'ItemCode')
INSERT @ListTable VALUES('IPHIST', 'ItemCode')
INSERT @ListTable VALUES('PackageDTL', 'ItemCode')
INSERT @ListTable VALUES('QTDTL', 'ItemCode')
INSERT @ListTable VALUES('SODTL', 'ItemCode')
INSERT @ListTable VALUES('DODTL', 'ItemCode')
INSERT @ListTable VALUES('IVDTL', 'ItemCode')
INSERT @ListTable VALUES('CSDTL', 'ItemCode')
INSERT @ListTable VALUES('DNDTL', 'ItemCode')
INSERT @ListTable VALUES('CNDTL', 'ItemCode')
INSERT @ListTable VALUES('XSDTL', 'ItemCode')
INSERT @ListTable VALUES('DRDTL', 'ItemCode')
INSERT @ListTable VALUES('RQDTL', 'ItemCode')
INSERT @ListTable VALUES('PODTL', 'ItemCode')
INSERT @ListTable VALUES('GRDTL', 'ItemCode')
INSERT @ListTable VALUES('PIDTL', 'ItemCode')
INSERT @ListTable VALUES('CPDTL', 'ItemCode')
INSERT @ListTable VALUES('PRDTL', 'ItemCode')
INSERT @ListTable VALUES('XPDTL', 'ItemCode')
INSERT @ListTable VALUES('GTDTL', 'ItemCode')
INSERT @ListTable VALUES('CSGNItemBalQty', 'ItemCode')
INSERT @ListTable VALUES('CSGNDTL', 'ItemCode')
INSERT @ListTable VALUES('CSGNXFERDTL', 'ItemCode')
INSERT @ListTable VALUES('SupplierCSGNDTL', 'ItemCode')
INSERT @ListTable VALUES('CPDTL', 'ItemCode')
INSERT @ListTable VALUES('XFERDTL', 'ItemCode')
INSERT @ListTable VALUES('ADJDTL', 'ItemCode')
INSERT @ListTable VALUES('ISSDTL', 'ItemCode')
INSERT @ListTable VALUES('RCVDTL', 'ItemCode')
INSERT @ListTable VALUES('WOFFDTL', 'ItemCode')
INSERT @ListTable VALUES('UOMConvDTL', 'ItemCode')
INSERT @ListTable VALUES('UpdateCostDTL', 'ItemCode')
INSERT @ListTable VALUES('ItemCostHistory', 'ItemCode')
INSERT @ListTable VALUES('ASM', 'ItemCode')
INSERT @ListTable VALUES('ASMDTL', 'ItemCode')
INSERT @ListTable VALUES('ASMOrder', 'ItemCode')
INSERT @ListTable VALUES('ASMOrderDTL', 'ItemCode')
INSERT @ListTable VALUES('UTDStockCost', 'ItemCode')
INSERT @ListTable VALUES('StockDTL', 'ItemCode')
INSERT @ListTable VALUES('ItemReplacement', 'ItemCode')
INSERT @ListTable VALUES('ItemReplacement', 'ReplacementItemCode')
INSERT @ListTable VALUES('ItemBOM', 'ItemCode')
INSERT @ListTable VALUES('ItemBOM', 'SubItemCode')
INSERT @ListTable VALUES('PriceBookRule', 'FromItemCode')
INSERT @ListTable VALUES('PriceBookRule', 'ToItemCode')

DECLARE @tableName  NVARCHAR(50)
set @dec = '@NewItemCode d_ItemCode, @OldItemCode d_ItemCode'

SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewItemCode WHERE [' + @colName + '] = @OldItemCode'

  Exec sp_executesql @sql, @dec, @NewItemCode, @OldItemCode
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeItemCode_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @OldItemCode, @NewItemCode
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldItemCode
DELETE FROM ItemUOM WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
BEGIN 
  ROLLBACK TRANSACTION
  RETURN 
END

DELETE FROM ItemBatch WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Item WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION
GO

-- bsp_ChangeItemUOM
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemUOM]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemUOM]
GO

CREATE PROCEDURE bsp_ChangeItemUOM(@ItemCode d_ItemCode, 
	@OldItemUOM d_UOM, @NewItemUOM d_UOM) AS 

IF @OldItemUOM = @NewItemUOM
  RETURN
   
BEGIN TRANSACTION

--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT ItemCode, @NewItemUOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @ItemCode AND UOM = @OldItemUOM 

IF @@ERROR <> 0 
BEGIN 
  ROLLBACK TRANSACTION
  RETURN 
END

declare @sql nvarchar(200)
declare @dec nvarchar(100)
DECLARE @colName  NVARCHAR(50)
set @dec = '@ItemCode d_ItemCode, @newItemUOM d_UOM, @OldItemUOM d_UOM'

declare @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT FieldName From UDF where TableName = 'ItemUOM'

OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update ItemUOM set [UDF_' + @colName + '] = (select [UDF_' + @colName + '] from ItemUOM where ItemCode = @ItemCode and ItemUOM = @OldItemUOM ) WHERE ItemCode = @ItemCode AND ItemUOM = @NewItemUOM'

  Exec sp_executesql @sql, @dec, @ItemCode, @NewItemUOM, @OldItemUOM

  FETCH NEXT FROM @cur_Item INTO @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

IF @@ERROR <> 0
BEGIN
  ROLLBACK TRANSACTION
  RETURN
END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50), ItemCodeName nvarchar(50))

INSERT @ListTable VALUES('Item', 'SalesUOM', 'ItemCode')
INSERT @ListTable VALUES('Item', 'PurchaseUOM', 'ItemCode')
INSERT @ListTable VALUES('Item', 'ReportUOM', 'ItemCode')
INSERT @ListTable VALUES('ItemBalQty', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('ItemBatchBalQty', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('ItemPrice', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('ItemOpening', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('IPHIST', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('PackageDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('QTDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('SODTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('DODTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('IVDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('CSDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('CNDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('DNDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('XSDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('DRDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('RQDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('PODTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('GRDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('PIDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('CPDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('PRDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('XPDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('GTDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('CSGNItemBalQty', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('CSGNDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('CSGNXFERDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('SupplierCSGNDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('XFERDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('ADJDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('ISSDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('RCVDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('WOFFDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('UpdateCostDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('ItemCostHistory', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('UTDStockCost', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('StockDTL', 'UOM', 'ItemCode')
INSERT @ListTable VALUES('UOMConvDTL', 'FromUOM', 'ItemCode')
INSERT @ListTable VALUES('UOMConvDTL', 'ToUOM', 'ItemCode')

DECLARE @tableName  NVARCHAR(50)
DECLARE @itemCodeName  NVARCHAR(50)
set @dec = '@NewItemUOM d_UOM, @OldItemUOM d_UOM, @ItemCodeName d_ItemCode'

SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ItemCodeName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @itemCodeName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewItemUOM WHERE [' + @colName + '] = @OldItemUOM AND [' + @itemCodeName + '] = @ItemCodeName'

  Exec sp_executesql @sql, @dec, @NewItemUOM, @OldItemUOM, @ItemCode
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @itemCodeName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeItemUOM_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @ItemCode, @OldItemUOM, @NewItemUOM
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldItemUOM
DELETE FROM ItemUOM WHERE ItemCode = @ItemCode AND UOM = @OldItemUOM
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeItemBatch
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemBatch]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemBatch]
GO

CREATE PROCEDURE bsp_ChangeItemBatch(@ItemCode d_ItemCode, 
	@OldItemBatch d_BatchNo, @NewItemBatch d_BatchNo) AS 

IF @OldItemBatch = @NewItemBatch
    RETURN
   
BEGIN TRANSACTION

IF NOT EXISTS (select * from ItemBatch where ItemCode = @ItemCode and BatchNo = @NewItemBatch)
BEGIN
  --Create New Record For ItemBatch
  INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
  LastSaleDate, BalQty) 
  SELECT ItemCode, @NewItemBatch, Description, ManufacturedDate, ExpiryDate, 
  LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @ItemCode AND BatchNo = @OldItemBatch

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50), ItemCodeName nvarchar(50))

INSERT @ListTable VALUES('ItemBatchBalQty', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('ItemOpening', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('ItemSerialNo', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('IPHIST', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('DODTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('IVDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('CSDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('DNDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('CNDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('DRDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('GRDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('PIDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('CPDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('PRDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('GTDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('CSGNItemBalQty', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('CSGNDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('CSGNXFERDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('SupplierCSGNDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('XFERDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('ADJDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('ISSDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('RCVDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('WOFFDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('UOMConvDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('ASM', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('ASMDTL', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('ASMOrder', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('ASMDTLOrder', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('UTDStockCost', 'BatchNo', 'ItemCode')
INSERT @ListTable VALUES('StockDTL', 'BatchNo', 'ItemCode')

DECLARE @sql NVARCHAR(200)
DECLARE @dec NVARCHAR(100)
DECLARE @tableName  NVARCHAR(50)
DECLARE @colName  NVARCHAR(50)
DECLARE @itemCodeName  NVARCHAR(50)
set @dec = '@NewItemBatch d_BatchNo, @OldItemBatch d_BatchNo, @ItemCodeName d_ItemCode'

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ItemCodeName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @itemCodeName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewItemBatch WHERE [' + @colName + '] = @OldItemBatch AND [' + @itemCodeName + '] = @ItemCodeName'

  Exec sp_executesql @sql, @dec, @NewItemBatch, @OldItemBatch, @ItemCode
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @itemCodeName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeItemBatch_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @ItemCode, @OldItemBatch, @NewItemBatch
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldItemBatch
DELETE FROM ItemBatch WHERE ItemCode = @ItemCode AND BatchNo = @OldItemBatch
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeLocation
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeLocation]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeLocation]
GO

CREATE PROCEDURE [dbo].[bsp_ChangeLocation](@OldLocation d_Location, @NewLocation d_Location) AS 

IF @OldLocation = @NewLocation
    RETURN
   
BEGIN TRANSACTION

IF NOT EXISTS (select * from Location where Location = @NewLocation)
BEGIN
  --Create New Record For Location
  INSERT INTO Location([Location], [Description], [Desc2], [Address1], [Address2], [Address3], [Address4], [PostCode], [Phone1],
  [Phone2], [Fax1], [Fax2], [Contact], [Note], [IsActive], [LastUpdate]) 
  SELECT @NewLocation,[Description], [Desc2], [Address1], [Address2], [Address3], [Address4], [PostCode], [Phone1], [Phone2], [Fax1], 
  [Fax2], [Contact], [Note], [IsActive], [LastUpdate]
  FROM Location WHERE Location = @OldLocation

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

INSERT @ListTable VALUES('RQDTL', 'Location')
INSERT @ListTable VALUES('PODTL', 'Location')
INSERT @ListTable VALUES('GRDTL', 'Location')
INSERT @ListTable VALUES('PIDTL', 'Location')
INSERT @ListTable VALUES('CPDTL', 'Location')
INSERT @ListTable VALUES('PRDTL', 'Location')
INSERT @ListTable VALUES('XPDTL', 'Location')
INSERT @ListTable VALUES('GTDTL', 'Location')
INSERT @ListTable VALUES('QTDTL', 'Location')
INSERT @ListTable VALUES('SODTL', 'Location')
INSERT @ListTable VALUES('DODTL', 'Location')
INSERT @ListTable VALUES('IVDTL', 'Location')
INSERT @ListTable VALUES('CSDTL', 'Location')
INSERT @ListTable VALUES('CNDTL', 'Location')
INSERT @ListTable VALUES('DNDTL', 'Location')
INSERT @ListTable VALUES('XSDTL', 'Location')
INSERT @ListTable VALUES('DRDTL', 'Location')
INSERT @ListTable VALUES('CSGNDTL', 'Location')
INSERT @ListTable VALUES('CSGNItemBalQty', 'Location')
INSERT @ListTable VALUES('IPHIST', 'Location')
INSERT @ListTable VALUES('ISSDTL', 'Location')
INSERT @ListTable VALUES('ADJDTL', 'Location')
INSERT @ListTable VALUES('RCVDTL', 'Location')
INSERT @ListTable VALUES('WOFFDTL', 'Location')
INSERT @ListTable VALUES('XFER', 'FromLocation')
INSERT @ListTable VALUES('XFER', 'ToLocation')
INSERT @ListTable VALUES('ItemBatchBalQty', 'Location')
INSERT @ListTable VALUES('ItemBalQty', 'Location')
INSERT @ListTable VALUES('StockDTL', 'Location')
INSERT @ListTable VALUES('UTDStockCost', 'Location')
INSERT @ListTable VALUES('ASMOrder', 'Location')
INSERT @ListTable VALUES('ASMOrderDTL', 'Location')
INSERT @ListTable VALUES('ASM', 'Location')
INSERT @ListTable VALUES('ASMDTL', 'Location')
INSERT @ListTable VALUES('BonusPointRedemptionDTL', 'Location')
INSERT @ListTable VALUES('PriceBookRule', 'FromLocation')
INSERT @ListTable VALUES('PriceBookRule', 'ToLocation')
INSERT @ListTable VALUES('UOMConvDTL', 'Location')
INSERT @ListTable VALUES('SupplierCSGNDTL', 'Location')
INSERT @ListTable VALUES('CSGNXFERDTL', 'Location')
INSERT @ListTable VALUES('ItemOpening', 'Location')
INSERT @ListTable VALUES('ItemSerialNo', 'Location')
INSERT @ListTable VALUES('Users', 'Location')
INSERT @ListTable VALUES('PRProcessing', 'Location')
INSERT @ListTable VALUES('DRProcessing', 'Location')
INSERT @ListTable VALUES('AORProcessing', 'Location')
INSERT @ListTable VALUES('AsmRProcessing', 'Location')

DECLARE @sql NVARCHAR(200)
DECLARE @dec NVARCHAR(100)
DECLARE @tableName  NVARCHAR(50)
DECLARE @colName  NVARCHAR(50)
set @dec = '@NewLocation d_Location, @OldLocation d_Location'

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewLocation WHERE [' + @colName + '] = @OldLocation'

  Exec sp_executesql @sql, @dec, @NewLocation, @OldLocation
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

UPDATE [Registry] SET RegValue = @NewLocation WHERE RegID = 13584 AND RegValue = @OldLocation
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeLocation_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @OldLocation, @NewLocation
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldLocation
DELETE FROM Location WHERE Location = @OldLocation
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION
GO

-- bsp_ChangeTaxType
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeTaxType]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeTaxType]
GO

CREATE PROCEDURE bsp_ChangeTaxType(@OldTaxType d_TaxType, @NewTaxType d_TaxType) AS 

IF @OldTaxType = @NewTaxType
    RETURN
   
BEGIN TRANSACTION

--Create New Record For TaxType
INSERT INTO TaxType(TaxType, Description, TaxRate, Inclusive, InputTaxAccNo, OutputTaxAccNo, IsActive, LastUpdate, TaxTypeCategory) 
SELECT @NewTaxType, Description, TaxRate, Inclusive, InputTaxAccNo, OutputTaxAccNo, IsActive, LastUpdate , TaxTypeCategory
FROM TaxType WHERE TaxType = @OldTaxType

IF @@ERROR <> 0 
BEGIN 
  ROLLBACK TRANSACTION
  RETURN 
END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

INSERT @ListTable VALUES('CBDTL', 'TaxType')
INSERT @ListTable VALUES('JEDTL', 'TaxType')
INSERT @ListTable VALUES('TaxTrans', 'TaxType')
INSERT @ListTable VALUES('Debtor', 'TaxType')
INSERT @ListTable VALUES('Creditor', 'TaxType')
INSERT @ListTable VALUES('Item', 'TaxType')
INSERT @ListTable VALUES('ARInvoiceDTL', 'TaxType')
INSERT @ListTable VALUES('ARDNDTL', 'TaxType')
INSERT @ListTable VALUES('ARCNDTL', 'TaxType')
INSERT @ListTable VALUES('APInvoiceDTL', 'TaxType')
INSERT @ListTable VALUES('APDNDTL', 'TaxType')
INSERT @ListTable VALUES('APCNDTL', 'TaxType')
INSERT @ListTable VALUES('IPHIST', 'TaxType')
INSERT @ListTable VALUES('QTDTL', 'TaxType')
INSERT @ListTable VALUES('SODTL', 'TaxType')
INSERT @ListTable VALUES('DODTL', 'TaxType')
INSERT @ListTable VALUES('IVDTL', 'TaxType')
INSERT @ListTable VALUES('CSDTL', 'TaxType')
INSERT @ListTable VALUES('DNDTL', 'TaxType')
INSERT @ListTable VALUES('CNDTL', 'TaxType')
INSERT @ListTable VALUES('XSDTL', 'TaxType')
INSERT @ListTable VALUES('DRDTL', 'TaxType')
INSERT @ListTable VALUES('RQDTL', 'TaxType')
INSERT @ListTable VALUES('PODTL', 'TaxType')
INSERT @ListTable VALUES('GRDTL', 'TaxType')
INSERT @ListTable VALUES('PIDTL', 'TaxType')
INSERT @ListTable VALUES('CPDTL', 'TaxType')
INSERT @ListTable VALUES('PRDTL', 'TaxType')
INSERT @ListTable VALUES('XPDTL', 'TaxType')
INSERT @ListTable VALUES('GTDTL', 'TaxType')
INSERT @ListTable VALUES('Footer', 'TaxType')
INSERT @ListTable VALUES('QT', 'Footer1TaxType')
INSERT @ListTable VALUES('QT', 'Footer2TaxType')
INSERT @ListTable VALUES('QT', 'Footer3TaxType')
INSERT @ListTable VALUES('SO', 'Footer1TaxType')
INSERT @ListTable VALUES('SO', 'Footer2TaxType')
INSERT @ListTable VALUES('SO', 'Footer3TaxType')
INSERT @ListTable VALUES('DO', 'Footer1TaxType')
INSERT @ListTable VALUES('DO', 'Footer2TaxType')
INSERT @ListTable VALUES('DO', 'Footer3TaxType')
INSERT @ListTable VALUES('IV', 'Footer1TaxType')
INSERT @ListTable VALUES('IV', 'Footer2TaxType')
INSERT @ListTable VALUES('IV', 'Footer3TaxType')
INSERT @ListTable VALUES('CS', 'Footer1TaxType')
INSERT @ListTable VALUES('CS', 'Footer2TaxType')
INSERT @ListTable VALUES('CS', 'Footer3TaxType')
INSERT @ListTable VALUES('DN', 'Footer1TaxType')
INSERT @ListTable VALUES('DN', 'Footer2TaxType')
INSERT @ListTable VALUES('DN', 'Footer3TaxType')
INSERT @ListTable VALUES('CN', 'Footer1TaxType')
INSERT @ListTable VALUES('CN', 'Footer2TaxType')
INSERT @ListTable VALUES('CN', 'Footer3TaxType')
INSERT @ListTable VALUES('XS', 'Footer1TaxType')
INSERT @ListTable VALUES('XS', 'Footer2TaxType')
INSERT @ListTable VALUES('XS', 'Footer3TaxType')
INSERT @ListTable VALUES('DR', 'Footer1TaxType')
INSERT @ListTable VALUES('DR', 'Footer2TaxType')
INSERT @ListTable VALUES('DR', 'Footer3TaxType')
INSERT @ListTable VALUES('RQ', 'Footer1TaxType')
INSERT @ListTable VALUES('RQ', 'Footer2TaxType')
INSERT @ListTable VALUES('RQ', 'Footer3TaxType')
INSERT @ListTable VALUES('PO', 'Footer1TaxType')
INSERT @ListTable VALUES('PO', 'Footer2TaxType')
INSERT @ListTable VALUES('PO', 'Footer3TaxType')
INSERT @ListTable VALUES('GR', 'Footer1TaxType')
INSERT @ListTable VALUES('GR', 'Footer2TaxType')
INSERT @ListTable VALUES('GR', 'Footer3TaxType')
INSERT @ListTable VALUES('PI', 'Footer1TaxType')
INSERT @ListTable VALUES('PI', 'Footer2TaxType')
INSERT @ListTable VALUES('PI', 'Footer3TaxType')
INSERT @ListTable VALUES('CP', 'Footer1TaxType')
INSERT @ListTable VALUES('CP', 'Footer2TaxType')
INSERT @ListTable VALUES('CP', 'Footer3TaxType')
INSERT @ListTable VALUES('PR', 'Footer1TaxType')
INSERT @ListTable VALUES('PR', 'Footer2TaxType')
INSERT @ListTable VALUES('PR', 'Footer3TaxType')
INSERT @ListTable VALUES('XP', 'Footer1TaxType')
INSERT @ListTable VALUES('XP', 'Footer2TaxType')
INSERT @ListTable VALUES('XP', 'Footer3TaxType')
INSERT @ListTable VALUES('GT', 'Footer1TaxType')
INSERT @ListTable VALUES('GT', 'Footer2TaxType')
INSERT @ListTable VALUES('GT', 'Footer3TaxType')
INSERT @ListTable VALUES('DRProcessing', 'TaxType')

DECLARE @sql NVARCHAR(200)
DECLARE @dec NVARCHAR(100)
DECLARE @tableName  NVARCHAR(50)
DECLARE @colName  NVARCHAR(50)
set @dec = '@NewTaxType d_TaxType, @OldTaxType d_TaxType'

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewTaxType WHERE [' + @colName + '] = @OldTaxType'

  Exec sp_executesql @sql, @dec, @NewTaxType, @OldTaxType
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeTaxType_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @OldTaxType, @NewTaxType
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldTaxType
DELETE FROM TaxType WHERE TaxType = @OldTaxType
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeUserID
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeUserID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeUserID]
GO

CREATE PROCEDURE bsp_ChangeUserID(@OldUserID d_UserID, @NewUserID d_UserID) AS 

IF @OldUserID = @NewUserID
    RETURN
   
-- Check to disallow @NewUserID same with any UserGroupID
IF EXISTS(SELECT * FROM UserGroup WHERE UserGroupID = @NewUserID)
  BEGIN
    RAISERROR ('New User ID is an existing User Group ID, cannot change to this New User ID.', 11, 1)
  RETURN 
  END
--End new added

BEGIN TRANSACTION

--Create New Record For Users
INSERT INTO Users(UserID, UserName, Department, Passwd, Signature, EmailAddress, 
FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate) 
SELECT @NewUserID, UserName, Department, Passwd, Signature, EmailAddress, 
FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate FROM Users WHERE UserID=@OldUserID

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

INSERT @ListTable VALUES('MRU', 'UserID')
INSERT @ListTable VALUES('LayoutUsers', 'UserID')
INSERT @ListTable VALUES('GLDTL', 'UserID')
INSERT @ListTable VALUES('UsersSalesAgent', 'UserID')
INSERT @ListTable VALUES('UsersPurchaseAgent', 'UserID')
INSERT @ListTable VALUES('AccessRight', 'UserID')
INSERT @ListTable VALUES('Session', 'UserID')
INSERT @ListTable VALUES('DocNoFormatUsers', 'UserID')
INSERT @ListTable VALUES('UsersGroup', 'UserID')
INSERT @ListTable VALUES('CB', 'LastModifiedUserID')
INSERT @ListTable VALUES('CB', 'CreatedUserID')
INSERT @ListTable VALUES('JE', 'LastModifiedUserID')
INSERT @ListTable VALUES('JE', 'CreatedUserID')
INSERT @ListTable VALUES('Debtor', 'LastModifiedUserID')
INSERT @ListTable VALUES('Debtor', 'CreatedUserID')
INSERT @ListTable VALUES('Creditor', 'LastModifiedUserID')
INSERT @ListTable VALUES('Creditor', 'CreatedUserID')
INSERT @ListTable VALUES('Item', 'LastModifiedUserID')
INSERT @ListTable VALUES('Item', 'CreatedUserID')
INSERT @ListTable VALUES('ARDeposit', 'LastModifiedUserID')
INSERT @ListTable VALUES('ARDeposit', 'CreatedUserID')
INSERT @ListTable VALUES('APDeposit', 'LastModifiedUserID')
INSERT @ListTable VALUES('APDeposit', 'CreatedUserID')
INSERT @ListTable VALUES('ARInvoice', 'LastModifiedUserID')
INSERT @ListTable VALUES('ARInvoice', 'CreatedUserID')
INSERT @ListTable VALUES('ARDN', 'LastModifiedUserID')
INSERT @ListTable VALUES('ARDN', 'CreatedUserID')
INSERT @ListTable VALUES('ARPayment', 'LastModifiedUserID')
INSERT @ListTable VALUES('ARPayment', 'CreatedUserID')
INSERT @ListTable VALUES('ARCN', 'LastModifiedUserID')
INSERT @ListTable VALUES('ARCN', 'CreatedUserID')
INSERT @ListTable VALUES('ARRefund', 'LastModifiedUserID')
INSERT @ListTable VALUES('ARRefund', 'CreatedUserID')
INSERT @ListTable VALUES('ARAPContra', 'LastModifiedUserID')
INSERT @ListTable VALUES('ARAPContra', 'CreatedUserID')
INSERT @ListTable VALUES('APInvoice', 'LastModifiedUserID')
INSERT @ListTable VALUES('APInvoice', 'CreatedUserID')
INSERT @ListTable VALUES('APDN', 'LastModifiedUserID')
INSERT @ListTable VALUES('APDN', 'CreatedUserID')
INSERT @ListTable VALUES('APPayment', 'LastModifiedUserID')
INSERT @ListTable VALUES('APPayment', 'CreatedUserID')
INSERT @ListTable VALUES('APCN', 'LastModifiedUserID')
INSERT @ListTable VALUES('APCN', 'CreatedUserID')
INSERT @ListTable VALUES('APRefund', 'LastModifiedUserID')
INSERT @ListTable VALUES('APRefund', 'CreatedUserID')
INSERT @ListTable VALUES('QT', 'LastModifiedUserID')
INSERT @ListTable VALUES('QT', 'CreatedUserID')
INSERT @ListTable VALUES('QT', 'ApprovalUserID')
INSERT @ListTable VALUES('SO', 'LastModifiedUserID')
INSERT @ListTable VALUES('SO', 'CreatedUserID')
INSERT @ListTable VALUES('DO', 'LastModifiedUserID')
INSERT @ListTable VALUES('DO', 'CreatedUserID')
INSERT @ListTable VALUES('IV', 'LastModifiedUserID')
INSERT @ListTable VALUES('IV', 'CreatedUserID')
INSERT @ListTable VALUES('CS', 'LastModifiedUserID')
INSERT @ListTable VALUES('CS', 'CreatedUserID')
INSERT @ListTable VALUES('DN', 'LastModifiedUserID')
INSERT @ListTable VALUES('DN', 'CreatedUserID')
INSERT @ListTable VALUES('CN', 'LastModifiedUserID')
INSERT @ListTable VALUES('CN', 'CreatedUserID')
INSERT @ListTable VALUES('XS', 'LastModifiedUserID')
INSERT @ListTable VALUES('XS', 'CreatedUserID')
INSERT @ListTable VALUES('DR', 'LastModifiedUserID')
INSERT @ListTable VALUES('DR', 'CreatedUserID')
INSERT @ListTable VALUES('RQ', 'LastModifiedUserID')
INSERT @ListTable VALUES('RQ', 'CreatedUserID')
INSERT @ListTable VALUES('PO', 'LastModifiedUserID')
INSERT @ListTable VALUES('PO', 'CreatedUserID')
INSERT @ListTable VALUES('GR', 'LastModifiedUserID')
INSERT @ListTable VALUES('GR', 'CreatedUserID')
INSERT @ListTable VALUES('PI', 'LastModifiedUserID')
INSERT @ListTable VALUES('PI', 'CreatedUserID')
INSERT @ListTable VALUES('CP', 'LastModifiedUserID')
INSERT @ListTable VALUES('CP', 'CreatedUserID')
INSERT @ListTable VALUES('PR', 'LastModifiedUserID')
INSERT @ListTable VALUES('PR', 'CreatedUserID')
INSERT @ListTable VALUES('XP', 'LastModifiedUserID')
INSERT @ListTable VALUES('XP', 'CreatedUserID')
INSERT @ListTable VALUES('GT', 'LastModifiedUserID')
INSERT @ListTable VALUES('GT', 'CreatedUserID')
INSERT @ListTable VALUES('CSGN', 'LastModifiedUserID')
INSERT @ListTable VALUES('CSGN', 'CreatedUserID')
INSERT @ListTable VALUES('CSGNXFER', 'LastModifiedUserID')
INSERT @ListTable VALUES('CSGNXFER', 'CreatedUserID')
INSERT @ListTable VALUES('SupplierCSGN', 'LastModifiedUserID')
INSERT @ListTable VALUES('SupplierCSGN', 'CreatedUserID')
INSERT @ListTable VALUES('XFER', 'LastModifiedUserID')
INSERT @ListTable VALUES('XFER', 'CreatedUserID')
INSERT @ListTable VALUES('ADJ', 'LastModifiedUserID')
INSERT @ListTable VALUES('ADJ', 'CreatedUserID')
INSERT @ListTable VALUES('ISS', 'LastModifiedUserID')
INSERT @ListTable VALUES('ISS', 'CreatedUserID')
INSERT @ListTable VALUES('RCV', 'LastModifiedUserID')
INSERT @ListTable VALUES('RCV', 'CreatedUserID')
INSERT @ListTable VALUES('WOFF', 'LastModifiedUserID')
INSERT @ListTable VALUES('WOFF', 'CreatedUserID')
INSERT @ListTable VALUES('UOMConv', 'LastModifiedUserID')
INSERT @ListTable VALUES('UOMConv', 'CreatedUserID')
INSERT @ListTable VALUES('UpdateCost', 'LastModifiedUserID')
INSERT @ListTable VALUES('UpdateCost', 'CreatedUserID')
INSERT @ListTable VALUES('ASM', 'LastModifiedUserID')
INSERT @ListTable VALUES('ASM', 'CreatedUserID')
INSERT @ListTable VALUES('ASMOrder', 'LastModifiedUserID')
INSERT @ListTable VALUES('ASMOrder', 'CreatedUserID')
INSERT @ListTable VALUES('BonusPointRedemption', 'LastModifiedUserID')
INSERT @ListTable VALUES('BonusPointRedemption', 'CreatedUserID')
INSERT @ListTable VALUES('ItemCostHistory', 'CreatedUserID')
INSERT @ListTable VALUES('NotifAllowUsers', 'UserID')
INSERT @ListTable VALUES('NotifReadUsers', 'UserID')
INSERT @ListTable VALUES('SODTL', 'LastOPModifiedUserID')
INSERT @ListTable VALUES('SODTL', 'LastDRPModifiedUserID')
INSERT @ListTable VALUES('SODTL', 'LastAORPModifiedUserID')
INSERT @ListTable VALUES('PRProcessing', 'LastModifiedUserID')
INSERT @ListTable VALUES('PRProcessing', 'CreatedUserID')
INSERT @ListTable VALUES('PRProcessingPO', 'LastModifiedUserID')
INSERT @ListTable VALUES('PRProcessingPO', 'CreatedUserID')
INSERT @ListTable VALUES('DRProcessing', 'LastModifiedUserID')
INSERT @ListTable VALUES('DRProcessing', 'CreatedUserID')
INSERT @ListTable VALUES('AORProcessing', 'LastModifiedUserID')
INSERT @ListTable VALUES('AORProcessing', 'CreatedUserID')
INSERT @ListTable VALUES('ASMOrder', 'LastAOPModifiedUserID')
INSERT @ListTable VALUES('ASMOrderDTL', 'LastPRModifiedUserID')
INSERT @ListTable VALUES('ASMOrderDTL', 'LastAORPModifiedUserID')
INSERT @ListTable VALUES('AsmRProcessing', 'CreatedUserID')
INSERT @ListTable VALUES('AsmRProcessing', 'LastModifiedUserID')

DECLARE @sql NVARCHAR(200)
DECLARE @dec NVARCHAR(100)
DECLARE @tableName  NVARCHAR(50)
DECLARE @colName  NVARCHAR(50)
set @dec = '@NewUserID d_UserID, @OldUserID d_UserID'

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewUserID WHERE [' + @colName + '] = @OldUserID'

  Exec sp_executesql @sql, @dec, @NewUserID, @OldUserID
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeUserID_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @OldUserID, @NewUserID
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldUserID
DELETE FROM Users WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeProjNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeProjNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeProjNo]
GO

CREATE PROCEDURE bsp_ChangeProjNo(@OldProjNo d_Project, 
			@NewProjNo d_Project) AS 

IF @OldProjNo = @NewProjNo
    RETURN
   
BEGIN TRANSACTION

--Update related tables
UPDATE [Project] SET ParentProjNo = @NewProjNo WHERE ParentProjNo = @OldProjNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Project] SET ProjNo = @NewProjNo WHERE ProjNo = @OldProjNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Registry] SET RegValue = @NewProjNo WHERE RegID = 13585 AND RegValue = @OldProjNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION
GO

-- bsp_ChangeDeptNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeDeptNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeDeptNo]
GO

CREATE PROCEDURE bsp_ChangeDeptNo(@OldDeptNo d_Dept, 
			@NewDeptNo d_Dept) AS 

IF @OldDeptNo = @NewDeptNo
    RETURN
   
BEGIN TRANSACTION

--Update related tables
UPDATE [Dept] SET ParentDeptNo = @NewDeptNo WHERE ParentDeptNo = @OldDeptNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Dept] SET DeptNo = @NewDeptNo WHERE DeptNo = @OldDeptNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [Registry] SET RegValue = @NewDeptNo WHERE RegID = 13586 AND RegValue = @OldDeptNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '1.0.8.29' WHERE RegID = 2
GO
�/* The following DDL will add a new column, LocalBankAmt to ARPayment, ARRefund, APPayment, APRefund to fix the 1 cent problem */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARPayment]') and name = N'LocalBankAmt')
  ALTER TABLE [dbo].[ARPayment] 
    ADD [LocalBankAmt] [d_Money] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARPayment]') and name = N'LocalBankAmt')
  UPDATE [dbo].[ARPayment] SET LocalBankAmt = LocalPaymentAmt
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARRefund]') and name = N'LocalBankAmt')
  ALTER TABLE [dbo].[ARRefund] 
    ADD [LocalBankAmt] [d_Money] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARRefund]') and name = N'LocalBankAmt')
  UPDATE [dbo].[ARRefund] SET LocalBankAmt = LocalPaymentAmt
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APPayment]') and name = N'LocalBankAmt')
  ALTER TABLE [dbo].[APPayment] 
    ADD [LocalBankAmt] [d_Money] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APPayment]') and name = N'LocalBankAmt')
  UPDATE [dbo].[APPayment] SET LocalBankAmt = LocalPaymentAmt
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APRefund]') and name = N'LocalBankAmt')
  ALTER TABLE [dbo].[APRefund] 
    ADD [LocalBankAmt] [d_Money] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APRefund]') and name = N'LocalBankAmt')
  UPDATE [dbo].[APRefund] SET LocalBankAmt = LocalPaymentAmt
GO

/* The following DDL will add a new column, EncodedCost to ItemUOM to allow user to encode their product cost */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemUOM]') and name = N'EncodedCost')
  ALTER TABLE [dbo].[ItemUOM] 
    ADD [EncodedCost] [nvarchar](12) NULL
GO

/* The following DDL will add a new table ShippingMethod and relevant columns to Sales to support ShipVia and ShipInfo */
EXEC sp_addtype N'd_ShippingMethod', N'nvarchar (20)'
GO

CREATE TABLE [dbo].[ShippingMethod] (
	[ShippingMethod] [d_ShippingMethod] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Description] [nvarchar] (40) NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

INSERT INTO [ChangeCount] VALUES ('ShippingMethod', 0);
GO

CREATE TRIGGER UpdateShippingMethodChangeCount ON ShippingMethod
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ShippingMethod'
SET NOCOUNT OFF
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SO]') and name = N'ShipVia')
  ALTER TABLE [dbo].[SO] 
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SO_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[SO] DROP CONSTRAINT [FK_SO_ShipVia]
GO

ALTER TABLE [dbo].[SO] ADD
	CONSTRAINT [FK_SO_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DO]') and name = N'ShipVia')
  ALTER TABLE [dbo].[DO] 
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DO_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DO] DROP CONSTRAINT [FK_DO_ShipVia]
GO

ALTER TABLE [dbo].[DO] ADD
	CONSTRAINT [FK_DO_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DO]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[DO] 
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'ShipVia')
  ALTER TABLE [dbo].[IV] 
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IV_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IV] DROP CONSTRAINT [FK_IV_ShipVia]
GO

ALTER TABLE [dbo].[IV] ADD
	CONSTRAINT [FK_IV_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[IV]
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'ShipVia')
  ALTER TABLE [dbo].[CS]
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CS_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CS] DROP CONSTRAINT [FK_CS_ShipVia]
GO

ALTER TABLE [dbo].[CS] ADD
	CONSTRAINT [FK_CS_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[CS]
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.8.3' WHERE RegID = 2
GO
"/* The following DDL will add ExpectedCompletedDate to ASMOrder table. */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrder]') and name = N'ExpectedCompletedDate')
  ALTER TABLE [dbo].[ASMOrder]
    ALTER COLUMN [ExpectedCompletedDate] [nvarchar] (20) NULL
GO

-- bsp_ChangeCurrency
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeCurrency]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeCurrency]
GO

CREATE PROCEDURE bsp_ChangeCurrency(@OldCurrencyCode d_CurrencyCode, @NewCurrencyCode d_CurrencyCode) AS 

IF @OldCurrencyCode = @NewCurrencyCode
    RETURN
   
BEGIN TRANSACTION
IF NOT EXISTS (select * from Currency where CurrencyCode = @NewCurrencyCode)
BEGIN
  --Create New Record For @NewCurrencyCode
  INSERT INTO Currency(CurrencyCode, CurrencyWord, CurrencyWord2, CurrencySymbol, BankBuyRate, BankSellRate, FCGainAccount, FCLossAccount, GainLossJournalType, LastUpdate)
  SELECT @NewCurrencyCode, CurrencyWord, CurrencyWord2, CurrencySymbol, BankBuyRate, BankSellRate, FCGainAccount, FCLossAccount, GainLossJournalType, LastUpdate
  FROM Currency WHERE CurrencyCode = @OldCurrencyCode

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

INSERT @ListTable VALUES('Debtor', 'CurrencyCode')
INSERT @ListTable VALUES('ARInvoice', 'CurrencyCode')
INSERT @ListTable VALUES('ARDN', 'CurrencyCode')
INSERT @ListTable VALUES('ARCN', 'CurrencyCode')
INSERT @ListTable VALUES('ARPayment', 'CurrencyCode')
INSERT @ListTable VALUES('ARRefund', 'CurrencyCode')
INSERT @ListTable VALUES('ARAPContra', 'CurrencyCode')
INSERT @ListTable VALUES('ARDeposit', 'CurrencyCode')
INSERT @ListTable VALUES('Creditor', 'CurrencyCode')
INSERT @ListTable VALUES('APInvoice', 'CurrencyCode')
INSERT @ListTable VALUES('APDN', 'CurrencyCode')
INSERT @ListTable VALUES('APCN', 'CurrencyCode')
INSERT @ListTable VALUES('APPayment', 'CurrencyCode')
INSERT @ListTable VALUES('APRefund', 'CurrencyCode')
INSERT @ListTable VALUES('APDeposit', 'CurrencyCode')
INSERT @ListTable VALUES('CB', 'CurrencyCode')
INSERT @ListTable VALUES('JE', 'CurrencyCode')
INSERT @ListTable VALUES('FCRevalueDocument', 'CurrencyCode')
INSERT @ListTable VALUES('FCRevalueRate', 'CurrencyCode')
INSERT @ListTable VALUES('GLDTL', 'CurrencyCode')
INSERT @ListTable VALUES('GLMast', 'CurrencyCode')
INSERT @ListTable VALUES('RQ', 'CurrencyCode')
INSERT @ListTable VALUES('PO', 'CurrencyCode')
INSERT @ListTable VALUES('GR', 'CurrencyCode')
INSERT @ListTable VALUES('PI', 'CurrencyCode')
INSERT @ListTable VALUES('CP', 'CurrencyCode')
INSERT @ListTable VALUES('PR', 'CurrencyCode')
INSERT @ListTable VALUES('XP', 'CurrencyCode')
INSERT @ListTable VALUES('GT', 'CurrencyCode')
INSERT @ListTable VALUES('QT', 'CurrencyCode')
INSERT @ListTable VALUES('SO', 'CurrencyCode')
INSERT @ListTable VALUES('DO', 'CurrencyCode')
INSERT @ListTable VALUES('IV', 'CurrencyCode')
INSERT @ListTable VALUES('CS', 'CurrencyCode')
INSERT @ListTable VALUES('CN', 'CurrencyCode')
INSERT @ListTable VALUES('DN', 'CurrencyCode')
INSERT @ListTable VALUES('XS', 'CurrencyCode')
INSERT @ListTable VALUES('DR', 'CurrencyCode')
INSERT @ListTable VALUES('PriceBookRule', 'CurrencyCode')
INSERT @ListTable VALUES('CurrRate', 'CurrencyCode')

DECLARE @sql NVARCHAR(200)
DECLARE @dec NVARCHAR(100)
DECLARE @tableName  NVARCHAR(50)
DECLARE @colName  NVARCHAR(50)
set @dec = '@NewCurrencyCode d_CurrencyCode, @OldCurrencyCode d_CurrencyCode'

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewCurrencyCode WHERE [' + @colName + '] = @OldCurrencyCode'

  Exec sp_executesql @sql, @dec, @NewCurrencyCode, @OldCurrencyCode
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

--Update Account No in REGISTRY table
UPDATE [Registry] SET RegValue = @NewCurrencyCode WHERE RegID IN (0x1F, 0x18023, 0x18013) AND RegValue = @OldCurrencyCode
IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION 
    RETURN
  END

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeCurrency_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @OldCurrencyCode, @NewCurrencyCode
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldCurrencyCode
DELETE FROM Currency WHERE CurrencyCode = @OldCurrencyCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

UPDATE REGISTRY SET RegValue = '1.0.8.30' WHERE RegID = 2
GO
�/* The following DDL will add Foreign Key to PostingAccountGroup table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PostingAccountGroup_SalesCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PostingAccountGroup] DROP CONSTRAINT [FK_PostingAccountGroup_SalesCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PostingAccountGroup_CashSalesCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PostingAccountGroup] DROP CONSTRAINT [FK_PostingAccountGroup_CashSalesCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PostingAccountGroup_SalesReturnCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PostingAccountGroup] DROP CONSTRAINT [FK_PostingAccountGroup_SalesReturnCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PostingAccountGroup_SalesDiscountCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PostingAccountGroup] DROP CONSTRAINT [FK_PostingAccountGroup_SalesDiscountCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PostingAccountGroup_PurchaseCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PostingAccountGroup] DROP CONSTRAINT [FK_PostingAccountGroup_PurchaseCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PostingAccountGroup_PurchaseReturnCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PostingAccountGroup] DROP CONSTRAINT [FK_PostingAccountGroup_PurchaseReturnCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PostingAccountGroup_PurchaseDiscountCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PostingAccountGroup] DROP CONSTRAINT [FK_PostingAccountGroup_PurchaseDiscountCode]
GO

ALTER TABLE [dbo].[PostingAccountGroup] WITH NOCHECK ADD 
	CONSTRAINT [FK_PostingAccountGroup_SalesCode] FOREIGN KEY 
	(
		[SalesCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_PostingAccountGroup_CashSalesCode] FOREIGN KEY 
	(
		[CashSalesCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_PostingAccountGroup_SalesReturnCode] FOREIGN KEY 
	(
		[SalesReturnCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_PostingAccountGroup_SalesDiscountCode] FOREIGN KEY 
	(
		[SalesDiscountCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_PostingAccountGroup_PurchaseCode] FOREIGN KEY 
	(
		[PurchaseCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_PostingAccountGroup_PurchaseReturnCode] FOREIGN KEY 
	(
		[PurchaseReturnCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_PostingAccountGroup_PurchaseDiscountCode] FOREIGN KEY 
	(
		[PurchaseDiscountCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	)
GO

UPDATE REGISTRY SET RegValue = '1.0.8.31' WHERE RegID = 2
GO
&/* The following DDL will add SimpleSyncSetting table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SimpleSyncSetting]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE [dbo].[SimpleSyncSetting](
	[SettingKey] [bigint] NOT NULL,
	[Server] [nvarchar](50) NULL,
	[Password] [nvarchar](200) NULL,
	[IsDefaultPassword] [d_Boolean] NOT NULL,
	[DBName] [nvarchar](50) NULL,
	[LoginUserID] [d_UserID] NULL,
	[LoginPassword] [nvarchar] (200) NULL,
	[IsCopyPriceBook] [d_Boolean] NOT NULL,
	[IsCopyOpening] [d_Boolean] NOT NULL,
	[IsCopyQTFromServer] [d_Boolean] NOT NULL,
	[IsCopySOFromServer] [d_Boolean] NOT NULL,
	[IsCopyDOFromServer] [d_Boolean] NOT NULL,
	[IsCopyIVFromServer] [d_Boolean] NOT NULL,
	[IsCopyCSFromServer] [d_Boolean] NOT NULL,
	[IsExportQTToServer] [d_Boolean] NOT NULL,
	[IsExportSOToServer] [d_Boolean] NOT NULL,
	[IsExportDOToServer] [d_Boolean] NOT NULL,
	[IsExportIVToServer] [d_Boolean] NOT NULL,
	[IsExportCSToServer] [d_Boolean] NOT NULL,
	CONSTRAINT [PK_SimpleSyncSetting] PRIMARY KEY CLUSTERED 
	(
	    	[SettingKey] ASC
	) ON [PRIMARY]
) ON [PRIMARY]
GO

/* The following DDL will add IsExportXXToBranch to Users, this is to control what type of information can be exported to Branch. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'IsExportDebtorToBranch')
  ALTER TABLE [dbo].[Users] 
    ADD [IsExportDebtorToBranch] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'IsExportCreditorToBranch')
  ALTER TABLE [dbo].[Users] 
    ADD [IsExportCreditorToBranch] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'IsExportItemToBranch')
  ALTER TABLE [dbo].[Users] 
    ADD [IsExportItemToBranch] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'IsExportPriceHistoryToBranch')
  ALTER TABLE [dbo].[Users] 
    ADD [IsExportPriceHistoryToBranch] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'IsExportQTToBranch')
  ALTER TABLE [dbo].[Users] 
    ADD [IsExportQTToBranch] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'IsExportSOToBranch')
  ALTER TABLE [dbo].[Users] 
    ADD [IsExportSOToBranch] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'IsExportDOToBranch')
  ALTER TABLE [dbo].[Users] 
    ADD [IsExportDOToBranch] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'IsExportIVToBranch')
  ALTER TABLE [dbo].[Users] 
    ADD [IsExportIVToBranch] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'IsExportCSToBranch')
  ALTER TABLE [dbo].[Users] 
    ADD [IsExportCSToBranch] [d_Boolean] NOT NULL DEFAULT 'F'
GO

/* The following DDL will add AgingDate to ARInvoice, ARDN, APInvoice, APDN table. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARInvoice]') and name = N'AgingDate')
  ALTER TABLE [dbo].[ARInvoice] 
    ADD [AgingDate] [datetime] NULL
GO

UPDATE ARInvoice
SET AgingDate=DocDate
WHERE DebtorCode IN (SELECT AccNo FROM Debtor WHERE AgingOn='I');
GO

UPDATE ARInvoice
SET AgingDate=DueDate
WHERE AgingDate IS NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDN]') and name = N'AgingDate')
  ALTER TABLE [dbo].[ARDN] 
    ADD [AgingDate] [datetime] NULL
GO

UPDATE ARDN
SET AgingDate=DocDate
WHERE DebtorCode IN (SELECT AccNo FROM Debtor WHERE AgingOn='I');
GO

UPDATE ARDN
SET AgingDate=DueDate
WHERE AgingDate IS NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APInvoice]') and name = N'AgingDate')
  ALTER TABLE [dbo].[APInvoice] 
    ADD [AgingDate] [datetime] NULL
GO

UPDATE APInvoice
SET AgingDate=DocDate
WHERE CreditorCode IN (SELECT AccNo FROM Creditor WHERE AgingOn='I');
GO

UPDATE APInvoice
SET AgingDate=DueDate
WHERE AgingDate IS NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDN]') and name = N'AgingDate')
  ALTER TABLE [dbo].[APDN] 
    ADD [AgingDate] [datetime] NULL
GO

UPDATE APDN
SET AgingDate=DocDate
WHERE CreditorCode IN (SELECT AccNo FROM Creditor WHERE AgingOn='I');
GO

UPDATE APInvoice
SET AgingDate=DueDate
WHERE AgingDate IS NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.8.32' WHERE RegID = 2
GO
y/* The following DDL will add SalesAgentFilterCriteria to SimpleSyncSetting. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SimpleSyncSetting]') and name = N'SalesAgentFilterCriteria')
  ALTER TABLE [dbo].[SimpleSyncSetting] 
    ADD [SalesAgentFilterCriteria] [ntext] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.8.33' WHERE RegID = 2
GO
�/* The following DDL will add PackageDocKey, ParentDtlKey, SubQty to RQDTL. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[RQDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[RQDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[RQDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

/* The following DDL will add PackageDocKey, ParentDtlKey, SubQty to PODTL. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[PODTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[PODTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[PODTL] 
    ADD [SubQty] [d_Qty] NULL
GO

/* The following DDL will add PackageDocKey, ParentDtlKey, SubQty to GRDTL. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GRDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[GRDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GRDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[GRDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GRDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[GRDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

/* The following DDL will add PackageDocKey, ParentDtlKey, SubQty to PIDTL. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PIDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[PIDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PIDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[PIDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PIDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[PIDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

/* The following DDL will add PackageDocKey, ParentDtlKey, SubQty to CPDTL. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CPDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[CPDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CPDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[CPDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CPDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[CPDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

/* The following DDL will add PackageDocKey, ParentDtlKey, SubQty to PRDTL. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[PRDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[PRDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[PRDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

/* The following DDL will add PackageDocKey, ParentDtlKey, SubQty to GTDTL. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GTDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[GTDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GTDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[GTDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GTDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[GTDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

/* The following DDL will add PackageDocKey, ParentDtlKey, SubQty to XPDTL. */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XPDTL]') and name = N'PackageDocKey')
  ALTER TABLE [dbo].[XPDTL] 
    ADD [PackageDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XPDTL]') and name = N'ParentDtlKey')
  ALTER TABLE [dbo].[XPDTL] 
    ADD [ParentDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XPDTL]') and name = N'SubQty')
  ALTER TABLE [dbo].[XPDTL] 
    ADD [SubQty] [d_Qty] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.8.34' WHERE RegID = 2
GO
(/* The following DDL will add DocNoFormatYearlyNumber table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DocNoFormatYearlyNumber]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE [dbo].[DocNoFormatYearlyNumber](
	[Name] [d_DocNoFormatName] NOT NULL,
	[Year] [int] NOT NULL,
	[M1NextNumber] [int] NOT NULL,
	[M2NextNumber] [int] NOT NULL,
	[M3NextNumber] [int] NOT NULL,
	[M4NextNumber] [int] NOT NULL,
	[M5NextNumber] [int] NOT NULL,
	[M6NextNumber] [int] NOT NULL,
	[M7NextNumber] [int] NOT NULL,
	[M8NextNumber] [int] NOT NULL,
	[M9NextNumber] [int] NOT NULL,
	[M10NextNumber] [int] NOT NULL,
	[M11NextNumber] [int] NOT NULL,
	[M12NextNumber] [int] NOT NULL,
	CONSTRAINT [PK_DocNoFormatYearlyNumber] PRIMARY KEY CLUSTERED 
	(
		[Name] ASC,
		[Year] ASC
	) ON [PRIMARY]
) ON [PRIMARY]
GO

INSERT INTO [dbo].[DocNoFormatYearlyNumber] ([Name], [Year], M1NextNumber, M2NextNumber, M3NextNumber, M4NextNumber, M5NextNumber, M6NextNumber, M7NextNumber, M8NextNumber, M9NextNumber, M10NextNumber, M11NextNumber, M12NextNumber)
SELECT [Name], 2006, M1NextNumber, M2NextNumber, M3NextNumber, M4NextNumber, M5NextNumber, M6NextNumber, M7NextNumber, M8NextNumber, M9NextNumber, M10NextNumber, M11NextNumber, M12NextNumber FROM [dbo].[DocNoFormat]
WHERE OneMonthOneSet='T'
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M1NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M1NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M2NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M2NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M3NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M3NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M4NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M4NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M5NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M5NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M6NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M6NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M7NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M7NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M8NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M8NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M9NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M9NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M10NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M10NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M11NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M11NextNumber]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'M12NextNumber')
  ALTER TABLE [dbo].[DocNoFormat] 
	DROP COLUMN [M12NextNumber]
GO

UPDATE REGISTRY SET RegValue = '1.0.8.35' WHERE RegID = 2
GO
�)/* The following DDL will fix bug in BusinessFlow related tables */
ALTER TABLE AORProcessing ALTER COLUMN SODtlKey bigint NULL;
ALTER TABLE AORProcessing ALTER COLUMN SODocKey bigint NULL;
GO

sp_rename 'AORProcessing.SODtlKey', 'FromDtlKey', 'COLUMN'
GO

sp_rename 'AORProcessing.SODocKey', 'FromDocKey', 'COLUMN'
GO

ALTER TABLE AORProcessing ADD
	FromDocType [d_DocType] NULL
GO

DECLARE @DocKey bigint, @FromDtlKey bigint

DECLARE aorp_cursor CURSOR FOR 
SELECT DocKey, FromDtlKey
FROM AORProcessing

OPEN aorp_cursor

FETCH NEXT FROM aorp_cursor 
INTO @DocKey, @FromDtlKey

WHILE @@FETCH_STATUS = 0
BEGIN
	IF (EXISTS(SELECT DocKey FROM AsmOrderDTL WHERE DtlKey = @FromDtlKey))
		UPDATE AORProcessing SET FromDocType = 'AO' WHERE DocKey = @DocKey
	ELSE
		UPDATE AORProcessing SET FromDocType = 'SO' WHERE DocKey = @DocKey

	FETCH NEXT FROM aorp_cursor 
	INTO @DocKey, @FromDtlKey
END 
CLOSE aorp_cursor
DEALLOCATE aorp_cursor
GO

/* The following DDL will add MarkupRatio to table Item, ItemType, ItemGroup, Debtor, Creditor, PriceCategory */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'MarkupRatio')
  ALTER TABLE [dbo].[Item] 
    ADD [MarkupRatio] [d_Percent] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemType]') and name = N'MarkupRatio')
  ALTER TABLE [dbo].[ItemType] 
    ADD [MarkupRatio] [d_Percent] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemGroup]') and name = N'MarkupRatio')
  ALTER TABLE [dbo].[ItemGroup] 
    ADD [MarkupRatio] [d_Percent] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'MarkupRatio')
  ALTER TABLE [dbo].[Debtor] 
    ADD [MarkupRatio] [d_Percent] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'MarkupRatio')
  ALTER TABLE [dbo].[Creditor] 
    ADD [MarkupRatio] [d_Percent] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PriceCategory]') and name = N'MarkupRatio')
  ALTER TABLE [dbo].[PriceCategory] 
    ADD [MarkupRatio] [d_Percent] NULL
GO

/* The following DDL will add SalesLocation to all Sales Document master table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QT]') and name = N'SalesLocation')
  ALTER TABLE [dbo].[QT] 
    ADD [SalesLocation] [d_Location] NULL
GO

UPDATE QT
SET SalesLocation=(SELECT TOP 1 Location FROM QTDTL WHERE QTDTL.DocKey=QT.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SO]') and name = N'SalesLocation')
  ALTER TABLE [dbo].[SO] 
    ADD [SalesLocation] [d_Location] NULL
GO

UPDATE SO
SET SalesLocation=(SELECT TOP 1 Location FROM SODTL WHERE SODTL.DocKey=SO.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DO]') and name = N'SalesLocation')
  ALTER TABLE [dbo].[DO] 
    ADD [SalesLocation] [d_Location] NULL
GO

UPDATE DO
SET SalesLocation=(SELECT TOP 1 Location FROM DODTL WHERE DODTL.DocKey=DO.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'SalesLocation')
  ALTER TABLE [dbo].[IV] 
    ADD [SalesLocation] [d_Location] NULL
GO

UPDATE IV
SET SalesLocation=(SELECT TOP 1 Location FROM IVDTL WHERE IVDTL.DocKey=IV.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'SalesLocation')
  ALTER TABLE [dbo].[CS] 
    ADD [SalesLocation] [d_Location] NULL
GO

UPDATE CS
SET SalesLocation=(SELECT TOP 1 Location FROM CSDTL WHERE CSDTL.DocKey=CS.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'SalesLocation')
  ALTER TABLE [dbo].[CN] 
    ADD [SalesLocation] [d_Location] NULL
GO

UPDATE CN
SET SalesLocation=(SELECT TOP 1 Location FROM CNDTL WHERE CNDTL.DocKey=CN.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'SalesLocation')
  ALTER TABLE [dbo].[DN] 
    ADD [SalesLocation] [d_Location] NULL
GO

UPDATE DN
SET SalesLocation=(SELECT TOP 1 Location FROM DNDTL WHERE DNDTL.DocKey=DN.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XS]') and name = N'SalesLocation')
  ALTER TABLE [dbo].[XS] 
    ADD [SalesLocation] [d_Location] NULL
GO

UPDATE XS
SET SalesLocation=(SELECT TOP 1 Location FROM XSDTL WHERE XSDTL.DocKey=XS.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DR]') and name = N'SalesLocation')
  ALTER TABLE [dbo].[DR] 
    ADD [SalesLocation] [d_Location] NULL
GO

UPDATE DR
SET SalesLocation=(SELECT TOP 1 Location FROM DRDTL WHERE DRDTL.DocKey=DR.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGN]') and name = N'SalesLocation')
  ALTER TABLE [dbo].[CSGN] 
    ADD [SalesLocation] [d_Location] NULL
GO

UPDATE CSGN
SET SalesLocation=(SELECT TOP 1 Location FROM CSGNDTL WHERE CSGNDTL.DocKey=CSGN.DocKey ORDER BY Seq)
GO

/* The following DDL will add PurchaseLocation to all Purchase Document master table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQ]') and name = N'PurchaseLocation')
  ALTER TABLE [dbo].[RQ] 
    ADD [PurchaseLocation] [d_Location] NULL
GO

UPDATE RQ
SET PurchaseLocation=(SELECT TOP 1 Location FROM RQDTL WHERE RQDTL.DocKey=RQ.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PO]') and name = N'PurchaseLocation')
  ALTER TABLE [dbo].[PO] 
    ADD [PurchaseLocation] [d_Location] NULL
GO

UPDATE PO
SET PurchaseLocation=(SELECT TOP 1 Location FROM PODTL WHERE PODTL.DocKey=PO.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GR]') and name = N'PurchaseLocation')
  ALTER TABLE [dbo].[GR] 
    ADD [PurchaseLocation] [d_Location] NULL
GO

UPDATE GR
SET PurchaseLocation=(SELECT TOP 1 Location FROM GRDTL WHERE GRDTL.DocKey=GR.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PI]') and name = N'PurchaseLocation')
  ALTER TABLE [dbo].[PI] 
    ADD [PurchaseLocation] [d_Location] NULL
GO

UPDATE PI
SET PurchaseLocation=(SELECT TOP 1 Location FROM PIDTL WHERE PIDTL.DocKey=PI.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CP]') and name = N'PurchaseLocation')
  ALTER TABLE [dbo].[CP] 
    ADD [PurchaseLocation] [d_Location] NULL
GO

UPDATE CP
SET PurchaseLocation=(SELECT TOP 1 Location FROM CPDTL WHERE CPDTL.DocKey=CP.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PR]') and name = N'PurchaseLocation')
  ALTER TABLE [dbo].[PR] 
    ADD [PurchaseLocation] [d_Location] NULL
GO

UPDATE PR
SET PurchaseLocation=(SELECT TOP 1 Location FROM PRDTL WHERE PRDTL.DocKey=PR.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XP]') and name = N'PurchaseLocation')
  ALTER TABLE [dbo].[XP] 
    ADD [PurchaseLocation] [d_Location] NULL
GO

UPDATE XP
SET PurchaseLocation=(SELECT TOP 1 Location FROM XPDTL WHERE XPDTL.DocKey=XP.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GT]') and name = N'PurchaseLocation')
  ALTER TABLE [dbo].[GT] 
    ADD [PurchaseLocation] [d_Location] NULL
GO

UPDATE GT
SET PurchaseLocation=(SELECT TOP 1 Location FROM GTDTL WHERE GTDTL.DocKey=GT.DocKey ORDER BY Seq)
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGN]') and name = N'PurchaseLocation')
  ALTER TABLE [dbo].[SupplierCSGN] 
    ADD [PurchaseLocation] [d_Location] NULL
GO

UPDATE SupplierCSGN
SET PurchaseLocation=(SELECT TOP 1 Location FROM SupplierCSGNDTL WHERE SupplierCSGNDTL.DocKey=SupplierCSGN.DocKey ORDER BY Seq)
GO

/* The following DDL will resize the Description column of CSGN and SupplierCSGN to 60 */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGN]') and name = N'Description')
  ALTER TABLE [dbo].[SupplierCSGN] 
    ALTER COLUMN [Description] [nvarchar] (60) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGN]') and name = N'Description')
  ALTER TABLE [dbo].[CSGN] 
    ALTER COLUMN [Description] [nvarchar] (60) NULL
GO

/* The following DDL will add new columns to Terms table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Terms]') and name = N'TermType')
  ALTER TABLE [dbo].[Terms] 
    ADD [TermType] [varchar] (1) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Terms]') and name = N'TermDays')
  ALTER TABLE [dbo].[Terms] 
    ADD [TermDays] [int] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Terms]') and name = N'DiscountDays')
  ALTER TABLE [dbo].[Terms] 
    ADD [DiscountDays] [int] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Terms]') and name = N'DiscountPercent')
  ALTER TABLE [dbo].[Terms] 
    ADD [DiscountPercent] [d_Percent] NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PocketSyncProfile]') and OBJECTPROPERTY(id, N'IsTable') = 1)
begin
	CREATE TABLE [dbo].[PocketSyncProfile](
		[ProfileKey] bigint NOT NULL,
		[ProfileName] nvarchar(60) NOT NULL,
		[Email] nvarchar(80) NULL,
		[ExpiredDays] smallint NOT NULL,
		[Criteria] image NULL,
		[FolderName] nvarchar(200) NULL,
		[LastDate] datetime NULL,
		[LastSynchronized] datetime NULL,
		[SyncID] nvarchar(10) NULL,
		[DeviceID] nvarchar(40) NULL,
		[LastModified][datetime] NULL,
		[LastModifiedUserID] [d_UserID] NULL,
		[LastUpdate] [int] NULL
	PRIMARY KEY NONCLUSTERED
	(
		[ProfileKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]

	ALTER TABLE [dbo].[PocketSyncProfile]  WITH CHECK ADD  CONSTRAINT 
	[FK_PocketSyncProfile_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
	REFERENCES [dbo].[Users] ([UserID])

	ALTER TABLE [dbo].[PocketSyncProfile]
		ADD CONSTRAINT [IX_PocketSyncProfile_ProfileName] UNIQUE  NONCLUSTERED 
		(
			[ProfileName]
		)  ON [PRIMARY]
end
GO

UPDATE REGISTRY SET RegValue = '1.0.8.36' WHERE RegID = 2
GO
�./* The following DDL will add tables to support POS */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Pos]'))
DROP TABLE [dbo].[Pos] 
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PosDtl]'))
DROP TABLE [dbo].[PosDtl] 
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PosUser]'))
DROP TABLE [dbo].[PosUser] 
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Terminal]'))
DROP TABLE [dbo].[Terminal] 
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CreditCard]'))
DROP TABLE [dbo].[CreditCard] 
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PosOption]'))
DROP TABLE [dbo].[PosOption] 
GO

CREATE TABLE [dbo].[Pos] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[TableID] int NULL,
	[DebtorCode] [d_AccNo] NULL,
	[Guests] [int] NOT NULL,
	[TotalQty] [d_Qty] NOT NULL,
	[Total] [d_Money] NOT NULL,
	[Tax] [d_Money] NOT NULL,
	[Tax2] [d_Money] NOT NULL,
	[NetTotal] [d_Money] NOT NULL,
	[LocalTotalCost] [d_Money] NOT NULL,
	[CashPayment] [d_Money] NOT NULL,
	[CCPayment] [d_Money] NOT NULL,
	[CCCharges] [d_Money] NOT NULL,
	[CCType] [nvarchar] (8) NULL,
	[CCNumber] [nvarchar] (25) NULL,
	[CCExpiryDate] [dateTime] NULL,
	[CCApprovalCode] [nvarchar] (10) NULL,
	[DCPayment] [d_Money] NOT NULL,
	[ChequePayment] [d_Money] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[VoucherPayment] [d_Money] NOT NULL,
	[BonusPointAccNo] [d_BonusPointAccNo] NULL,
	[UserID] [d_UserID] NOT NULL,
	[Terminal] [nvarchar] (8) NOT NULL,
	[Outlet] [d_Location] NULL,
	[CreatedTime] [dateTime] NOT NULL,
	[PaidTime] [dateTime] NULL,
	[Sync] [d_Boolean] NOT NULL,
	[Posted] [d_Boolean] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL
)
GO

CREATE TABLE [dbo].[PosDtl] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Description] [d_ItemDescription] NULL,
	[UOM] [d_UOM] NULL,
	[Qty] [d_Qty] NOT NULL,
	[UnitPrice] [d_Price] NOT NULL,
	[Discount] [d_Money] NOT NULL,
	[DiscountPercent] [d_Percent] NOT NULL,
	[SubTotal] [d_Money] NOT NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NOT NULL,
	[LocalTotalCost] [d_Money] NOT NULL,
	[BonusPoint] [int] NOT NULL
)
GO

CREATE INDEX [IX_PosDtl_DocKey] ON [dbo].[PosDtl]([DocKey]) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PosUser] (
	[ID] [d_UserID] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Name] [nvarchar] (50) NULL,
	[Password] [nvarchar] (112) NULL,
	[Outlet] [d_Location] NULL,
	[InitialCash] [d_Money] NOT NULL,
	[Supervisor] [d_Boolean] NOT NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL
)
GO

CREATE TABLE [dbo].[Terminal] (
	[Name] [nvarchar] (8) NOT NULL,
	[Outlet] [d_Location] NULL,
	[Machine] [nvarchar] (50) NOT NULL PRIMARY KEY NONCLUSTERED,
	[Description] [nvarchar] (100) NULL,
	[Format] [nvarchar] (20) NOT NULL,
	[NextNumber] [int] NOT NULL,
	[LastUpdate] [int] NOT NULL
)
GO

CREATE TABLE [dbo].[CreditCard] (
	[Name] [nvarchar] (8) NOT NULL PRIMARY KEY NONCLUSTERED,
	[Description] [nvarchar] (100) NULL,
	[BankAccount] [d_AccNo] NOT NULL,
	[Amount1] [d_Money] NOT NULL,
	[Amount2] [d_Money] NOT NULL,
	[Rate1] [d_Percent] NOT NULL,
	[Amount3] [d_Money] NOT NULL,
	[Amount4] [d_Money] NOT NULL,
	[Rate2] [d_Percent] NOT NULL,
	[ChargeCustomer] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL
)
GO

CREATE TABLE [dbo].[PosOption] (
	[ID] [nvarchar] (25) NOT NULL PRIMARY KEY NONCLUSTERED,
	[Value] [nvarchar] (255) NULL
)
GO

ALTER TABLE [dbo].[Pos] ADD 
	CONSTRAINT [UK_Pos_DocNo] UNIQUE NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_Pos_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[Debtor] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Pos_CCType] FOREIGN KEY 
	(
		[CCType]
	) REFERENCES [dbo].[CreditCard] (
		[Name]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Pos_BonusPointAccNo] FOREIGN KEY 
	(
		[BonusPointAccNo]
	) REFERENCES [dbo].[BonusPointAccount] (
		[BonusPointAccNo]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[PosDtl] ADD 
	CONSTRAINT [FK_PosDtl_ItemCode] FOREIGN KEY
	(
		[ItemCode]
	)  REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PosDtl_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PosDtl_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[PosUser] ADD 
	CONSTRAINT [FK_PosUser_Outlet] FOREIGN KEY 
	(
		[Outlet]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[Terminal] ADD 
	CONSTRAINT [UK_Terminal_NameOutlet] UNIQUE NONCLUSTERED 
	(
		[Name], [Outlet]
	)  ON [PRIMARY] , 
	CONSTRAINT [UK_Terminal_Format] UNIQUE NONCLUSTERED 
	(
		[Format]
	)  ON [PRIMARY] , 
	CONSTRAINT [FK_Terminal_Outlet] FOREIGN KEY 
	(
		[Outlet]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[CreditCard] ADD 
	CONSTRAINT [FK_CreditCard_BankAccount] FOREIGN KEY 
	(
		[BankAccount]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	)
GO

INSERT INTO PosOption(ID, Value) VALUES('DebtorEntry', 'F');
INSERT INTO PosOption(ID, Value) VALUES('TableEntry', 'F');
INSERT INTO PosOption(ID, Value) VALUES('GuestsEntry', 'F');
INSERT INTO PosOption(ID, Value) VALUES('AcceptCreditCard', 'T');
INSERT INTO PosOption(ID, Value) VALUES('AcceptDebitCard', 'F');
INSERT INTO PosOption(ID, Value) VALUES('AcceptCheque', 'F');
INSERT INTO PosOption(ID, Value) VALUES('AcceptVoucher', 'F');
INSERT INTO PosOption(ID, Value) VALUES('NeedCCNumber', 'F');
INSERT INTO PosOption(ID, Value) VALUES('NeedCCExpiryDate', 'F');
INSERT INTO PosOption(ID, Value) VALUES('NeedChequeNumber', 'F');
INSERT INTO PosOption(ID, Value) VALUES('EnableTax', 'T');
INSERT INTO PosOption(ID, Value) VALUES('DefaultTaxType', '');
INSERT INTO PosOption(ID, Value) VALUES('EnableTax2', 'F');
INSERT INTO PosOption(ID, Value) VALUES('Tax2Name', 'Service Charge');
INSERT INTO PosOption(ID, Value) VALUES('Tax2Rate', '0');
INSERT INTO PosOption(ID, Value) VALUES('VoidRecord', 'T');
INSERT INTO PosOption(ID, Value) VALUES('DeleteRecord', 'T');
INSERT INTO PosOption(ID, Value) VALUES('ReturnItem', 'T');
INSERT INTO PosOption(ID, Value) VALUES('DeleteItem', 'T');
INSERT INTO PosOption(ID, Value) VALUES('ChangePrice', 'T');
INSERT INTO PosOption(ID, Value) VALUES('GiveDiscount', 'T');
INSERT INTO PosOption(ID, Value) VALUES('OpenDrawer', 'T');
INSERT INTO PosOption(ID, Value) VALUES('EnableScale', 'F');
INSERT INTO PosOption(ID, Value) VALUES('FlagDigit', '');
INSERT INTO PosOption(ID, Value) VALUES('ItemStart', '0');
INSERT INTO PosOption(ID, Value) VALUES('ItemLength', '0');
INSERT INTO PosOption(ID, Value) VALUES('PriceStart', '0');
INSERT INTO PosOption(ID, Value) VALUES('PriceLength', '0');
INSERT INTO PosOption(ID, Value) VALUES('PriceDecimal', '0');
INSERT INTO PosOption(ID, Value) VALUES('QtyStart', '0');
INSERT INTO PosOption(ID, Value) VALUES('QtyLength', '0');
INSERT INTO PosOption(ID, Value) VALUES('QtyDecimal', '0');
INSERT INTO PosOption(ID, Value) VALUES('WelcomeMessage1', 'WELCOME');
INSERT INTO PosOption(ID, Value) VALUES('WelcomeMessage2', '');
INSERT INTO PosOption(ID, Value) VALUES('ThankMessage1', 'THANK YOU');
INSERT INTO PosOption(ID, Value) VALUES('ThankMessage2', 'PLEASE COME AGAIN');
INSERT INTO PosOption(ID, Value) VALUES('ClosedMessage1', 'COUNTER CLOSED');
INSERT INTO PosOption(ID, Value) VALUES('ClosedMessage2', 'NEXT COUNTER PLEASE');
INSERT INTO PosOption(ID, Value) VALUES('PrintAfterLine', 'F');
INSERT INTO PosOption(ID, Value) VALUES('ReceiptHeader', '');
INSERT INTO PosOption(ID, Value) VALUES('ReceiptFooter', '');

/* The following DDL will add tables to support Sync Server */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SyncProfile]'))
DROP TABLE [dbo].[SyncProfile] 
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SyncCriteriaProfile]'))
DROP TABLE [dbo].[SyncCriteriaProfile] 
GO

CREATE TABLE [dbo].[SyncProfile](
	[ProfileKey] [bigint] NOT NULL,
	[ProfileName] [nvarchar](50)  NOT NULL,
	[URI] [nvarchar](255) NOT NULL,
	[PortNumber] [int] NOT NULL,
	[EncryptionKey] [nvarchar](100) NOT NULL,
	[ServerPassword] [nchar](50) NULL,
	[SyncCriteriaProfileKey] [bigint] NOT NULL,
	CONSTRAINT [PK_SyncProfile] PRIMARY KEY CLUSTERED 
	(
		[ProfileKey] ASC
	)
)
GO

CREATE TABLE [dbo].[SyncCriteriaProfile](
	[CriteriaKey] [bigint] NOT NULL,
	[CriteriaName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[ItemCodeFilter] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[LocationFilter] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[MasterDirect] [int] NULL,
	[QTDirect] [int] NULL,
	[SODirect] [int] NULL,
	[DODirect] [int] NULL,
	[IVDirect] [int] NULL,
	[CSDirect] [int] NULL,
	[CNDirect] [int] NULL,
	[DNDirect] [int] NULL,
	[DRDirect] [int] NULL,
	[XSDirect] [int] NULL,
	[RQDirect] [int] NULL,
	[PODirect] [int] NULL,
	[GRDirect] [int] NULL,
	[PIDirect] [int] NULL,
	[CPDirect] [int] NULL,
	[PRDirect] [int] NULL,
	[GTDirect] [int] NULL,
	[XPDirect] [int] NULL,
	CONSTRAINT [PK_SyncCriteriaProfile] PRIMARY KEY CLUSTERED 
	(
		[CriteriaKey] ASC
	)
) 
GO

/* The following DDL will add Location column to ItemPrice table to support POS */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemPrice]') and name = N'Location')
  ALTER TABLE [dbo].[ItemPrice] 
    ADD [Location] [d_Location] NULL
GO

if exists (select * from Location where Location='HQ')
begin
  UPDATE [dbo].[ItemPrice]
  SET [Location]='HQ'
end else
begin
  UPDATE [dbo].[ItemPrice]
  SET [Location]=(select TOP 1 Location FROM Location)
end
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemPrice_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ItemPrice] DROP CONSTRAINT [FK_ItemPrice_Location]
GO

ALTER TABLE [dbo].[ItemPrice] ADD 
	CONSTRAINT [FK_ItemPrice_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	)
GO

/* The following DDL will add HandOverDate column to CB, ARPayment, APPayment, ARRefund, APRefund table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CB]') and name = N'HandOverDate')
  ALTER TABLE [dbo].[CB] 
    ADD [HandOverDate] [datetime] NULL
GO

UPDATE [dbo].[CB]
SET [HandOverDate] = [DocDate]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARPayment]') and name = N'HandOverDate')
  ALTER TABLE [dbo].[ARPayment] 
    ADD [HandOverDate] [datetime] NULL
GO

UPDATE [dbo].[ARPayment]
SET [HandOverDate] = [DocDate]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARRefund]') and name = N'HandOverDate')
  ALTER TABLE [dbo].[ARRefund] 
    ADD [HandOverDate] [datetime] NULL
GO

UPDATE [dbo].[ARRefund]
SET [HandOverDate] = [DocDate]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APPayment]') and name = N'HandOverDate')
  ALTER TABLE [dbo].[APPayment] 
    ADD [HandOverDate] [datetime] NULL
GO

UPDATE [dbo].[APPayment]
SET [HandOverDate] = [DocDate]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APRefund]') and name = N'HandOverDate')
  ALTER TABLE [dbo].[APRefund] 
    ADD [HandOverDate] [datetime] NULL
GO

UPDATE [dbo].[APRefund]
SET [HandOverDate] = [DocDate]
GO

UPDATE REGISTRY SET RegValue = '1.0.8.37' WHERE RegID = 2
GO
�/* The following DDL will add CSGNQty to ItemUOM */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemUOM]') and name = N'CSGNQty')
  ALTER TABLE [dbo].[ItemUOM] 
    ADD [CSGNQty] [d_Qty] NULL
GO

UPDATE [dbo].[ItemUOM]
SET CSGNQty=(SELECT ISNULL(SUM(BalQty),0) FROM CSGNItemBalQty WHERE ItemUOM.ItemCode=CSGNItemBalQty.ItemCode AND ItemUOM.UOM=CSGNItemBalQty.UOM)
GO

UPDATE [dbo].[ChangeCount]
SET [Counter]=[Counter]+1
WHERE TableName='ItemUOM'
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(40), AddDelete nvarchar(1))

/* The following DDL will add Remark column to PRProcessing, DRProcessing, AORProcessing table to support new Business Flow */
INSERT @ListTable VALUES('PRProcessing', 'Remark', '[nvarchar] (100) NULL', 'A')
INSERT @ListTable VALUES('DRProcessing', 'Remark', '[nvarchar] (100) NULL', 'A')
INSERT @ListTable VALUES('AORProcessing', 'Remark', '[nvarchar] (100) NULL', 'A')

DECLARE @sql NVARCHAR(200)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(40)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.8.38' WHERE RegID = 2
GO
/* The following DDL will add BatchNo column to PriceBookRule table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PriceBookRule]') and name = N'BatchNo')
  ALTER TABLE [dbo].[PriceBookRule] 
    ADD [BatchNo] [d_BatchNo] NULL
GO

/* The following DDL will add FurtherDescription column to Package table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Package]') and name = N'FurtherDescription')
  ALTER TABLE [dbo].[Package] 
    ADD [FurtherDescription] [ntext] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Package]') and name = N'UserUOM')
  ALTER TABLE [dbo].[Package] 
    ADD [UserUOM] [d_UOM] NULL
GO

/* The following DDL will add CardType to POS table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Pos]') and name = N'CardType')
  ALTER TABLE [dbo].[Pos] 
    ADD [CardType] [nvarchar] (10) NULL
GO

/* The following DDL will support Period Lock Exception logic */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PeriodLockException]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE [dbo].[PeriodLockException](
	[PeriodNo] [int] NOT NULL,
	[FunctionName] [nvarchar] (40) NOT NULL,
	[UserID] [d_UserID] NOT NULL,
	CONSTRAINT [PK_PeriodLockException] PRIMARY KEY NONCLUSTERED 
	(
		[PeriodNo] ASC,
		[FunctionName] ASC,
		[UserID] ASC
	) ON [PRIMARY]
) ON [PRIMARY]
GO

/* The following DDL will modify for enhancement to new Business Flow */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DRProcessing]') and name = N'IsAllowOPEdit')
  ALTER TABLE [dbo].[DRProcessing] 
    ADD [IsAllowOPEdit] [d_Boolean] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[AsmRProcessing]') and name = N'Remark')
  ALTER TABLE [dbo].[AsmRProcessing] 
    ADD [Remark] [nvarchar] (100) NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DRProcessingDO]') and OBJECTPROPERTY(id, N'IsTable') = 1)
CREATE TABLE [dbo].[DRProcessingDO](
	[DocKey] [bigint] NOT NULL,
	[DRPKey] [bigint] NOT NULL,
	[SODtlKey] [bigint] NOT NULL,
	[SODocKey] [bigint] NOT NULL,
	[DODocKey] [bigint] NULL,
	[DODocNo] [d_DocNo] NULL,
	[DODtlKey] [bigint] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[DeliveryQty] [d_Qty] NULL,
	[DeliveryUOM] [d_UOM] NULL,
	[DeliveryRate] [d_Qty] NULL,
	[KIV] [d_Boolean] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	PRIMARY KEY NONCLUSTERED 
	(
		[DocKey] ASC
	) ON [PRIMARY]
) ON [PRIMARY]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessingDO_CreatedUserID]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DRProcessingDO] DROP CONSTRAINT [FK_DRProcessingDO_CreatedUserID]
GO

ALTER TABLE [dbo].[DRProcessingDO]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessingDO_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DRProcessingDO] CHECK CONSTRAINT [FK_DRProcessingDO_CreatedUserID]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessingDO_ItemUOM]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DRProcessingDO] DROP CONSTRAINT [FK_DRProcessingDO_ItemUOM]
GO

ALTER TABLE [dbo].[DRProcessingDO]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessingDO_ItemUOM] FOREIGN KEY([ItemCode], [DeliveryUOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[DRProcessingDO] CHECK CONSTRAINT [FK_DRProcessingDO_ItemUOM]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_DRProcessingDO_LastModifiedUserID]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[DRProcessingDO] DROP CONSTRAINT [FK_DRProcessingDO_LastModifiedUserID]
GO

ALTER TABLE [dbo].[DRProcessingDO]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessingDO_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DRProcessingDO] CHECK CONSTRAINT [FK_DRProcessingDO_LastModifiedUserID]
GO

UPDATE REGISTRY SET RegValue = '1.0.8.39' WHERE RegID = 2
GO
�U/* The following DDL will will add the ChangeCount for ShippingMethod, which may be missing in earlier update */
if not exists (select * from ChangeCount where TableName = 'ShippingMethod')
INSERT INTO [ChangeCount] VALUES ('ShippingMethod', 0);
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateShippingMethodChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER UpdateShippingMethodChangeCount
GO

CREATE TRIGGER UpdateShippingMethodChangeCount ON ShippingMethod
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ShippingMethod'
SET NOCOUNT OFF
GO

/* The following DDL will will add PostDetailDesc and Set to 'T' by default */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CB]') and name = N'PostDetailDesc')
  ALTER TABLE [dbo].[CB] 
    ADD [PostDetailDesc] [d_Boolean] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CB]') and name = N'PostDetailDesc')
  UPDATE [dbo].[CB]
  SET PostDetailDesc = 'T'
GO

/* The following DDL will will add ON UPDATE CASCADE to ShipVia foreign key */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SO_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[SO] DROP CONSTRAINT [FK_SO_ShipVia]
GO

ALTER TABLE [dbo].[SO] ADD
	CONSTRAINT [FK_SO_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	) ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DO_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DO] DROP CONSTRAINT [FK_DO_ShipVia]
GO

ALTER TABLE [dbo].[DO] ADD
	CONSTRAINT [FK_DO_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	) ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IV_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IV] DROP CONSTRAINT [FK_IV_ShipVia]
GO

ALTER TABLE [dbo].[IV] ADD
	CONSTRAINT [FK_IV_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	) ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CS_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CS] DROP CONSTRAINT [FK_CS_ShipVia]
GO

ALTER TABLE [dbo].[CS] ADD
	CONSTRAINT [FK_CS_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	) ON UPDATE CASCADE
GO

/* The following DDL will will add ShipVia and ShipInfo to Quotation */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QT]') and name = N'ShipVia')
  ALTER TABLE [dbo].[QT] 
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_QT_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[QT] DROP CONSTRAINT [FK_QT_ShipVia]
GO

ALTER TABLE [dbo].[QT] ADD
	CONSTRAINT [FK_QT_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	) ON UPDATE CASCADE
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QT]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[QT] 
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

/* The following DDL will will add ShipInfo to Sales Order */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SO]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[SO] 
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

/* The following DDL will will add ShipVia and ShipInfo to Purchase Order */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PO]') and name = N'ShipVia')
  ALTER TABLE [dbo].[PO] 
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PO_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PO] DROP CONSTRAINT [FK_PO_ShipVia]
GO

ALTER TABLE [dbo].[PO] ADD
	CONSTRAINT [FK_PO_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	) ON UPDATE CASCADE
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PO]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[PO] 
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

/* The following DDL will will add ShipVia and ShipInfo to Goods Receive */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GR]') and name = N'ShipVia')
  ALTER TABLE [dbo].[GR] 
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GR_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[GR] DROP CONSTRAINT [FK_GR_ShipVia]
GO

ALTER TABLE [dbo].[GR] ADD
	CONSTRAINT [FK_GR_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	) ON UPDATE CASCADE
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GR]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[GR] 
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

/* The following DDL will will add ShipVia and ShipInfo to Purchase Invoice */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PI]') and name = N'ShipVia')
  ALTER TABLE [dbo].[PI] 
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PI_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PI] DROP CONSTRAINT [FK_PI_ShipVia]
GO

ALTER TABLE [dbo].[PI] ADD
	CONSTRAINT [FK_PI_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	) ON UPDATE CASCADE
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PI]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[PI] 
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

/* The following DDL will will add ShipVia and ShipInfo to Purchase Invoice */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CP]') and name = N'ShipVia')
  ALTER TABLE [dbo].[CP] 
    ADD [ShipVia] [d_ShippingMethod] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CP_ShipVia]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CP] DROP CONSTRAINT [FK_CP_ShipVia]
GO

ALTER TABLE [dbo].[CP] ADD
	CONSTRAINT [FK_CP_ShipVia] FOREIGN KEY 
	(
		[ShipVia]
	) REFERENCES [dbo].[ShippingMethod] (
		[ShippingMethod]
	) ON UPDATE CASCADE
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CP]') and name = N'ShipInfo')
  ALTER TABLE [dbo].[CP] 
    ADD [ShipInfo] [nvarchar] (40) NULL
GO

-- Start of Stored Procedure
-- bsp_ChangeAccNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeAccNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeAccNo]
GO

CREATE PROCEDURE bsp_ChangeAccNo(@OldAccNo d_AccNo, @NewAccNo d_AccNo) AS 

IF @OldAccNo = @NewAccNo
    RETURN
   
--Create New Record For GLMast
BEGIN TRANSACTION

INSERT INTO GLMast(AccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, CurrencyCode, CashFlowCategory) 
SELECT @NewAccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, 
CurrencyCode, CashFlowCategory FROM GLMast WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Create New Record For Branch 
INSERT INTO Branch(AccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate) 
SELECT @NewAccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate FROM Branch WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update related tables
UPDATE [GLMast] SET ParentAccNo = @NewAccNo WHERE ParentAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankRecon] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankTrans] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CBDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [JEDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Debtor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Creditor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Contact] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TemporaryCredit] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemPrice] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [OBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IPHIST] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BudgetPBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DocNoFormatAccNo] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Footer] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNItemBalQty] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CreditControlSync] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IVDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PIDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CPDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PRDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET DEAccNo = @NewAccNo WHERE DEAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointTrans] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointAccount] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoice] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARPayment] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARRefund] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [QT] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IV] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DR] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET TempAccNo = @NewAccNo WHERE TempAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [APInvoice] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APPayment] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APRefund] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [RQ] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PO] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PI] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GT] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SupplierCSGN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [ItemGroup] SET SalesCode = @NewAccNo WHERE SalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET CashSalesCode = @NewAccNo WHERE CashSalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesReturnCode = @NewAccNo WHERE SalesReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesDiscountCode = @NewAccNo WHERE SalesDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseDiscountCode = @NewAccNo WHERE PurchaseDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseCode = @NewAccNo WHERE PurchaseCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseReturnCode = @NewAccNo WHERE PurchaseReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [CURRENCY] SET FCGainAccount = @NewAccNo WHERE FCGainAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CURRENCY] SET FCLossAccount = @NewAccNo WHERE FCLossAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [AssetLink] SET AssetAccNo = @NewAccNo WHERE AssetAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [AssetLink] SET AssetDeprnAccNo = @NewAccNo WHERE AssetDeprnAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [TaxType] SET TaxAccNo = @NewAccNo WHERE TaxAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TaxTrans] SET TaxableAccNo = @NewAccNo WHERE TaxableAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [PaymentMethod] SET BankAccount = @NewAccNo WHERE BankAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PaymentMethod] SET BankChargeAccount = @NewAccNo WHERE BankChargeAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [StockSet] SET OpenStock = @NewAccNo WHERE OpenStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET CloseStock = @NewAccNo WHERE CloseStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET BalanceStock = @NewAccNo WHERE BalanceStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [OBDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update Account No in REGISTRY table
UPDATE [Registry] SET RegValue = @NewAccNo WHERE RegID IN (0x108, 0x109, 0x130, 0x128, 0x10C, 0x131, 0x12D, 0x171, 0x172, 0x173) AND RegValue = @OldAccNo
IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION 
    RETURN
  END
  
DELETE FROM Branch WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

DELETE FROM GLMast WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '1.0.8.4' WHERE RegID = 2
GO
/* The following DDL will add the ChangeCount for BonusPointAccount */
if not exists (select * from ChangeCount where TableName = 'BonusPointAccount')
INSERT INTO [ChangeCount] VALUES ('BonusPointAccount', 0);
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateBonusPointAccount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER UpdateBonusPointAccountChangeCount
GO

CREATE TRIGGER UpdateBonusPointAccountChangeCount ON BonusPointAccount
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='BonusPointAccount'
SET NOCOUNT OFF
GO

/* To support Audit Trail */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EventLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[EventLog]
GO

CREATE TABLE [dbo].[EventLog] (
	[EventKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[EventDateTime] [DateTime] NOT NULL,
	[UserID] [d_UserID] NOT NULL ,
	[DocType] [d_DocType] NULL,
	[DocKey] [bigint] NULL,
	[EventType] [char] (1) NOT NULL,
	[EventMessage] [ntext] NULL,
) ON [PRIMARY]
GO

/* To support Network Users Checking */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[NetUsers]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[NetUsers]
GO

CREATE TABLE [dbo].[NetUsers] (
	[SessionKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[LastCheckDateTime] [DateTime] NOT NULL,
	[LoginTime] [DateTime] NOT NULL,
	[IsInternetUser] [d_Boolean] NOT NULL ,
	[UserID] [d_UserID] NOT NULL,
	[ComputerName] [nvarchar] (20) NULL,
	[UserName] [nvarchar] (20) NULL,
) ON [PRIMARY]
GO

/* To support UDF and Script */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UDF]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[UDF]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UDFList]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[UDFList]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UDFLayout]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[UDFLayout]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserScript]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[UserScript]
GO

CREATE TABLE [dbo].[UDF] (
	[TableName] [nvarchar] (25) NOT NULL,
	[FieldName] [nvarchar] (10) NOT NULL,
	[Seq] [int] NOT NULL,
	[FieldType] [d_FieldType] NOT NULL,
	[Caption] [nvarchar] (80) NULL,	
	[Properties] [ntext] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UDFList] (
	[Name] [nvarchar] (10) PRIMARY KEY,
	[Value] [ntext] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UDFLayout] (
	[TableName] [nvarchar] (25) NOT NULL,
	[LayoutName] [nvarchar] (10) NOT NULL,
	[Layout] [ntext] NULL
)
GO

CREATE TABLE [dbo].[UserScript] (
	[ScriptName] [nvarchar] (25) PRIMARY KEY, 
	[Language] [nvarchar] (5) NOT NULL,
	[Script] [ntext] NULL,
	[LastUpdate] [int] NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[UDF] WITH NOCHECK ADD 
	CONSTRAINT [PK_UDF] PRIMARY KEY  CLUSTERED 
	(
		[TableName],
		[FieldName]
	)  ON [PRIMARY]
GO

ALTER TABLE [dbo].[UDFLayout] WITH NOCHECK ADD 
	CONSTRAINT [PK_UDFLayout] PRIMARY KEY  CLUSTERED 
	(
		[TableName],
		[LayoutName]
	)  ON [PRIMARY]
GO

/* The following DDL will add DeliveryDate to QTDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QTDTL]') and name = N'DeliveryDate')
  ALTER TABLE [dbo].[QTDTL] 
    ADD [DeliveryDate] [DateTime] NULL
GO

/* The following DDL will add FromSODtlKey to PODTL to indicate whether this PODTL item was transfered from which SODTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'FromSODtlKey')
  ALTER TABLE [dbo].[PODTL] 
    ADD [FromSODtlKey] [bigint] NULL
GO

/* The following DDL will add AssetDisposal table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AssetDisposal]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[AssetDisposal]
GO

CREATE TABLE [dbo].[AssetDisposal] (
	[DisposalKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[FixedAssetAccNo] [d_AccNo] NOT NULL,
	[TransDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (80) NULL,
	[DisposalValue] [d_Money] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[LocalDisposalValue] [d_Money] NOT NULL
) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.8.5' WHERE RegID = 2
GO
/* To support the Tax Registration No in Company Profile Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'TaxRegisterNo')
  ALTER TABLE [dbo].[Profile] 
    ADD [TaxRegisterNo] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'TaxTypeCategory')
  ALTER TABLE [dbo].[TaxType] 
    ADD [TaxTypeCategory] [nvarchar] (40) NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.8.6' WHERE RegID = 2
GO
|	/* To rebuild CSGNItemBalQty and enhance the foreign key constraint of CSGNItemBalQty */
DELETE FROM CSGNItemBalQty
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSGNItemBalQty_ItemBatch]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CSGNItemBalQty] DROP CONSTRAINT [FK_CSGNItemBalQty_ItemBatch]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSGNItemBalQty_Branch]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CSGNItemBalQty] DROP CONSTRAINT [FK_CSGNItemBalQty_Branch]
GO

ALTER TABLE [dbo].[CSGNItemBalQty] ADD 
	CONSTRAINT [FK_CSGNItemBalQty_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	),
	CONSTRAINT [FK_CSGNItemBalQty_Branch] FOREIGN KEY 
	(
		[AccNo], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	)
GO

INSERT INTO CSGNItemBalQty (AccNo, ItemCode, UOM, Location, BranchCode, BatchNo, ProjNo, DeptNo, BalQty)
SELECT A.DebtorCode, B.ItemCode, B.UOM, B.Location, A.BranchCode, B.BatchNo, B.ProjNo, B.DeptNo, SUM(B.Qty) FROM CSGN A, CSGNDTL B
WHERE A.DocKey=B.DocKey AND B.ItemCode IS NOT NULL AND A.Cancelled='F'
GROUP BY A.DebtorCode, B.ItemCode, B.UOM, B.Location, A.BranchCode, B.BatchNo, B.ProjNo, B.DeptNo
GO

INSERT INTO CSGNItemBalQty (AccNo, ItemCode, UOM, Location, BranchCode, BatchNo, ProjNo, DeptNo, BalQty)
SELECT A.CreditorCode, B.ItemCode, B.UOM, B.Location, A.BranchCode, B.BatchNo, B.ProjNo, B.DeptNo, SUM(B.Qty) FROM SupplierCSGN A, SupplierCSGNDTL B
WHERE A.DocKey=B.DocKey AND B.ItemCode IS NOT NULL AND A.Cancelled='F'
GROUP BY A.CreditorCode, B.ItemCode, B.UOM, B.Location, A.BranchCode, B.BatchNo, B.ProjNo, B.DeptNo
GO

/* To support Consignment Transfer */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CSGNXFER]') and OBJECTPROPERTY(id, N'IsTable') = 1)
  DROP TABLE [dbo].[CSGNXFER]
GO

CREATE TABLE [dbo].[CSGNXFER] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[FromDebtorCode] [d_AccNo] NOT NULL,
	[FromDebtorName] [d_AccDescription] NULL,
	[FromBranchCode] [d_BranchCode] NULL,
	[ToDebtorCode] [d_AccNo] NOT NULL,
	[ToDebtorName] [d_AccDescription] NULL,
	[ToBranchCode] [d_BranchCode] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[SalesAgent] [d_Agent] NULL,
	[ToInvAddr1] [d_Address] NULL,
	[ToInvAddr2] [d_Address] NULL,
	[ToInvAddr3] [d_Address] NULL,
	[ToInvAddr4] [d_Address] NULL,
	[ToPhone1] [d_Phone] NULL,
	[ToFax1] [d_Phone] NULL,
	[ToAttention] [d_Contact] NULL,
	[ToDeliverAddr1] [d_Address] NULL,
	[ToDeliverAddr2] [d_Address] NULL,
	[ToDeliverAddr3] [d_Address] NULL,
	[ToDeliverAddr4] [d_Address] NULL,
	[ToDeliverPhone1] [d_Phone] NULL,
	[ToDeliverFax1] [d_Phone] NULL,
	[ToDeliverContact] [d_Contact] NULL,
	[Note] [ntext] NULL ,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL ,
	[Cancelled] [d_Boolean] NOT NULL ,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CSGNXFERDTL]') and OBJECTPROPERTY(id, N'IsTable') = 1)
  DROP TABLE [dbo].[CSGNXFERDTL]
GO

CREATE TABLE [dbo].[CSGNXFERDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL ,
	[Seq] [int] NOT NULL, 
	[ItemCode] [d_ItemCode] NULL,
	[UOM] [d_UOM] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[Remark] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL ,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Qty] [d_Qty] NULL,
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[CSGNXFER] ADD 
	CONSTRAINT [IX_CSGNXFER_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_CSGNXFER_FromDebtorCode] FOREIGN KEY 
	(
		[FromDebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_CSGNXFER_ToDebtorCode] FOREIGN KEY 
	(
		[ToDebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_CSGNXFER_FromBranchCode] FOREIGN KEY 
	(
		[FromDebtorCode], [FromBranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ,
	CONSTRAINT [FK_CSGNXFER_ToBranchCode] FOREIGN KEY 
	(
		[ToDebtorCode], [ToBranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ,
	CONSTRAINT [FK_CSGNXFER_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGNXFER_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_CSGNXFER_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[CSGNXFERDTL] ADD 
	CONSTRAINT [FK_CSGNXFERDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGNXFERDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGNXFERDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGNXFERDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGNXFERDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_CSGNXFERDTL_DocKey] ON [dbo].[CSGNXFERDTL]([DocKey]) ON [PRIMARY]
GO

/* To support Consignment Transfer */
-- bsp_ChangeAccNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeAccNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeAccNo]
GO

CREATE PROCEDURE bsp_ChangeAccNo(@OldAccNo d_AccNo, @NewAccNo d_AccNo) AS 

IF @OldAccNo = @NewAccNo
    RETURN
   
--Create New Record For GLMast
BEGIN TRANSACTION

INSERT INTO GLMast(AccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, CurrencyCode, CashFlowCategory) 
SELECT @NewAccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, 
CurrencyCode, CashFlowCategory FROM GLMast WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Create New Record For Branch 
INSERT INTO Branch(AccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate) 
SELECT @NewAccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate FROM Branch WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update related tables
UPDATE [GLMast] SET ParentAccNo = @NewAccNo WHERE ParentAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankRecon] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankTrans] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CBDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [JEDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Debtor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Creditor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Contact] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TemporaryCredit] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemPrice] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [OBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IPHIST] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BudgetPBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DocNoFormatAccNo] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Footer] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNItemBalQty] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CreditControlSync] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IVDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PIDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CPDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PRDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET DEAccNo = @NewAccNo WHERE DEAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointTrans] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointAccount] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoice] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARPayment] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARRefund] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [QT] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNXFER] SET FromDebtorCode = @NewAccNo WHERE FromDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNXFER] SET ToDebtorCode = @NewAccNo WHERE ToDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IV] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DR] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET TempAccNo = @NewAccNo WHERE TempAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [APInvoice] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APPayment] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APRefund] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [RQ] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PO] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PI] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GT] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SupplierCSGN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [ItemGroup] SET SalesCode = @NewAccNo WHERE SalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET CashSalesCode = @NewAccNo WHERE CashSalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesReturnCode = @NewAccNo WHERE SalesReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesDiscountCode = @NewAccNo WHERE SalesDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseDiscountCode = @NewAccNo WHERE PurchaseDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseCode = @NewAccNo WHERE PurchaseCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseReturnCode = @NewAccNo WHERE PurchaseReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [CURRENCY] SET FCGainAccount = @NewAccNo WHERE FCGainAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CURRENCY] SET FCLossAccount = @NewAccNo WHERE FCLossAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [AssetLink] SET AssetAccNo = @NewAccNo WHERE AssetAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [AssetLink] SET AssetDeprnAccNo = @NewAccNo WHERE AssetDeprnAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [TaxType] SET TaxAccNo = @NewAccNo WHERE TaxAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TaxTrans] SET TaxableAccNo = @NewAccNo WHERE TaxableAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [PaymentMethod] SET BankAccount = @NewAccNo WHERE BankAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PaymentMethod] SET BankChargeAccount = @NewAccNo WHERE BankChargeAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [StockSet] SET OpenStock = @NewAccNo WHERE OpenStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET CloseStock = @NewAccNo WHERE CloseStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET BalanceStock = @NewAccNo WHERE BalanceStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update Account No in REGISTRY table
UPDATE [Registry] SET RegValue = @NewAccNo WHERE RegID IN (0x108, 0x109, 0x130, 0x128, 0x10C, 0x131, 0x12D, 0x171, 0x172, 0x173) AND RegValue = @OldAccNo
IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION 
    RETURN
  END
  
DELETE FROM Branch WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

DELETE FROM GLMast WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

COMMIT TRANSACTION
GO

-- bsp_ChangeBranch
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeBranch]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeBranch]
GO

CREATE PROCEDURE bsp_ChangeBranch(@AccNo d_AccNo, 
	@OldBranchCode d_BranchCode, @NewBranchCode d_BranchCode) AS 

IF @OldBranchCode = @NewBranchCode
    RETURN
   
BEGIN TRANSACTION
--Create New Record For Branch
INSERT INTO Branch(AccNo, BranchCode, BranchName, Address1, Address2, Address3, 
Address4, PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate) 
SELECT AccNo, @NewBranchCode, BranchName, Address1, Address2, Address3, 
Address4, PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate 
FROM Branch WHERE AccNo = @AccNo AND BranchCode = @OldBranchCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [IPHIST] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND AccNo = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND AccNo = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGN] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND DebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFER] SET FromBranchCode = @NewBranchCode WHERE FromBranchCode = @OldBranchCode AND FromDebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFER] SET ToBranchCode = @NewBranchCode WHERE ToBranchCode = @OldBranchCode AND ToDebtorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGN] SET BranchCode = @NewBranchCode WHERE BranchCode = @OldBranchCode AND CreditorCode = @AccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END



DELETE FROM Branch WHERE AccNo = @AccNo AND BranchCode = @OldBranchCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeItemBatch
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemBatch]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemBatch]
GO

CREATE PROCEDURE bsp_ChangeItemBatch(@ItemCode d_ItemCode, 
	@OldItemBatch d_BatchNo, @NewItemBatch d_BatchNo) AS 

IF @OldItemBatch = @NewItemBatch
    RETURN
   
BEGIN TRANSACTION
--Create New Record For ItemBatch
INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty) 
SELECT ItemCode, @NewItemBatch, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @ItemCode AND BatchNo = @OldItemBatch

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [ItemBatchBalQty] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [ASMDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [StockDTL] SET BatchNo = @NewItemBatch WHERE BatchNo = @OldItemBatch AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemBatch WHERE ItemCode = @ItemCode AND BatchNo = @OldItemBatch
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeItemCode
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemCode]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemCode]
GO

CREATE PROCEDURE bsp_ChangeItemCode(@OldItemCode d_ItemCode, @NewItemCode d_ItemCode) AS 

BEGIN TRANSACTION
--Create New Record For Item
INSERT INTO Item(ItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate) 
SELECT @NewItemCode, DocKey, Description, Desc2, FurtherDescription, ItemGroup, 
ItemType, AssemblyCost, LeadTime, StockControl, HasSerialNo, HasBatchNo, 
DutyRate, Taxtype, Note, ImageFileName, CostingMethod, SalesUOM, 
PurchaseUOM, ReportUOM, LastModified, LastModifiedUserID, CreatedTimeStamp, 
CreatedUserID, IsActive, LastUpdate FROM Item WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT @NewItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Create New Record For ItemBatch
INSERT INTO ItemBatch(ItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty) 
SELECT @NewItemCode, BatchNo, Description, ManufacturedDate, ExpiryDate, 
LastSaleDate, BalQty FROM ItemBatch WHERE ItemCode = @OldItemCode

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [ItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBatchBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemPrice] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SNTrans] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL]  SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCostDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASMDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemReplacement] SET ReplacementItemCode = @NewItemCode WHERE ReplacementItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET ItemCode = @NewItemCode WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBOM] SET SubItemCode = @NewItemCode WHERE SubItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemUOM WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemBatch WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Item WHERE ItemCode = @OldItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeItemUOM
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeItemUOM]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeItemUOM]
GO

CREATE PROCEDURE bsp_ChangeItemUOM(@ItemCode d_ItemCode, 
	@OldItemUOM d_UOM, @NewItemUOM d_UOM) AS 

IF @OldItemUOM = @NewItemUOM
    RETURN
   
BEGIN TRANSACTION
--Create New Record For ItemUOM
INSERT INTO ItemUOM(ItemCode, UOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate) 
SELECT ItemCode, @NewItemUOM, Rate, Shelf, Price, Cost, RealCost, MostRecentlyCost, MinSalePrice, 
MaxSalePrice, MinPurchasePrice, MaxPurchasePrice, BalQty, MinQty, MaxQty, NormalLevel, 
ReOLevel, ReOQty, FOCLevel, FOCQty, BonusPointQty, BonusPoint, Weight, WeightUOM, 
Volume, VolumeUOM, BarCode, LastUpdate FROM ItemUOM where ItemCode = @ItemCode AND UOM = @OldItemUOM 

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [Item] SET SalesUOM = @NewItemUOM WHERE SalesUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET PurchaseUOM = @NewItemUOM WHERE PurchaseUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET ReportUOM = @NewItemUOM WHERE ReportUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [ItemBatchBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemPrice] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemOpening] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SNTrans] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IPHIST] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PackageDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QTDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IVDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PODTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PIDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CPDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PRDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XPDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GTDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNItemBalQty] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFERDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGNDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFERDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISSDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCVDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFFDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCostDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UTDStockCost] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [StockDTL] SET UOM = @NewItemUOM WHERE UOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET FromUOM = @NewItemUOM WHERE FromUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConvDTL] SET ToUOM = @NewItemUOM WHERE ToUOM = @OldItemUOM AND ItemCode = @ItemCode
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM ItemUOM WHERE ItemCode = @ItemCode AND UOM = @OldItemUOM
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

COMMIT TRANSACTION

GO

-- bsp_ChangeUserID
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeUserID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeUserID]
GO

CREATE PROCEDURE bsp_ChangeUserID(@OldUserID d_UserID, @NewUserID d_UserID) AS 

IF @OldUserID = @NewUserID
    RETURN
   
-- Check to disallow @NewUserID same with any UserGroupID
IF EXISTS(SELECT * FROM UserGroup WHERE UserGroupID = @NewUserID)
  BEGIN
    RAISERROR ('New User ID is an existing User Group ID, cannot change to this New User ID.', 11, 1)
  RETURN 
  END
--End new added

BEGIN TRANSACTION
--Create New Record For GLMast
INSERT INTO Users(UserID, UserName, Department, Passwd, Signature, EmailAddress, 
FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate) 
SELECT @NewUserID, UserName, Department, Passwd, Signature, EmailAddress, 
FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate FROM Users WHERE UserID=@OldUserID

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Update related tables
UPDATE [MRU] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [LayoutUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GLDTL] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersSalesAgent] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersPurchaseAgent] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [AccessRight] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Session] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DocNoFormatUsers] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersGroup] SET UserID = @NewUserID WHERE UserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UsersGroup] SET UserGroupID = @NewUserID WHERE UserGroupID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

UPDATE [CB] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CB] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [JE] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [JE] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Debtor] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Debtor] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Creditor] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Creditor] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [Item] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDeposit] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDeposit] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDeposit] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDeposit] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARInvoice] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARInvoice] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARDN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARPayment] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARPayment]SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARCN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARCN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARRefund] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARRefund] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARAPContra] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ARAPContra] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APInvoice] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APInvoice] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APDN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APPayment] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APPayment] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APCN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APCN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APRefund] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [APRefund] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [IV] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [DR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RQ] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PO] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PI] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CP] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [PR] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XP] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [GT] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFER] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [CSGNXFER] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGN] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [SupplierCSGN] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [XFER] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJ] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ADJ] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISS] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ISS] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCV] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [RCV] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFF] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [WOFF] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConv] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UOMConv] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCost] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [UpdateCost] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ASM] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET LastModifiedUserID = @NewUserID WHERE LastModifiedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [QT] SET ApprovalUserID = @NewUserID WHERE ApprovalUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END
UPDATE [ItemCostHistory] SET CreatedUserID = @NewUserID WHERE CreatedUserID = @OldUserID
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

DELETE FROM Users WHERE UserID = @OldUserID

COMMIT TRANSACTION

GO

UPDATE REGISTRY SET RegValue = '1.0.8.7' WHERE RegID = 2
GO
8>/* The following DDL will add PostDetailDesc and Set to 'T' by default */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[JE]') and name = N'PostDetailDesc')
  ALTER TABLE [dbo].[JE] 
    ADD [PostDetailDesc] [d_Boolean] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[JE]') and name = N'PostDetailDesc')
  UPDATE [dbo].[JE]
  SET PostDetailDesc = 'T'
GO

/* The following DDL will delete all BonusPointTrans records for BonusPointAccNo is NULL */
delete from BonusPointTrans
where BonusPointAccNo IS NULL
GO

/* To fix "Not update OBDTL table problem" */
-- bsp_ChangeAccNo
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeAccNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeAccNo]
GO

CREATE PROCEDURE bsp_ChangeAccNo(@OldAccNo d_AccNo, @NewAccNo d_AccNo) AS 

IF @OldAccNo = @NewAccNo
    RETURN
   
--Create New Record For GLMast
BEGIN TRANSACTION

INSERT INTO GLMast(AccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, CurrencyCode, CashFlowCategory) 
SELECT @NewAccNo, ParentAccNo, Description, Desc2, AccType, SpecialAccType, 
CurrencyCode, CashFlowCategory FROM GLMast WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Create New Record For Branch 
INSERT INTO Branch(AccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate) 
SELECT @NewAccNo, BranchCode, BranchName, Address1, Address2, Address3, Address4, 
PostCode, Contact, Phone1, Phone2, Fax1, Fax2, LastUpdate FROM Branch WHERE AccNo = @OldAccNo

IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update related tables
UPDATE [GLMast] SET ParentAccNo = @NewAccNo WHERE ParentAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankRecon] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BankTrans] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CBDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [JEDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Debtor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Creditor] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Contact] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TemporaryCredit] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemPrice] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APInvoiceDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [OBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [OBDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IPHIST] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BudgetPBalance] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DocNoFormatAccNo] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [Footer] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNItemBalQty] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CreditControlSync] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IVDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CNDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PIDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CPDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PRDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GLDTL] SET DEAccNo = @NewAccNo WHERE DEAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointTrans] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [BonusPointAccount] SET AccNo = @NewAccNo WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARInvoice] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARPayment] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARCN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARRefund] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [QT] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNXFER] SET FromDebtorCode = @NewAccNo WHERE FromDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CSGNXFER] SET ToDebtorCode = @NewAccNo WHERE ToDebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DO] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [IV] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CN] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XS] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [DR] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARAPContra] SET TempAccNo = @NewAccNo WHERE TempAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET DebtorCode = @NewAccNo WHERE DebtorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ARDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [APInvoice] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APPayment] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APCN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APRefund] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [RQ] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PO] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PI] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PR] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [XP] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [GT] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [SupplierCSGN] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET CreditorCode = @NewAccNo WHERE CreditorCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [APDeposit] SET ForfeitedAccNo = @NewAccNo WHERE ForfeitedAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [ItemGroup] SET SalesCode = @NewAccNo WHERE SalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET CashSalesCode = @NewAccNo WHERE CashSalesCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesReturnCode = @NewAccNo WHERE SalesReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET SalesDiscountCode = @NewAccNo WHERE SalesDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseDiscountCode = @NewAccNo WHERE PurchaseDiscountCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseCode = @NewAccNo WHERE PurchaseCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [ItemGroup] SET PurchaseReturnCode = @NewAccNo WHERE PurchaseReturnCode = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [CURRENCY] SET FCGainAccount = @NewAccNo WHERE FCGainAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [CURRENCY] SET FCLossAccount = @NewAccNo WHERE FCLossAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [AssetLink] SET AssetAccNo = @NewAccNo WHERE AssetAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [AssetLink] SET AssetDeprnAccNo = @NewAccNo WHERE AssetDeprnAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [TaxType] SET TaxAccNo = @NewAccNo WHERE TaxAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [TaxTrans] SET TaxableAccNo = @NewAccNo WHERE TaxableAccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [PaymentMethod] SET BankAccount = @NewAccNo WHERE BankAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [PaymentMethod] SET BankChargeAccount = @NewAccNo WHERE BankChargeAccount = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

UPDATE [StockSet] SET OpenStock = @NewAccNo WHERE OpenStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET CloseStock = @NewAccNo WHERE CloseStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END
UPDATE [StockSet] SET BalanceStock = @NewAccNo WHERE BalanceStock = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

--Update Account No in REGISTRY table
UPDATE [Registry] SET RegValue = @NewAccNo WHERE RegID IN (0x108, 0x109, 0x130, 0x128, 0x10C, 0x131, 0x12D, 0x171, 0x172, 0x173) AND RegValue = @OldAccNo
IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION 
    RETURN
  END
  
DELETE FROM Branch WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

DELETE FROM GLMast WHERE AccNo = @OldAccNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION 
    RETURN
  END

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '1.0.8.8' WHERE RegID = 2
GO
�/* The following DDL will add SalesAgent to JEDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[JEDTL]') and name = N'SalesAgent')
  ALTER TABLE [dbo].[JEDTL] 
    ADD [SalesAgent] [d_Agent] NULL
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_JEDTL_SalesAgent]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[JEDTL] DROP CONSTRAINT [FK_JEDTL_SalesAgent]
GO

ALTER TABLE [dbo].[JEDTL] ADD 
	CONSTRAINT [FK_JEDTL_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE
GO

/* The following DDL will add SalesAgent to CBDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CBDTL]') and name = N'SalesAgent')
  ALTER TABLE [dbo].[CBDTL] 
    ADD [SalesAgent] [d_Agent] NULL
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_CBDTL_SalesAgent]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[CBDTL] DROP CONSTRAINT [FK_CBDTL_SalesAgent]
GO

ALTER TABLE [dbo].[CBDTL] ADD 
	CONSTRAINT [FK_CBDTL_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE
GO

/* The following DDL will add ReallocatePurchaseByProject to IV, CS, DN, ISS */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'ReallocatePurchaseByProject')
  ALTER TABLE [dbo].[IV] 
    ADD [ReallocatePurchaseByProject] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'ReallocatePurchaseByProject')
  ALTER TABLE [dbo].[CS] 
    ADD [ReallocatePurchaseByProject] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'ReallocatePurchaseByProject')
  ALTER TABLE [dbo].[DN] 
    ADD [ReallocatePurchaseByProject] [d_Boolean] NOT NULL DEFAULT 'F'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ISS]') and name = N'ReallocatePurchaseByProject')
  ALTER TABLE [dbo].[ISS] 
    ADD [ReallocatePurchaseByProject] [d_Boolean] NOT NULL DEFAULT 'F'
GO

/* The following DDL will add ShortCode to ItemGroup */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemGroup]') and name = N'ShortCode')
  ALTER TABLE [dbo].[ItemGroup] 
    ADD [ShortCode] [nvarchar] (8) NULL
GO

/* The following DDL will add ShortCode to ItemType */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemType]') and name = N'ShortCode')
  ALTER TABLE [dbo].[ItemType] 
    ADD [ShortCode] [nvarchar] (8) NULL
GO

/* The following DDL will add Foreign Keys to StockSet */
if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_StockSet_OpenStock]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[StockSet] DROP CONSTRAINT [FK_StockSet_OpenStock]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_StockSet_CloseStock]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[StockSet] DROP CONSTRAINT [FK_StockSet_CloseStock]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_StockSet_BalanceStock]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[StockSet] DROP CONSTRAINT [FK_StockSet_BalanceStock]
GO

ALTER TABLE [dbo].[StockSet] ADD 
	CONSTRAINT [FK_StockSet_OpenStock] FOREIGN KEY 
	(
		[OpenStock]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_StockSet_CloseStock] FOREIGN KEY 
	(
		[CloseStock]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_StockSet_BalanceStock] FOREIGN KEY 
	(
		[BalanceStock]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	)
GO

/* The following DDL will add Foreign Keys to StockSet */
if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_StockPBalance_ProjNo]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[StockPBalance] DROP CONSTRAINT [FK_StockPBalance_ProjNo]
GO

if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_StockPBalance_DeptNo]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
ALTER TABLE [dbo].[StockPBalance] DROP CONSTRAINT [FK_StockPBalance_DeptNo]
GO

ALTER TABLE [dbo].[StockPBalance] ADD 
	CONSTRAINT [FK_StockPBalance_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON DELETE CASCADE ON UPDATE CASCADE ,
	CONSTRAINT [FK_StockPBalance_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON DELETE CASCADE ON UPDATE CASCADE 
GO

UPDATE REGISTRY SET RegValue = '1.0.8.9' WHERE RegID = 2
GO
:)if not exists (select * from dbo.[UserGroup] where UserGroupID = 'FINANCEMGR')
  INSERT INTO [UserGroup] VALUES ('FINANCEMGR', 'Finance Manager Group', 0);
GO

if not exists (select * from dbo.[UserGroup] where UserGroupID = 'ACCOUNTS')
  INSERT INTO [UserGroup] VALUES ('ACCOUNTS', 'Account Clerks Group', 0);
GO

if not exists (select * from dbo.[UserGroup] where UserGroupID = 'SALES')
  INSERT INTO [UserGroup] VALUES ('SALES', 'Salesman Group', 0);
GO

if not exists (select * from dbo.[UserGroup] where UserGroupID = 'PURCHASES')
  INSERT INTO [UserGroup] VALUES ('PURCHASES', 'Purchasing Group', 0);
GO

if not exists (select * from dbo.[UserGroup] where UserGroupID = 'INVMGR')
  INSERT INTO [UserGroup] VALUES ('INVMGR', 'Sales/Purchase/Stock Manager Group', 0);
GO

if not exists (select * from dbo.[UserGroup] where UserGroupID = 'STOCKS')
  INSERT INTO [UserGroup] VALUES ('STOCKS', 'Stock Clerk Group', 0);
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserDocNoFormat]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[UserDocNoFormat]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TemporaryCredit]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[TemporaryCredit]
GO

CREATE TABLE [dbo].[TemporaryCredit] (
	[AccNo] [d_AccNo] NOT NULL,
	[FromDate] [DateTime] NOT NULL,
	[ToDate] [DateTime] NOT NULL,
	[CreditLimit] [d_Money] NULL,
	[OverdueLimit] [d_Money] NULL,
	[Remark] [d_Remark] NULL,
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[TemporaryCredit] WITH NOCHECK ADD 
	CONSTRAINT [PK_TemporaryCredit] PRIMARY KEY  CLUSTERED 
	(
		[AccNo],
		[FromDate],
		[ToDate]
	)  ON [PRIMARY] 
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DocNoFormatUsers]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[DocNoFormatUsers]
GO

CREATE TABLE [dbo].[DocNoFormatUsers] (
	[Name] [d_DocNoFormatName] NOT NULL,
	[UserID] [d_UserID] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DocNoFormatAccNo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[DocNoFormatAccNo]
GO

CREATE TABLE [dbo].[DocNoFormatAccNo] (
	[Name] [d_DocNoFormatName] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PriceCategory]
  ADD [DiscountPercent] [d_Percent] NULL,
      [DetailDiscount] [d_Discount] NULL
GO
      
ALTER TABLE [dbo].[ItemPrice]
  ADD [FixedDetailDiscount] [d_Discount] NULL,
	  [DetailDiscount1] [d_Discount] NULL,
      [DetailDiscount2] [d_Discount] NULL,
      [DetailDiscount3] [d_Discount] NULL,
      [DetailDiscount4] [d_Discount] NULL,
      [FOCLevel] [d_Qty] NULL,
      [FOCQty] [d_Qty] NULL,
      [BonusPointQty] [d_Qty] NULL,
      [BonusPoint] [int] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Package]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[Package]
GO

CREATE TABLE [dbo].[Package] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Description] [nvarchar] (80) NULL,
	[IsActive] [d_Boolean] NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PackageDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[PackageDTL]
GO

CREATE TABLE [dbo].[PackageDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[UOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[TaxType] [d_TaxType] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PackageDTL] ADD 
	CONSTRAINT [FK_PackageDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PackageDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PackageDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PackageDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AutoPrice]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[AutoPrice]
GO

CREATE TABLE [dbo].[AutoPrice] (
	[AutoPriceKey] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Seq] [int] NOT NULL,
	[AutoPriceType] [nvarchar] (10) NOT NULL,
	[Name] [nvarchar] (60) NOT NULL,
	[ForSale] [d_Boolean] NOT NULL,
	[Enable] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (1, 'LastIV', 'Use Last Invoice/Cash Sale Price', 'T', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (2, 'LastSO', 'Use Last Sales Order Price', 'T', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (3, 'LastQT', 'Use Last Quotation Price', 'T', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (4, 'PriceBook', 'Use Price Book', 'T', 'T');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (1, 'LastPI', 'Use Last Purchase Invoice/Cash Purchase Price', 'F', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (2, 'LastPO', 'Use Last Purchase Order Price', 'F', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (3, 'PriceBook', 'Use Price Book', 'F', 'F');

EXEC sp_addtype N'd_FRRowType', N'char (1)'
GO

/* d_FRRowType defines the following value for Profit & Loss Statement
   'A' - Account Type
   'N' - Net Profit
   'S' - Summary Total
*/
CREATE TABLE [dbo].[PLFormat] (
	[AutoKey] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Seq] [int] NOT NULL,
	[RowType] [d_FRRowType] NOT NULL,
	[AccType] [d_AccType] NULL,
	[Description] [d_AccDescription] NULL,
	[CreditAsPositive] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

/* d_FRRowType defines the following value for Balance Sheet Statement
   'A' - Account Type
   'S' - Summary Total
   'N' - Net Current Asset
   'F' - Financed By
*/
CREATE TABLE [dbo].[BSFormat] (
	[AutoKey] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Seq] [int] NOT NULL,
	[RowType] [d_FRRowType] NOT NULL,
	[AccType] [d_AccType] NULL,
	[Description] [d_AccDescription] NULL,
	[CreditAsPositive] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PLFormat] WITH NOCHECK ADD 
	CONSTRAINT [FK_PLFormat_AccType] FOREIGN KEY 
	(
		[AccType]
	) REFERENCES [dbo].[AccType] (
		[AccType]
	) ON UPDATE CASCADE 
GO

ALTER TABLE [dbo].[BSFormat] WITH NOCHECK ADD 
	CONSTRAINT [FK_BSFormat_AccType] FOREIGN KEY 
	(
		[AccType]
	) REFERENCES [dbo].[AccType] (
		[AccType]
	) ON UPDATE CASCADE 
GO

/* The following predefined value is for standard Profit & Loss Statement */
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (1, 'A', 'SL', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (2, 'A', 'SA', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (3, 'A', 'CO', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (4, 'S', NULL, 'GROSS PROFIT/(LOSS)', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (5, 'A', 'OI', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (6, 'A', 'EP', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (7, 'N', NULL, 'NET PROFIT/(LOSS)', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (8, 'A', 'TX', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (9, 'S', NULL, 'NET PROFIT/(LOSS) AFTER TAXATION', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (10, 'A', 'EI', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (11, 'A', 'AP', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (12, 'S', NULL, 'NET PROFIT/(LOSS) AFTER APPROPRIATION', 'T');

/* The following predefined value is for standard Balance Sheet Statement */
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (1, 'A', 'FA', '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (2, 'A', 'OA', '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (3, 'A', 'CA', '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (4, 'A', 'CL', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (5, 'N', NULL, 'NET CURRENT ASSETS', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (6, 'S', NULL, '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (7, 'F', NULL, 'FINANCED BY', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (8, 'A', 'CP', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (9, 'A', 'RE', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (10, 'A', 'LL', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (11, 'A', 'OL', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (12, 'S', NULL, '', 'T');

UPDATE REGISTRY SET RegValue = '1.0.1.0' WHERE RegID = 2
GO
�/* To support Direct Cash Flow Statement Statement */
ALTER TABLE [dbo].[GLMast]
  ADD [CashFlowCategory] char(1) NULL DEFAULT 'O'
GO
      
/* To support adjustable sequence of Profit & Loss Statement and Balance Sheet Statement */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AccGroup]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[AccGroup]
GO

CREATE TABLE [dbo].[AccGroup] (
 [Seq] [int] NOT NULL,
 [AccType] [d_AccType] NOT NULL PRIMARY KEY NONCLUSTERED,
 [NormalBalance] char(1) NOT NULL,
 [Group] char(2) NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[AccGroup] ADD 
	CONSTRAINT [FK_AccGroup_AccType] FOREIGN KEY 
	(
		[AccType]
	) REFERENCES [dbo].[AccType] (
		[AccType]
	) ON UPDATE CASCADE
GO

INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (1, 'SL', 'C', 'GP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (2, 'SA', 'D', 'GP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (3, 'CO', 'D', 'GP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (4, 'OI', 'C', 'NP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (5, 'EP', 'D', 'NP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (6, 'TX', 'D', 'TX');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (7, 'EI', 'C', 'AP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (8, 'AP', 'D', 'AP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (1, 'FA', 'D', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (2, 'OA', 'D', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (3, 'CA', 'D', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (4, 'CL', 'C', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (5, 'CP', 'C', 'FN');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (6, 'RE', 'C', 'FN');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (7, 'LL', 'C', 'FN');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (8, 'OL', 'C', 'FN');

/* To support Remote Credit Control Module */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CreditControlSync]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[CreditControlSync]
GO

CREATE TABLE [dbo].[CreditControlSync] (
	[DocKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[CompanyName] [d_AccDescription] NULL,
	[CreditLimit] [d_Money] NULL,
	[OverdueLimit] [d_Money] NULL,
	[CurrentCredit] [d_Money] NULL,
	[CurrentOverdue] [d_Money] NULL,
	[OverdueDetail] [ntext] NULL,
	[Action] char(1) NULL,
) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.2.0' WHERE RegID = 2
GO
_/* To support new password */
ALTER TABLE Users
ALTER COLUMN Passwd [varchar] (112) NULL
GO

/* Set all users password to ADMIN */
UPDATE Users
SET Passwd='SUErIlpvbDtocWdEZXZ6dw==YOS3vbd6aQ8SswMUTto7fYmVYYhSyfOxtAisSMLHvfAMzvnlr62HlTTjUS1X/NLdEBk2S7IxU3Xho9IkU1oCdA=='

/* To support Remote Credit Control Module */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CreditControlSync]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[CreditControlSync]
GO

CREATE TABLE [dbo].[CreditControlSync] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[CompanyName] [d_AccDescription] NULL,
	[CreditLimit] [d_Money] NULL,
	[OverdueLimit] [d_Money] NULL,
	[CurrentCredit] [d_Money] NULL,
	[CurrentOverdue] [d_Money] NULL,
	[OverdueDetail] [ntext] NULL,
	[Action] char(1) NULL,
) ON [PRIMARY]
GO

/* Update This Year Profit and Loss to Retained Earning special account type */
UPDATE GLMAST
SET SpecialAccType='SRE' WHERE SpecialAccType='STP'
GO

/* Update A/R C/N Entry Type to Sales Entry */
UPDATE Journal
Set EntryType='2' WHERE EntryType='3'
GO

/* Update Old A/P Invoice or D/N Entry Type to Purchase Entry */
UPDATE Journal
Set EntryType='3' WHERE EntryType='4'
GO

/* Update A/P C/N Entry Type to Purchase Entry */
UPDATE Journal
Set EntryType='3' WHERE EntryType='5'
GO

/* To support Next Cheque No */
ALTER TABLE [dbo].[PaymentMethod]
  ADD [NextChequeNo] [d_ChequeNo] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.3.0' WHERE RegID = 2
GO
D/* To support 12 characters of remark */
ALTER TABLE [Profile]
ALTER COLUMN [Remark] [nvarchar] (12) NULL
GO

/* To support Columns Lock in Sales and Purchase Document Entry */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ColumnLock]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[ColumnLock]
GO

/* DtlType must be either '0' - Normal Item, '1' - Partial Transfer Item, '2' - Full Transfer Detail Item, '3' - Full Transfer One Document One Detail Item, '4' - Full Transfer All Document One Detail Item */
CREATE TABLE [dbo].[ColumnLock] (
	[DocType] [d_DocType] NOT NULL,
	[DtlType] [d_DtlType] NOT NULL,
	[Indent] [d_Boolean] NOT NULL,
	[FontStyle] [d_Boolean] NOT NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Boolean] NOT NULL,
	[Location] [d_Boolean] NOT NULL,
	[BatchNo] [d_Boolean] NOT NULL,
	[Description] [d_Boolean] NOT NULL,
	[FurtherDescription] [d_Boolean] NOT NULL,
	[YourPONo] [d_Boolean] NOT NULL,
	[YourPODate] [d_Boolean] NOT NULL,
	[YourDONo] [d_Boolean] NOT NULL,
	[YourDODate] [d_Boolean] NOT NULL,
	[OurPONo] [d_Boolean] NOT NULL,
	[OurPODate] [d_Boolean] NOT NULL,
	[DeliveryDate] [d_Boolean] NOT NULL,
	[PostToStockDate] [d_Boolean] NOT NULL,
	[ProjNo] [d_Boolean] NOT NULL,
	[DeptNo] [d_Boolean] NOT NULL,
	[Qty] [d_Boolean] NOT NULL,
	[FOCQty] [d_Boolean] NOT NULL,
	[UnitPrice] [d_Boolean] NOT NULL,
	[Discount] [d_Boolean] NOT NULL,
	[TaxType] [d_Boolean] NOT NULL,
	[Tax] [d_Boolean] NOT NULL,
	[SubTotal] [d_Boolean] NOT NULL,
	[BonusPoint] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[ForConsignment] [d_Boolean] NOT NULL,
	[AccNo] [d_Boolean] NOT NULL,
	[ForeignCharges] [d_Boolean] NOT NULL,
	[LocalCharges] [d_Boolean] NOT NULL,
	[Duty] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ColumnLock] WITH NOCHECK ADD 
	CONSTRAINT [PK_ColumnLock] PRIMARY KEY  CLUSTERED 
	(
		[DocType],
		[DtlType]
	)  ON [PRIMARY]
GO

INSERT INTO [ColumnLock] VALUES ('QT', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('SO', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('SO', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('SO', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('SO', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('SO', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DO', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DO', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DO', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DO', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DO', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '5', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'T', 'T', 'T', 'T', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CS', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CS', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CS', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CS', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CS', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CN', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CN', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CN', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CN', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CN', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DN', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XS', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XS', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XS', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XS', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');

INSERT INTO [ColumnLock] VALUES ('RQ', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PO', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PO', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PO', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PO', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PO', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GR', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PI', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PI', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PI', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PI', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PI', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CP', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CP', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CP', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CP', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CP', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PR', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XP', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XP', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XP', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XP', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GT', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GT', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GT', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GT', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
GO

/* To support new Budget */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Budget]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[Budget]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BudgetPBalance]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[BudgetPBalance]
GO

EXEC sp_addtype N'd_BudgetName', N'nvarchar (20)'
GO

CREATE TABLE [dbo].[Budget] (
	[BudgetKey] [int] NOT NULL PRIMARY KEY NONCLUSTERED,
	[BudgetName] [d_BudgetName] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BudgetPBalance] (
	[BudgetKey] [int] NOT NULL,
	[PeriodNo] [d_PeriodNo] NOT NULL,  
	[AccNO] [d_AccNo] NOT NULL,  
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Amount] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE INDEX [IX_BudgetPBalance] ON [dbo].[BudgetPBalance]([BudgetKey], [PeriodNo], [AccNo], [ProjNo], [DeptNo]) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.4.0' WHERE RegID = 2
GO
:if not exists (select * from [Footer] where FooterName = 'Sales Footer 1')
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Sales Footer 1', 'T', 'T', 'T', 'F', 'F', 2, 'F');
GO

if not exists (select * from [Footer] where FooterName = 'Sales Footer 2')
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Sales Footer 2', 'T', 'T', 'T', 'F', 'F', 2, 'F');
GO

if not exists (select * from [Footer] where FooterName = 'Sales Footer 3')
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Sales Footer 3', 'T', 'T', 'T', 'F', 'F', 2, 'F');
GO

if not exists (select * from [Footer] where FooterName = 'Purchase Footer 1')
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Purchase Footer 1', 'T', 'T', 'T', 'F', 'F', 2, 'F');
GO

if not exists (select * from [Footer] where FooterName = 'Purchase Footer 2')
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Purchase Footer 2', 'T', 'T', 'T', 'F', 'F', 2, 'F');
GO

if not exists (select * from [Footer] where FooterName = 'Purchase Footer 3')
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Purchase Footer 3', 'T', 'T', 'T', 'F', 'F', 2, 'F');
GO

UPDATE REGISTRY SET RegValue = '1.0.5.0' WHERE RegID = 2
GO
Aif not exists (select * from [ChangeCount] where TableName = 'ARInvoice')
INSERT INTO [ChangeCount] VALUES ('ARInvoice', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'ARDN')
INSERT INTO [ChangeCount] VALUES ('ARDN', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'ARCN')
INSERT INTO [ChangeCount] VALUES ('ARCN', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'ARPayment')
INSERT INTO [ChangeCount] VALUES ('ARPayment', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'ARRefund')
INSERT INTO [ChangeCount] VALUES ('ARRefund', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'ARDeposit')
INSERT INTO [ChangeCount] VALUES ('ARDeposit', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'ARAPContra')
INSERT INTO [ChangeCount] VALUES ('ARAPContra', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'APInvoice')
INSERT INTO [ChangeCount] VALUES ('APInvoice', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'APDN')
INSERT INTO [ChangeCount] VALUES ('APDN', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'APCN')
INSERT INTO [ChangeCount] VALUES ('APCN', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'APPayment')
INSERT INTO [ChangeCount] VALUES ('APPayment', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'APRefund')
INSERT INTO [ChangeCount] VALUES ('APRefund', 0);
GO

if not exists (select * from [ChangeCount] where TableName = 'APDeposit')
INSERT INTO [ChangeCount] VALUES ('APDeposit', 0);
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateARInvoiceChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateARInvoiceChangeCount]
GO

CREATE TRIGGER UpdateARInvoiceChangeCount ON ARInvoice
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARInvoice'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateARDNChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateARDNChangeCount]
GO

CREATE TRIGGER UpdateARDNChangeCount ON ARDN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARDN'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateARCNChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateARCNChangeCount]
GO

CREATE TRIGGER UpdateARCNChangeCount ON ARCN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARCN'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateARPaymentChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateARPaymentChangeCount]
GO

CREATE TRIGGER UpdateARPaymentChangeCount ON ARPayment
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARPayment'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateARRefundChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateARRefundChangeCount]
GO

CREATE TRIGGER UpdateARRefundChangeCount ON ARRefund
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARRefund'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateARDepositChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateARDepositChangeCount]
GO

CREATE TRIGGER UpdateARDepositChangeCount ON ARDeposit
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARDeposit'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateARAPContraChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateARAPContraChangeCount]
GO

CREATE TRIGGER UpdateARAPContraChangeCount ON ARAPContra
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARAPContra'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateAPInvoiceChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateAPInvoiceChangeCount]
GO

CREATE TRIGGER UpdateAPInvoiceChangeCount ON APInvoice
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APInvoice'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateAPDNChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateAPDNChangeCount]
GO

CREATE TRIGGER UpdateAPDNChangeCount ON APDN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APDN'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateAPCNChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateAPCNChangeCount]
GO

CREATE TRIGGER UpdateAPCNChangeCount ON APCN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APCN'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateAPPaymentChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateAPPaymentChangeCount]
GO

CREATE TRIGGER UpdateAPPaymentChangeCount ON APPayment
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APPayment'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateAPRefundChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateAPRefundChangeCount]
GO

CREATE TRIGGER UpdateAPRefundChangeCount ON APRefund
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APRefund'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateAPDepositChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateAPDepositChangeCount]
GO

CREATE TRIGGER UpdateAPDepositChangeCount ON APDeposit
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APDeposit'
SET NOCOUNT OFF
GO

ALTER TABLE [dbo].[QTDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE QTDTL
SET UserUOM=UOM
GO

UPDATE QTDTL
SET SmallestUnitPrice=SubTotal/IsNull(SmallestQty, 0)
WHERE IsNull(SmallestQty, 0)<>0
GO

UPDATE QTDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)=0
GO

ALTER TABLE [dbo].[SODTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE SODTL
SET UserUOM=UOM
GO

UPDATE SODTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE SODTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[DODTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE DODTL
SET UserUOM=UOM
GO

UPDATE DODTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE DODTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[IVDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE IVDTL
SET UserUOM=UOM
GO

UPDATE IVDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE IVDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[CSDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE CSDTL
SET UserUOM=UOM
GO

UPDATE CSDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE CSDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[DNDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE DNDTL
SET UserUOM=UOM
GO

UPDATE DNDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE DNDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[CNDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE CNDTL
SET UserUOM=UOM
GO

UPDATE CNDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE CNDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[XSDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE XSDTL
SET UserUOM=UOM
GO

UPDATE XSDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE XSDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[DRDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE DRDTL
SET UserUOM=UOM
GO

UPDATE DRDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE DRDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[RQDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE RQDTL
SET UserUOM=UOM
GO

UPDATE RQDTL
SET SmallestUnitPrice=SubTotal/IsNull(SmallestQty, 0)
WHERE IsNull(SmallestQty, 0)<>0
GO

UPDATE RQDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)=0
GO

ALTER TABLE [dbo].[PODTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE PODTL
SET UserUOM=UOM
GO

UPDATE PODTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE PODTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[GRDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE GRDTL
SET UserUOM=UOM
GO

UPDATE GRDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE GRDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[PIDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE PIDTL
SET UserUOM=UOM
GO

UPDATE PIDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE PIDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[CPDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE CPDTL
SET UserUOM=UOM
GO

UPDATE CPDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE CPDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[PRDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE PRDTL
SET UserUOM=UOM
GO

UPDATE PRDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE PRDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[XPDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE XPDTL
SET UserUOM=UOM
GO

UPDATE XPDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE XPDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

ALTER TABLE [dbo].[GTDTL]
  ADD [SmallestUnitPrice] [d_Price] NULL,
	  [UserUOM] [d_UOM] NULL
GO

UPDATE GTDTL
SET UserUOM=UOM
GO

UPDATE GTDTL
SET SmallestUnitPrice=SubTotal/(IsNull(SmallestQty, 0)+IsNull(FOCQty, 0))
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)<>0
GO

UPDATE GTDTL
SET SmallestUnitPrice=UnitPrice
WHERE IsNull(SmallestQty, 0)+IsNull(FOCQty, 0)=0
GO

/* To support rename of Remark field */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[RemarkName]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[RemarkName]
GO

CREATE TABLE [dbo].[RemarkName] (
	[DocType] [d_DocType] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Remark1Name] [nvarchar] (30) NULL,
	[Remark2Name] [nvarchar] (30) NULL,
	[Remark3Name] [nvarchar] (30) NULL,
	[Remark4Name] [nvarchar] (30) NULL,
	[Remark1MRU] [d_Boolean] NOT NULL ,
	[Remark2MRU] [d_Boolean] NOT NULL ,
	[Remark3MRU] [d_Boolean] NOT NULL ,
	[Remark4MRU] [d_Boolean] NOT NULL ,
) ON [PRIMARY]
GO

INSERT INTO [RemarkName] VALUES ('QT', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('DO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('IV', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CS', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('DN', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CN', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('XS', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('DR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('RQ', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('GR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PI', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CP', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('XP', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('GT', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CG', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SG', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('ST', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SA', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SI', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('WO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('AS', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
GO

UPDATE REGISTRY SET RegValue = '1.0.6.0' WHERE RegID = 2
GO
�/* To support 60 characters of ReportType in Report table */
ALTER TABLE [Report]
ALTER COLUMN [ReportType] [nvarchar] (60) NULL
GO

/* To support 100 characters of ReportName in DefaultReport table */
ALTER TABLE [DefaultReport]
ALTER COLUMN [ReportName] [nvarchar] (100) NOT NULL
GO

/* To support Fiscal Year Maintenance */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FiscalYear]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[FiscalYear]
GO

CREATE TABLE [dbo].[FiscalYear] (
	[FiscalYearName] [nvarchar] (20) NOT NULL PRIMARY KEY NONCLUSTERED,
	[FromDate] [DateTime] NOT NULL,
	[ToDate] [DateTime] NOT NULL ,
	[IsActive] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

/* To support Period Lock */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PeriodLock]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[PeriodLock]
GO

CREATE TABLE [dbo].[PeriodLock] (
	[PeriodNo] [int] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Lock] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OBDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[OBDTL]
GO

/* To support OBDTL used in A/R and A/P posting to opening balance */
CREATE TABLE [dbo].[OBDTL] (
	[OBDtlKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[PeriodNo] [d_PeriodNo] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Amount] [d_Money] NULL,
	[HomeAmount] [d_Money] NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

/* To support Bonus Point for Debtor's Contact */
ALTER TABLE [Contact]
ADD [OpeningBonusPoint] [int] NULL
GO

ALTER TABLE [IV]
ADD [BonusPointContact] [d_Contact] NULL
GO

ALTER TABLE [CS]
ADD [BonusPointContact] [d_Contact] NULL
GO

ALTER TABLE [CN]
ADD [BonusPointContact] [d_Contact] NULL
GO

ALTER TABLE [DN]
ADD [BonusPointContact] [d_Contact] NULL
GO

ALTER TABLE [BonusPointTrans]
ADD [BonusPointContact] [d_Contact] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.7.0' WHERE RegID = 2
GO
�/* The following will drop BankSlipNo column in BankTrans table, but will add a BankSlipDocKey column in BankTrans table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BankTrans]') and name = N'BankSlipNo')
  ALTER TABLE [dbo].[BankTrans] 
	DROP COLUMN [BankSlipNo]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BankTrans]') and name = N'BankSlipDocKey')
  ALTER TABLE [dbo].[BankTrans] 
	ADD [BankSlipDocKey] [bigint] NULL
GO

/* The following will add BankSlip table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BankSlip]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[BankSlip](
		[DocKey] [bigint] NOT NULL,
		[DocNo] [d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[BankAccNo] [d_AccNo] NOT NULL,
	 CONSTRAINT [PK_BankSlip_DocKey] PRIMARY KEY CLUSTERED 
	(
		[DocKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from [dbo].[DocNoFormat] where DocType = 'KS')
  INSERT INTO [dbo].[DocNoFormat] (Name, DocType, NextNumber, Format, Sample, IsDefault, OneMonthOneSet) VALUES ('Bank Slip Default', 'KS', 1, 'KS-<000000>', 'KS-000001', 'T', 'F')
GO
�
/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* The following DDL will modify Sales and Purchase Tables to add in YourPONo and YourPODate to master table */
INSERT @ListTable VALUES('RQ', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'AnalysisNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'LocalAnalysisNetTotal', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(200)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO
�BIF NOT EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'd_Price2' AND ss.name = N'dbo')
CREATE TYPE [dbo].[d_Price2] FROM [decimal](25, 8) NULL
GO

IF NOT EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'd_Cost2' AND ss.name = N'dbo')
CREATE TYPE [dbo].[d_Cost2] FROM [decimal](25, 8) NULL
GO

IF NOT EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'd_CurrencyRate2' AND ss.name = N'dbo')
CREATE TYPE [dbo].[d_CurrencyRate2] FROM [decimal](19, 12) NULL
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

/* The following DDL will modify Sales and Purchase Tables to add in YourPONo and YourPODate to master table */
if exists(select 1 from dbo.sysobjects where id = object_id(N'[dbo].[IPHIST]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) INSERT @ListTable VALUES('IPHIST', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PastYearPriceHistory', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemUOM', 'Price', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemUOM', 'MinSalePrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemUOM', 'MaxSalePrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemUOM', 'MinPurchasePrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemUOM', 'MaxPurchasePrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemLocationPrice', 'Price', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemCurrencyPrice', 'Price', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('Package', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PackageDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PackageDTL', 'SubTotal', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PriceBookRule', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PWPDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemPrice', 'FixedPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemPrice', 'Price1', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemPrice', 'Price2', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemPrice', 'Price3', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ItemPrice', 'Price4', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ConsignmentDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ConsignmentDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ConsignmentReturnDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('ConsignmentReturnDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PurchaseConsignmentDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PurchaseConsignmentDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PurchaseConsignmentReturnDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PurchaseConsignmentReturnDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('QTDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('QTDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('SODTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('SODTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('DODTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('DODTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('IVDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('IVDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('CSDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('CSDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('DNDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('DNDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('CNDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('CNDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('DRDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('DRDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('XSDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('XSDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('RQDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('RQDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PODTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PODTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('GRDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('GRDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PIDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PIDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('CPDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('CPDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PRDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('PRDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('GTDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('GTDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('XPDTL', 'UnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('XPDTL', 'SmallestUnitPrice', '[dbo].[d_Price2] NULL')
INSERT @ListTable VALUES('DRProcessing', 'UnitPrice', '[dbo].[d_Price2] NULL')

INSERT @ListTable VALUES('WOFFDTL', 'UnitCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('XFERDTL', 'UnitCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ADJDTL', 'UnitCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ISSDTL', 'UnitCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('RCVDTL', 'UnitCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('DR', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('DRDTL', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('DRDTL', 'LocalFOCTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('CN', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('CNDTL', 'UnitCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('CNDTL', 'FOCUnitCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('DN', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('DNDTL', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('DNDTL', 'LocalFOCTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('IV', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('IVDTL', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('IVDTL', 'LocalFOCTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('CS', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('CSDTL', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('CSDTL', 'LocalFOCTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('DO', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('DODTL', 'LocalTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('DODTL', 'LocalFOCTotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ItemUOM', 'Cost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ItemUOM', 'RealCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ItemUOM', 'MostRecentlyCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ItemBatchBalQty', 'MostRecentlyCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ItemBOM', 'OverheadCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('FIFOCost', 'Cost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('StockDTL', 'Cost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('StockDTL', 'AdjustedCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('StockDTL', 'TotalCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('StockDTL', 'InputCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('UTDStockCostDTL', 'Cost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ASMDTL', 'ItemCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ASMOrderDTL', 'ItemCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('UTDStockCost', 'UTDCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('UTDStockCost', 'AdjustedCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ItemOpening', 'Cost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('BOMOptionalDTL', 'OverheadCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('UpdateCostDTL', 'OldCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('UpdateCostDTL', 'NewCost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('ItemCostHistory', 'Cost', '[dbo].[d_Cost2] NULL')
INSERT @ListTable VALUES('Item', 'AssemblyCost', '[dbo].[d_Cost2] NULL')

INSERT @ListTable VALUES('Currency', 'BankBuyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('Currency', 'BankSellRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('CurrRate', 'BankBuyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('CurrRate', 'BankSellRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('AssetDisposal', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('GLDTL', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('GLDTL', 'ToHomeRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('JE', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('JEDTL', 'ToAccountRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('CB', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('CBDTL', 'ToAccountRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('CBPaymentDTL', 'ToBankRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARInvoice', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARInvoice', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('ARInvoiceDTL', 'ToAccountRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARDN', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARDN', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('ARDNDTL', 'ToAccountRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARCN', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARCN', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('ARCNDTL', 'ToAccountRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARPayment', 'ToDebtorRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARPayment', 'ToHomeRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARPayment', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('ARPaymentDTL', 'ToBankRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARRefund', 'ToDebtorRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARRefund', 'ToHomeRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARRefund', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('ARRefundDTL', 'ToBankRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARDeposit', 'ToDepositRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARDeposit', 'ToHomeRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARDepositPaymentDTL', 'ToBankRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARDepositRefundPaymentDTL', 'ToBankRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARAPContra', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('ARAPContra', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('APInvoice', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APInvoice', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('APInvoiceDTL', 'ToAccountRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APDN', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APDN', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('APDNDTL', 'ToAccountRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APCN', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APCN', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('APCNDTL', 'ToAccountRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APPayment', 'ToCreditorRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APPayment', 'ToHomeRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APPayment', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('APPaymentDTL', 'ToBankRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APRefund', 'ToCreditorRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APRefund', 'ToHomeRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APRefund', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('APRefundDTL', 'ToBankRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APDeposit', 'ToDepositRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APDeposit', 'ToHomeRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APDepositPaymentDTL', 'ToBankRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('APDepositRefundPaymentDTL', 'ToBankRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('FCRevalueDocument', 'RevalueRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('FCRevalueDocument', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('FCRevalueLock', 'PrevRevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('FCRevalueLock', 'RevalueRate', '[dbo].[d_CurrencyRate2] NULL')
INSERT @ListTable VALUES('FCRevalueRate', 'BankBuyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('FCRevalueRate', 'BankSellRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('QT', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('SO', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('DO', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('IV', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('CS', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('CN', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('DN', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('DR', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('XS', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('RQ', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('PO', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('GR', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('PI', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('CP', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('PR', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('GT', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')
INSERT @ListTable VALUES('XP', 'CurrencyRate', '[dbo].[d_CurrencyRate2] NOT NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') alter table [dbo].[' + @tableName + '] alter column [' + @colName + '] ' + @colType
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO
'/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* The following DDL will modify Sales and Purchase Tables to add in YourPONo and YourPODate to master table */
INSERT @ListTable VALUES('QT', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('QTDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('SO', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('SODTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DO', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DODTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('IV', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('IVDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CS', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CSDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CN', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CNDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('XS', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('XSDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DR', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DRDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DN', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('DNDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('RQ', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('RQDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PO', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PODTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('GR', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('GRDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PI', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PIDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CP', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CPDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PR', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('PRDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('XP', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('XPDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('GT', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('GTDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('ASMOrder', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ASMOrderDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ASM', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ASMDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('ADJ', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ADJDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('ISS', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ISSDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('RCV', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('RCVDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('XFER', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('XFERDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('WOFF', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('WOFFDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('SerialNoTrans', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 
INSERT @ListTable VALUES('ItemOpening', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A') 

DECLARE @sql NVARCHAR(200)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

�if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UnrealizedGainLoss]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[UnrealizedGainLoss](
	[UnrealizedGainLossKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[UnrealizedGainAccount] [d_AccNo] NOT NULL,
	[UnrealizedLossAccount] [d_AccNo] NOT NULL,
	[GainLossJournalType] [d_JournalType] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Note] [ntext] NULL,
	[TotalGainLoss] [d_Money] NOT NULL,
	[JEKey] [bigint] NULL,
	[PrintCount] [smallint] NULL,
	[RefCount] [bigint] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLoss_GainLossJournalType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLoss] DROP CONSTRAINT [FK_UnrealizedGainLoss_GainLossJournalType]
GO
ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_GainLossJournalType] FOREIGN KEY([GainLossJournalType])
REFERENCES [dbo].[Journal] ([JournalType])
GO
ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_GainLossJournalType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLoss_UnrealizedGainAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLoss] DROP CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedGainAccount]
GO
ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedGainAccount] FOREIGN KEY([UnrealizedGainAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedGainAccount]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLoss_UnrealizedLossAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLoss] DROP CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedLossAccount]
GO
ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedLossAccount] FOREIGN KEY([UnrealizedLossAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedLossAccount]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UnrealizedGainLossDocument]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[UnrealizedGainLossDocument](
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[UnrealizedGainLossKey] [bigint] NOT NULL,
	[Category] [varchar](2) NOT NULL,
	[DocType] [d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DocNo] [d_DocNo] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[CompanyName] [d_AccDescription] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[NewRate] [d_CurrencyRate] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[Outstanding] [d_Money] NOT NULL,
	[GainLoss] [d_Money] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossDocument_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossDocument] DROP CONSTRAINT [FK_UnrealizedGainLossDocument_AccNo]
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossDocument_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument] CHECK CONSTRAINT [FK_UnrealizedGainLossDocument_AccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossDocument_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossDocument] DROP CONSTRAINT [FK_UnrealizedGainLossDocument_CurrencyCode]
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossDocument_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument] CHECK CONSTRAINT [FK_UnrealizedGainLossDocument_CurrencyCode]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UnrealizedGainLossRate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[UnrealizedGainLossRate](
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[UnrealizedGainLossKey] [bigint] NOT NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UnrealizedGainLossRate_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UnrealizedGainLossRate] DROP CONSTRAINT [FK_UnrealizedGainLossRate_CurrencyCode]
GO
ALTER TABLE [dbo].[UnrealizedGainLossRate]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossRate_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UnrealizedGainLossRate] CHECK CONSTRAINT [FK_UnrealizedGainLossRate_CurrencyCode]
GO
h/* The following will add UnitPrice, Discount, DiscountAmt, SubTotal, Lost to CSGNDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'UnitPrice')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [UnitPrice] [d_Price] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'Discount')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [Discount] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'DiscountAmt')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [DiscountAmt] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'SubTotal')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [SubTotal] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNDTL]') and name = N'Lost')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [Lost] [d_Boolean] NULL DEFAULT 'F'
GO

/* The following will add ReferAdjDocKey to CSGN table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGN]') and name = N'ReferAdjDocKey')
  ALTER TABLE [dbo].[CSGN] 
	ADD [ReferAdjDocKey] [bigint] NULL
GO

/* The following will add UnitPrice, Discount, DiscountAmt, SubTotal, Lost to SupplierCSGNDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'UnitPrice')
  ALTER TABLE [dbo].[SupplierCSGNDTL] 
	ADD [UnitPrice] [d_Price] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'Discount')
  ALTER TABLE [dbo].[SupplierCSGNDTL] 
	ADD [Discount] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'DiscountAmt')
  ALTER TABLE [dbo].[SupplierCSGNDTL] 
	ADD [DiscountAmt] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SupplierCSGNDTL]') and name = N'SubTotal')
  ALTER TABLE [dbo].[CSGNDTL] 
	ADD [SubTotal] [d_Money] NULL
GO
��EXEC sp_addtype N'd_DocNoFormatName', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_Money', N'decimal(19,2)'
GO

EXEC sp_addtype N'd_Number', N'decimal(25, 8)'
GO

EXEC sp_addtype N'd_Qty', N'decimal(25, 8)'
GO

EXEC sp_addtype N'd_Price', N'decimal(25, 8)'
GO

EXEC sp_addtype N'd_Cost', N'decimal(25, 8)'
GO

EXEC sp_addtype N'd_CurrencyRate', N'decimal(19, 12)'
GO

EXEC sp_addtype N'd_Percent', N'decimal(18,6)'
GO

EXEC sp_addtype N'd_Boolean', N'char (1)'
GO

EXEC sp_addtype N'd_Project', N'nvarchar (10)'
GO

EXEC sp_addtype N'd_Dept', N'nvarchar (10)'
GO

EXEC sp_addtype N'd_AccNo', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_AccDescription', N'nvarchar (100)'
GO

EXEC sp_addtype N'd_BranchCode', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_BudgetName', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_Location', N'nvarchar (8)'
GO

EXEC sp_addtype N'd_DocNo', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_Contact', N'nvarchar (40)'
GO

EXEC sp_addtype N'd_Agent', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_AreaCode', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_DebtorType', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_CreditorType', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_CNType', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_DNType', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_UserID', N'nvarchar (10)'
GO

EXEC sp_addtype N'd_Remark', N'nvarchar (40)'
GO

EXEC sp_addtype N'd_Phone', N'nvarchar (25)'
GO

EXEC sp_addtype N'd_EmailAddress', N'nvarchar (80)'
GO

EXEC sp_addtype N'd_IMAddress', N'nvarchar (40)'
GO

EXEC sp_addtype N'd_DtlType', N'char (1)'
GO

EXEC sp_addtype N'd_ItemCode', N'nvarchar (30)'   
GO

EXEC sp_addtype N'd_ItemDescription', N'nvarchar (100)'
GO

EXEC sp_addtype N'd_GLDescription', N'nvarchar (100)'
GO

EXEC sp_addtype N'd_BarCode', N'nvarchar (30)'
GO

EXEC sp_addtype N'd_UOM', N'nvarchar (8)'
GO

EXEC sp_addtype N'd_Discount', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_Numbering', N'nvarchar (6)'
GO

EXEC sp_addtype N'd_Path', N'nvarchar (120)'
GO

EXEC sp_addtype N'd_Address', N'nvarchar (40)' 
GO

EXEC sp_addtype N'd_PostCode', N'nvarchar (10)' 
GO

EXEC sp_addtype N'd_DisplayTerm', N'nvarchar (30)' 
GO

EXEC sp_addtype N'd_FontStyle', N'nvarchar (8)'
GO

EXEC sp_addtype N'd_FontSize', N'decimal(6,2)'
GO

EXEC sp_addtype N'd_JournalType', N'nvarchar (10)'
GO

EXEC sp_addtype N'd_EntryType', N'varchar (1)'
GO

EXEC sp_addtype N'd_CurrencyCode', N'nvarchar (5)'
GO

EXEC sp_addtype N'd_PaymentMethod', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_PaymentBy', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_AccType', N'nvarchar (2)'
GO

EXEC sp_addtype N'd_SpecialAccType', N'varchar (3)'
GO

EXEC sp_addtype N'd_ItemGroup', N'nvarchar (8)'   
GO

EXEC sp_addtype N'd_ItemType', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_ChequeNo', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_TaxType', N'nvarchar (14)'
GO

EXEC sp_addtype N'd_SourceType', N'varchar (2)'
GO

EXEC sp_addtype N'd_PeriodNo', N'int'
GO

EXEC sp_addtype N'd_ReconTrans', N'char (1)'
GO

EXEC sp_addtype N'd_CmdID', N'varchar (60)'
GO

EXEC sp_addtype N'd_RegisterNo', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_ReconStatus', N'char (1)'
GO

EXEC sp_addtype N'd_DocType', N'varchar (2)'
GO

EXEC sp_addtype N'd_YourPONo', N'nvarchar (25)'
GO

EXEC sp_addtype N'd_BatchNo', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_SerialNo', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_FullTransferOption', N'char (1)'
GO

EXEC sp_addtype N'd_AgingOn', N'char (1)'
GO

EXEC sp_addtype N'd_StatementType', N'char (1)'
GO

EXEC sp_addtype N'd_PriceCategory', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_FieldType', N'char (1)'
GO

EXEC sp_addtype N'd_SupplyPurchase', N'char (1)'
GO

EXEC sp_addtype N'd_SalesExemptionNo', N'nvarchar (60)'
GO

EXEC sp_addtype N'd_CostingMethod', N'tinyint'
GO

EXEC sp_addtype N'd_CostType', N'tinyint'
GO

EXEC sp_addtype N'd_FRRowType', N'char (1)'
GO

CREATE TABLE [dbo].[MRU] (
	[MRUKey] [int] NOT NULL ,
	[UserID] [d_UserID] NOT NULL ,
	[MRUItems] [ntext] NULL ,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AccType] (
	[AccType] [d_AccType] NOT NULL PRIMARY KEY NONCLUSTERED ,
	[Description] [nvarchar] (40) NULL ,
	[Desc2] [nvarchar] (40) NULL ,
	[IsBSType] [d_Boolean] NOT NULL ,
	[IsSystemType] [d_Boolean] NOT NULL ,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AccPeriod] (
	[PeriodNo] [int] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Lock] [d_Boolean] NOT NULL ,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Address] (
	[Name] [nvarchar] (40) NOT NULL PRIMARY KEY NONCLUSTERED,
	[Address1] [d_Address] NULL ,
	[Address2] [d_Address] NULL ,
	[Address3] [d_Address] NULL ,
	[Address4] [d_Address] NULL ,
	[PostCode] [d_PostCode] NULL,
	[Contact] [d_Contact] NULL ,
	[Phone1] [d_Phone] NULL ,
	[Phone2] [d_Phone] NULL ,
	[Fax1] [d_Phone] NULL ,
	[Fax2] [d_Phone] NULL ,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SalesAgent] (
	[SalesAgent] [d_Agent] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL ,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Commission] (
	[SalesAgent] [d_Agent] NOT NULL, 
	[WithinDay] [smallint] NOT NULL,
	[Percentage] [d_Percent] NOT NULL, 
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PurchaseAgent] (
	[PurchaseAgent] [d_Agent] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL ,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Area] (
	[AreaCode] [d_AreaCode] NOT NULL PRIMARY KEY NONCLUSTERED ,
	[Description] [nvarchar] (40) NULL ,
	[Desc2] [nvarchar] (40) NULL ,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CURRENCY] (
	[CurrencyCode] [d_CurrencyCode] NOT NULL PRIMARY KEY NONCLUSTERED,
	[CurrencyWord] [nvarchar] (40) NULL,
	[CurrencyWord2] [nvarchar] (40) NULL,
	[CurrencySymbol] [nvarchar] (6) NULL,
	[BankBuyRate] [d_CurrencyRate] NOT NULL,
	[BankSellRate] [d_CurrencyRate] NOT NULL,
	[FCGainAccount] [d_AccNo] NULL,
	[FCLossAccount] [d_AccNo] NULL,
	[GainLossJournalType] [d_JournalType] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CurrRate] (
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[FromDate] [DateTime] NOT NULL,
	[ToDate] [DateTime] NOT NULL, 
	[BankBuyRate] [d_CurrencyRate] NOT NULL,
	[BankSellRate] [d_CurrencyRate] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Terms] (
	[DisplayTerm] [d_DisplayTerm] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Terms] [nvarchar] (30) NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AssetLink] (
	[AssetAccNo] [d_AccNo] NOT NULL,
	[AssetDeprnAccNo] [d_AccNo] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BankRecon] (
	[AccNo] [d_AccNo] NOT NULL,
	[BankStatementDate] [DateTime] NOT NULL,
	[ActualBankStatementBalance] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BankTrans] (
	[BankTransKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[SourceType] [d_SourceType] NULL, 
	[SourceKey] [bigint] NULL, 
	[DtlKey] [bigint] NULL, 
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[Description] [d_AccDescription] NULL,
	[PaymentAmt] [d_Money] NULL,
	[BankStatementDate] [DateTime] NULL,
	[BankReconStatus] [tinyint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CB] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DocType] [d_DocType] NOT NULL,
	[DealWith] [nvarchar] (80),
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[TotalPayment] [d_Money] NULL,
	[Total] [d_Money] NULL,
	[LocalTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[Note] [ntext] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CBDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL, 
	[AccNo] [d_AccNo] NULL,
	[ToAccountRate] [d_CurrencyRate] NOT NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[TaxType] [d_TaxType] NULL,
	[Description] [d_GLDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[Amount] [d_Money] NULL,
	[LocalAmount] [d_Money] NULL,
	[RCHQAmount] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CBPaymentDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL, 
	[PaymentMethod] [d_PaymentMethod] NOT NULL,
	[PaymentBy] [d_PaymentBy] NULL,
	[ToBankRate] [d_CurrencyRate] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [d_Money] NULL,
	[PaymentAmt] [d_Money] NULL,
	[IsRCHQ] [d_Boolean] NOT NULL,
	[RCHQDate] [dateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TaxType] (
	[TaxType] [d_TaxType] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Description] [nvarchar] (80) NULL, 
	[TaxRate] [d_Percent] NOT NULL, 
	[Inclusive] [d_Boolean] NOT NULL, 
	[TaxAccNo] [d_AccNo] NOT NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TaxTrans] (
	[TaxTransKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[SourceType] [d_SourceType] NOT NULL,
	[SourceKey] [bigint] NOT NULL,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[TaxType] [d_TaxType] NOT NULL,
	[SupplyPurchase] [d_SupplyPurchase] NOT NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[TaxableAccNo] [d_AccNo] NULL,
	[TaxableName] [d_AccDescription] NULL,
	[TaxableAmt] [d_Money] NULL,
	[LocalTaxableAmt] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BonusPointTrans] (
	[BonusPointTransKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[SourceType] [d_SourceType] NOT NULL,
	[SourceKey] [bigint] NOT NULL,
	[DebtorCode] [d_AccNo] NOT NULL,
	[BonusPointContact] [d_Contact] NULL,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[BonusPoint] [int] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[JE] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar] (80),
	[JournalType] [d_JournalType] NOT NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[TotalDR] [d_Money] NULL,
	[TotalCR] [d_Money] NULL,
	[Note] [ntext] NULL,
	[ExternalLink] [ntext] NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[PrintCount] [smallint] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[JEDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL, 
	[AccNo] [d_AccNo] NULL,
	[ToAccountRate] [d_CurrencyRate] NOT NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Description] [d_GLDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[DR] [d_Money] NULL,
	[CR] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[SupplyPurchase] [d_SupplyPurchase] NOT NULL,
	[TaxDR] [d_Money] NULL,
	[TaxCR] [d_Money] NULL,
	[TotalDR] [d_Money] NULL,
	[TotalCR] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GLMast] (
	[AccNo] [d_AccNo] NOT NULL PRIMARY KEY NONCLUSTERED,
	[ParentAccNo] [d_AccNo] NULL,
	[Description] [d_AccDescription] NULL,
	[Desc2] [d_AccDescription] NULL,
	[AccType] [d_AccType] NOT NULL,
	[SpecialAccType] [d_SpecialAccType] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CashFlowCategory] char(1) NULL DEFAULT 'O',
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DebtorType] (
	[DebtorType] [d_DebtorType] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL ,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CreditorType] (
	[CreditorType] [d_CreditorType] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL ,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Debtor] (
	[AccNo] [d_AccNo] NOT NULL PRIMARY KEY NONCLUSTERED,
	[CompanyName] [d_AccDescription] NULL,
	[Desc2] [d_AccDescription] NULL,
	[RegisterNo] [d_RegisterNo] NULL,
	[Address1] [d_Address] NULL,
	[Address2] [d_Address] NULL,
	[Address3] [d_Address] NULL,
	[Address4] [d_Address] NULL,
	[PostCode] [d_PostCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPostCode] [d_PostCode] NULL,
	[Attention] [nvarchar] (40) NULL,
	[Phone1] [d_Phone] NULL,
	[Phone2] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Fax2] [d_Phone] NULL,
	[AreaCode] [d_AreaCode] NULL,
	[SalesAgent] [d_Agent] NULL,
	[DebtorType] [d_DebtorType] NULL,
	[NatureOfBusiness] [nvarchar] (40) NULL,
	[WebURL] [nvarchar] (80) NULL,
	[EmailAddress] [nvarchar] (80) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[CreditLimit] [d_Money] NULL,
	[AgingOn] [d_AgingOn] NULL,
	[StatementType] [d_StatementType] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[AllowExceedCreditLimit] [d_Boolean] NOT NULL,
	[Note] [ntext] NULL,
	[ExemptNo] [nvarchar] (60) NULL,
	[ExpiryDate] [DateTime] NULL,
	[PriceCategory] [d_PriceCategory] NULL,
	[TaxType] [d_TaxType] NULL,
	[DiscountPercent] [d_Percent] NOT NULL,
	[DetailDiscount] [d_Discount] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[OverdueLimit] [d_Money],
	[HasBonusPoint] [d_Boolean] NOT NULL,
	[OpeningBonusPoint] [int] NULL,
	[QTBlockStatus] [smallint] NULL,
	[SOBlockStatus] [smallint] NULL,
	[DOBlockStatus] [smallint] NULL,
	[IVBlockStatus] [smallint] NULL,
	[CSBlockStatus] [smallint] NULL,
	[QTBlockMessage] [nvarchar] (40) NULL,
	[SOBlockMessage] [nvarchar] (40) NULL,
	[DOBlockMessage] [nvarchar] (40) NULL,
	[IVBlockMessage] [nvarchar] (40) NULL,
	[CSBlockMessage] [nvarchar] (40) NULL,
	[ExternalLink] [ntext] NULL,
	[IsGroupCompany] [d_Boolean] NOT NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Creditor] (
	[AccNo] [d_AccNo] NOT NULL PRIMARY KEY NONCLUSTERED,
	[CompanyName] [d_AccDescription] NULL,
	[Desc2] [d_AccDescription] NULL,
	[RegisterNo] [d_RegisterNo] NULL,
	[Address1] [d_Address] NULL,
	[Address2] [d_Address] NULL,
	[Address3] [d_Address] NULL,
	[Address4] [d_Address] NULL,
	[PostCode] [d_PostCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPostCode] [d_PostCode] NULL,
	[Attention] [nvarchar] (40) NULL,
	[Phone1] [d_Phone] NULL,
	[Phone2] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Fax2] [d_Phone] NULL,
	[AreaCode] [d_AreaCode] NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[CreditorType] [d_CreditorType] NULL,
	[NatureOfBusiness] [nvarchar] (40) NULL,
	[WebURL] [nvarchar] (80) NULL,
	[EmailAddress] [nvarchar] (80) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[CreditLimit] [d_Money] NULL,
	[AgingOn] [d_AgingOn] NULL,
	[StatementType] [d_StatementType] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[AllowExceedCreditLimit] [d_Boolean] NOT NULL,
	[Note] [ntext] NULL,
	[ExemptNo] [nvarchar] (60) NULL,
	[ExpiryDate] [DateTime] NULL,
	[PriceCategory] [d_PriceCategory] NULL,
	[TaxType] [d_TaxType] NULL,
	[DiscountPercent] [d_Percent] NOT NULL,
	[DetailDiscount] [d_Discount] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[OverdueLimit] [d_Money],
	[POBlockStatus] [smallint] NULL,
	[GNBlockStatus] [smallint] NULL,
	[PIBlockStatus] [smallint] NULL,
	[CPBlockStatus] [smallint] NULL,
	[POBlockMessage] [nvarchar] (40) NULL,
	[GNBlockMessage] [nvarchar] (40) NULL,
	[PIBlockMessage] [nvarchar] (40) NULL,
	[CPBlockMessage] [nvarchar] (40) NULL,
	[ExternalLink] [ntext] NULL,
	[IsGroupCompany] [d_Boolean] NOT NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Branch] (
	[AccNo] [d_AccNo] NOT NULL, 
	[BranchCode] [d_BranchCode] NOT NULL, 
	[BranchName] [d_AccDescription] NULL, 
	[Address1] [d_Address] NULL, 
	[Address2] [d_Address] NULL,
	[Address3] [d_Address] NULL,
	[Address4] [d_Address] NULL,
	[PostCode] [d_PostCode] NULL ,
	[Contact] [d_Contact] NULL,
	[Phone1] [d_Phone] NULL,
	[Phone2] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Fax2] [d_Phone] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Contact] (
	[AccNo] [d_AccNo] NOT NULL, 
	[Name] [d_Contact] NOT NULL, 
	[Department] [nvarchar] (30) NULL, 
	[Title] [nvarchar] (40) NULL, 
	[MobilePhone] [d_Phone] NULL, 
	[DirectPhone] [d_Phone] NULL, 
	[DirectFax] [d_Phone] NULL, 
	[EmailAddress] [d_EmailAddress] NULL, 
	[IMAddress] [d_IMAddress] NULL, 
	[Note] [ntext] NULL, 
	[OpeningBonusPoint] [int] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TemporaryCredit] (
	[AccNo] [d_AccNo] NOT NULL,
	[FromDate] [DateTime] NOT NULL,
	[ToDate] [DateTime] NOT NULL,
	[CreditLimit] [d_Money] NULL,
	[OverdueLimit] [d_Money] NULL,
	[Remark] [d_Remark] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FontStyle] (
	[FontStyle] [d_FontStyle] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FontName] [nvarchar] (40) NOT NULL, 
	[FontSize] [d_FontSize] NOT NULL,
	[FontColor] [int] NOT NULL,
	[Bold] [d_Boolean] NOT NULL,
	[Italic] [d_Boolean] NOT NULL,
	[Underline] [d_Boolean] NOT NULL,
	[Indent] [tinyint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Item] (
	[ItemCode] [d_ItemCode] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL,
	[Description] [d_ItemDescription] NULL, 
	[Desc2] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ItemGroup] [d_ItemGroup] NULL,
	[ItemType] [d_ItemType] NULL,
	[AssemblyCost] [d_Cost] NULL,
	[LeadTime] [nvarchar] (40) NULL,
	[StockControl] [d_Boolean] NOT NULL,
	[HasSerialNo] [d_Boolean] NOT NULL,
	[HasBatchNo] [d_Boolean] NOT NULL,
	[DutyRate] [d_Percent] NOT NULL,
	[Taxtype] [d_TaxType] NULL,
	[Note] [ntext] NULL,
	[ImageFileName] [d_Path] NULL,
	[CostingMethod] [d_CostingMethod] NOT NULL,
	[SalesUOM] [d_UOM] NOT NULL,
	[PurchaseUOM] [d_UOM] NOT NULL,
	[ReportUOM] [d_UOM] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemReplacement] (
	[ItemCode] [d_ItemCode] NOT NULL,
	[ReplacementItemCode] [d_ItemCode] NOT NULL,
	[ReplacementDegree] [d_Percent] NOT NULL,
	[Note] [ntext] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemBatch] (
	[ItemCode] [d_ItemCode] NOT NULL,
	[BatchNo] [d_BatchNo] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[ManufacturedDate] [DateTime] NULL,
	[ExpiryDate] [DateTime] NULL,
	[LastSaleDate] [DateTime] NULL,
	[BalQty] [d_Qty] NULL DEFAULT 0,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemUOM] (
	[ItemCode] [d_ItemCode] NOT NULL,
	[UOM] [d_UOM] NOT NULL,
	[Rate] [d_Qty] NOT NULL,
	[Shelf] [nvarchar] (20) NULL,
	[Price] [d_Price] NULL,
	[Cost] [d_Cost] NULL,
	[RealCost] [d_Cost] NULL DEFAULT 0,
	[MostRecentlyCost] [d_Cost] NULL,
	[MinSalePrice] [d_Price] NULL,
	[MaxSalePrice] [d_Price] NULL,
	[MinPurchasePrice] [d_Price] NULL,
	[MaxPurchasePrice] [d_Price] NULL,
	[BalQty] [d_Qty] NOT NULL DEFAULT 0,
	[MinQty] [d_Qty] NULL,
	[MaxQty] [d_Qty] NULL,
	[NormalLevel] [d_Qty] NULL,
	[ReOLevel] [d_Qty] NULL,
	[ReOQty] [d_Qty] NULL,
	[FOCLevel] [d_Qty] NULL,
	[FOCQty] [d_Qty] NULL,
	[BonusPointQty] [d_Qty] NULL,
	[BonusPoint] [int] NULL,
	[Weight] [d_Number] NULL,
	[WeightUOM] [d_UOM] NULL,
	[Volume] [d_Number] NULL,
	[VolumeUOM] [d_UOM] NULL,
	[BarCode] [d_BarCode] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemBalQty] (
	[ItemCode] [d_ItemCode] NOT NULL,
	[UOM] [d_UOM] NOT NULL,
	[Location] [d_Location] NOT NULL,
	[BalQty] [d_Qty] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemBatchBalQty] (
	[ItemCode] [d_ItemCode] NOT NULL,
	[UOM] [d_UOM] NOT NULL,
	[Location] [d_Location] NOT NULL,
	[BatchNo] [d_BatchNo] NOT NULL,
	[BalQty] [d_Qty] NULL,
	[MostRecentlyCost] [d_Cost] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemBOM] (
	[ItemCode] [d_ItemCode] NOT NULL,
	[SubItemCode] [d_ItemCode] NOT NULL,
	[Qty] [d_Qty] NOT NULL,
	[OverheadCost] [d_Cost] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemPrice] (
	[ItemPriceKey] [int] NOT NULL PRIMARY KEY NONCLUSTERED,
	[ItemCode] [d_ItemCode] NOT NULL, 
	[UOM] [d_UOM] NOT NULL,
	[PriceCategory] [d_PriceCategory] NULL,
	[AccNo] [d_AccNo] NULL, 
	[SuppCustItemCode] [d_ItemCode] NULL,
	[Ref] [nvarchar] (80) NULL,
	[UseFixedPrice] [d_Boolean] NOT NULL,
	[FixedPrice] [d_Price] NULL,
	[FixedDetailDiscount] [d_Discount] NULL,
	[Qty1] [d_Qty] NULL,
	[Price1] [d_Price] NULL,
	[DetailDiscount1] [d_Discount] NULL,
	[Qty2] [d_Qty] NULL,
	[Price2] [d_Price] NULL,
	[DetailDiscount2] [d_Discount] NULL,
	[Qty3] [d_Qty] NULL,
	[Price3] [d_Price] NULL,
	[DetailDiscount3] [d_Discount] NULL,
	[Qty4] [d_Qty] NULL,
	[Price4] [d_Price] NULL,
	[DetailDiscount4] [d_Discount] NULL,
	[FOCLevel] [d_Qty] NULL,
	[FOCQty] [d_Qty] NULL,
	[BonusPointQty] [d_Qty] NULL,
	[BonusPoint] [int] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE  INDEX [IX_ItemPrice] ON [dbo].[ItemPrice]([ItemCode], [UOM], [PriceCategory], [AccNo]) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemOpening] (
	[ItemOpeningKey] [int] NOT NULL PRIMARY KEY NONCLUSTERED,
	[ItemCode] [d_ItemCode] NOT NULL,
	[UOM] [d_UOM] NOT NULL,
	[Location] [d_Location] NOT NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Seq] [int] NOT NULL, 
	[Qty] [d_Qty] NOT NULL,
	[Cost] [d_Cost] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE  INDEX [IX_ItemOpening] ON [dbo].[ItemOpening]([ItemCode], [UOM], [Location], [BatchNo], [Seq]) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemGroup] (
	[ItemGroup] [d_ItemGroup] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL,
	[Note] [ntext] NULL,
	[SalesCode] [d_AccNo] NULL,
	[CashSalesCode] [d_AccNo] NULL,
	[SalesReturnCode] [d_AccNo] NULL,
	[SalesDiscountCode] [d_AccNo] NULL,
	[PurchaseDiscountCode] [d_AccNo] NULL,
	[PurchaseCode] [d_AccNo] NULL,
	[PurchaseReturnCode] [d_AccNo] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemType] (
	[ItemType] [d_ItemType] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL,
	[Note] [ntext] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PriceCategory] (
	[PriceCategory] [d_PriceCategory] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Description] [nvarchar] (40) NULL,
	[DiscountPercent] [d_Percent] NULL,
	[DetailDiscount] [d_Discount] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SNTrans] (
	[SNTransKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[ItemCode] [d_ItemCode] NOT NULL,
	[UOM] [d_UOM] NOT NULL,
	[Location] [d_Location] NOT NULL,
	[SerialNo] [d_SerialNo] NOT NULL,
	[DocDate] [DateTime] NULL,
	[DocType] [d_DocType] NOT NULL,
	[DtlKey] [bigint] NOT NULL,
	[FromSNTransKey] [bigint] NULL,
	[ToSNTransKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Journal] (
	[JournalType] [d_JournalType] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[EntryType] [d_EntryType] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Layout] (
	[Title] [nvarchar] (60) NOT NULL PRIMARY KEY NONCLUSTERED,
	[FormName] [nvarchar] (60) NULL,
	[ComponentName] [nvarchar] (60) NULL,
	[Template] [ntext] NULL,
	[IsDefault] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[LayoutUsers] (
	[Title] [nvarchar] (60) NOT NULL,
	[UserID] [d_UserID] NOT NULL,
) ON [PRIMARY]
GO	

CREATE TABLE [dbo].[Location] (
	[Location] [d_Location] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Description] [nvarchar] (80) NULL,
	[Desc2] [nvarchar] (80) NULL,
	[Address1] [d_Address] NULL,
	[Address2] [d_Address] NULL,
	[Address3] [d_Address] NULL,
	[Address4] [d_Address] NULL,
	[PostCode] [d_PostCode] NULL ,
	[Phone1] [d_Phone] NULL,
	[Phone2] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Fax2] [d_Phone] NULL,
	[Contact] [d_Contact] NULL, 
	[Note] [ntext] NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CNType] (
	[CNType] [d_CNType] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DNType] (
	[DNType] [d_DNType] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDeposit] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DebtorCode] [d_AccNo] NULL,
	[DebtorName] [d_AccDescription] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[DocDate] [dateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[DepositPaymentMethod] [d_PaymentMethod] NOT NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[ToDepositRate] [d_CurrencyRate] NOT NULL,
	[ToHomeRate] [d_CurrencyRate] NOT NULL,
	[PaymentAmt] [d_Money] NULL,
	[TransferedAmt] [d_Money] NULL,
	[CBKey] [bigint] NULL,
	[HasForfeit] [d_Boolean] NOT NULL,
	[ForfeitedDate] [DateTime] NULL,
	[ForfeitedAmt] [d_Money] NULL,
	[ForfeitedAccNo] [d_AccNo] NULL,
	[HasRefund] [d_Boolean] NOT NULL,
	[RefundDate] [DateTime] NULL,
	[RefundDocNo] [d_DocNo] NOT NULL, 
	[RefundName] [d_AccDescription] NULL,
	[RefundAmt] [d_Money] NULL,
	[RefundCBKey] [bigint] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[Outstanding] [d_Money] NULL,
	[Note] [nText] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDepositDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[PaymentMethod] [d_PaymentMethod] NOT NULL,
	[PaymentBy] [d_PaymentBy] NULL,
	[ToBankRate] [d_CurrencyRate] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [d_Money] NULL,
	[PaymentAmt] [d_Money] NULL,
	[IsRCHQ] [d_Boolean] NOT NULL,
	[RCHQDate] [dateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARRefundDepositDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[PaymentMethod] [d_PaymentMethod] NOT NULL,
	[PaymentBy] [d_PaymentBy] NULL,
	[ToBankRate] [d_CurrencyRate] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [d_Money] NULL,
	[PaymentAmt] [d_Money] NULL,
	[IsRCHQ] [d_Boolean] NOT NULL,
	[RCHQDate] [dateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDeposit] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[CreditorCode] [d_AccNo] NULL,
	[CreditorName] [d_AccDescription] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[DocDate] [dateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[DepositPaymentMethod] [d_PaymentMethod] NOT NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[ToDepositRate] [d_CurrencyRate] NOT NULL,
	[ToHomeRate] [d_CurrencyRate] NOT NULL,
	[PaymentAmt] [d_Money] NULL,
	[TransferedAmt] [d_Money] NULL,
	[CBKey] [bigint] NULL,
	[HasForfeit] [d_Boolean] NOT NULL,
	[ForfeitedDate] [DateTime] NULL,
	[ForfeitedAmt] [d_Money] NULL,
	[ForfeitedAccNo] [d_AccNo] NULL,
	[HasRefund] [d_Boolean] NOT NULL,
	[RefundDate] [DateTime] NULL,
	[RefundDocNo] [d_DocNo] NOT NULL, 
	[RefundName] [d_AccDescription] NULL,
	[RefundAmt] [d_Money] NULL,
	[RefundCBKey] [bigint] NULL,
	[Outstanding] [d_Money] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[Note] [nText] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDepositDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[PaymentMethod] [d_PaymentMethod] NOT NULL,
	[PaymentBy] [d_PaymentBy] NULL,
	[ToBankRate] [d_CurrencyRate] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [d_Money] NULL,
	[PaymentAmt] [d_Money] NULL,
	[IsRCHQ] [d_Boolean] NOT NULL,
	[RCHQDate] [dateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APRefundDepositDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[PaymentMethod] [d_PaymentMethod] NOT NULL,
	[PaymentBy] [d_PaymentBy] NULL,
	[ToBankRate] [d_CurrencyRate] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [d_Money] NULL,
	[PaymentAmt] [d_Money] NULL,
	[IsRCHQ] [d_Boolean] NOT NULL,
	[RCHQDate] [dateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARInvoice] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DebtorCode] [d_AccNo] NOT NULL,
	[JournalType] [d_JournalType] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[DueDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[SalesAgent] [d_Agent] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[Total] [d_money] NULL,
	[LocalTotal] [d_money] NULL,
	[Tax] [d_money] NULL,
	[LocalTax] [d_money] NULL,
	[NetTotal] [d_money] NULL,
	[LocalNetTotal] [d_money] NULL ,
	[PaymentAmt] [d_money] NULL ,
	[LocalPaymentAmt] [d_money] NULL ,
	[Outstanding] [d_money] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[Note] [ntext] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARInvoiceDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL, 
	[AccNo] [d_AccNo] NULL,
	[ToAccountRate] [d_CurrencyRate] NOT NULL,
	[Description] [d_GLDescription] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[Amount] [d_money] NULL,
	[LocalAmount] [d_money] NULL,
	[NetAmount] [d_money] NULL,
	[LocalNetAmount] [d_money] NULL,
	[KnockOffAmount] [d_money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDN] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DebtorCode] [d_AccNo] NOT NULL,
	[JournalType] [d_JournalType] NOT NULL,
	[DNType] [d_DNType] NULL,
	[Ref] [nvarchar] (40) NULL,
	[DocDate] [DateTime] NOT NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[DueDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[SalesAgent] [d_Agent] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[Total] [d_money] NULL,
	[LocalTotal] [d_money] NULL,
	[Tax] [d_money] NULL,
	[LocalTax] [d_money] NULL,
	[NetTotal] [d_money] NULL,
	[LocalNetTotal] [d_money] NULL ,
	[PaymentAmt] [d_money] NULL ,
	[LocalPaymentAmt] [d_money] NULL ,
	[Outstanding] [d_money] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[IsJournal] [d_Boolean] NOT NULL,
	[JEKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDNDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL, 
	[AccNo] [d_AccNo] NULL,
	[ToAccountRate] [d_CurrencyRate] NOT NULL,
	[Description] [d_GLDescription] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[Amount] [d_money] NULL,
	[LocalAmount] [d_money] NULL,
	[NetAmount] [d_money] NULL,
	[LocalNetAmount] [d_money] NULL,
	[KnockOffAmount] [d_money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARPayment] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DebtorCode] [d_AccNo] NOT NULL,
	[DocDate] [dateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[ToDebtorRate] [d_CurrencyRate] NOT NULL,
	[ToHomeRate] [d_CurrencyRate] NOT NULL,
	[PaymentAmt] [d_Money] NULL ,
	[LocalPaymentAmt] [d_Money] NULL,
	[KnockOffAmt] [d_Money] NULL ,
	[LocalUnappliedAmount] [d_money] NULL,
	[RefundAmt] [d_money] NULL ,
	[CBKey] [bigint] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[Note] [nText] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARPaymentDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[PaymentMethod] [d_PaymentMethod] NOT NULL,
	[PaymentBy] [d_PaymentBy] NULL,
	[ToBankRate] [d_CurrencyRate] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [d_Money] NULL,
	[PaymentAmt] [d_Money] NULL,
	[DebtorPaymentAmt] [d_Money] NULL,
	[IsRCHQ] [d_Boolean] NOT NULL,
	[RCHQDate] [dateTime] NULL,
	[DepositDocKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARPaymentKnockOff] (
	[KnockOffKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL, 
	[KnockOffDocType] [d_DocType] NOT NULL, 
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[GainLossDate] [DateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARPaymentKnockOffDetail] (
	[KnockOffKey] [bigint] NOT NULL, 
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[LocalPaymentAmt] [d_Money] NULL,
	[LocalInvoiceAmt] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARCN] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DebtorCode] [d_AccNo] NOT NULL,
	[JournalType] [d_JournalType] NOT NULL,
	[CNType] [d_CNType] NULL,
	[Ref] [nvarchar] (40) NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[Total] [d_money] NULL,
	[LocalTotal] [d_money] NULL,
	[Tax] [d_money] NULL,
	[LocalTax] [d_money] NULL,
	[NetTotal] [d_money] NULL,
	[LocalNetTotal] [d_money] NULL ,
	[KnockOffAmt] [d_money] NULL ,
	[RefundAmt] [d_money] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[IsJournal] [d_Boolean] NOT NULL,
	[JEKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARCNDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL, 
	[AccNo] [d_AccNo] NULL,
	[ToAccountRate] [d_CurrencyRate] NOT NULL,
	[Description] [d_GLDescription] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[Amount] [d_money] NULL,
	[LocalAmount] [d_money] NULL,
	[NetAmount] [d_money] NULL,
	[LocalNetAmount] [d_money] NULL,
	[UnappliedAmount] [d_money] NULL,
	[LocalUnappliedAmount] [d_money] NULL,
	[KnockOffAmount] [d_money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARCNKnockOff] (
	[KnockOffKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL, 
	[KnockOffDocType] [d_DocType] NOT NULL, 
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[GainLossDate] [DateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARCNKnockOffDetail] (
	[KnockOffKey] [bigint] NOT NULL, 
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[LocalCNAmt] [d_Money] NULL,
	[LocalInvoiceAmt] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARRefund] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DebtorCode] [d_AccNo] NOT NULL,
	[DocDate] [dateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[ToDebtorRate] [d_CurrencyRate] NOT NULL,
	[ToHomeRate] [d_CurrencyRate] NOT NULL,
	[PaymentAmt] [d_Money] NULL ,
	[LocalPaymentAmt] [d_Money] NULL,
	[KnockOffAmt] [d_Money] NULL ,
	[CBKey] [bigint] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[Note] [nText] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARRefundDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[PaymentMethod] [d_PaymentMethod] NOT NULL,
	[PaymentBy] [d_PaymentBy] NULL,
	[ToBankRate] [d_CurrencyRate] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [d_Money] NULL,
	[PaymentAmt] [d_Money] NULL,
	[DebtorPaymentAmt] [d_Money] NULL,
	[IsRCHQ] [d_Boolean] NOT NULL,
	[RCHQDate] [dateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARRefundKnockOff] (
	[KnockOffKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL, 
	[KnockOffDocType] [d_DocType] NOT NULL, 
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[GainLossDate] [DateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARRefundKnockOffDetail] (
	[KnockOffKey] [bigint] NOT NULL, 
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[LocalRefundAmt] [d_Money] NULL,
	[LocalPaymentAmt] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARAPContra] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DebtorCode] [d_AccNo] NOT NULL,
	[CreditorCode] [d_AccNo] NOT NULL,
	[TempAccNo] [d_AccNo] NOT NULL,
	[JournalType] [d_JournalType] NOT NULL,
	[Ref] [nvarchar] (40) NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_money] NULL,
	[ARLocalNetTotal] [d_money] NULL ,
	[APLocalNetTotal] [d_money] NULL ,
	[ARKnockOffAmt] [d_money] NULL ,
	[APKnockOffAmt] [d_money] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[JEKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARContraKnockOff] (
	[KnockOffKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL, 
	[KnockOffDocType] [d_DocType] NOT NULL, 
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[GainLossDate] [DateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARContraKnockOffDetail] (
	[KnockOffKey] [bigint] NOT NULL, 
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[LocalContraAmt] [d_Money] NULL,
	[LocalInvoiceAmt] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APContraKnockOff] (
	[KnockOffKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL, 
	[KnockOffDocType] [d_DocType] NOT NULL, 
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[GainLossDate] [DateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APContraKnockOffDetail] (
	[KnockOffKey] [bigint] NOT NULL, 
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[LocalContraAmt] [d_Money] NULL,
	[LocalInvoiceAmt] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APInvoice] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[CreditorCode] [d_AccNo] NOT NULL,
	[JournalType] [d_JournalType] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[DueDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[Total] [d_money] NULL,
	[LocalTotal] [d_money] NULL,
	[Tax] [d_money] NULL,
	[LocalTax] [d_money] NULL,
	[NetTotal] [d_money] NULL,
	[LocalNetTotal] [d_money] NULL ,
	[PaymentAmt] [d_money] NULL ,
	[LocalPaymentAmt] [d_money] NULL ,
	[Outstanding] [d_money] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[Note] [ntext] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APInvoiceDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL, 
	[AccNo] [d_AccNo] NULL,
	[ToAccountRate] [d_CurrencyRate] NOT NULL,
	[Description] [d_GLDescription] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[Amount] [d_money] NULL,
	[LocalAmount] [d_money] NULL,
	[NetAmount] [d_money] NULL,
	[LocalNetAmount] [d_money] NULL,
	[KnockOffAmount] [d_money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDN] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[CreditorCode] [d_AccNo] NOT NULL,
	[JournalType] [d_JournalType] NOT NULL,
	[DNType] [d_DNType] NULL,
	[Ref] [nvarchar] (40) NULL,
	[DocDate] [DateTime] NOT NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[DueDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[Total] [d_money] NULL,
	[LocalTotal] [d_money] NULL,
	[Tax] [d_money] NULL,
	[LocalTax] [d_money] NULL,
	[NetTotal] [d_money] NULL,
	[LocalNetTotal] [d_money] NULL ,
	[PaymentAmt] [d_money] NULL ,
	[LocalPaymentAmt] [d_money] NULL ,
	[Outstanding] [d_money] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[IsJournal] [d_Boolean] NOT NULL,
	[JEKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDNDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL, 
	[AccNo] [d_AccNo] NULL,
	[ToAccountRate] [d_CurrencyRate] NOT NULL,
	[Description] [d_GLDescription] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[Amount] [d_money] NULL,
	[LocalAmount] [d_money] NULL,
	[NetAmount] [d_money] NULL,
	[LocalNetAmount] [d_money] NULL,
	[KnockOffAmount] [d_money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APPayment] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[CreditorCode] [d_AccNo] NOT NULL,
	[DocDate] [dateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[ToCreditorRate] [d_CurrencyRate] NOT NULL,
	[ToHomeRate] [d_CurrencyRate] NOT NULL,
	[PaymentAmt] [d_Money] NULL ,
	[LocalPaymentAmt] [d_Money] NULL,
	[KnockOffAmt] [d_Money] NULL ,
	[LocalUnappliedAmount] [d_money] NULL,
	[RefundAmt] [d_money] NULL ,
	[CBKey] [bigint] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[Note] [nText] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APPaymentDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[PaymentMethod] [d_PaymentMethod] NOT NULL,
	[PaymentBy] [d_PaymentBy] NULL,
	[ToBankRate] [d_CurrencyRate] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [d_Money] NULL,
	[PaymentAmt] [d_Money] NULL,
	[CreditorPaymentAmt] [d_Money] NULL,
	[IsRCHQ] [d_Boolean] NOT NULL,
	[RCHQDate] [dateTime] NULL,
	[DepositDocKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APPaymentKnockOff] (
	[KnockOffKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL, 
	[KnockOffDocType] [d_DocType] NOT NULL, 
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[GainLossDate] [DateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APPaymentKnockOffDetail] (
	[KnockOffKey] [bigint] NOT NULL, 
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[LocalPaymentAmt] [d_Money] NULL,
	[LocalInvoiceAmt] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APCN] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[CreditorCode] [d_AccNo] NOT NULL,
	[JournalType] [d_JournalType] NOT NULL,
	[CNType] [d_CNType] NULL,
	[Ref] [nvarchar] (40) NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[Total] [d_money] NULL,
	[LocalTotal] [d_money] NULL,
	[Tax] [d_money] NULL,
	[LocalTax] [d_money] NULL,
	[NetTotal] [d_money] NULL,
	[LocalNetTotal] [d_money] NULL ,
	[KnockOffAmt] [d_money] NULL ,
	[RefundAmt] [d_money] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[IsJournal] [d_Boolean] NOT NULL,
	[JEKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APCNDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL, 
	[AccNo] [d_AccNo] NULL,
	[ToAccountRate] [d_CurrencyRate] NOT NULL,
	[Description] [d_GLDescription] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[Amount] [d_money] NULL,
	[LocalAmount] [d_money] NULL,
	[NetAmount] [d_money] NULL,
	[LocalNetAmount] [d_money] NULL,
	[UnappliedAmount] [d_money] NULL,
	[LocalUnappliedAmount] [d_money] NULL,
	[KnockOffAmount] [d_money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APCNKnockOff] (
	[KnockOffKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL, 
	[KnockOffDocType] [d_DocType] NOT NULL, 
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[GainLossDate] [DateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APCNKnockOffDetail] (
	[KnockOffKey] [bigint] NOT NULL, 
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[LocalCNAmt] [d_Money] NULL,
	[LocalInvoiceAmt] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APRefund] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[CreditorCode] [d_AccNo] NOT NULL,
	[DocDate] [dateTime] NOT NULL,
	[Description] [nvarchar] (40) NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[ToCreditorRate] [d_CurrencyRate] NOT NULL,
	[ToHomeRate] [d_CurrencyRate] NOT NULL,
	[PaymentAmt] [d_Money] NULL ,
	[LocalPaymentAmt] [d_Money] NULL,
	[KnockOffAmt] [d_Money] NULL ,
	[CBKey] [bigint] NULL ,
	[Cancelled] [d_Boolean] NOT NULL,
	[Note] [nText] NULL,
	[ExternalLink] [ntext] NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APRefundDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[PaymentMethod] [d_PaymentMethod] NOT NULL,
	[PaymentBy] [d_PaymentBy] NULL,
	[ToBankRate] [d_CurrencyRate] NOT NULL,
	[ChequeNo] [d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [d_Money] NULL,
	[PaymentAmt] [d_Money] NULL,
	[CreditorPaymentAmt] [d_Money] NULL,
	[IsRCHQ] [d_Boolean] NOT NULL,
	[RCHQDate] [dateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APRefundKnockOff] (
	[KnockOffKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL, 
	[KnockOffDocType] [d_DocType] NOT NULL, 
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[GainLossDate] [DateTime] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APRefundKnockOffDetail] (
	[KnockOffKey] [bigint] NOT NULL, 
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [d_Money] NULL,
	[LocalRefundAmt] [d_Money] NULL,
	[LocalPaymentAmt] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GLDTL] (
	[GLDtlKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[AccNo] [d_AccNo] NOT NULL,
	[DEAccNo] [d_AccNo] NULL,
	[JournalType] [d_JournalType] NOT NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[ToHomeRate] [d_CurrencyRate] NOT NULL,
	[OrgDR] [d_Money] NULL,
	[OrgCR] [d_Money] NULL,
	[DR] [d_Money] NULL,
	[CR] [d_Money] NULL,
	[HomeDR] [d_Money] NULL,
	[HomeCR] [d_Money] NULL,
	[TransDate] [DateTime] NOT NULL,
	[Description] [d_GLDescription] NULL,
	[RefNo1] [nvarchar] (20) NULL,
	[RefNo2] [nvarchar] (20) NULL,
	[DEKey] [bigint] NULL,
	[UserID] [d_UserID] NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PBalance] (
	[PeriodNo] [d_PeriodNo] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL, 
	[ProjNo] [d_Project] NULL, 
	[DeptNo] [d_Dept] NULL, 
	[DR] [d_Money] NULL,
	[CR] [d_Money] NULL,
	[HomeDR] [d_Money] NULL,
	[HomeCR] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE  INDEX [IX_PBalance] ON [dbo].[PBalance]([PeriodNo], [AccNo], [ProjNo], [DeptNo]) ON [PRIMARY]
GO

CREATE TABLE [dbo].[OBalance] (
	[PeriodNo] [d_PeriodNo] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL, 
	[ProjNo] [d_Project] NULL, 
	[DeptNo] [d_Dept] NULL, 
	[DR] [d_Money] NULL,
	[CR] [d_Money] NULL,
	[HomeDR] [d_Money] NULL,
	[HomeCR] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE INDEX [IX_OBalance] ON [dbo].[OBalance]([PeriodNo], [AccNo], [ProjNo], [DeptNo]) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Profile] (
	[CompanyName] [nvarchar] (80) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Remark] [nvarchar] (12) NULL, 
	[RegisterNo] [d_RegisterNo] NULL,
	[Address1] [d_Address] NULL,
	[Address2] [d_Address] NULL,
	[Address3] [d_Address] NULL,
	[Address4] [d_Address] NULL,
	[PostCode] [d_PostCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPostCode] [d_PostCode] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[Attention] [nvarchar] (40) NULL,
	[Contact] [d_Contact] NULL,
	[Phone1] [d_Phone] NULL,
	[Phone2] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Fax2] [d_Phone] NULL,
	[NatureOfBusiness] [nvarchar] (40) NULL,
	[EmailAddress] [nvarchar] (80) NULL,
	[Logo] [image] NULL,
	[LogoClass] [nvarchar] (40) NULL,
	[ReportHeader] [ntext] NULL,
	[RemarkColor] [int] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Project] (
	[ProjNo] [d_Project] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[ParentProjNo] [d_Project] NULL, 
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Dept] (
	[DeptNo] [d_Dept] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[ParentDeptNo] [d_Dept] NULL, 
	[Description] [nvarchar] (40) NULL,
	[Desc2] [nvarchar] (40) NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PaymentMethod] (
	[PaymentMethod] [d_PaymentMethod] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[BankAccount] [d_AccNo] NOT NULL, 
	[BankChargeAccount] [d_AccNo] NULL,
	[BankChargePercent] [d_Percent] NOT NULL,
	[MergeBankChargeTrans] [d_Boolean] NOT NULL,
	[SpecialAccType] [d_SpecialAccType] NOT NULL,
	[JournalType] [d_JournalType] NOT NULL,
	[AcceptChequeNo] [d_Boolean] NOT NULL,
	[PaymentBy] [d_PaymentBy] NULL,
	[ODLimit] [d_Money] NOT NULL,
	[PaymentFormatName] [d_DocNoFormatName] NOT NULL,
	[ReceiptFormatName] [d_DocNoFormatName] NOT NULL,
	[NextChequeNo] [d_ChequeNo] NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[IPHIST] (
	[IPKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DtlKey] [bigint] NULL, 
	[DocKey] [bigint] NULL,
	[DocType] [d_DocType] NULL,
	[AccNo] [d_AccNo] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[Location] [d_Location] NULL,
	[Agent] [d_Agent] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [nText] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[FOCQty] [d_Qty] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[TaxType] [d_TaxType] NULL,
	[SubTotal] [d_money] NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Package] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Description] [nvarchar] (80) NULL,
	[IsActive] [d_Boolean] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PackageDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[UOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[TaxType] [d_TaxType] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[QT] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[DebtorCode] [d_AccNo] NULL,
	[DebtorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[SalesAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[SalesExemptionNo] [d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [DateTime] NULL,
	[Validity] [nvarchar] (40) NULL,
	[DeliveryTerm] [nvarchar] (40) NULL,
	[PaymentTerm] [nvarchar] (40) NULL,
	[YourRef] [nvarchar] (20) NULL,
	[CC] [nvarchar] (20) NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[AnalysisNetTotal] [d_Money] NULL,
	[LocalAnalysisNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[ToDocType] [d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ApprovalUserID] [d_UserID] NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[QTDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NOT NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SO] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[DebtorCode] [d_AccNo] NOT NULL,
	[DebtorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[SalesAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[SalesExemptionNo] [d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [DateTime] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[AnalysisNetTotal] [d_Money] NULL,
	[LocalAnalysisNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[ReferDepositDocKey] [bigint] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[ToDocType] [d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanTransferByValue] [d_Boolean] NULL,
	[TransferedAmt] [d_Money] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SODTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[YourPONo] [d_YourPONo] NULL,
	[YourPODate] [DateTime] NULL,
	[DeliveryDate] [DateTime] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NOT NULL,
	[FOCQty] [d_Qty] NULL,
	[FOCTransferedQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DO] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[DebtorCode] [d_AccNo] NOT NULL,
	[DebtorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[SalesAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[SalesExemptionNo] [d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [DateTime] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[AnalysisNetTotal] [d_Money] NULL,
	[LocalAnalysisNetTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[ToDocType] [d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DODTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[YourPONo] [d_YourPONo] NULL,
	[YourPODate] [DateTime] NULL,
	[DeliveryDate] [DateTime] NULL,
	[PostToStockDate] [DateTime] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NOT NULL,
	[FOCQty] [d_Qty] NULL,
	[FOCTransferedQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[LocalFOCTotalCost] [d_Cost] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
	[IsValueTransferedItem] [d_Boolean] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[IV] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[DebtorCode] [d_AccNo] NOT NULL,
	[DebtorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[SalesAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[SalesExemptionNo] [d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [DateTime] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[AnalysisNetTotal] [d_Money] NULL,
	[LocalAnalysisNetTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[TotalBonusPoint] [int] NULL,
	[BonusPointContact] [d_Contact] NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[PostToGL] [d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[ReferPaymentDocKey] [bigint] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[ToDocType] [d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CSGNDocKey] [bigint] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[IVDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[YourPONo] [d_YourPONo] NULL,
	[YourPODate] [DateTime] NULL,
	[DeliveryDate] [DateTime] NULL,
	[PostToStockDate] [DateTime] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NOT NULL,
	[FOCQty] [d_Qty] NULL,
	[FOCTransferedQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[LocalFOCTotalCost] [d_Cost] NULL,
	[BonusPoint] [int] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[ValueXferSODocKey] [bigint] NULL, 
	[ForConsignment] [d_Boolean] NOT NULL,
	[AccNo] [d_AccNo] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CS] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[DebtorCode] [d_AccNo] NOT NULL,
	[DebtorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[SalesAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[SalesExemptionNo] [d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [DateTime] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[AnalysisNetTotal] [d_Money] NULL,
	[LocalAnalysisNetTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[TotalBonusPoint] [int] NULL,
	[BonusPointContact] [d_Contact] NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[PostToGL] [d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[ReferPaymentDocKey] [bigint] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[ToDocType] [d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CSGNDocKey] [bigint] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CSDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[YourPONo] [d_YourPONo] NULL,
	[YourPODate] [DateTime] NULL,
	[DeliveryDate] [DateTime] NULL,
	[PostToStockDate] [DateTime] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NOT NULL,
	[FOCQty] [d_Qty] NULL,
	[FOCTransferedQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[LocalFOCTotalCost] [d_Cost] NULL,
	[BonusPoint] [int] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[ForConsignment] [d_Boolean] NOT NULL,
	[AccNo] [d_AccNo] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DN] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[DebtorCode] [d_AccNo] NOT NULL,
	[DebtorName] [d_AccDescription] NULL,
	[DNType] [d_DNType] NULL,
	[Ref] [nvarchar] (40) NULL,
	[OurInvoiceNo] [d_DocNo] NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[SalesAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[SalesExemptionNo] [d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [DateTime] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[AnalysisNetTotal] [d_Money] NULL,
	[LocalAnalysisNetTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[TotalBonusPoint] [int] NULL,
	[BonusPointContact] [d_Contact] NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[PostToGL] [d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DNDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[PostToStockDate] [DateTime] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[FOCQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[LocalFOCTotalCost] [d_Cost] NULL,
	[BonusPoint] [int] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[AccNo] [d_AccNo] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CN] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[DebtorCode] [d_AccNo] NOT NULL,
	[DebtorName] [d_AccDescription] NULL,
	[CNType] [d_CNType] NULL,
	[Ref] [nvarchar] (40) NULL,
	[OurInvoiceNo] [d_DocNo] NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[SalesAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[SalesExemptionNo] [d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [DateTime] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[AnalysisNetTotal] [d_Money] NULL,
	[LocalAnalysisNetTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[TotalBonusPoint] [int] NULL,
	[BonusPointContact] [d_Contact] NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[PostToGL] [d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CNDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[PostToStockDate] [DateTime] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[FOCQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[UnitCost] [d_Cost] NULL,
	[FOCUnitCost] [d_Cost] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[BonusPoint] [int] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[AccNo] [d_AccNo] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XS] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[DebtorCode] [d_AccNo] NOT NULL,
	[DebtorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[SalesAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[SalesExemptionNo] [d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [DateTime] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[AnalysisNetTotal] [d_Money] NULL,
	[LocalAnalysisNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XSDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[YourPONo] [d_YourPONo] NULL,
	[YourPODate] [DateTime] NULL,
	[DeliveryDate] [DateTime] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[FOCQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DR] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[DebtorCode] [d_AccNo] NOT NULL,
	[DebtorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[SalesAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[SalesExemptionNo] [d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [DateTime] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[AnalysisNetTotal] [d_Money] NULL,
	[LocalAnalysisNetTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DRDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[YourPONo] [d_YourPONo] NULL,
	[YourPODate] [DateTime] NULL,
	[DeliveryDate] [DateTime] NULL,
	[PostToStockDate] [DateTime] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[FOCQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[LocalTotalCost] [d_Cost] NULL,
	[LocalFOCTotalCost] [d_Cost] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RQ] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[CreditorCode] [d_AccNo] NULL,
	[CreditorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[ToDocType] [d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RQDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[DeliveryDate] [DateTime] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NOT NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PO] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[CreditorCode] [d_AccNo] NULL,
	[CreditorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[ReferDepositDocKey] [bigint] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[ToDocType] [d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanTransferByValue] [d_Boolean] NULL,
	[TransferedAmt] [d_Money] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PODTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[DeliveryDate] [DateTime] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NOT NULL,
	[FOCQty] [d_Qty] NULL,
	[FOCTransferedQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GR] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[CreditorCode] [d_AccNo] NULL,
	[CreditorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[SupplierDONo] [d_DocNo] NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[ForeignCharges] [d_Money] NULL,
	[LocalCharges] [d_Money] NULL ,
	[LandedCostMethod] [char] (1) NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[ToDocType] [d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GRDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[OurPONo] [d_DocNo] NULL,
	[OurPODate] [DateTime] NULL,
	[DeliveryDate] [DateTime] NULL,
	[PostToStockDate] [DateTime] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NOT NULL,
	[FOCQty] [d_Qty] NULL,
	[FOCTransferedQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
	[ForeignCharges] [d_Money] NULL,
	[LocalCharges] [d_Money] NULL,
	[Duty] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PI] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[CreditorCode] [d_AccNo] NULL,
	[CreditorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[SupplierDONo] [d_DocNo] NULL,
	[SupplierInvoiceNo] [d_DocNo] NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[ForeignCharges] [d_Money] NULL,
	[LocalCharges] [d_Money] NULL ,
	[LandedCostMethod] [char] (1) NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[PostToGL] [d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[ReferPaymentDocKey] [bigint] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[ToDocType] [d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CSGNDocKey] [bigint] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PIDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[OurPONo] [d_DocNo] NULL,
	[OurPODate] [DateTime] NULL,
	[DeliveryDate] [DateTime] NULL,
	[PostToStockDate] [DateTime] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NOT NULL,
	[FOCQty] [d_Qty] NULL,
	[FOCTransferedQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
	[ForeignCharges] [d_Money] NULL,
	[LocalCharges] [d_Money] NULL,
	[Duty] [d_Money] NULL,
	[ForConsignment] [d_Boolean] NOT NULL,
	[AccNo] [d_AccNo] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CP] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[CreditorCode] [d_AccNo] NULL,
	[CreditorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[SupplierDONo] [d_DocNo] NULL,
	[SupplierInvoiceNo] [d_DocNo] NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[ForeignCharges] [d_Money] NULL,
	[LocalCharges] [d_Money] NULL ,
	[LandedCostMethod] [char] (1) NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[PostToGL] [d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[ReferPaymentDocKey] [bigint] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[ToDocType] [d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CSGNDocKey] [bigint] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CPDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[OurPONo] [d_DocNo] NULL,
	[OurPODate] [DateTime] NULL,
	[DeliveryDate] [DateTime] NULL,
	[PostToStockDate] [DateTime] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[TransferedQty] [d_Qty] NOT NULL,
	[FOCQty] [d_Qty] NULL,
	[FOCTransferedQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[Transferable] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
	[ForeignCharges] [d_Money] NULL,
	[LocalCharges] [d_Money] NULL,
	[Duty] [d_Money] NULL,
	[ForConsignment] [d_Boolean] NOT NULL,
	[AccNo] [d_AccNo] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PR] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[CreditorCode] [d_AccNo] NULL,
	[CreditorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[SupplierCNNo] [d_DocNo] NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[PostToGL] [d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PRDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[YourDONo] [d_DocNo] NULL,
	[YourDODate] [DateTime] NULL,
	[OurPONo] [d_DocNo] NULL,
	[OurPODate] [DateTime] NULL,
	[PostToStockDate] [DateTime] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[FOCQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
	[AccNo] [d_AccNo] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XP] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[CreditorCode] [d_AccNo] NULL,
	[CreditorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XPDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[DeliveryDate] [DateTime] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[FOCQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GT] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL, 
	[DocDate] [DateTime] NOT NULL,
	[CreditorCode] [d_AccNo] NULL,
	[CreditorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[DisplayTerm] [d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[Total] [d_Money] NULL,
	[Footer1Param] [d_Money] NULL ,
	[Footer1Amt] [d_Money] NULL ,
	[Footer1LocalAmt] [d_Money] NULL ,
	[Footer1TaxType] [d_TaxType] NULL ,
	[Footer2Param] [d_Money] NULL ,
	[Footer2Amt] [d_Money] NULL ,
	[Footer2LocalAmt] [d_Money] NULL ,
	[Footer2TaxType] [d_TaxType] NULL ,
	[Footer3Param] [d_Money] NULL ,
	[Footer3Amt] [d_Money] NULL ,
	[Footer3LocalAmt] [d_Money] NULL ,
	[Footer3TaxType] [d_TaxType] NULL ,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[CurrencyRate] [d_CurrencyRate] NOT NULL,
	[NetTotal] [d_Money] NULL,
	[LocalNetTotal] [d_Money] NULL,
	[Tax] [d_Money] NULL,
	[LocalTax] [d_Money] NULL,
	[PostToStock] [d_Boolean] NOT NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GTDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[FOCDtlKey] [bigint] NULL, 
	[DocKey] [bigint] NOT NULL, 
	[Seq] [int] NOT NULL, 
	[Indent] [tinyint] NULL,
	[FontStyle] [d_FontStyle] NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[OurPONo] [d_DocNo] NULL,
	[OurPODate] [DateTime] NULL,
	[DeliveryDate] [DateTime] NULL,
	[PostToStockDate] [DateTime] NULL,
	[UOM] [d_UOM] NULL,
	[UserUOM] [d_UOM] NULL,
	[Qty] [d_Qty] NULL,
	[Rate] [d_Qty] NULL,
	[SmallestQty] [d_Qty] NULL,
	[FOCQty] [d_Qty] NULL,
	[SmallestUnitPrice] [d_Price] NULL,
	[UnitPrice] [d_Price] NULL,
	[Discount] [d_Discount] NULL,
	[DiscountAmt] [d_Money] NULL,
	[TaxType] [d_TaxType] NULL,
	[Tax] [d_Money] NULL,
	[SubTotal] [d_Money] NULL,
	[LocalSubTotal] [d_Money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[DtlType] [d_DtlType] NULL,
	[CalcByPercent] [d_Percent] NULL,
	[AddToSubTotal] [d_Boolean] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [d_FullTransferOption] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UserGroup] (
	[UserGroupID] [d_UserID] NOT NULL PRIMARY KEY NONCLUSTERED,  
	[Description] [nvarchar] (40) NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Users] (
	[UserID] [d_UserID] NOT NULL PRIMARY KEY NONCLUSTERED,  
	[UserName] [nvarchar] (40) NULL,
	[Department] [nvarchar] (30) NULL,
	[Passwd] [varchar] (112) NULL,
	[Signature] [image] NULL,
	[EmailAddress] [d_EmailAddress] NULL,
	[FilterBySalesAgent] [d_Boolean] NOT NULL,
	[FilterByPurchaseAgent] [d_Boolean] NOT NULL,
	[IsActive] [d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UsersGroup] (
	[UserID] [d_UserID] NOT NULL,
	[UserGroupID] [d_UserID] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UsersSalesAgent] (
	[UserID] [d_UserID] NOT NULL,
	[SalesAgent] [d_Agent] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UsersPurchaseAgent] (
	[UserID] [d_UserID] NOT NULL,
	[PurchaseAgent] [d_Agent] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AccessRight] (
	[CmdID] [d_CmdID] NOT NULL,
	[UserID] [d_UserID] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Session] (
	[SessionKey] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[UserID] [d_UserID] NOT NULL,
	[TimeStart] [datetime] NULL DEFAULT GetDate(),
	[TimeEnd] [datetime] NULL,
	[ComputerName] [nvarchar] (20) NULL,
	[UserName] [nvarchar] (20) NULL,
	[PrivateKey] [int] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[StockSet] (
	[StockSetKey] [int] NOT NULL PRIMARY KEY NONCLUSTERED,
	[OpenStock] [d_AccNo] NOT NULL,
	[CloseStock] [d_AccNo] NOT NULL, 
	[BalanceStock] [d_AccNo] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[StockPBalance] (
	[StockSetKey] [int] NOT NULL,
	[PeriodNo] [d_PeriodNo] NOT NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Balance] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE  INDEX [IX_StockPBalance] ON [dbo].[StockPBalance]([StockSetKey], [PeriodNo], [ProjNo], [DeptNo]) ON [PRIMARY]

CREATE TABLE [dbo].[Budget] (
	[BudgetKey] [int] NOT NULL PRIMARY KEY NONCLUSTERED,
	[BudgetName] [d_BudgetName] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BudgetPBalance] (
	[BudgetKey] [int] NOT NULL,
	[PeriodNo] [d_PeriodNo] NOT NULL,  
	[AccNO] [d_AccNo] NOT NULL,  
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Amount] [d_Money] NULL,
) ON [PRIMARY]
GO

CREATE INDEX [IX_BudgetPBalance] ON [dbo].[BudgetPBalance]([BudgetKey], [PeriodNo], [AccNo], [ProjNo], [DeptNo]) ON [PRIMARY]

CREATE TABLE [dbo].[DocNoFormat] (
	[Name] [d_DocNoFormatName] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocType] [d_DocType] NOT NULL,
	[NextNumber] [int] NOT NULL,
	[Format] [nvarchar] (30) NOT NULL,
	[Sample] [nvarchar] (20) NOT NULL,
	[IsDefault] [d_Boolean] NOT NULL,
	[OneMonthOneSet] [d_Boolean] NOT NULL,
	[M1NextNumber] [int] NOT NULL,
	[M2NextNumber] [int] NOT NULL,
	[M3NextNumber] [int] NOT NULL,
	[M4NextNumber] [int] NOT NULL,
	[M5NextNumber] [int] NOT NULL,
	[M6NextNumber] [int] NOT NULL,
	[M7NextNumber] [int] NOT NULL,
	[M8NextNumber] [int] NOT NULL,
	[M9NextNumber] [int] NOT NULL,
	[M10NextNumber] [int] NOT NULL,
	[M11NextNumber] [int] NOT NULL,
	[M12NextNumber] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DocNoFormatUsers] (
	[Name] [d_DocNoFormatName] NOT NULL,
	[UserID] [d_UserID] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DocNoFormatAccNo] (
	[Name] [d_DocNoFormatName] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Registry] (
	[RegID] [int] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[RegType] [smallint] NULL, 
	[RegValue] [nvarchar] (255) NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Footer] (
	[FooterName] [nvarchar] (20) NOT NULL PRIMARY KEY NONCLUSTERED,
	[Caption] [nvarchar] (40) NULL,
	[AddToNetTotal] [d_Boolean] NOT NULL, 
	[AddToAnalysisNetTotal] [d_Boolean] NOT NULL, 
	[Formula] [ntext] NULL,
	[PostToGL] [d_Boolean] NOT NULL,
	[AccNo] [d_AccNo] NULL,
	[Enable] [d_Boolean] NOT NULL,
	[TaxType] [d_TaxType] NULL ,
	[ParamCaption] [nvarchar] (40) NULL,
	[ParamVisible] [d_Boolean] NOT NULL,
	[ParamDecimal] [smallint] NOT NULL,
	[ParamDefaultValue] [d_Number] NULL,
	[ParamFromPercent] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UDF] (
	[TableName] [nvarchar] (25) NOT NULL,
	[FieldName] [nvarchar] (5) NOT NULL,
	[FieldType] [d_FieldType] NULL,
	[FieldSize] [smallint] NULL,
	[FieldDecimal] [smallint] NULL,
	[DisplayName] [nvarchar] (80) NULL,
	[DefaultValue] [nvarchar] (80) NULL,
	[IsUnique] [d_Boolean] NOT NULL,
	[ListValue] [ntext] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UserScript] (
	[Document] [nvarchar] (25) NOT NULL, 
	[ScriptName] [nvarchar] (25) NOT NULL, 
	[Script] [ntext] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CSGNItemBalQty] (
	[AccNo] [d_AccNo] NOT NULL,
	[ItemCode] [d_ItemCode] NOT NULL,
	[UOM] [d_UOM] NOT NULL,
	[Location] [d_Location] NOT NULL,
	[BranchCode] [d_BranchCode] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[BalQty] [d_Qty] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CSGN] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[DebtorCode] [d_AccNo] NOT NULL,
	[DebtorName] [d_AccDescription] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[SalesAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[DeliverAddr1] [d_Address] NULL,
	[DeliverAddr2] [d_Address] NULL,
	[DeliverAddr3] [d_Address] NULL,
	[DeliverAddr4] [d_Address] NULL,
	[DeliverPhone1] [d_Phone] NULL,
	[DeliverFax1] [d_Phone] NULL,
	[DeliverContact] [d_Contact] NULL,
	[Note] [ntext] NULL ,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL ,
	[Cancelled] [d_Boolean] NOT NULL ,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CSGNDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL ,
	[Seq] [int] NOT NULL, 
	[ItemCode] [d_ItemCode] NULL,
	[UOM] [d_UOM] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[Remark] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL ,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Qty] [d_Qty] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SupplierCSGN] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[CreditorCode] [d_AccNo] NOT NULL,
	[CreditorName] [d_AccDescription] NULL,
	[SupplierDONo] [d_DocNo] NULL,
	[Ref] [nvarchar] (40) NULL,
	[Description] [nvarchar] (40) NULL,
	[PurchaseAgent] [d_Agent] NULL,
	[InvAddr1] [d_Address] NULL,
	[InvAddr2] [d_Address] NULL,
	[InvAddr3] [d_Address] NULL,
	[InvAddr4] [d_Address] NULL,
	[Phone1] [d_Phone] NULL,
	[Fax1] [d_Phone] NULL,
	[Attention] [d_Contact] NULL,
	[BranchCode] [d_BranchCode] NULL,
	[Note] [ntext] NULL ,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL ,
	[Cancelled] [d_Boolean] NOT NULL ,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NOT NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SupplierCSGNDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL ,
	[Seq] [int] NOT NULL, 
	[ItemCode] [d_ItemCode] NULL,
	[UOM] [d_UOM] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[Remark] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL ,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Qty] [d_Qty] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XFER] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[FromLocation] [d_Location] NOT NULL,
	[ToLocation] [d_Location] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[Total] [d_money] NULL ,
	[Reason] [nvarchar] (80) NULL,
	[AuthorisedBy] [nvarchar] (30) NULL,
	[Ref] [nvarchar] (40) NULL,	
	[Note] [ntext] NULL ,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL ,
	[Cancelled] [d_Boolean] NOT NULL ,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XFERDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[InDtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL ,
	[Seq] [int] NOT NULL, 
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL ,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Qty] [d_Qty] NULL,
	[UOM] [d_UOM] NULL,
	[UnitCost] [d_Cost] NULL,
	[SubTotal] [d_money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ADJ] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[Total] [d_money] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ADJDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NOT NULL ,
	[Seq] [int] NOT NULL, 
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL ,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Qty] [d_Qty] NULL,
	[UOM] [d_UOM] NULL,
	[UnitCost] [d_Cost] NULL,
	[SubTotal] [d_money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ISS] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[Total] [d_money] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ISSDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL, 
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Qty] [d_Qty] NULL,
	[UOM] [d_UOM] NULL,
	[UnitCost] [d_Cost] NULL,
	[SubTotal] [d_money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RCV] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[Total] [d_money] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RCVDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL, 
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Qty] [d_Qty] NULL,
	[UOM] [d_UOM] NULL,
	[UnitCost] [d_Cost] NULL,
	[SubTotal] [d_money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[WOFF] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[Total] [d_money] NULL,
	[Note] [ntext] NULL,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[WOFFDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL, 
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Qty] [d_Qty] NULL,
	[UOM] [d_UOM] NULL,
	[UnitCost] [d_Cost] NULL,
	[SubTotal] [d_money] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UOMConv] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[Note] [ntext] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[FromDocType] [d_DocType] NULL,
	[FromDocKey] [bigint] NULL,
	[FromDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UOMConvDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[InDtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL, 
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[FromQty] [d_Qty] NULL,
	[FromUOM] [d_UOM] NULL,
	[ToUOM] [d_UOM] NULL,
	[ToQty] [d_Qty] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UpdateCost] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[Note] [ntext] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [d_Boolean] NOT NULL,
	[UpdateToRealCost] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UpdateCostDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL, 
	[ItemCode] [d_ItemCode] NULL,
	[Description] [d_ItemDescription] NULL,
	[UOM] [d_UOM] NULL,
	[OldCost] [d_Cost] NULL,
	[NewCost] [d_Cost] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemCostHistory] (
	[HKey] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[ItemCode] [d_ItemCode] NULL,
	[UOM] [d_UOM] NULL,
	[DocDate] [DateTime] NOT NULL,
	[Cost] [d_Cost] NULL,
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocType] [d_DocType] NOT NULL,
	[DocNo] [d_DocNo] NOT NULL,
	[CreatedTimeStamp] [DateTime] NULL,
	[CreatedUserID] [d_UserID] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ASM] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[ItemCode] [d_ItemCode] NOT NULL,
	[Location] [d_Location] NOT NULL,
	[BatchNo] [d_BatchNo] NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Qty] [d_Qty] NULL ,
	[Total] [d_money] NULL ,
	[AssemblyCost] [d_money] NULL ,	
	[NetTotal] [d_money] NULL ,
	[Note] [nText] NULL ,
	[Remark1] [d_Remark] NULL,
	[Remark2] [d_Remark] NULL,
	[Remark3] [d_Remark] NULL,
	[Remark4] [d_Remark] NULL,
	[PrintCount] [smallint] NULL, 
	[Cancelled] [d_Boolean] NOT NULL,
	[LastModified] [DateTime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [DateTime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[ExternalLink] [nText] NULL,
	[RefDocNo] [d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [d_Boolean] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ASMDTL] (
	[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[DocKey] [bigint] NULL ,
	[Seq] [int] NOT NULL, 
	[Numbering] [d_Numbering] NULL,
	[ItemCode] [d_ItemCode] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[Description] [d_ItemDescription] NULL,
	[FurtherDescription] [nText] NULL ,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Rate] [d_Qty] NULL,
	[Qty] [d_Qty] NULL,
	[ItemCost] [d_Cost] NULL,
	[OverHeadCost] [money] NULL,
	[SubTotalCost] [money] NULL,
	[Remark] [d_Remark] NULL,
	[PrintOut] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ChangeCount] (
	[TableName] [nvarchar] (40) NOT NULL PRIMARY KEY NONCLUSTERED,
	[Counter] [int] NOT NULL ,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UTDStockCost] (
	[UTDStockCostKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[ItemCode] [d_ItemCode] NOT NULL ,
	[UOM] [d_UOM] NOT NULL ,
	[Location] [d_Location] NOT NULL ,
	[BatchNo] [d_BatchNo] NULL ,
	[UTDQty] [d_Qty] NOT NULL ,
	[UTDCost] [d_Cost] NOT NULL ,
	[AdjustedCost] [d_Cost] NOT NULL ,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UTDStockCostDTL] (
	[UTDStockCostDTLKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[UTDStockCostKey] [bigint] NOT NULL,
	[Seq] [smallint] NOT NULL,
	[Qty] [d_Qty] NOT NULL ,
	[Cost] [d_Cost] NOT NULL ,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[StockDTL] (
	[StockDTLKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[ItemCode] [d_ItemCode] NOT NULL ,
	[UOM] [d_UOM] NOT NULL ,
	[Location] [d_Location] NOT NULL ,
	[BatchNo] [d_BatchNo] NULL ,
	[ProjNo] [d_Project] NULL ,
	[DeptNo] [d_Dept] NULL ,
	[DocDate] [DateTime] NOT NULL,
	[Seq] [bigint] NOT NULL ,
	[DocType] [d_DocType] NOT NULL ,
	[DocKey] [bigint] NOT NULL ,
	[DtlKey] [bigint] NOT NULL ,
	[Qty] [d_Qty] NOT NULL ,
	[Cost] [d_Cost] NOT NULL ,
	[AdjustedCost] [d_Cost] NOT NULL ,
	[TotalCost] [d_Cost] NOT NULL ,
	[CostType] [d_CostType] NOT NULL ,
	[LastModified] [DateTime] NOT NULL DEFAULT GetDate(),
	[ReferTo] [bigint] NOT NULL ,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FIFOCost] (
	[FIFOCostKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[StockDTLKey] [bigint] NOT NULL,
	[Seq] [smallint] NOT NULL,
	[Qty] [d_Qty] NOT NULL ,
	[Cost] [d_Cost] NOT NULL ,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Report] (
	[ReportName] [nvarchar] (100) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[ReportType] [nvarchar] (60) NULL, 
	[ReportTemplate] [image] NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DefaultReport] (
	[ReportType] [nvarchar] (40) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[ReportName] [nvarchar] (100) NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AutoPrice] (
	[AutoPriceKey] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Seq] [int] NOT NULL,
	[AutoPriceType] [nvarchar] (10) NOT NULL,
	[Name] [nvarchar] (60) NOT NULL,
	[ForSale] [d_Boolean] NOT NULL,
	[Enable] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

/* d_FRRowType defines the following value for Profit & Loss Statement
   'A' - Account Type
   'N' - Net Profit
   'S' - Summary Total
*/
CREATE TABLE [dbo].[PLFormat] (
	[AutoKey] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Seq] [int] NOT NULL,
	[RowType] [d_FRRowType] NOT NULL,
	[AccType] [d_AccType] NULL,
	[Description] [d_AccDescription] NULL,
	[CreditAsPositive] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

/* d_FRRowType defines the following value for Balance Sheet Statement
   'A' - Account Type
   'S' - Summary Total
   'N' - Net Current Asset
   'F' - Financed By
*/
CREATE TABLE [dbo].[BSFormat] (
	[AutoKey] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED, 
	[Seq] [int] NOT NULL,
	[RowType] [d_FRRowType] NOT NULL,
	[AccType] [d_AccType] NULL,
	[Description] [d_AccDescription] NULL,
	[CreditAsPositive] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

/* To support adjustable sequence of Profit & Loss Statement and Balance Sheet Statement */
CREATE TABLE [dbo].[AccGroup] (
	[Seq] [int] NOT NULL,
	[AccType] [d_AccType] NOT NULL PRIMARY KEY NONCLUSTERED,
	[NormalBalance] char(1) NOT NULL,
	[Group] char(2) NOT NULL
) ON [PRIMARY]
GO

/* To support Remote Credit Control Module */
CREATE TABLE [dbo].[CreditControlSync] (
	[DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
	[DocNo] [d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[CompanyName] [d_AccDescription] NULL,
	[CreditLimit] [d_Money] NULL,
	[OverdueLimit] [d_Money] NULL,
	[CurrentCredit] [d_Money] NULL,
	[CurrentOverdue] [d_Money] NULL,
	[OverdueDetail] [ntext] NULL,
	[Action] char(1) NULL,
) ON [PRIMARY]
GO

/* DtlType must be either '0' - Normal Item, '1' - Partial Transfer Item, '2' - Full Transfer Detail Item, '3' - Full Transfer One Document One Detail Item, '4' - Full Transfer All Document One Detail Item */
CREATE TABLE [dbo].[ColumnLock] (
	[DocType] [d_DocType] NOT NULL,
	[DtlType] [d_DtlType] NOT NULL,
	[Indent] [d_Boolean] NOT NULL,
	[FontStyle] [d_Boolean] NOT NULL,
	[MainItem] [d_Boolean] NOT NULL,
	[Numbering] [d_Boolean] NOT NULL,
	[Location] [d_Boolean] NOT NULL,
	[BatchNo] [d_Boolean] NOT NULL,
	[Description] [d_Boolean] NOT NULL,
	[FurtherDescription] [d_Boolean] NOT NULL,
	[YourPONo] [d_Boolean] NOT NULL,
	[YourPODate] [d_Boolean] NOT NULL,
	[YourDONo] [d_Boolean] NOT NULL,
	[YourDODate] [d_Boolean] NOT NULL,
	[OurPONo] [d_Boolean] NOT NULL,
	[OurPODate] [d_Boolean] NOT NULL,
	[DeliveryDate] [d_Boolean] NOT NULL,
	[PostToStockDate] [d_Boolean] NOT NULL,
	[ProjNo] [d_Boolean] NOT NULL,
	[DeptNo] [d_Boolean] NOT NULL,
	[Qty] [d_Boolean] NOT NULL,
	[FOCQty] [d_Boolean] NOT NULL,
	[UnitPrice] [d_Boolean] NOT NULL,
	[Discount] [d_Boolean] NOT NULL,
	[TaxType] [d_Boolean] NOT NULL,
	[Tax] [d_Boolean] NOT NULL,
	[SubTotal] [d_Boolean] NOT NULL,
	[BonusPoint] [d_Boolean] NOT NULL,
	[PrintOut] [d_Boolean] NOT NULL,
	[ForConsignment] [d_Boolean] NOT NULL,
	[AccNo] [d_Boolean] NOT NULL,
	[ForeignCharges] [d_Boolean] NOT NULL,
	[LocalCharges] [d_Boolean] NOT NULL,
	[Duty] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RemarkName] (
	[DocType] [d_DocType] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Remark1Name] [nvarchar] (30) NULL,
	[Remark2Name] [nvarchar] (30) NULL,
	[Remark3Name] [nvarchar] (30) NULL,
	[Remark4Name] [nvarchar] (30) NULL,
	[Remark1MRU] [d_Boolean] NOT NULL ,
	[Remark2MRU] [d_Boolean] NOT NULL ,
	[Remark3MRU] [d_Boolean] NOT NULL ,
	[Remark4MRU] [d_Boolean] NOT NULL ,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FiscalYear] (
	[FiscalYearName] [nvarchar] (20) NOT NULL PRIMARY KEY NONCLUSTERED,
	[FromDate] [DateTime] NOT NULL,
	[ToDate] [DateTime] NOT NULL ,
	[IsActive] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PeriodLock] (
	[PeriodNo] [int] NOT NULL PRIMARY KEY NONCLUSTERED,
	[Lock] [d_Boolean] NOT NULL,
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[OBDTL] (
	[OBDtlKey] [bigint] IDENTITY (1, 1) NOT NULL PRIMARY KEY NONCLUSTERED,
	[PeriodNo] [d_PeriodNo] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	[ProjNo] [d_Project] NULL,
	[DeptNo] [d_Dept] NULL,
	[Amount] [d_Money] NULL,
	[HomeAmount] [d_Money] NULL,
	[SourceType] [d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ColumnLock] WITH NOCHECK ADD 
	CONSTRAINT [PK_ColumnLock] PRIMARY KEY  CLUSTERED 
	(
		[DocType],
		[DtlType]
	)  ON [PRIMARY]
GO

ALTER TABLE [dbo].[AccGroup] ADD 
	CONSTRAINT [FK_AccGroup_AccType] FOREIGN KEY 
	(
		[AccType]
	) REFERENCES [dbo].[AccType] (
		[AccType]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[PLFormat] WITH NOCHECK ADD 
	CONSTRAINT [FK_PLFormat_AccType] FOREIGN KEY 
	(
		[AccType]
	) REFERENCES [dbo].[AccType] (
		[AccType]
	) ON UPDATE CASCADE 
GO

ALTER TABLE [dbo].[BSFormat] WITH NOCHECK ADD 
	CONSTRAINT [FK_BSFormat_AccType] FOREIGN KEY 
	(
		[AccType]
	) REFERENCES [dbo].[AccType] (
		[AccType]
	) ON UPDATE CASCADE 
GO

ALTER TABLE [dbo].[BankRecon] WITH NOCHECK ADD 
	CONSTRAINT [PK_BankRecon] PRIMARY KEY  CLUSTERED 
	(
		[AccNo],
		[BankStatementDate]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_BankRecon_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE 
GO

ALTER TABLE [dbo].[MRU] WITH NOCHECK ADD 
	CONSTRAINT [PK_MRUKeyUserID] PRIMARY KEY  CLUSTERED 
	(
		[MRUKey],
		[UserID]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[DocNoFormatUsers] WITH NOCHECK ADD 
	CONSTRAINT [PK_DocNoFormatUsers] PRIMARY KEY  CLUSTERED 
	(
		[Name],
		[UserID]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_DocNoFormatUsers_Name] FOREIGN KEY 
	(
		[Name]
	) REFERENCES [dbo].[DocNoFormat] (
		[Name]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DocNoFormatUsers_UserID] FOREIGN KEY 
	(
		[UserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[DocNoFormatAccNo] WITH NOCHECK ADD 
	CONSTRAINT [PK_DocNoFormatAccNo] PRIMARY KEY  CLUSTERED 
	(
		[Name],
		[AccNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_DocNoFormatAccNo_Name] FOREIGN KEY 
	(
		[Name]
	) REFERENCES [dbo].[DocNoFormat] (
		[Name]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DocNoFormatAccNo_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[UsersSalesAgent] WITH NOCHECK ADD 
	CONSTRAINT [PK_UsersSalesAgent] PRIMARY KEY  CLUSTERED 
	(
		[UserID],
		[SalesAgent]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[UsersPurchaseAgent] WITH NOCHECK ADD 
	CONSTRAINT [PK_UsersPurchaseAgent] PRIMARY KEY  CLUSTERED 
	(
		[UserID],
		[PurchaseAgent]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[UsersGroup] WITH NOCHECK ADD 
	CONSTRAINT [PK_UsersGroup] PRIMARY KEY  CLUSTERED 
	(
		[UserID],
		[UserGroupID]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[AccessRight] WITH NOCHECK ADD 
	CONSTRAINT [PK_AccessRight] PRIMARY KEY  CLUSTERED 
	(
		[CmdID],
		[UserID]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[Commission] WITH NOCHECK ADD 
	CONSTRAINT [PK_Commission] PRIMARY KEY  CLUSTERED 
	(
		[SalesAgent],
		[WithinDay]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_Commission_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE 
GO

ALTER TABLE [dbo].[CurrRate] WITH NOCHECK ADD 
	CONSTRAINT [PK_CurrRate] PRIMARY KEY  CLUSTERED 
	(
		[CurrencyCode],
		[FromDate],
		[ToDate]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_CurrRate_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE 
GO

ALTER TABLE [dbo].[PBalance] WITH NOCHECK ADD 
	CONSTRAINT [FK_PBalance_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON DELETE CASCADE ON UPDATE CASCADE ,
	CONSTRAINT [FK_PBalance_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON DELETE CASCADE ON UPDATE CASCADE ,
	CONSTRAINT [FK_PBalance_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON DELETE CASCADE ON UPDATE CASCADE 
GO

ALTER TABLE [dbo].[OBalance] WITH NOCHECK ADD 
	CONSTRAINT [FK_OBalance_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON DELETE CASCADE ON UPDATE CASCADE ,
	CONSTRAINT [FK_OBalance_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON DELETE CASCADE ON UPDATE CASCADE ,
	CONSTRAINT [FK_OBalance_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON DELETE CASCADE ON UPDATE CASCADE 
GO

ALTER TABLE [dbo].[AssetLink] WITH NOCHECK ADD 
	CONSTRAINT [PK_AssetLink] PRIMARY KEY  CLUSTERED 
	(
		[AssetAccNo],
		[AssetDeprnAccNo]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[TaxType] WITH NOCHECK ADD 
	CONSTRAINT [FK_TaxType_TaxAccNo] FOREIGN KEY 
	(
		[TaxAccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	)
GO

ALTER TABLE [dbo].[Debtor] ADD 
	CONSTRAINT [FK_Debtor_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Debtor_DebtorType] FOREIGN KEY 
	(
		[DebtorType]
	) REFERENCES [dbo].[DebtorType] (
		[DebtorType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Debtor_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Debtor_AreaCode] FOREIGN KEY 
	(
		[AreaCode]
	) REFERENCES [dbo].[Area] (
		[AreaCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Debtor_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Debtor_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Debtor_PriceCategory] FOREIGN KEY 
	(
		[PriceCategory]
	) REFERENCES [dbo].[PriceCategory] (
		[PriceCategory]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Debtor_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_Debtor_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ItemPrice] ADD 
	CONSTRAINT [FK_ItemPrice_PriceCategory] FOREIGN KEY 
	(
		[PriceCategory]
	) REFERENCES [dbo].[PriceCategory] (
		[PriceCategory]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[Creditor] ADD 
	CONSTRAINT [FK_Creditor_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Creditor_CreditorType] FOREIGN KEY 
	(
		[CreditorType]
	) REFERENCES [dbo].[CreditorType] (
		[CreditorType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Creditor_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Creditor_AreaCode] FOREIGN KEY 
	(
		[AreaCode]
	) REFERENCES [dbo].[Area] (
		[AreaCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Creditor_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Creditor_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Creditor_PriceCategory] FOREIGN KEY 
	(
		[PriceCategory]
	) REFERENCES [dbo].[PriceCategory] (
		[PriceCategory]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_Creditor_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_Creditor_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[Branch] WITH NOCHECK ADD 
	CONSTRAINT [PK_Branch] PRIMARY KEY  CLUSTERED 
	(
		[AccNo],
		[BranchCode]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[Contact] WITH NOCHECK ADD 
	CONSTRAINT [PK_Contact] PRIMARY KEY  CLUSTERED 
	(
		[AccNo],
		[Name]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[TemporaryCredit] WITH NOCHECK ADD 
	CONSTRAINT [PK_TemporaryCredit] PRIMARY KEY  CLUSTERED 
	(
		[AccNo],
		[FromDate],
		[ToDate]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[Item] WITH NOCHECK ADD 
	CONSTRAINT [FK_Item_ItemGroup] FOREIGN KEY
	(
		[ItemGroup]
	) REFERENCES [dbo].[ItemGroup] (
		[ItemGroup]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_Item_TaxType] FOREIGN KEY
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_Item_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_Item_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ItemGroup] WITH NOCHECK ADD 
	CONSTRAINT [FK_ItemGroup_SalesCode] FOREIGN KEY 
	(
		[SalesCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_ItemGroup_CashSalesCode] FOREIGN KEY 
	(
		[CashSalesCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_ItemGroup_SalesReturnCode] FOREIGN KEY 
	(
		[SalesReturnCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_ItemGroup_SalesDiscountCode] FOREIGN KEY 
	(
		[SalesDiscountCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_ItemGroup_PurchaseCode] FOREIGN KEY 
	(
		[PurchaseCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_ItemGroup_PurchaseReturnCode] FOREIGN KEY 
	(
		[PurchaseReturnCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_ItemGroup_PurchaseDiscountCode] FOREIGN KEY 
	(
		[PurchaseDiscountCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	)
GO

ALTER TABLE [dbo].[ItemUOM] WITH NOCHECK ADD 
	CONSTRAINT [PK_ITEMUOM] PRIMARY KEY  CLUSTERED 
	(
		[ItemCode],
		[UOM]
	)  ON [PRIMARY]
GO

ALTER TABLE [dbo].[ItemBalQty] WITH NOCHECK ADD 
	CONSTRAINT [PK_ItemBalQty] PRIMARY KEY  CLUSTERED 
	(
		[ItemCode],
		[UOM],
		[Location]
	)  ON [PRIMARY]
GO
	
ALTER TABLE [dbo].[ItemBatchBalQty] WITH NOCHECK ADD 
	CONSTRAINT [PK_ItemBatchBalQty] PRIMARY KEY  CLUSTERED 
	(
		[ItemCode],
		[UOM],
		[Location],
		[BatchNo]
	)  ON [PRIMARY]
GO
	
ALTER TABLE [dbo].[ItemBatch] WITH NOCHECK ADD 
	CONSTRAINT [PK_ItemBatch] PRIMARY KEY  CLUSTERED 
	(
		[ItemCode],
		[BatchNo]
	)  ON [PRIMARY]
GO

ALTER TABLE [dbo].[ItemBOM] WITH NOCHECK ADD 
	CONSTRAINT [PK_ItemBOM] PRIMARY KEY  CLUSTERED 
	(
		[ItemCode],
		[SubItemCode]
	)  ON [PRIMARY]
GO

ALTER TABLE [dbo].[ItemReplacement] WITH NOCHECK ADD 
	CONSTRAINT [PK_ItemReplacement] PRIMARY KEY  CLUSTERED 
	(
		[ItemCode],
		[ReplacementItemCode]
	)  ON [PRIMARY]
GO

ALTER TABLE [dbo].[LayoutUsers] WITH NOCHECK ADD 
	CONSTRAINT [PK_LayoutUsers] PRIMARY KEY  CLUSTERED 
	(
		[Title],
		[UserID]
	)  ON [PRIMARY]
GO

ALTER TABLE [dbo].[UDF] WITH NOCHECK ADD 
	CONSTRAINT [PK_UDF] PRIMARY KEY  CLUSTERED 
	(
		[TableName],
		[FieldName]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[UserScript] WITH NOCHECK ADD 
	CONSTRAINT [PK_UserScript] PRIMARY KEY  CLUSTERED 
	(
		[Document],
		[ScriptName]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[ARDeposit] ADD 
	CONSTRAINT [IX_ARDeposit_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_ARDeposit_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDeposit_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDeposit_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDeposit_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ARDeposit_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ARDepositDTL] ADD 
	CONSTRAINT [FK_ARDepositDTL_PaymentMethod] FOREIGN KEY 
	(
		[PaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] (
		[PaymentMethod]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[ARRefundDepositDTL] ADD 
	CONSTRAINT [FK_ARRefundDepositDTL_PaymentMethod] FOREIGN KEY 
	(
		[PaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] (
		[PaymentMethod]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[APDeposit] ADD 
	CONSTRAINT [IX_APDeposit_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_APDeposit_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDeposit_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDeposit_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDeposit_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_APDeposit_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[APDepositDTL] ADD 
	CONSTRAINT [FK_APDepositDTL_PaymentMethod] FOREIGN KEY 
	(
		[PaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] (
		[PaymentMethod]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[APRefundDepositDTL] ADD 
	CONSTRAINT [FK_APRefundDepositDTL_PaymentMethod] FOREIGN KEY 
	(
		[PaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] (
		[PaymentMethod]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[ARInvoice] ADD 
	CONSTRAINT [IX_ARInvoice_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_ARInvoice_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARInvoice_JournalType] FOREIGN KEY 
	(
		[JournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARInvoice_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARInvoice_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARInvoice_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARInvoice_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ARInvoice_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ARInvoiceDTL] ADD 
	CONSTRAINT [FK_ARInvoiceDTL_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARInvoiceDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARInvoiceDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARInvoiceDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_ARInvoiceDTL_DocKey] ON [dbo].[ARInvoiceDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ARDN] ADD 
	CONSTRAINT [IX_ARDN_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_ARDN_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDN_JournalType] FOREIGN KEY 
	(
		[JournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDN_DNType] FOREIGN KEY 
	(
		[DNType]
	) REFERENCES [dbo].[DNType] (
		[DNType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDN_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDN_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDN_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDN_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ARDN_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ARDNDTL] ADD 
	CONSTRAINT [FK_ARDNDTL_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDNDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDNDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARDNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_ARDNDTL_DocKey] ON [dbo].[ARDNDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ARPayment] ADD 
	CONSTRAINT [IX_ARPayment_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_ARPayment_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARPayment_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARPayment_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARPayment_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARPayment_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ARPayment_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ARPaymentDTL] ADD 
	CONSTRAINT [FK_ARPaymentDTL_PaymentMethod] FOREIGN KEY 
	(
		[PaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] (
		[PaymentMethod]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[ARPaymentKnockOffDetail] WITH NOCHECK ADD 
	CONSTRAINT [PK_ARPaymentKnockOffDetail] PRIMARY KEY  CLUSTERED 
	(
		[KnockOffKey],
		[KnockOffDtlKey]
	)  ON [PRIMARY]
GO

CREATE  INDEX [IX_ARPaymentDTL_DocKey] ON [dbo].[ARPaymentDTL]([DocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_ARPaymentKnockOff_DocKey] ON [dbo].[ARPaymentKnockOff]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ARCN] ADD 
	CONSTRAINT [IX_ARCN_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_ARCN_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARCN_JournalType] FOREIGN KEY 
	(
		[JournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARCN_CNType] FOREIGN KEY 
	(
		[CNType]
	) REFERENCES [dbo].[CNType] (
		[CNType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARCN_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARCN_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ARCN_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ARCNDTL] ADD 
	CONSTRAINT [FK_ARCNDTL_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARCNDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARCNDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARCNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_ARCNDTL_DocKey] ON [dbo].[ARCNDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ARCNKnockOffDetail] WITH NOCHECK ADD 
	CONSTRAINT [PK_ARCNKnockOffDetail] PRIMARY KEY  CLUSTERED 
	(
		[KnockOffKey],
		[KnockOffDtlKey]
	)  ON [PRIMARY]
GO

CREATE  INDEX [IX_ARCNKnockOff_DocKey] ON [dbo].[ARCNKnockOff]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ARRefund] ADD 
	CONSTRAINT [IX_ARRefund_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_ARRefund_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARRefund_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARRefund_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARRefund_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARRefund_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ARRefund_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ARRefundDTL] ADD 
	CONSTRAINT [FK_ARRefundDTL_PaymentMethod] FOREIGN KEY 
	(
		[PaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] (
		[PaymentMethod]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[ARRefundKnockOffDetail] WITH NOCHECK ADD 
	CONSTRAINT [PK_ARRefundKnockOffDetail] PRIMARY KEY  CLUSTERED 
	(
		[KnockOffKey],
		[KnockOffDtlKey]
	)  ON [PRIMARY]
GO

CREATE  INDEX [IX_ARRefundKnockOff_DocKey] ON [dbo].[ARRefundKnockOff]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ARAPContra] ADD 
	CONSTRAINT [IX_ARAPContra_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_ARAPContra_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARAPContra_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	),
	CONSTRAINT [FK_ARAPContra_JournalType] FOREIGN KEY 
	(
		[JournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARAPContra_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARAPContra_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARAPContra_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ARAPContra_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ARAPContra_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ARContraKnockOffDetail] WITH NOCHECK ADD 
	CONSTRAINT [PK_ARContraKnockOffDetail] PRIMARY KEY  CLUSTERED 
	(
		[KnockOffKey],
		[KnockOffDtlKey]
	)  ON [PRIMARY]
GO

CREATE  INDEX [IX_ARContraKnockOff_DocKey] ON [dbo].[ARContraKnockOff]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[APContraKnockOffDetail] WITH NOCHECK ADD 
	CONSTRAINT [PK_APContraKnockOffDetail] PRIMARY KEY  CLUSTERED 
	(
		[KnockOffKey],
		[KnockOffDtlKey]
	)  ON [PRIMARY]
GO

CREATE  INDEX [IX_APContraKnockOff_DocKey] ON [dbo].[APContraKnockOff]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[APInvoice] ADD 
	CONSTRAINT [IX_APInvoice_DocNo] UNIQUE  NONCLUSTERED 
	(
		[CreditorCode],
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_APInvoice_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APInvoice_JournalType] FOREIGN KEY 
	(
		[JournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APInvoice_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APInvoice_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APInvoice_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APInvoice_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_APInvoice_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[APInvoiceDTL] ADD 
	CONSTRAINT [FK_APInvoiceDTL_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APInvoiceDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APInvoiceDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APInvoiceDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_APInvoiceDTL_DocKey] ON [dbo].[APInvoiceDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[APDN] ADD 
	CONSTRAINT [IX_APDN_DocNo] UNIQUE  NONCLUSTERED 
	(
		[CreditorCode],
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_APDN_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDN_JournalType] FOREIGN KEY 
	(
		[JournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDN_DNType] FOREIGN KEY 
	(
		[DNType]
	) REFERENCES [dbo].[DNType] (
		[DNType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDN_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDN_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDN_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDN_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_APDN_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[APDNDTL] ADD 
	CONSTRAINT [FK_APDNDTL_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDNDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDNDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APDNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_APDNDTL_DocKey] ON [dbo].[APDNDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[APPayment] ADD 
	CONSTRAINT [IX_APPayment_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_APPayment_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APPayment_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APPayment_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APPayment_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APPayment_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_APPayment_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[APPaymentDTL] ADD 
	CONSTRAINT [FK_APPaymentDTL_PaymentMethod] FOREIGN KEY 
	(
		[PaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] (
		[PaymentMethod]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[APPaymentKnockOffDetail] WITH NOCHECK ADD 
	CONSTRAINT [PK_APPaymentKnockOffDetail] PRIMARY KEY  CLUSTERED 
	(
		[KnockOffKey],
		[KnockOffDtlKey]
	)  ON [PRIMARY]
GO

CREATE  INDEX [IX_APPaymentDTL_DocKey] ON [dbo].[APPaymentDTL]([DocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_APPaymentKnockOff_DocKey] ON [dbo].[APPaymentKnockOff]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[APCN] ADD 
	CONSTRAINT [IX_APCN_DocNo] UNIQUE  NONCLUSTERED 
	(
		[CreditorCode],
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_APCN_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APCN_JournalType] FOREIGN KEY 
	(
		[JournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APCN_CNType] FOREIGN KEY 
	(
		[CNType]
	) REFERENCES [dbo].[CNType] (
		[CNType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APCN_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APCN_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_APCN_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[APCNDTL] ADD 
	CONSTRAINT [FK_APCNDTL_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APCNDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APCNDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APCNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_APCNDTL_DocKey] ON [dbo].[APCNDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[APCNKnockOffDetail] WITH NOCHECK ADD 
	CONSTRAINT [PK_APCNKnockOffDetail] PRIMARY KEY  CLUSTERED 
	(
		[KnockOffKey],
		[KnockOffDtlKey]
	)  ON [PRIMARY]
GO

CREATE  INDEX [IX_APCNKnockOff_DocKey] ON [dbo].[APCNKnockOff]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[APRefund] ADD 
	CONSTRAINT [IX_APRefund_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_APRefund_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APRefund_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APRefund_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APRefund_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_APRefund_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_APRefund_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[APRefundDTL] ADD 
	CONSTRAINT [FK_APRefundDTL_PaymentMethod] FOREIGN KEY 
	(
		[PaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] (
		[PaymentMethod]
	) ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[APRefundKnockOffDetail] WITH NOCHECK ADD 
	CONSTRAINT [PK_APRefundKnockOffDetail] PRIMARY KEY  CLUSTERED 
	(
		[KnockOffKey],
		[KnockOffDtlKey]
	)  ON [PRIMARY]
GO

CREATE  INDEX [IX_APRefundKnockOff_DocKey] ON [dbo].[APRefundKnockOff]([DocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_BankTrans_SourceType_SourceKey] ON [dbo].[BankTrans]([SourceType], [SourceKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_BankTrans_AccNo] ON [dbo].[BankTrans]([AccNo]) ON [PRIMARY]
GO

CREATE  INDEX [IX_BankTrans_BankStatementDate] ON [dbo].[BankTrans]([BankStatementDate]) ON [PRIMARY]
GO

CREATE  INDEX [IX_TaxTrans_SourceType_SourceKey] ON [dbo].[TaxTrans]([SourceType], [SourceKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_BonusPointTrans_SourceType_SourceKey] ON [dbo].[BonusPointTrans]([SourceType], [SourceKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[GLMAST] ADD 
	CONSTRAINT [FK_GLMAST_AccType] FOREIGN KEY 
	(
		[AccType]
	) REFERENCES [dbo].[AccType] (
		[AccType]
	) ON UPDATE CASCADE
GO
	
ALTER TABLE [dbo].[GLDTL] ADD 
	CONSTRAINT [FK_GLDTL_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GLDTL_DEAccNo] FOREIGN KEY 
	(
		[DEAccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ,
	CONSTRAINT [FK_GLDTL_JournalType] FOREIGN KEY 
	(
		[JournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GLDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GLDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GLDTL_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_GLDTL_SourceType_SourceKey] ON [dbo].[GLDTL]([SourceType], [SourceKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_GLDTL_JournalType] ON [dbo].[GLDTL]([JournalType]) ON [PRIMARY]
GO

CREATE  INDEX [IX_GLDTL_TransDate] ON [dbo].[GLDTL]([TransDate]) ON [PRIMARY]
GO

CREATE  INDEX [IX_GLDTL_AccNo] ON [dbo].[GLDTL]([AccNo]) ON [PRIMARY]
GO

CREATE  INDEX [IX_IPHIST_AccNo_ItemCode] ON [dbo].[IPHIST]([AccNo], [ItemCode]) ON [PRIMARY]
GO

CREATE  INDEX [IX_IPHIST_ItemCode_AccNo] ON [dbo].[IPHIST]([ItemCode], [AccNo]) ON [PRIMARY]
GO

CREATE  INDEX [IX_IPHIST_DocType_DocKey] ON [dbo].[IPHIST]([DocType], [DocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_IPHIST_DocType_DtlKey] ON [dbo].[IPHIST]([DocType], [DtlKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PackageDTL] ADD 
	CONSTRAINT [FK_PackageDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PackageDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PackageDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PackageDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

ALTER TABLE [dbo].[QT] ADD 
	CONSTRAINT [IX_QT_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_QT_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_QT_BranchCode] FOREIGN KEY 
	(
		[DebtorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_QT_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_QT_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_QT_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_QT_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_QT_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_QT_ApprovalUserID] FOREIGN KEY 
	(
		[ApprovalUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[QTDTL] ADD 
	CONSTRAINT [FK_QTDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_QTDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_QTDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_QTDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_QTDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_QTDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE, 
	CONSTRAINT [FK_QTDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_QT_ToDocTypeKey] ON [dbo].[QT]([ToDocType], [ToDocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_QTDTL_DocKey] ON [dbo].[QTDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[SO] ADD 
	CONSTRAINT [IX_SO_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_SO_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SO_BranchCode] FOREIGN KEY 
	(
		[DebtorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SO_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SO_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SO_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SO_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_SO_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[SODTL] ADD 
	CONSTRAINT [FK_SODTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SODTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SODTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SODTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SODTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SODTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SODTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_SO_ToDocTypeKey] ON [dbo].[SO]([ToDocType], [ToDocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_SODTL_DocKey] ON [dbo].[SODTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[DO] ADD 
	CONSTRAINT [IX_DO_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_DO_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DO_BranchCode] FOREIGN KEY 
	(
		[DebtorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DO_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DO_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DO_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DO_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_DO_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[DODTL] ADD 
	CONSTRAINT [FK_DODTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DODTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DODTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DODTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DODTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DODTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DODTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DODTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_DO_ToDocTypeKey] ON [dbo].[DO]([ToDocType], [ToDocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_DODTL_DocKey] ON [dbo].[DODTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[IV] ADD 
	CONSTRAINT [IX_IV_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_IV_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IV_BranchCode] FOREIGN KEY 
	(
		[DebtorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IV_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IV_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IV_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IV_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_IV_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[IVDTL] ADD 
	CONSTRAINT [FK_IVDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IVDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IVDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IVDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IVDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IVDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IVDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_IVDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_IV_ToDocTypeKey] ON [dbo].[IV]([ToDocType], [ToDocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_IVDTL_DocKey] ON [dbo].[IVDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[CS] ADD 
	CONSTRAINT [IX_CS_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_CS_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CS_BranchCode] FOREIGN KEY 
	(
		[DebtorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CS_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CS_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CS_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CS_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_CS_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[CSDTL] ADD 
	CONSTRAINT [FK_CSDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_CS_ToDocTypeKey] ON [dbo].[CS]([ToDocType], [ToDocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_CSDTL_DocKey] ON [dbo].[CSDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[DN] ADD 
	CONSTRAINT [IX_DN_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_DN_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DN_BranchCode] FOREIGN KEY 
	(
		[DebtorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DN_DNType] FOREIGN KEY 
	(
		[DNType]
	) REFERENCES [dbo].[DNType] (
		[DNType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DN_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DN_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DN_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DN_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_DN_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[DNDTL] ADD 
	CONSTRAINT [FK_DNDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DNDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DNDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DNDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DNDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DNDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DNDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_DNDTL_DocKey] ON [dbo].[DNDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[CN] ADD 
	CONSTRAINT [IX_CN_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_CN_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CN_BranchCode] FOREIGN KEY 
	(
		[DebtorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CN_CNType] FOREIGN KEY 
	(
		[CNType]
	) REFERENCES [dbo].[CNType] (
		[CNType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CN_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CN_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CN_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CN_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_CN_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[CNDTL] ADD 
	CONSTRAINT [FK_CNDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CNDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CNDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CNDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CNDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CNDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CNDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CNDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_CNDTL_DocKey] ON [dbo].[CNDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[XS] ADD 
	CONSTRAINT [IX_XS_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_XS_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XS_BranchCode] FOREIGN KEY 
	(
		[DebtorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XS_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XS_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XS_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XS_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_XS_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[XSDTL] ADD 
	CONSTRAINT [FK_XSDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XSDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XSDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XSDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XSDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XSDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XSDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_XSDTL_DocKey] ON [dbo].[XSDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[DR] ADD 
	CONSTRAINT [IX_DR_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_DR_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DR_BranchCode] FOREIGN KEY 
	(
		[DebtorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DR_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DR_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DR_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DR_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_DR_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[DRDTL] ADD 
	CONSTRAINT [FK_DRDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DRDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DRDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DRDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DRDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DRDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DRDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_DRDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_DRDTL_DocKey] ON [dbo].[DRDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[RQ] ADD 
	CONSTRAINT [IX_RQ_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_RQ_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RQ_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RQ_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RQ_BranchCode] FOREIGN KEY 
	(
		[CreditorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RQ_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RQ_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_RQ_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[RQDTL] ADD 
	CONSTRAINT [FK_RQDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RQDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RQDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RQDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RQDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RQDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE, 
	CONSTRAINT [FK_RQDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_RQDTL_DocKey] ON [dbo].[RQDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PO] ADD 
	CONSTRAINT [IX_PO_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_PO_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PO_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PO_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PO_BranchCode] FOREIGN KEY 
	(
		[CreditorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PO_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PO_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_PO_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[PODTL] ADD 
	CONSTRAINT [FK_PODTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PODTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PODTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PODTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PODTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PODTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE, 
	CONSTRAINT [FK_PODTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_PODTL_DocKey] ON [dbo].[PODTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[GR] ADD 
	CONSTRAINT [IX_GR_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_GR_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GR_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GR_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GR_BranchCode] FOREIGN KEY 
	(
		[CreditorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GR_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GR_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_GR_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[GRDTL] ADD 
	CONSTRAINT [FK_GRDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GRDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GRDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GRDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GRDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GRDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GRDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE, 
	CONSTRAINT [FK_GRDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_GRDTL_DocKey] ON [dbo].[GRDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PI] ADD 
	CONSTRAINT [IX_PI_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_PI_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PI_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PI_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PI_BranchCode] FOREIGN KEY 
	(
		[CreditorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PI_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PI_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_PI_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[PIDTL] ADD 
	CONSTRAINT [FK_PIDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PIDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PIDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PIDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PIDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PIDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PIDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE, 
	CONSTRAINT [FK_PIDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_PIDTL_DocKey] ON [dbo].[PIDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[CP] ADD 
	CONSTRAINT [IX_CP_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_CP_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CP_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CP_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CP_BranchCode] FOREIGN KEY 
	(
		[CreditorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CP_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CP_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_CP_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[CPDTL] ADD 
	CONSTRAINT [FK_CPDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CPDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CPDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CPDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CPDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CPDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CPDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE, 
	CONSTRAINT [FK_CPDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_CPDTL_DocKey] ON [dbo].[CPDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PR] ADD 
	CONSTRAINT [IX_PR_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_PR_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PR_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PR_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PR_BranchCode] FOREIGN KEY 
	(
		[CreditorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PR_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PR_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_PR_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[PRDTL] ADD 
	CONSTRAINT [FK_PRDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PRDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PRDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PRDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PRDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PRDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PRDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE, 
	CONSTRAINT [FK_PRDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_PRDTL_DocKey] ON [dbo].[PRDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[XP] ADD 
	CONSTRAINT [IX_XP_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_XP_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XP_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XP_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XP_BranchCode] FOREIGN KEY 
	(
		[CreditorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XP_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XP_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_XP_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[XPDTL] ADD 
	CONSTRAINT [FK_XPDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XPDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XPDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XPDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XPDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XPDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE, 
	CONSTRAINT [FK_XPDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_XPDTL_DocKey] ON [dbo].[XPDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[GT] ADD 
	CONSTRAINT [IX_GT_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_GT_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GT_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GT_DisplayTerm] FOREIGN KEY 
	(
		[DisplayTerm]
	) REFERENCES [dbo].[Terms] (
		[DisplayTerm]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GT_BranchCode] FOREIGN KEY 
	(
		[CreditorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GT_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GT_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_GT_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[GTDTL] ADD 
	CONSTRAINT [FK_GTDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GTDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GTDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GTDTL_FontStyle] FOREIGN KEY 
	(
		[FontStyle]
	) REFERENCES [dbo].[FontStyle] (
		[FontStyle]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GTDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GTDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_GTDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE, 
	CONSTRAINT [FK_GTDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	)
GO

CREATE  INDEX [IX_GTDTL_DocKey] ON [dbo].[GTDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[XFER] ADD 
	CONSTRAINT [IX_XFER_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_XFER_FromLocation] FOREIGN KEY 
	(
		[FromLocation]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ,
	CONSTRAINT [FK_XFER_ToLocation] FOREIGN KEY 
	(
		[ToLocation]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ,
	CONSTRAINT [FK_XFER_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_XFER_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[XFERDTL] ADD 
	CONSTRAINT [FK_XFERDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XFERDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XFERDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XFERDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_XFERDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE 
GO

CREATE  INDEX [IX_XFERDTL_DocKey] ON [dbo].[XFERDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ADJ] ADD 
	CONSTRAINT [IX_ADJ_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_ADJ_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ADJ_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ADJDTL] ADD 
	CONSTRAINT [FK_ADJDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ADJDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ADJDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ADJDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ADJDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ADJDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE 
GO

CREATE  INDEX [IX_ADJDTL_DocKey] ON [dbo].[ADJDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ISS] ADD 
	CONSTRAINT [IX_ISS_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_ISS_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ISS_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ISSDTL] ADD 
	CONSTRAINT [FK_ISSDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ISSDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ISSDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ISSDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ISSDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ISSDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE 
GO

CREATE  INDEX [IX_ISSDTL_DocKey] ON [dbo].[ISSDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[RCV] ADD 
	CONSTRAINT [IX_RCV_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_RCV_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_RCV_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[RCVDTL] ADD 
	CONSTRAINT [FK_RCVDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RCVDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RCVDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RCVDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RCVDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_RCVDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE 
GO

CREATE  INDEX [IX_RCVDTL_DocKey] ON [dbo].[RCVDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[WOFF] ADD 
	CONSTRAINT [IX_WOFF_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_WOFF_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_WOFF_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[WOFFDTL] ADD 
	CONSTRAINT [FK_WOFFDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_WOFFDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_WOFFDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_WOFFDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_WOFFDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_WOFFDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE 
GO

CREATE  INDEX [IX_WOFFDTL_DocKey] ON [dbo].[WOFFDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[UOMConv] ADD 
	CONSTRAINT [IX_UOMConv_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_UOMConv_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_UOMConv_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[UOMConvDTL] ADD 
	CONSTRAINT [FK_UOMConvDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_UOMConvDTL_ItemFromUOM] FOREIGN KEY 
	(
		[ItemCode], [FromUOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ,
	CONSTRAINT [FK_UOMConvDTL_ItemToUOM] FOREIGN KEY 
	(
		[ItemCode], [ToUOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ,
	CONSTRAINT [FK_UOMConvDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_UOMConvDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_UOMConvDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_UOMConvDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE 
GO

CREATE  INDEX [IX_UOMConvDTL_DocKey] ON [dbo].[UOMConvDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[UpdateCost] ADD 
	CONSTRAINT [IX_UpdateCost_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_UpdateCost_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_UpdateCost_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[UpdateCostDTL] ADD 
	CONSTRAINT [FK_UpdateCostDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_UpdateCostDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE 
GO

CREATE  INDEX [IX_UpdateCostDTL_DocKey] ON [dbo].[UpdateCostDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ASM] ADD 
	CONSTRAINT [IX_ASM_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY],
	CONSTRAINT [FK_ASM_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASM_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASM_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASM_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASM_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASM_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_ASM_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[ASMDTL] ADD 
	CONSTRAINT [FK_ASMDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_ASMDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE 
GO

CREATE  INDEX [IX_ASMDTL_DocKey] ON [dbo].[ASMDTL]([DocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_CSGNItemBalQty] ON [dbo].[CSGNItemBalQty]([AccNo], [ItemCode], [UOM], [Location], [BranchCode], [BatchNo], [ProjNo], [DeptNo]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[CSGN] ADD 
	CONSTRAINT [IX_CSGN_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_CSGN_DebtorCode] FOREIGN KEY 
	(
		[DebtorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGN_BranchCode] FOREIGN KEY 
	(
		[DebtorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGN_SalesAgent] FOREIGN KEY 
	(
		[SalesAgent]
	) REFERENCES [dbo].[SalesAgent] (
		[SalesAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGN_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_CSGN_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[CSGNDTL] ADD 
	CONSTRAINT [FK_CSGNDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGNDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGNDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGNDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGNDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CSGNDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_CSGNDTL_DocKey] ON [dbo].[CSGNDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[SupplierCSGN] ADD 
	CONSTRAINT [IX_SupplierCSGN_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_SupplierCSGN_CreditorCode] FOREIGN KEY 
	(
		[CreditorCode]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SupplierCSGN_BranchCode] FOREIGN KEY 
	(
		[CreditorCode], [BranchCode]
	) REFERENCES [dbo].[Branch] (
		[AccNo], [BranchCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SupplierCSGN_PurchaseAgent] FOREIGN KEY 
	(
		[PurchaseAgent]
	) REFERENCES [dbo].[PurchaseAgent] (
		[PurchaseAgent]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SupplierCSGN_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_SupplierCSGN_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[SupplierCSGNDTL] ADD 
	CONSTRAINT [FK_SupplierCSGNDTL_ItemCode] FOREIGN KEY 
	(
		[ItemCode]
	) REFERENCES [dbo].[Item] (
		[ItemCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SupplierCSGNDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SupplierCSGNDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SupplierCSGNDTL_ItemBatch] FOREIGN KEY 
	(
		[ItemCode], [BatchNo]
	) REFERENCES [dbo].[ItemBatch] (
		[ItemCode], [BatchNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SupplierCSGNDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_SupplierCSGNDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_SupplierCSGNDTL_DocKey] ON [dbo].[CSGNDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[StockDTL] ADD 
	CONSTRAINT [FK_StockDTL_ItemUOM] FOREIGN KEY 
	(
		[ItemCode], [UOM]
	) REFERENCES [dbo].[ItemUOM] (
		[ItemCode], [UOM]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_StockDTL_Location] FOREIGN KEY 
	(
		[Location]
	) REFERENCES [dbo].[Location] (
		[Location]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_StockDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_StockDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_StockDTL_ItemCode_UOM_Location] ON [dbo].[StockDTL]([ItemCode], [UOM], [Location]) ON [PRIMARY]
GO

CREATE  INDEX [IX_StockDTL_DocType_DocKey] ON [dbo].[StockDTL]([DocType], [DocKey]) ON [PRIMARY]
GO

CREATE  INDEX [IX_StockDTL_DtlKey] ON [dbo].[StockDTL]([DtlKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[CB] ADD 
	CONSTRAINT [IX_CB_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_CB_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CB_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_CB_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[CBDTL] ADD 
	CONSTRAINT [FK_CBDTL_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CBDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CBDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_CBDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_CBDTL_DocKey] ON [dbo].[CBDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[CBPaymentDTL] ADD 
	CONSTRAINT [FK_CBPaymentDTL_PaymentMethod] FOREIGN KEY 
	(
		[PaymentMethod]
	) REFERENCES [dbo].[PaymentMethod] (
		[PaymentMethod]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_CBPaymentDTL_DocKey] ON [dbo].[CBPaymentDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PaymentMethod] ADD 
	CONSTRAINT [FK_PaymentMethod_BankAccount] FOREIGN KEY 
	(
		[BankAccount]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_PaymentMethod_BankChargeAccount] FOREIGN KEY 
	(
		[BankChargeAccount]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	),
	CONSTRAINT [FK_PaymentMethod_JournalType] FOREIGN KEY 
	(
		[JournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_PaymentMethod_PaymentFormatName] FOREIGN KEY 
	(
		[PaymentFormatName]
	) REFERENCES [dbo].[DocNoFormat] (
		[Name]
	) ON UPDATE CASCADE,
	CONSTRAINT [FK_PaymentMethod_ReceiptFormatName] FOREIGN KEY 
	(
		[ReceiptFormatName]
	) REFERENCES [dbo].[DocNoFormat] (
		[Name]
	)
GO

ALTER TABLE [dbo].[JE] ADD 
	CONSTRAINT [IX_JE_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY] ,
	CONSTRAINT [FK_JE_JournalType] FOREIGN KEY 
	(
		[JournalType]
	) REFERENCES [dbo].[Journal] (
		[JournalType]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_JE_CurrencyCode] FOREIGN KEY 
	(
		[CurrencyCode]
	) REFERENCES [dbo].[Currency] (
		[CurrencyCode]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_JE_LastModifiedUserID] FOREIGN KEY 
	(
		[LastModifiedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ,
	CONSTRAINT [FK_JE_CreatedUserID] FOREIGN KEY 
	(
		[CreatedUserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	)
GO

ALTER TABLE [dbo].[JEDTL] ADD 
	CONSTRAINT [FK_JEDTL_AccNo] FOREIGN KEY 
	(
		[AccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_JEDTL_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_JEDTL_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_JEDTL_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE
GO

CREATE  INDEX [IX_JEDTL_DocKey] ON [dbo].[JEDTL]([DocKey]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[TaxTrans] ADD 
	CONSTRAINT [FK_TaxTrans_TaxableAccNo] FOREIGN KEY 
	(
		[TaxableAccNo]
	) REFERENCES [dbo].[GLMast] (
		[AccNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_TaxTrans_ProjNo] FOREIGN KEY 
	(
		[ProjNo]
	) REFERENCES [dbo].[Project] (
		[ProjNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_TaxTrans_DeptNo] FOREIGN KEY 
	(
		[DeptNo]
	) REFERENCES [dbo].[Dept] (
		[DeptNo]
	) ON UPDATE CASCADE ,
	CONSTRAINT [FK_TaxTrans_TaxType] FOREIGN KEY 
	(
		[TaxType]
	) REFERENCES [dbo].[TaxType] (
		[TaxType]
	) ON UPDATE CASCADE
GO

INSERT INTO [UserGroup] VALUES ('ADMINS', 'Administrators of the system', 0);
INSERT INTO [UserGroup] VALUES ('FINANCEMGR', 'Finance Manager Group', 0);
INSERT INTO [UserGroup] VALUES ('ACCOUNTS', 'Account Clerks Group', 0);
INSERT INTO [UserGroup] VALUES ('SALES', 'Salesman Group', 0);
INSERT INTO [UserGroup] VALUES ('PURCHASES', 'Purchasing Group', 0);
INSERT INTO [UserGroup] VALUES ('INVMGR', 'Sales/Purchase/Stock Manager Group', 0);
INSERT INTO [UserGroup] VALUES ('STOCKS', 'Stock Clerk Group', 0);
INSERT INTO [Users] (UserID, UserName, Department, Passwd, FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate) VALUES ('ADMIN', 'Administrator', 'Admin', 'SUErIlpvbDtocWdEZXZ6dw==YOS3vbd6aQ8SswMUTto7fYmVYYhSyfOxtAisSMLHvfAMzvnlr62HlTTjUS1X/NLdEBk2S7IxU3Xho9IkU1oCdA==', 'F', 'F', 'T', 0);
INSERT INTO [UsersGroup] VALUES ('ADMIN', 'ADMINS');

INSERT INTO [Registry] VALUES (1, 256, 'AutoCount 2006 Database');
INSERT INTO [Registry] VALUES (2, 256, '1.0.7.0');

INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('CP', 'CAPITAL', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('RE', 'RETAINED EARNING', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('FA', 'FIXED ASSETS', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('OA', 'OTHER ASSETS', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('CA', 'CURRENT ASSETS', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('CL', 'CURRENT LIABILITIES', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('LL', 'LONG TERM LIABILITIES', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('OL', 'OTHER LIABILITIES', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('SL', 'SALES', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('SA', 'SALES ADJUSTMENTS', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('CO', 'COST OF GOODS SOLD', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('OI', 'OTHER INCOMES', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('EI', 'EXTRA-ORDINARY INCOME', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('EP', 'EXPENSES', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('TX', 'TAXATION', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('AP', 'APPROPRIATION A/C', '', 'F', 'T');

INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('BANK', '0', 'Bank Journal');
INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('CASH', '0', 'Petty Cash Journal');
INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('GENERAL', '1', 'General Journal');
INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('SALES', '2', 'Sales Journal');
INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('PURCHASE', '3', 'Purchase Journal');

INSERT INTO [Registry] VALUES (400, 256, 'SALES');
INSERT INTO [Registry] VALUES (402, 256, 'SALES');
INSERT INTO [Registry] VALUES (403, 256, 'SALES');
INSERT INTO [Registry] VALUES (404, 256, 'SALES');
INSERT INTO [Registry] VALUES (405, 256, 'PURCHASE');
INSERT INTO [Registry] VALUES (408, 256, 'PURCHASE');
INSERT INTO [Registry] VALUES (409, 256, 'PURCHASE');
INSERT INTO [Registry] VALUES (410, 256, 'GENERAL');

INSERT INTO [Terms] VALUES ('C.O.D.', 'C.O.D.', 0);
INSERT INTO [Terms] VALUES ('Net 30 days', 'Net 30 days', 0);
INSERT INTO [Terms] VALUES ('Net 45 days', 'Net 45 days', 0);
INSERT INTO [Terms] VALUES ('Net 60 days', 'Net 60 days', 0);
INSERT INTO [Terms] VALUES ('Net 90 days', 'Net 90 days', 0);

/* The following predefined value is for standard Profit & Loss Statement */
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (1, 'A', 'SL', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (2, 'A', 'SA', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (3, 'A', 'CO', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (4, 'S', NULL, 'GROSS PROFIT/(LOSS)', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (5, 'A', 'OI', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (6, 'A', 'EP', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (7, 'N', NULL, 'NET PROFIT/(LOSS)', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (8, 'A', 'TX', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (9, 'S', NULL, 'NET PROFIT/(LOSS) AFTER TAXATION', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (10, 'A', 'EI', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (11, 'A', 'AP', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (12, 'S', NULL, 'NET PROFIT/(LOSS) AFTER APPROPRIATION', 'T');

/* The following predefined value is for standard Balance Sheet Statement */
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (1, 'A', 'FA', '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (2, 'A', 'OA', '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (3, 'A', 'CA', '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (4, 'A', 'CL', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (5, 'N', NULL, 'NET CURRENT ASSETS', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (6, 'S', NULL, '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (7, 'F', NULL, 'FINANCED BY', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (8, 'A', 'CP', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (9, 'A', 'RE', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (10, 'A', 'LL', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (11, 'A', 'OL', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (12, 'S', NULL, '', 'T');

INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (1, 'SL', 'C', 'GP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (2, 'SA', 'D', 'GP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (3, 'CO', 'D', 'GP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (4, 'OI', 'C', 'NP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (5, 'EP', 'D', 'NP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (6, 'TX', 'D', 'TX');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (7, 'EI', 'C', 'AP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (8, 'AP', 'D', 'AP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (1, 'FA', 'D', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (2, 'OA', 'D', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (3, 'CA', 'D', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (4, 'CL', 'C', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (5, 'CP', 'C', 'FN');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (6, 'RE', 'C', 'FN');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (7, 'LL', 'C', 'FN');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (8, 'OL', 'C', 'FN');

INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Sales Footer 1', 'T', 'T', 'T', 'F', 'F', 2, 'F');
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Sales Footer 2', 'T', 'T', 'T', 'F', 'F', 2, 'F');
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Sales Footer 3', 'T', 'T', 'T', 'F', 'F', 2, 'F');
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Purchase Footer 1', 'T', 'T', 'T', 'F', 'F', 2, 'F');
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Purchase Footer 2', 'T', 'T', 'T', 'F', 'F', 2, 'F');
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Purchase Footer 3', 'T', 'T', 'T', 'F', 'F', 2, 'F');

INSERT INTO [DocNoFormat] VALUES ('QT Default', 'QT', 1, 'QT-<000000>', 'QT-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('SO Default', 'SO', 1, 'SO-<000000>', 'SO-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('DO Default', 'DO', 1, 'DO-<000000>', 'DO-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('IV Default', 'IV', 1, 'I-<000000>', 'I-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('CS Default', 'CS', 1, 'CS-<000000>', 'CS-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('CN Default', 'CN', 1, 'CN-<000000>', 'CN-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('DN Default', 'DN', 1, 'DN-<000000>', 'DN-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('XS Default', 'XS', 1, 'XS-<000000>', 'XS-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('DR Default', 'DR', 1, 'DR-<000000>', 'DR-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('CG Default', 'CG', 1, 'CG-<000000>', 'CG-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);

INSERT INTO [DocNoFormat] VALUES ('RQ Default', 'RQ', 1, 'RQ-<000000>', 'RQ-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('PO Default', 'PO', 1, 'PO-<000000>', 'PO-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('GR Default', 'GR', 1, 'GR-<000000>', 'GR-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('PI Default', 'PI', 1, 'PI-<000000>', 'PI-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('CP Default', 'CP', 1, 'CP-<000000>', 'CP-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('PR Default', 'PR', 1, 'PR-<000000>', 'PR-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('XP Default', 'XP', 1, 'XP-<000000>', 'XP-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('GT Default', 'GT', 1, 'GT-<000000>', 'GT-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('SG Default', 'SG', 1, 'CG-<000000>', 'CG-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);

INSERT INTO [DocNoFormat] VALUES ('UOM Default', 'UC', 1, 'UOM-<000000>', 'UOM-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('XFER Default', 'ST', 1, 'XFER-<000000>', 'XFER-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('ADJ Default', 'SA', 1, 'ADJ-<000000>', 'ADJ-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('SR Default', 'SR', 1, 'SR-<000000>', 'SR-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('SI Default', 'SI', 1, 'SI-<000000>', 'SI-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('WOFF Default', 'WO', 1, 'WOFF-<000000>', 'WOFF-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('ASM Default', 'AS', 1, 'ASM-<000000>', 'ASM-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('UCost Default', 'UT', 1, 'UT-<000000>', 'UT-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);

INSERT INTO [DocNoFormat] VALUES ('PV Default', 'PV', 1, 'PV-<000000>', 'PV-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('RV Default', 'OR', 1, 'OR-<000000>', 'OR-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO [DocNoFormat] VALUES ('JV Default', 'JE', 1, 'JV-<000000>', 'JV-000001', 'T', 'F', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);

INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (1, 'LastIV', 'Use Last Invoice/Cash Sale Price', 'T', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (2, 'LastSO', 'Use Last Sales Order Price', 'T', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (3, 'LastQT', 'Use Last Quotation Price', 'T', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (4, 'PriceBook', 'Use Price Book', 'T', 'T');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (1, 'LastPI', 'Use Last Purchase Invoice/Cash Purchase Price', 'F', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (2, 'LastPO', 'Use Last Purchase Order Price', 'F', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (3, 'PriceBook', 'Use Price Book', 'F', 'F');

INSERT INTO [Currency] VALUES ('RM', 'RINGGIT MALAYSIA', N'??', 'MYR', 1, 1, NULL, NULL, NULL, 0);

INSERT INTO [Location] (Location, Description, IsActive, LastUpdate) VALUES ('HQ', 'Headquarter', 'T', 0);

INSERT INTO [CNType] (CNType, Description, IsActive, LastUpdate) VALUES ('RETURN', 'GOODS RETURN', 'T', 0);
INSERT INTO [CNType] (CNType, Description, IsActive, LastUpdate) VALUES ('DISCOUNT', 'DISCOUNT', 'T', 0);

INSERT INTO [ChangeCount] VALUES ('Account', 0);
INSERT INTO [ChangeCount] VALUES ('PaymentMethod', 0);
INSERT INTO [ChangeCount] VALUES ('DocNoFormat', 0);
INSERT INTO [ChangeCount] VALUES ('AccType', 0);
INSERT INTO [ChangeCount] VALUES ('Address', 0);
INSERT INTO [ChangeCount] VALUES ('SalesAgent', 0);
INSERT INTO [ChangeCount] VALUES ('PurchaseAgent', 0);
INSERT INTO [ChangeCount] VALUES ('DebtorType', 0);
INSERT INTO [ChangeCount] VALUES ('CreditorType', 0);
INSERT INTO [ChangeCount] VALUES ('CNType', 0);
INSERT INTO [ChangeCount] VALUES ('DNType', 0);
INSERT INTO [ChangeCount] VALUES ('Area', 0);
INSERT INTO [ChangeCount] VALUES ('Branch', 0);
INSERT INTO [ChangeCount] VALUES ('Creditor', 0);
INSERT INTO [ChangeCount] VALUES ('Currency', 0);
INSERT INTO [ChangeCount] VALUES ('Debtor', 0);
INSERT INTO [ChangeCount] VALUES ('Department', 0);
INSERT INTO [ChangeCount] VALUES ('PriceCategory', 0);
INSERT INTO [ChangeCount] VALUES ('Item', 0);
INSERT INTO [ChangeCount] VALUES ('ItemType', 0);
INSERT INTO [ChangeCount] VALUES ('ItemBOM', 0);
INSERT INTO [ChangeCount] VALUES ('ItemUOM', 0);
INSERT INTO [ChangeCount] VALUES ('ItemBatch', 0);
INSERT INTO [ChangeCount] VALUES ('ItemGroup', 0);
INSERT INTO [ChangeCount] VALUES ('JournalType', 0);
INSERT INTO [ChangeCount] VALUES ('Location', 0);
INSERT INTO [ChangeCount] VALUES ('Project', 0);
INSERT INTO [ChangeCount] VALUES ('TaxType', 0);
INSERT INTO [ChangeCount] VALUES ('Terms', 0);
INSERT INTO [ChangeCount] VALUES ('Users', 0);
INSERT INTO [ChangeCount] VALUES ('CB', 0);
INSERT INTO [ChangeCount] VALUES ('JE', 0);
INSERT INTO [ChangeCount] VALUES ('QT', 0);
INSERT INTO [ChangeCount] VALUES ('SO', 0);
INSERT INTO [ChangeCount] VALUES ('DO', 0);
INSERT INTO [ChangeCount] VALUES ('IV', 0);
INSERT INTO [ChangeCount] VALUES ('CS', 0);
INSERT INTO [ChangeCount] VALUES ('DN', 0);
INSERT INTO [ChangeCount] VALUES ('CN', 0);
INSERT INTO [ChangeCount] VALUES ('XS', 0);
INSERT INTO [ChangeCount] VALUES ('DR', 0);
INSERT INTO [ChangeCount] VALUES ('RQ', 0);
INSERT INTO [ChangeCount] VALUES ('PO', 0);
INSERT INTO [ChangeCount] VALUES ('GR', 0);
INSERT INTO [ChangeCount] VALUES ('PI', 0);
INSERT INTO [ChangeCount] VALUES ('CP', 0);
INSERT INTO [ChangeCount] VALUES ('PR', 0);
INSERT INTO [ChangeCount] VALUES ('XP', 0);
INSERT INTO [ChangeCount] VALUES ('GT', 0);
INSERT INTO [ChangeCount] VALUES ('XFER', 0);
INSERT INTO [ChangeCount] VALUES ('ADJ', 0);
INSERT INTO [ChangeCount] VALUES ('ISS', 0);
INSERT INTO [ChangeCount] VALUES ('RCV', 0);
INSERT INTO [ChangeCount] VALUES ('WOFF', 0);
INSERT INTO [ChangeCount] VALUES ('UOMConv', 0);
INSERT INTO [ChangeCount] VALUES ('UpdateCost', 0);
INSERT INTO [ChangeCount] VALUES ('ASM', 0);
INSERT INTO [ChangeCount] VALUES ('CSGN', 0);
INSERT INTO [ChangeCount] VALUES ('SupplierCSGN', 0);
INSERT INTO [ChangeCount] VALUES ('ARInvoice', 0);
INSERT INTO [ChangeCount] VALUES ('ARDN', 0);
INSERT INTO [ChangeCount] VALUES ('ARCN', 0);
INSERT INTO [ChangeCount] VALUES ('ARPayment', 0);
INSERT INTO [ChangeCount] VALUES ('ARRefund', 0);
INSERT INTO [ChangeCount] VALUES ('ARDeposit', 0);
INSERT INTO [ChangeCount] VALUES ('ARAPContra', 0);
INSERT INTO [ChangeCount] VALUES ('APInvoice', 0);
INSERT INTO [ChangeCount] VALUES ('APDN', 0);
INSERT INTO [ChangeCount] VALUES ('APCN', 0);
INSERT INTO [ChangeCount] VALUES ('APPayment', 0);
INSERT INTO [ChangeCount] VALUES ('APRefund', 0);
INSERT INTO [ChangeCount] VALUES ('APDeposit', 0);
GO

INSERT INTO [ColumnLock] VALUES ('QT', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('SO', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('SO', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('SO', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('SO', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('SO', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DO', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DO', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DO', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DO', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DO', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('IV', '5', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'T', 'T', 'T', 'T', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CS', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CS', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CS', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CS', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CS', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CN', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CN', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CN', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CN', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CN', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DN', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XS', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XS', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XS', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XS', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('DR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');

INSERT INTO [ColumnLock] VALUES ('RQ', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PO', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PO', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PO', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PO', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PO', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GR', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PI', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PI', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PI', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PI', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PI', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CP', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CP', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CP', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CP', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('CP', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PR', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('PR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XP', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XP', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XP', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('XP', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GT', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GT', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GT', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] VALUES ('GT', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
GO

INSERT INTO [RemarkName] VALUES ('QT', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('DO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('IV', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CS', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('DN', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CN', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('XS', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('DR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('RQ', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('GR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PI', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CP', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('XP', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('GT', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CG', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SG', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('ST', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SA', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SI', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('WO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('AS', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
GO

CREATE TRIGGER UpdateAccountChangeCount ON GLMast
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Account'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePaymentMethodChangeCount ON PaymentMethod
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PaymentMethod'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDocNoFormatChangeCount ON DocNoFormat
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DocNoFormat'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAccTypeChangeCount ON AccType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='AccType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAddressChangeCount ON Address
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Address'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateSalesAgentChangeCount ON SalesAgent
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='SalesAgent'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePurchaseAgentChangeCount ON PurchaseAgent
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PurchaseAgent'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDebtorTypeChangeCount ON DebtorType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DebtorType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCreditorTypeChangeCount ON CreditorType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CreditorType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCNTypeChangeCount ON CNType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CNType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDNTypeChangeCount ON DNType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DNType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAreaChangeCount ON Area
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Area'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateBranchChangeCount ON Branch
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Branch'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCreditorChangeCount ON Creditor
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Creditor'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCurrencyChangeCount ON Currency
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Currency'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDebtorChangeCount ON Debtor
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Debtor'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDepartmentChangeCount ON Dept
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Department'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePriceCategoryChangeCount ON PriceCategory
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PriceCategory'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemChangeCount ON Item
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Item'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemTypeChangeCount ON ItemType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemBOMChangeCount ON ItemBOM
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemBOM'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemUOMChangeCount ON ItemUOM
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemUOM'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemBatchChangeCount ON ItemBatch
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemBatch'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemGroupChangeCount ON ItemGroup
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemGroup'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateJournalTypeChangeCount ON Journal
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='JournalType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateLocationChangeCount ON Location
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Location'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateProjectChangeCount ON Project
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Project'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateTaxTypeChangeCount ON TaxType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='TaxType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateTermsChangeCount ON Terms
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Terms'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateUsersChangeCount ON Users
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Users'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateUserGroupChangeCount ON UserGroup
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='UserGroup'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCBChangeCount ON CB
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CB'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateJEChangeCount ON JE
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='JE'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateQTChangeCount ON QT
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='QT'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateSOChangeCount ON SO
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='SO'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDOChangeCount ON DO
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DO'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateIVChangeCount ON IV
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='IV'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCSChangeCount ON CS
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CS'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDNChangeCount ON DN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCNChangeCount ON CN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateXSChangeCount ON XS
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='XS'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDRChangeCount ON DR
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DR'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateRQChangeCount ON RQ
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='RQ'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePOChangeCount ON PO
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PO'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateGRChangeCount ON GR
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='GR'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePIChangeCount ON [PI]
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PI'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCPChangeCount ON CP
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CP'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePRChangeCount ON PR
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PR'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateXPChangeCount ON XP
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='XP'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateGTChangeCount ON GT
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='GT'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateXFERChangeCount ON XFER
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='XFER'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateADJChangeCount ON ADJ
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ADJ'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateISSChangeCount ON ISS
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ISS'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateRCVChangeCount ON RCV
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='RCV'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateWOFFChangeCount ON WOFF
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='WOFF'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateUOMConvertChangeCount ON UOMCONV
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='UOMConv'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateUpdateCostChangeCount ON UpdateCost
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='UpdateCost'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateASMChangeCount ON ASM
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ASM'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCSGNChangeCount ON CSGN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CSGN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateSupplierCSGNChangeCount ON SupplierCSGN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='SupplierCSGN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARInvoiceChangeCount ON ARInvoice
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARInvoice'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARDNChangeCount ON ARDN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARDN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARCNChangeCount ON ARCN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARCN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARPaymentChangeCount ON ARPayment
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARPayment'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARRefundChangeCount ON ARRefund
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARRefund'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARDepositChangeCount ON ARDeposit
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARDeposit'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARAPContraChangeCount ON ARAPContra
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARAPContra'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPInvoiceChangeCount ON APInvoice
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APInvoice'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPDNChangeCount ON APDN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APDN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPCNChangeCount ON APCN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APCN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPPaymentChangeCount ON APPayment
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APPayment'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPRefundChangeCount ON APRefund
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APRefund'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPDepositChangeCount ON APDeposit
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APDeposit'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCompanyProfile]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCompanyProfile]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vUsers]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vUsers]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAccNo]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vItemGroup]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vItemGroup]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vItemType]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vItemType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vItem]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vItem]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vItemBatch]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vItemBatch]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vItemUOM]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vItemUOM]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vTaxType]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vTaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vLocation]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vLocation]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vProject]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vProject]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDept]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDept]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCurrency]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCurrency]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockAdjustment]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockAdjustment]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockAdjustmentDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockAdjustmentDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockIssue]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockIssue]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockIssueDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockIssueDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockReceive]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockReceive]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockReceiveDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockReceiveDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockWriteOff]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockWriteOff]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockWriteOffDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockWriteOffDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockAssembly]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockAssembly]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockAssemblyDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockAssemblyDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockTransfer]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockTransfer]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockTransferDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockTransferDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockUOMConversion]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockUOMConversion]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockUOMConversionDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockUOMConversionDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockUpdateCost]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockUpdateCost]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockUpdateCostDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockUpdateCostDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vJournalEntry]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vJournalEntry]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vJournalEntryDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vJournalEntryDetail]
GO

CREATE VIEW dbo.vCompanyProfile
AS
SELECT CompanyName, RegisterNo, 
       CASE
        WHEN (RegisterNo IS NULL) or (RegisterNo = '') THEN CompanyName
        ELSE CompanyName + ' (' + RegisterNo + ')'
       END AS CompanyNameWithRegisterNo,
       CASE
        WHEN (Remark IS NULL) or (Remark = '') THEN CompanyName
        ELSE CompanyName + ' [' + Remark + ']'
       END AS CompanyNameWithRemark,
       Remark, Address1, Address2, Address3, Address4, PostCode,
       DeliverAddr1, DeliverAddr2, DeliverAddr3, DeliverAddr4, DeliverPostCode, DeliverPhone1, DeliverFax1, DeliverContact,
       Attention, Contact, Phone1, Phone2, Fax1, Fax2, NatureOfBusiness, EmailAddress, Logo, ReportHeader
FROM [Profile]
GO

CREATE VIEW dbo.vUsers
AS
SELECT UserID, UserName, Department, Signature, EmailAddress, IsActive FROM Users
GO

CREATE VIEW dbo.vAccNo
AS
SELECT AccNo, Description AS AccDescription, Desc2 AS AccDesc2, AccType, SpecialAccType, CurrencyCode AS AccCurrencyCode
FROM GLMAST
GO

CREATE VIEW vItemGroup
AS
SELECT ItemGroup, Description AS ItemGroupDescription
From ItemGroup
GO

CREATE VIEW vItemType
AS
SELECT ItemType, Description AS ItemTypeDescription
From ItemType
GO

CREATE VIEW dbo.vItem
AS
SELECT A.ItemCode, A.ItemGroup, B.ItemGroupDescription, A.ItemType, C.ItemTypeDescription, A.LeadTime, A.ImageFileName, A.Description AS ItemDescription, A.Desc2 AS ItemDesc2, A.FurtherDescription AS ItemFurtherDescription
FROM Item A
Left Outer Join vItemGroup B On (A.ItemGroup = B.ItemGroup)
Left Outer Join vItemType C On (A.ItemType = C.ItemType)
GO

CREATE VIEW dbo.vItemBatch
AS
SELECT ItemCode AS BatchItemCode, BatchNo, Description AS BatchDescription, ManufacturedDate AS BatchManufacturedDate, ExpiryDate AS BatchExpiryDate
FROM ItemBatch
GO

CREATE VIEW dbo.vItemUOM
AS
SELECT ItemCode AS UOMItemCode, UOM, Rate AS UOMRate, BarCode, Shelf, Price AS UOMPrice, Cost AS UOMCost, RealCost AS UOMRealCost, BalQty AS UOMBalQty
FROM ItemUOM
GO

CREATE VIEW dbo.vTaxType
AS
SELECT TaxType, Description AS TaxTypeDescription, TaxRate, Inclusive AS TaxTypeInclusive, TaxAccNo
FROM TaxType
GO

CREATE VIEW dbo.vLocation
AS
SELECT Location, Description AS LocationDescription, Desc2 AS LocationDesc2, 
       Address1 AS LocationAddr1, Address2 AS LocationAddr2, Address3 AS LocationAddr3, Address4 AS LocationAddr4, PostCode AS LocationPostCode,
       Phone1 AS LocationPhone1, Phone2 AS LocationPhone2, Fax1 AS LocationFax1, Fax2 AS LocationFax2,
       Contact AS LocationContact, Note AS LocationNote
FROM Location
GO

CREATE VIEW dbo.vProject
AS
SELECT ProjNo, Description AS ProjectDescription, Desc2 AS ProjectDesc2
FROM Project
GO

CREATE VIEW dbo.vDept
AS
SELECT DeptNo, Description AS DeptDescription, Desc2 AS DeptDesc2
FROM Dept
GO

CREATE VIEW dbo.vCurrency
AS
SELECT CurrencyCode, CurrencyWord, CurrencyWord2, CurrencySymbol, FCGainAccount, FCLossAccount, GainLossJournalType
FROM Currency
GO

CREATE VIEW vStockAdjustment
AS
SELECT A.DocKey, A.DocNo, A.DocDate, A.Description, A.Total, A.Note, 
       A.Remark1, A.Remark2, A.Remark3, A.Remark4, A.PrintCount, A.Cancelled,
       A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName,
       A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName,
       A.ExternalLink, A.RefDocNo, A.CanSync
FROM ADJ A 
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
GO

CREATE VIEW dbo.vStockAdjustmentDetail
AS
SELECT A.DocKey, A.Seq, A.Numbering,
       B.*,
       C.*,
       D.*,
       A.Description, A.FurtherDescription,
       E.*,
       F.*,
       G.*,
       A.Qty, A.UnitCost, A.SubTotal, A.PrintOut,
       H.BalQty AS LocationBalQty, I.BalQty AS BatchBalQty
FROM ADJDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vItemBatch C ON (A.ItemCode=C.BatchItemCode AND A.BatchNo=C.BatchNo)
LEFT OUTER JOIN vLocation D ON (A.Location=D.Location)
LEFT OUTER JOIN vProject E ON (A.ProjNo=E.ProjNo)
LEFT OUTER JOIN vDept F ON (A.DeptNo=F.DeptNo)
LEFT OUTER JOIN vItemUOM G ON (A.ItemCode=G.UOMItemCode AND A.UOM=G.UOM)
LEFT OUTER JOIN ItemBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location)
LEFT OUTER JOIN ItemBatchBalQty I ON (A.ItemCode=I.ItemCode AND A.UOM=I.UOM AND A.Location=I.Location AND A.BatchNo=I.BatchNo)
GO

CREATE VIEW vStockIssue
AS
SELECT A.DocKey, A.DocNo, A.DocDate, A.Description, A.Total, A.Note, 
       A.Remark1, A.Remark2, A.Remark3, A.Remark4, A.PrintCount, A.Cancelled,
       A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName,
       A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName,
       A.ExternalLink, A.RefDocNo, A.CanSync
FROM ISS A 
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
GO

CREATE VIEW dbo.vStockIssueDetail
AS
SELECT A.DocKey, A.Seq, A.Numbering,
       B.*,
       C.*,
       D.*,
       A.Description, A.FurtherDescription,
       E.*,
       F.*,
       G.*,
       A.Qty, A.UnitCost, A.SubTotal, A.PrintOut,
       H.BalQty AS LocationBalQty, I.BalQty AS BatchBalQty
FROM ISSDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vItemBatch C ON (A.ItemCode=C.BatchItemCode AND A.BatchNo=C.BatchNo)
LEFT OUTER JOIN vLocation D ON (A.Location=D.Location)
LEFT OUTER JOIN vProject E ON (A.ProjNo=E.ProjNo)
LEFT OUTER JOIN vDept F ON (A.DeptNo=F.DeptNo)
LEFT OUTER JOIN vItemUOM G ON (A.ItemCode=G.UOMItemCode AND A.UOM=G.UOM)
LEFT OUTER JOIN ItemBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location)
LEFT OUTER JOIN ItemBatchBalQty I ON (A.ItemCode=I.ItemCode AND A.UOM=I.UOM AND A.Location=I.Location AND A.BatchNo=I.BatchNo)
GO

CREATE VIEW vStockReceive
AS
SELECT A.DocKey, A.DocNo, A.DocDate, A.Description, A.Total, A.Note, 
       A.Remark1, A.Remark2, A.Remark3, A.Remark4, A.PrintCount, A.Cancelled,
       A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName,
       A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName,
       A.ExternalLink, A.RefDocNo, A.CanSync
FROM RCV A 
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
GO

CREATE VIEW dbo.vStockReceiveDetail
AS
SELECT A.DocKey, A.Seq, A.Numbering,
       B.*,
       C.*,
       D.*,
       A.Description, A.FurtherDescription,
       E.*,
       F.*,
       G.*,
       A.Qty, A.UnitCost, A.SubTotal, A.PrintOut,
       H.BalQty AS LocationBalQty, I.BalQty AS BatchBalQty
FROM RCVDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vItemBatch C ON (A.ItemCode=C.BatchItemCode AND A.BatchNo=C.BatchNo)
LEFT OUTER JOIN vLocation D ON (A.Location=D.Location)
LEFT OUTER JOIN vProject E ON (A.ProjNo=E.ProjNo)
LEFT OUTER JOIN vDept F ON (A.DeptNo=F.DeptNo)
LEFT OUTER JOIN vItemUOM G ON (A.ItemCode=G.UOMItemCode AND A.UOM=G.UOM)
LEFT OUTER JOIN ItemBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location)
LEFT OUTER JOIN ItemBatchBalQty I ON (A.ItemCode=I.ItemCode AND A.UOM=I.UOM AND A.Location=I.Location AND A.BatchNo=I.BatchNo)
GO

CREATE VIEW vStockWriteOff
AS
SELECT A.DocKey, A.DocNo, A.DocDate, A.Description, A.Total, A.Note, 
       A.Remark1, A.Remark2, A.Remark3, A.Remark4, A.PrintCount, A.Cancelled,
       A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName,
       A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName,
       A.ExternalLink, A.RefDocNo, A.CanSync
FROM WOFF A 
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
GO

CREATE VIEW dbo.vStockWriteOffDetail
AS
SELECT A.DocKey, A.Seq, A.Numbering,
       B.*,
       C.*,
       D.*,
       A.Description, A.FurtherDescription,
       E.*,
       F.*,
       G.*,
       A.Qty, A.UnitCost, A.SubTotal, A.PrintOut,
       H.BalQty AS LocationBalQty, I.BalQty AS BatchBalQty
FROM WOFFDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vItemBatch C ON (A.ItemCode=C.BatchItemCode AND A.BatchNo=C.BatchNo)
LEFT OUTER JOIN vLocation D ON (A.Location=D.Location)
LEFT OUTER JOIN vProject E ON (A.ProjNo=E.ProjNo)
LEFT OUTER JOIN vDept F ON (A.DeptNo=F.DeptNo)
LEFT OUTER JOIN vItemUOM G ON (A.ItemCode=G.UOMItemCode AND A.UOM=G.UOM)
LEFT OUTER JOIN ItemBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location)
LEFT OUTER JOIN ItemBatchBalQty I ON (A.ItemCode=I.ItemCode AND A.UOM=I.UOM AND A.Location=I.Location AND A.BatchNo=I.BatchNo)
GO

CREATE VIEW vStockAssembly
AS
SELECT A.DocKey, A.DocNo, A.DocDate, A.Description, A.Note, 
       A.ItemCode, A.Location, A.BatchNo, A.ProjNo, A.DeptNo, A.Qty, A.Total, A.AssemblyCost, A.NetTotal,
       A.Remark1, A.Remark2, A.Remark3, A.Remark4, A.PrintCount, A.Cancelled,
       A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName,
       A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName,
       A.ExternalLink, A.RefDocNo, A.CanSync
FROM ASM A 
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
GO

CREATE VIEW dbo.vStockAssemblyDetail
AS
SELECT A.DocKey, A.Seq, A.Numbering,
       B.*,
       C.*,
       D.*,
       A.Description, A.FurtherDescription,
       E.*,
       F.*,
       G.*,
       A.Rate, A.Qty, A.ItemCost, A.OverheadCost, A.SubTotalCost, A.PrintOut, A.Remark,
       H.BalQty AS LocationBalQty, I.BalQty AS BatchBalQty
FROM ASMDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vItemBatch C ON (A.ItemCode=C.BatchItemCode AND A.BatchNo=C.BatchNo)
LEFT OUTER JOIN vLocation D ON (A.Location=D.Location)
LEFT OUTER JOIN vProject E ON (A.ProjNo=E.ProjNo)
LEFT OUTER JOIN vDept F ON (A.DeptNo=F.DeptNo)
LEFT OUTER JOIN vItemUOM G ON (A.ItemCode=G.UOMItemCode AND G.UOMRate=1)
LEFT OUTER JOIN ItemBalQty H ON (A.ItemCode=H.ItemCode AND G.UOM=H.UOM AND A.Location=H.Location)
LEFT OUTER JOIN ItemBatchBalQty I ON (A.ItemCode=I.ItemCode AND G.UOM=I.UOM AND A.Location=I.Location AND A.BatchNo=I.BatchNo)
GO

CREATE VIEW vStockTransfer
AS
SELECT A.DocKey, A.DocNo, A.DocDate, A.FromLocation, A.ToLocation, A.Description, A.Total,
       A.Reason, A.AuthorisedBy, A.Ref,
       A.Note, A.Remark1, A.Remark2, A.Remark3, A.Remark4, A.PrintCount, A.Cancelled,
       A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName,
       A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName,
       A.ExternalLink, A.RefDocNo, A.CanSync
FROM XFER A 
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
GO

CREATE VIEW dbo.vStockTransferDetail
AS
SELECT A.DocKey, A.Seq, A.Numbering,
       B.*,
       C.*,
       A.Description, A.FurtherDescription,
       E.*,
       F.*,
       G.*,
       A.Qty, A.UnitCost, A.SubTotal, A.PrintOut
FROM XFERDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vItemBatch C ON (A.ItemCode=C.BatchItemCode AND A.BatchNo=C.BatchNo)
LEFT OUTER JOIN vProject E ON (A.ProjNo=E.ProjNo)
LEFT OUTER JOIN vDept F ON (A.DeptNo=F.DeptNo)
LEFT OUTER JOIN vItemUOM G ON (A.ItemCode=G.UOMItemCode AND A.UOM=G.UOM)
GO

CREATE VIEW vStockUOMConversion
AS
SELECT A.DocKey, A.DocNo, A.DocDate, A.Description, A.Note, A.PrintCount, A.Cancelled,
       A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName,
       A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName,
       A.FromDocType, A.FromDocNo, A.CanSync
FROM UOMConv A 
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
GO

CREATE VIEW dbo.vStockUOMConversionDetail
AS
SELECT A.DocKey, A.Seq,
       B.*,
       C.*,
       D.*,
       E.*,
       F.*,
       A.FromQty, A.FromUOM, A.ToQty, A.ToUOM
FROM UOMConvDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vItemBatch C ON (A.ItemCode=C.BatchItemCode AND A.BatchNo=C.BatchNo)
LEFT OUTER JOIN vLocation D ON (A.Location=D.Location)
LEFT OUTER JOIN vProject E ON (A.ProjNo=E.ProjNo)
LEFT OUTER JOIN vDept F ON (A.DeptNo=F.DeptNo)
GO

CREATE VIEW vStockUpdateCost
AS
SELECT A.DocKey, A.DocNo, A.DocDate, A.Description, A.Note, A.UpdateToRealCost,
       A.PrintCount, A.Cancelled,
       A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName,
       A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName
FROM UpdateCost A 
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
GO

CREATE VIEW dbo.vStockUpdateCostDetail
AS
SELECT A.DocKey, A.Seq,
       B.*,
       A.Description,
       G.*,
       A.OldCost, A.NewCost
FROM UpdateCostDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vItemUOM G ON (A.ItemCode=G.UOMItemCode AND A.UOM=G.UOM)
GO

CREATE VIEW vJournalEntry
AS
SELECT A.DocKey, A.DocNo, A.DocDate, A.Description, A.JournalType,
       D.*, A.CurrencyRate,
       A.TotalDR AS NetTotal, A.Note, A.PrintCount, A.Cancelled,
       A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName,
       A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName,
       A.ExternalLink, A.SourceType, A.SourceKey
FROM JE A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCurrency D ON (A.CurrencyCode=D.CurrencyCode)
GO

CREATE VIEW vJournalEntryDetail
AS
SELECT A.DocKey, A.Seq,
       B.*,
       A.ToAccountRate, A.Description, A.FurtherDescription,
       E.*,
       F.*,
       G.*,
       A.SupplyPurchase,
       A.DR, A.CR, A.TaxDR, A.TaxCR, A.TotalDR, A.TotalCR
FROM JEDTL A
LEFT OUTER JOIN vAccNo B ON (A.AccNo=B.AccNo)
LEFT OUTER JOIN vProject E ON (A.ProjNo=E.ProjNo)
LEFT OUTER JOIN vDept F ON (A.DeptNo=F.DeptNo)
LEFT OUTER JOIN vTaxType G ON (A.TaxType=G.TaxType)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vJournalOfTransaction]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vJournalOfTransaction]
GO

CREATE VIEW vJournalOfTransaction
AS
SELECT A.AccNo, B.Description AS AccDescription, B.Desc2 AS AccDesc2, A.DEAccNo, C.Description AS DEAccDescription, C.Desc2 AS DEAccDesc2, A.JournalType, A.CurrencyCode, A.CurrencyRate, A.ToHomeRate, Sum(A.OrgDR) AS OrgDR, Sum(A.OrgCR) AS OrgCR, Sum(A.DR) AS DR, Sum(A.CR) AS CR, Sum(A.HomeDR) AS HomeDR, Sum(A.HomeCR) AS HomeCR, A.TransDate, A.RefNo1, A.RefNo2, A.UserID, A.SourceType, A.SourceKey
FROM GLDTL A LEFT OUTER JOIN GLMast B ON (A.AccNo=B.AccNo) LEFT OUTER JOIN GLMast C ON (A.DEAccNo=C.AccNo)
GROUP BY A.AccNo, B.Description, B.Desc2, A.DEAccNo, C.Description, C.Desc2, A.JournalType, A.CurrencyCode, A.CurrencyRate, A.ToHomeRate, A.TransDate, A.RefNo1, A.RefNo2, A.UserID, A.SourceType, A.SourceKey
GO

/* Sales View provided by Pick Hui */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDebtor]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDebtor]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vSalesAgent]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vSalesAgent]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vQuotation]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vQuotation]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vQuotationDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vQuotationDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vSalesOrder]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vSalesOrder]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vSalesOrderDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vSalesOrderDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDeliveryOrder]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDeliveryOrder]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDeliveryOrderDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDeliveryOrderDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vInvoice]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vInvoice]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vInvoiceDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vInvoiceDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCashSale]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCashSale]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCashSaleDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCashSaleDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDebitNoteType]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDebitNoteType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDebitNote]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDebitNote]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDebitNoteDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDebitNoteDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCreditNote]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCreditNote]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCreditNoteDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCreditNoteDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCancelSO]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCancelSO]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCancelSODetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCancelSODetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDeliveryReturn]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDeliveryReturn]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDeliveryReturnDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDeliveryReturnDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vConsignment]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vConsignment]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vConsignmentDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vConsignmentDetail]
GO

CREATE View vSalesAgent
AS
SELECT SalesAgent, Description as SalesAgentDescription, Desc2 as SalesAgentDesc2
FROM SalesAgent
GO

CREATE VIEW vDebtor
AS
SELECT A.AccNo as DebtorCode, A.CompanyName as DebtorCompanyName, A.Desc2 as DebtorDesc2, A.RegisterNo AS DebtorRegisterNo, A.NatureOfBusiness AS DebtorNatureOfBusiness, A.WebURL AS DebtorWebURL, A.EmailAddress AS DebtorEmailAddress,
       A.AreaCode AS DebtorAreaCode, B.Description AS AreaDescription,
       A.DebtorType, C.Description AS DebtorTypeDescription,
       A.DisplayTerm as DebtorDisplayTerm, A.SalesAgent as DebtorSalesAgent, A.CreditLimit AS DebtorCreditLimit, A.OverdueLimit AS DebtorOverdueLimit, A.CurrencyCode as DebtorCurrencyCode
FROM Debtor A LEFT OUTER JOIN Area B ON (A.AreaCode=B.AreaCode) LEFT OUTER JOIN DebtorType C ON (A.DebtorType=C.DebtorType)
GO

CREATE VIEW vDebitNoteType
AS
SELECT DNType, Description as DebitNoteDescription
FROM DNType
GO

CREATE VIEW vQuotation
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, A.ToDocKey, A.ToDocType,
    	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	    A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
	    A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact, A.SalesExemptionNo,
		A.SalesExemptionExpiryDate, A.Validity, A.DeliveryTerm, A.PaymentTerm, A.YourRef, A.CC,
		A.Total, A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
		A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
		F.*, 
		A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Transferable, A.Note, A.Remark1,
		A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
		B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
		A.CreatedUserID, C.UserName AS CreatedUserName, 
		A.ApprovalUserID, A.ExternalLink, A.RefDocNo, A.CanSync, 
		A.DebtorName, D.*,
		E.*
FROM QT A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vDebtor D ON (A.DebtorCode=D.DebtorCode)
LEFT OUTER JOIN vSalesAgent E ON (A.SalesAgent=E.SalesAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vQuotationDetail
AS
SELECT	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.TransferedQty, A.UnitPrice, A.Discount, A.DiscountAmt, A.UserUOM, A.PrintOut, A.SmallestUnitPrice,
	H.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.Transferable, A.CalcByPercent, A.AddToSubTotal, A.DtlKey,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, G.BalQty AS BatchBalQty
FROM QTDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN vTaxType H ON (A.TaxType=H.TaxType)
GO

CREATE VIEW vSalesOrder
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, A.ToDocKey, A.ToDocType,
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
	A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact, A.SalesExemptionNo,
	A.SalesExemptionExpiryDate, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Transferable, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, 
	A.DebtorName, D.*,
	E.*
FROM SO A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vDebtor D ON (A.DebtorCode=D.DebtorCode)
LEFT OUTER JOIN vSalesAgent E ON (A.SalesAgent=E.SalesAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vSalesOrderDetail
AS
SELECT	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.TransferedQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	H.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.Transferable, A.CalcByPercent, A.AddToSubTotal,  
	A.YourPONo, A.YourPODate, A.DeliveryDate, A.FOCQty, A.FOCTransferedQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, A.DtlKey,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, G.BalQty AS BatchBalQty
FROM SODTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN vTaxType H ON (A.TaxType=H.TaxType)
GO

CREATE VIEW vDeliveryOrder
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, A.ToDocKey, A.ToDocType,
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
	A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact, A.SalesExemptionNo,
	A.SalesExemptionExpiryDate, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Transferable, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, 
	A.DebtorName, D.*,
	E.*
FROM DO A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vDebtor D ON (A.DebtorCode=D.DebtorCode)
LEFT OUTER JOIN vSalesAgent E ON (A.SalesAgent=E.SalesAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vDeliveryOrderDetail
AS
SELECT	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.TransferedQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.Transferable, A.CalcByPercent, A.AddToSubTotal,  
	A.YourPONo, A.YourPODate, A.DeliveryDate, A.FOCQty, A.FOCTransferedQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, A.DtlKey,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM DODTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vInvoice
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, A.ToDocKey, A.ToDocType,
A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact, A.SalesExemptionNo,
A.SalesExemptionExpiryDate, A.Total,
A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt,
A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
F.*,
A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Transferable, A.Note, A.Remark1,
A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID,
B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
A.CreatedUserID, C.UserName AS CreatedUserName,
A.ExternalLink, A.RefDocNo, A.CanSync, A.TotalBonusPoint, A.ReferPaymentDocKey,
A.DebtorName, D.*,
E.*
FROM IV A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID)
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vDebtor D ON (A.DebtorCode=D.DebtorCode)
LEFT OUTER JOIN vSalesAgent E ON (A.SalesAgent=E.SalesAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vInvoiceDetail
AS 
SELECT 	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.TransferedQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.Transferable, A.CalcByPercent, A.AddToSubTotal,  
	A.YourPONo, A.YourPODate, A.DeliveryDate, A.FOCQty, A.FOCTransferedQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, A.BonusPoint, A.AccNo, A.Indent,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM IVDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vCashSale
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description,
A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact, A.SalesExemptionNo,
A.SalesExemptionExpiryDate, A.Total,
A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt,
A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
F.*,
A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Transferable, A.Note, A.Remark1,
A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID,
B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
A.CreatedUserID, C.UserName AS CreatedUserName,
A.ExternalLink, A.RefDocNo, A.CanSync, A.TotalBonusPoint, A.ReferPaymentDocKey,
A.DebtorName, D.*,
E.*
FROM CS A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID)
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vDebtor D ON (A.DebtorCode=D.DebtorCode)
LEFT OUTER JOIN vSalesAgent E ON (A.SalesAgent=E.SalesAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vCashSaleDetail
AS 
SELECT 	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.TransferedQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.Transferable, A.CalcByPercent, A.AddToSubTotal,  
	A.YourPONo, A.YourPODate, A.DeliveryDate, A.FOCQty, A.FOCTransferedQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, A.BonusPoint, A.AccNo,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM CSDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vDebitNote
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, 
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
	A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact, A.SalesExemptionNo,
	A.SalesExemptionExpiryDate, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	G.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, A.TotalBonusPoint,A.OurInvoiceNo,
	A.DebtorName, D.*,
	E.*,
	F.*
FROM DN A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vDebtor D ON (A.DebtorCode=D.DebtorCode)
LEFT OUTER JOIN vSalesAgent E ON (A.SalesAgent=E.SalesAgent)
LEFT OUTER JOIN vDebitNoteType F ON A.DNType = F.DNType
LEFT OUTER JOIN vCurrency G ON (A.CurrencyCode=G.CurrencyCode)
GO

CREATE VIEW vDebitNoteDetail
AS 
SELECT 	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.CalcByPercent, A.AddToSubTotal,  
	A.FOCQty, A.BonusPoint, A.AccNo,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM DNDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vCreditNote
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, 
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
	A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact, A.SalesExemptionNo,
	A.SalesExemptionExpiryDate, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, A.TotalBonusPoint, A.OurInvoiceNo,
	A.DebtorName, D.*,
	E.*
FROM CN A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vDebtor D ON (A.DebtorCode=D.DebtorCode)
LEFT OUTER JOIN vSalesAgent E ON (A.SalesAgent=E.SalesAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vCreditNoteDetail
AS 
SELECT 	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.CalcByPercent, A.AddToSubTotal, A.FOCQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, A.BonusPoint, A.AccNo,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM CNDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO


CREATE VIEW vCancelSO
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, 
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
	A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact, A.SalesExemptionNo,
	A.SalesExemptionExpiryDate, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync,
	A.DebtorName, D.*,
	E.*
FROM XS A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vDebtor D ON (A.DebtorCode=D.DebtorCode)
LEFT OUTER JOIN vSalesAgent E ON (A.SalesAgent=E.SalesAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vCancelSODetail
AS 
SELECT 	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.CalcByPercent, A.AddToSubTotal, A.FOCQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty
FROM XSDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vDeliveryReturn
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, 
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
	A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact, A.SalesExemptionNo,
	A.SalesExemptionExpiryDate, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, 
	A.DebtorName, D.*,
	E.*
FROM DR A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vDebtor D ON (A.DebtorCode=D.DebtorCode)
LEFT OUTER JOIN vSalesAgent E ON (A.SalesAgent=E.SalesAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vDeliveryReturnDetail
AS
SELECT	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.CalcByPercent, A.AddToSubTotal,  
	A.YourPONo, A.YourPODate, A.DeliveryDate, A.FOCQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, 
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM DRDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vConsignment
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, 
	A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
	A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact,
 	A.Note, A.Remark1, A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, 
	A.DebtorName, D.*,
	E.*
FROM CSGN A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vDebtor D ON (A.DebtorCode=D.DebtorCode)
LEFT OUTER JOIN vSalesAgent E ON (A.SalesAgent=E.SalesAgent)
GO

CREATE VIEW vConsignmentDetail
AS
SELECT	A.DocKey, A.Seq, A.Description, A.FurtherDescription, A.Qty, 
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
    G.*
FROM CSGNDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vProject C ON (A.ProjNo=C.ProjNo)
LEFT OUTER JOIN vDept D ON (A.DeptNo=D.DeptNo)
LEFT OUTER JOIN vItemUOM E ON (A.ItemCode=E.UOMItemCode AND A.UOM=E.UOM)
LEFT OUTER JOIN vItemBatch F ON (A.ItemCode=F.BatchItemCode AND A.BatchNo=F.BatchNo)
LEFT OUTER JOIN vLocation G ON (A.Location=G.Location)
GO

/* Purchase View provided by Pick Hui */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCreditor]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCreditor]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vPurchaseAgent]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vPurchaseAgent]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vRequestForQuotation]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vRequestForQuotation]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vRequestForQuotationDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vRequestForQuotationDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vPurchaseOrder]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vPurchaseOrder]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vPurchaseOrderDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vPurchaseOrderDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vGoodsReceivedNote]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vGoodsReceivedNote]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vGoodsReceivedNoteDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vGoodsReceivedNoteDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vPurchaseInvoice]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vPurchaseInvoice]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vPurchaseInvoiceDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vPurchaseInvoiceDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCashPurchase]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCashPurchase]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCashPurchaseDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCashPurchaseDetail]
GO


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vPurchaseReturn]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vPurchaseReturn]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vPurchaseReturnDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vPurchaseReturnDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCancelPO]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCancelPO]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCancelPODetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCancelPODetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vGoodsReturn]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vGoodsReturn]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vGoodsReturnDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vGoodsReturnDetail]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vSupplierConsignment]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vSupplierConsignment]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vSupplierConsignmentDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vSupplierConsignmentDetail]
GO

CREATE View vPurchaseAgent
AS
SELECT PurchaseAgent, Description as PurchaseAgentDescription, Desc2 as PurchaseAgentDesc2
FROM PurchaseAgent
GO

CREATE VIEW vCreditor
AS
SELECT A.AccNo as CreditorCode, A.CompanyName as CreditorCompanyName, A.Desc2 as CreditorDesc2, A.RegisterNo AS CreditorRegisterNo, A.NatureOfBusiness AS CreditorNatureOfBusiness, A.WebURL AS CreditorWebURL, A.EmailAddress AS CreditorEmailAddress, 
       A.AreaCode AS CreditorAreaCode, B.Description AS AreaDescription,
       A.CreditorType, C.Description AS CreditorTypeDescription,
       A.DisplayTerm as CreditorDisplayTerm, A.PurchaseAgent as CreditorPurchaseAgent, A.CreditLimit AS CreditorCreditLimit, A.OverdueLimit AS CreditorOverdueLimit, A.CurrencyCode as CreditorCurrencyCode
FROM Creditor A LEFT OUTER JOIN Area B ON (A.AreaCode=B.AreaCode) LEFT OUTER JOIN CreditorType C ON (A.CreditorType=C.CreditorType)
GO

CREATE VIEW vRequestForQuotation
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, A.ToDocKey, A.ToDocType,
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
	A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact,
	A.Total, A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Transferable, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, 
	A.CreditorName, D.*,
	E.*
FROM RQ A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCreditor D ON (A.CreditorCode=D.CreditorCode)
LEFT OUTER JOIN vPurchaseAgent E ON (A.PurchaseAgent=E.PurchaseAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vRequestForQuotationDetail
AS
SELECT	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.TransferedQty, A.UnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.SmallestUnitPrice, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.Transferable, A.CalcByPercent, A.AddToSubTotal,  
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, G.BalQty AS BatchBalQty
FROM RQDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vPurchaseOrder
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, A.ToDocKey, A.ToDocType,
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.DeliverAddr1, A.DeliverAddr2, A.DeliverAddr3,
	A.DeliverAddr4, A.DeliverPhone1, A.DeliverFax1, A.DeliverContact,
	A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Transferable, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, 
	A.CreditorName, D.*,
	E.*
FROM PO A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCreditor D ON (A.CreditorCode=D.CreditorCode)
LEFT OUTER JOIN vPurchaseAgent E ON (A.PurchaseAgent=E.PurchaseAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vPurchaseOrderDetail
AS
SELECT	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.TransferedQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.Transferable, A.CalcByPercent, A.AddToSubTotal,  
	A.DeliveryDate, A.FOCQty, A.FOCTransferedQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, G.BalQty AS BatchBalQty
FROM PODTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vGoodsReceivedNote
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, A.ToDocKey, A.ToDocType,
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.Total, A.SupplierDONo,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Transferable, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName,
	A.ExternalLink, A.RefDocNo, A.CanSync, A.LocalCharges, A.ForeignCharges,
	A.CreditorName, D.*,
	E.*
FROM GR A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCreditor D ON (A.CreditorCode=D.CreditorCode)
LEFT OUTER JOIN vPurchaseAgent E ON (A.PurchaseAgent=E.PurchaseAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vGoodsReceivedNoteDetail
AS
SELECT	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.TransferedQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.Transferable, A.CalcByPercent, A.AddToSubTotal,  
	A.DeliveryDate, A.FOCQty, A.FOCTransferedQty, A.OurPONo, A.OurPODate,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, A.Duty, A.LocalCharges, A.ForeignCharges, 
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM GRDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vPurchaseInvoice
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, 
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Transferable, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, A.LocalCharges, A.ForeignCharges, 
	A.SupplierDONo, A.SupplierInvoiceNo,
	A.CreditorName, D.*,
	E.*
FROM [PI] A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCreditor D ON (A.CreditorCode=D.CreditorCode)
LEFT OUTER JOIN vPurchaseAgent E ON (A.PurchaseAgent=E.PurchaseAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vPurchaseInvoiceDetail
AS 
SELECT 	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.TransferedQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.Transferable, A.CalcByPercent, A.AddToSubTotal,  
	A.DeliveryDate, A.FOCQty, A.FOCTransferedQty, A.OurPONo, A.OurPODate,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, A.AccNo, A.Duty, A.LocalCharges, A.ForeignCharges,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM PIDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vCashPurchase
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, 
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Transferable, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName,
	A.ExternalLink, A.RefDocNo, A.CanSync, A.LocalCharges, A.ForeignCharges,
	A.CreditorName, D.*,
	E.*
FROM CP A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCreditor D ON (A.CreditorCode=D.CreditorCode)
LEFT OUTER JOIN vPurchaseAgent E ON (A.PurchaseAgent=E.PurchaseAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vCashPurchaseDetail
AS 
SELECT 	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.TransferedQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.Transferable, A.CalcByPercent, A.AddToSubTotal,  
	A.DeliveryDate, A.FOCQty, A.FOCTransferedQty, A.Duty, A.LocalCharges, A.ForeignCharges,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, A.AccNo, A.OurPONo, A.OurPODate,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM CPDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO


CREATE VIEW vPurchaseReturn
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, 
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, 
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, A.SupplierCNNo,
	A.CreditorName, D.*,
	E.*
FROM PR A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCreditor D ON (A.CreditorCode=D.CreditorCode)
LEFT OUTER JOIN vPurchaseAgent E ON (A.PurchaseAgent=E.PurchaseAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vPurchaseReturnDetail
AS 
SELECT 	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.CalcByPercent, A.AddToSubTotal, A.FOCQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, A.AccNo,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM PRDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO


CREATE VIEW vCancelPO
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, 
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync,
	A.CreditorName, D.*,
	E.*
FROM XP A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCreditor D ON (A.CreditorCode=D.CreditorCode)
LEFT OUTER JOIN vPurchaseAgent E ON (A.PurchaseAgent=E.PurchaseAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO

CREATE VIEW vCancelPODetail
AS 
SELECT 	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.CalcByPercent, A.AddToSubTotal, A.FOCQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey,
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty
FROM XPDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vGoodsReturn
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, 
	A.DisplayTerm, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.Total,
	A.Footer1Param, A.Footer1Amt, A.Footer1TaxType, A.Footer2Param, A.Footer2Amt, 
	A.Footer2TaxType, A.Footer3Param, A.Footer3Amt, A.Footer3TaxType,
	F.*, 
	A.CurrencyRate, A.NetTotal, LocalNetTotal, A.Tax, A.Note, A.Remark1,
	A.Remark2, A.Remark3, A.Remark4, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, 
	A.CreditorName, D.*,
	E.*
FROM GT A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCreditor D ON (A.CreditorCode=D.CreditorCode)
LEFT OUTER JOIN vPurchaseAgent E ON (A.PurchaseAgent=E.PurchaseAgent)
LEFT OUTER JOIN vCurrency F ON (A.CurrencyCode=F.CurrencyCode)
GO


CREATE VIEW vGoodsReturnDetail
AS
SELECT	A.DocKey, A.Seq, A.Numbering, A.MainItem, A.Description, A.FurtherDescription,
	A.Qty, A.SmallestQty, A.UnitPrice, A.SmallestUnitPrice, A.Discount, A.DiscountAmt,
	A.UserUOM, A.PrintOut,
	J.*, A.Tax, A.SubTotal, A.LocalSubTotal, A.CalcByPercent, A.AddToSubTotal,  
	A.DeliveryDate, A.FOCQty,
	A.FromDocType, A.FromDocNo, A.FromDocDtlKey, 
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
	G.BalQty AS LocationBalQty, 
	H.BalQty AS BatchBalQty,
	I.*
FROM GTDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vLocation C ON (A.Location=C.Location)
LEFT OUTER JOIN vProject D ON (A.ProjNo=D.ProjNo)
LEFT OUTER JOIN vDept E ON (A.DeptNo=E.DeptNo)
LEFT OUTER JOIN vItemUOM F ON (A.ItemCode=F.UOMItemCode AND A.UOM=F.UOM)
LEFT OUTER JOIN ItemBalQty G ON (A.ItemCode=G.ItemCode AND A.UOM=G.UOM AND A.Location=G.Location)
LEFT OUTER JOIN ItemBatchBalQty H ON (A.ItemCode=H.ItemCode AND A.UOM=H.UOM AND A.Location=H.Location AND A.BatchNo=H.BatchNo)
LEFT OUTER JOIN vItemBatch I ON (A.ItemCode=I.BatchItemCode AND A.BatchNo=I.BatchNo)
LEFT OUTER JOIN vTaxType J ON (A.TaxType=J.TaxType)
GO

CREATE VIEW vSupplierConsignment
AS
SELECT	A.DocKey, A.DocNo, A.DocDate, A.SupplierDONo, A.Ref, A.Description, 
	A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1,
	A.Fax1, A.Attention, A.BranchCode, A.Note, A.Remark1, A.Remark2, A.Remark3, A.Remark4, 	A.Cancelled, A.LastModified, A.LastModifiedUserID, 
	B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
	A.CreatedUserID, C.UserName AS CreatedUserName, 
	A.ExternalLink, A.RefDocNo, A.CanSync, 
	A.CreditorName, D.*,
	E.*
FROM SupplierCSGN A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCreditor D ON (A.CreditorCode=D.CreditorCode)
LEFT OUTER JOIN vPurchaseAgent E ON (A.PurchaseAgent=E.PurchaseAgent)
GO

CREATE VIEW vSupplierConsignmentDetail
AS
SELECT	A.DocKey, A.Seq, A.Description, A.FurtherDescription, A.Qty, 
	B.*,
	C.*,
	D.*,
	E.*,
	F.*,
    G.*
FROM SupplierCSGNDTL A
LEFT OUTER JOIN vItem B ON (A.ItemCode=B.ItemCode)
LEFT OUTER JOIN vProject C ON (A.ProjNo=C.ProjNo)
LEFT OUTER JOIN vDept D ON (A.DeptNo=D.DeptNo)
LEFT OUTER JOIN vItemUOM E ON (A.ItemCode=E.UOMItemCode AND A.UOM=E.UOM)
LEFT OUTER JOIN vItemBatch F ON (A.ItemCode=F.BatchItemCode AND A.BatchNo=F.BatchNo)
LEFT OUTER JOIN vLocation G ON (A.Location=G.Location)
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCashBook]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCashBook]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCashBookDTL]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCashBookDTL]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vPaymentMethod]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vPaymentMethod]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCashBookPaymentDTL]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCashBookPaymentDTL]
GO

Create View vCashBook 
As
Select A.DocKey, A.DocNo, A.DocDate, A.DocType, A.DealWith,
A.CurrencyRate, A.TotalPayment, A.Total, A.LocalTotal, A.Tax, A.LocalTax, 
A.NetTotal, A.Cancelled, A.Note, A.LastModifiedUserID, A.CreatedUserID, 
A.SourceType, A.SourceKey, B.UserName AS LastModifiedUserName, C.UserName 
AS CreatedUserName, D.* 
From CB A
LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
LEFT OUTER JOIN vCurrency D ON (A.CurrencyCode=D.CurrencyCode)
GO

Create View vCashBookDTL
AS
Select A.DocKey, A.ToAccountRate, A.DtlKey, A.Seq,
A.Description, A.FurtherDescription, A.Amount, A.LocalAmount, A.RCHQAmount,
B.*, C.*, D.*, E.*
From CBDTL A
LEFT OUTER JOIN vProject B ON (A.ProjNo=B.ProjNo)
LEFT OUTER JOIN vDept C ON (A.DeptNo=C.DeptNo)
LEFT OUTER JOIN vTaxType D ON (A.TaxType=D.TaxType)
LEFT OUTER JOIN vAccNo E ON (A.AccNo = E.AccNo)
GO

Create View vPaymentMethod
AS
Select PaymentMethod, BankAccount, BankChargeAccount, BankChargePercent, MergeBankChargeTrans, SpecialAccType, JournalType, AcceptChequeNo,
ODLimit, PaymentFormatName, ReceiptFormatName, IsActive
From PaymentMethod
GO

Create View vCashBookPaymentDTL
AS
Select A.PaymentBy, A.DocKey, A.Seq, A.ToBankRate, A.ChequeNo, 
A.FloatDay, A.BankCharge, A.PaymentAmt, A.IsRCHQ, A.RCHQDate, 
B.* 
From CBPaymentDTL A
Left Outer Join vPaymentMethod B On (A.PaymentMethod = B.PaymentMethod)
GO

/* A/R and A/P Views by Pei Ling */

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDebtorARAP]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDebtorARAP]
GO

CREATE VIEW vDebtorARAP
AS
SELECT     A.AccNo AS DebtorCode, A.CompanyName AS DebtorCompanyName, A.Desc2 AS DebtorDesc2, A.RegisterNo AS DebtorRegisterNo, 
           A.Address1 AS DebtorAddress1, A.Address2 AS DebtorAddress2, A.Address3 AS DebtorAddress3, A.Address4 AS DebtorAddress4,
           A.DeliverAddr1 AS DebtorDeliverAddress1, A.DeliverAddr2 AS DebtorDeliverAddress2, A.DeliverAddr3 AS DebtorDeliverAddress3, A.DeliverAddr4 AS DebtorDeliverAddress4,
           A.Attention AS DebtorAttention, A.Phone1 AS DebtorPhone1, A.Phone2 AS DebtorPhone2, A.Fax1 AS DebtorFax1, A.Fax2 AS DebtorFax2,
           A.TaxType AS DebtorTaxType, A.ExemptNo AS DebtorExemptNo, A.ExpiryDate AS DebtorExemptExpiryDate, A.Note AS DebtorNote,
           A.PriceCategory AS DebtorPriceCategory, A.StatementType AS DebtorStatementType, A.AgingOn AS DebtorAgingOn,
           A.NatureOfBusiness AS DebtorNatureOfBusiness, A.WebURL AS DebtorWebURL, A.EmailAddress AS DebtorEmailAddress, 
           A.AreaCode AS DebtorAreaCode, B.Description AS AreaDescription, A.DebtorType, C.Description AS DebtorTypeDescription, 
           A.DisplayTerm AS DebtorDisplayTerm, A.SalesAgent AS DebtorSalesAgent, D.SalesAgentDescription,  A.CreditLimit AS DebtorCreditLimit, A.OverdueLimit AS DebtorOverdueLimit, 
           A.CurrencyCode AS DebtorCurrencyCode
FROM       dbo.Debtor A 
           LEFT OUTER JOIN dbo.Area B ON A.AreaCode = B.AreaCode 
           LEFT OUTER JOIN dbo.DebtorType C ON A.DebtorType = C.DebtorType 
           LEFT OUTER JOIN dbo.vSalesAgent D ON A.SalesAgent = D.SalesAgent
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARCreditNote]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARCreditNote]
GO

CREATE VIEW dbo.vARCreditNote
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, A.Total, A.LocalTotal, A.NetTotal, A.LocalNetTotal, A.RefundAmt, A.KnockOffAmt, E.*, 
           A.CurrencyRate, A.Tax, A.Note, A.Cancelled, A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, 
           A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, A.SourceKey, D.*
FROM       dbo.ARCN A 
		   LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
           LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
		   LEFT OUTER JOIN dbo.vDebtorARAP D ON A.DebtorCode = D.DebtorCode 
           LEFT OUTER JOIN dbo.vCurrency E ON A.CurrencyCode = E.CurrencyCode
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARCreditNoteDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARCreditNoteDetail]
GO

CREATE VIEW dbo.vARCreditNoteDetail
AS
SELECT     DocKey, Seq, AccNo, ToAccountRate, Description, ProjNo, DeptNo, TaxType, Tax, LocalTax, Amount, LocalAmount, NetAmount, LocalNetAmount, 
           UnappliedAmount, LocalUnappliedAmount, KnockOffAmount
FROM       dbo.ARCNDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARDebitNote]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARDebitNote]
GO

CREATE VIEW dbo.vARDebitNote
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.DueDate, A.Ref, A.DisplayTerm, A.Description, A.Total, A.LocalTotal, A.PaymentAmt, A.LocalPaymentAmt, A.Outstanding, 
           A.CurrencyRate, A.NetTotal, A.LocalNetTotal, A.Tax, A.Note, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
           B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, 
           A.SourceKey, D.*, E.*, F.*
FROM       dbo.ARDN A 
		   LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
           LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
           LEFT OUTER JOIN dbo.vDebtorARAP D ON A.DebtorCode = D.DebtorCode 
		   LEFT OUTER JOIN dbo.vDebitNoteType E ON A.DNType = E.DNType 
		   LEFT OUTER JOIN dbo.vCurrency F ON A.CurrencyCode = F.CurrencyCode
GO


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARDebitNoteDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARDebitNoteDetail]
GO

CREATE VIEW dbo.vARDebitNoteDetail
AS
SELECT     DocKey, Seq, AccNo, ToAccountRate, Description, ProjNo, DeptNo, TaxType, Tax, LocalTax, Amount, LocalAmount, NetAmount, LocalNetAmount, 
           KnockOffAmount
FROM       dbo.ARDNDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARInvoice]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARInvoice]
GO

CREATE VIEW dbo.vARInvoice
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.Description, A.DisplayTerm, A.DueDate, A.Total, A.LocalTotal, A.PaymentAmt, A.LocalPaymentAmt, A.Outstanding, 
           A.CurrencyRate, A.NetTotal, A.LocalNetTotal, A.Tax, A.LocalTax, A.Note, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
           B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, 
           A.SourceKey, D.*, E.*
FROM       dbo.ARInvoice A 
		   LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
           LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
		   LEFT OUTER JOIN dbo.vDebtorARAP D ON A.DebtorCode = D.DebtorCode 
		   LEFT OUTER JOIN dbo.vCurrency E ON A.CurrencyCode = E.CurrencyCode
GO


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARInvoiceDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARInvoiceDetail]
GO

CREATE VIEW dbo.vARInvoiceDetail
AS
SELECT     DocKey, Seq, AccNo, ToAccountRate, Description, ProjNo, DeptNo, TaxType, Tax, LocalTax, Amount, LocalAmount, NetAmount, LocalNetAmount, 
           KnockOffAmount
FROM       dbo.ARInvoiceDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARRefund]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARRefund]
GO

CREATE VIEW dbo.vARRefund
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.Description, A.ProjNo, A.DeptNo, A.ToDebtorRate, A.ToHomeRate, A.PaymentAmt, A.LocalPaymentAmt, 
           A.KnockOffAmt, E.*, A.Note, A.Cancelled, A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, 
           A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, A.SourceKey, D.*
FROM       dbo.ARRefund A 
		   LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
		   LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
		   LEFT OUTER JOIN dbo.vDebtorARAP D ON A.DebtorCode = D.DebtorCode 
		   LEFT OUTER JOIN dbo.vCurrency E ON A.CurrencyCode = E.CurrencyCode
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARRefundDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARRefundDetail]
GO


CREATE VIEW dbo.vARRefundDetail
AS
SELECT     DocKey, Seq, PaymentBy, ChequeNo, FloatDay, BankCharge, PaymentAmt, DebtorPaymentAmt, IsRCHQ, RCHQDate
FROM       dbo.ARRefundDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARDeposit]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARDeposit]
GO

CREATE VIEW vARDeposit
AS
SELECT A.DocKey, A.DocNo, A.DebtorName, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1, A.Fax1, A.Attention,
       A.DocDate, A.Description, A.ProjNo, A.DeptNo, D.*, E.*, A.ToHomeRate, A.PaymentAmt, A.PaymentAmt*A.ToHomeRate AS LocalPaymentAmt, A.ToDepositRate, 
       A.DepositPaymentMethod, A.TransferedAmt, A.RefundAmt, A.ForfeitedAmt, A.Outstanding, A.PrintCount, 
       A.Cancelled, A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName, A.CreatedTimeStamp,
       A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.Note
FROM   dbo.ARDeposit A
       LEFT OUTER JOIN Users B ON A.LastModifiedUserID = B.UserID
       LEFT OUTER JOIN Users C ON A.CreatedUserID = C.UserID
       LEFT OUTER JOIN vCurrency D ON A.CurrencyCode = D.CurrencyCode
       LEFT OUTER JOIN vDebtorARAP E ON A.DebtorCode = E.DebtorCode
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARDepositDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARDepositDetail]
GO

CREATE VIEW dbo.vARDepositDetail
AS
SELECT A.DocKey, A.Seq, A.PaymentBy, A.ChequeNo, A.FloatDay, A.BankCharge, A.PaymentAmt, A.IsRCHQ, A.RCHQDate
FROM   ARDepositDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARPayment]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARPayment]
GO

CREATE VIEW dbo.vARPayment
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.Description, A.ProjNo, A.DeptNo, A.ToDebtorRate, A.ToHomeRate, A.PaymentAmt, A.LocalPaymentAmt, 
           A.KnockOffAmt, E.*, A.Note, A.Cancelled, A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, 
           A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, A.SourceKey, D.*, A.LocalUnappliedAmount, A.RefundAmt
FROM       dbo.ARPayment A 
		   LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
		   LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
		   LEFT OUTER JOIN dbo.vDebtorARAP D ON A.DebtorCode = D.DebtorCode 
		   LEFT OUTER JOIN dbo.vCurrency E ON A.CurrencyCode = E.CurrencyCode
Go

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARPaymentDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARPaymentDetail]
GO

CREATE VIEW dbo.vARPaymentDetail
AS
SELECT     DocKey, Seq, PaymentBy, ChequeNo, FloatDay, BankCharge, PaymentAmt, DebtorPaymentAmt, IsRCHQ, RCHQDate, DepositDocKey
FROM       dbo.ARPaymentDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vARAPContra]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vARAPContra]
GO

CREATE VIEW dbo.vARAPContra
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.Ref, A.TempAccNo, A.JournalType, A.ProjNo, A.DeptNo, A.Description, A.ARLocalNetTotal, A.APLocalNetTotal, A.NetTotal, A.ARKnockOffAmt, 
           A.APKnockOffAmt, A.CurrencyRate, A.JEKey, A.Note, A.Cancelled, A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, 
           A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, A.SourceKey, D.DebtorCode, D.DebtorCompanyName, D.DebtorDesc2, D.DebtorRegisterNo, 
           D.DebtorNatureOfBusiness, D.DebtorWebURL, D.DebtorEmailAddress, D.DebtorAreaCode, D.AreaDescription, D.DebtorType, D.DebtorTypeDescription, D.DebtorDisplayTerm, 
           D.DebtorSalesAgent, D.SalesAgentDescription, E.CreditorCode, E.CreditorCompanyName, E.CreditorDesc2, E.CreditorRegisterNo, E.CreditorNatureOfBusiness, 
           E.CreditorWebURL, E.CreditorEmailAddress, E.CreditorAreaCode, E.CreditorType, E.CreditorTypeDescription, E.CreditorDisplayTerm, E.CreditorPurchaseAgent, F.*
FROM       dbo.ARAPContra A 
		   LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
		   LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
		   LEFT OUTER JOIN dbo.vDebtorARAP D ON A.DebtorCode = D.DebtorCode 
		   LEFT OUTER JOIN dbo.vCreditor E ON A.CreditorCode = E.CreditorCode 
           LEFT OUTER JOIN dbo.vCurrency F ON A.CurrencyCode = F.CurrencyCode                
Go

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCreditorARAP]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCreditorARAP]
GO

CREATE VIEW vCreditorARAP
AS
SELECT     A.AccNo AS CreditorCode, A.CompanyName AS CreditorCompanyName, A.Desc2 AS CreditorDesc2, A.RegisterNo AS CreditorRegisterNo, 
           A.Address1 AS CreditorAddress1, A.Address2 AS CreditorAddress2, A.Address3 AS CreditorAddress3, A.Address4 AS CreditorAddress4,
           A.DeliverAddr1 AS CreditorDeliverAddress1, A.DeliverAddr2 AS CreditorDeliverAddress2, A.DeliverAddr3 AS CreditorDeliverAddress3, A.DeliverAddr4 AS CreditorDeliverAddress4,
           A.Attention AS CreditorAttention, A.Phone1 AS CreditorPhone1, A.Phone2 AS CreditorPhone2, A.Fax1 AS CreditorFax1, A.Fax2 AS CreditorFax2,
           A.TaxType AS CreditorTaxType, A.ExemptNo AS CreditorExemptNo, A.ExpiryDate AS CreditorExemptExpiryDate, A.Note AS CreditorNote,
           A.PriceCategory AS CreditorPriceCategory, A.StatementType AS CreditorStatementType, A.AgingOn AS CreditorAgingOn,
           A.NatureOfBusiness AS CreditorNatureOfBusiness, A.WebURL AS CreditorWebURL, A.EmailAddress AS CreditorEmailAddress, 
           A.AreaCode AS CreditorAreaCode, B.Description AS AreaDescription, A.CreditorType, C.Description AS CreditorTypeDescription, 
           A.DisplayTerm AS CreditorDisplayTerm, A.PurchaseAgent AS CreditorPurchaseAgent, D.PurchaseAgentDescription,  A.CreditLimit AS CreditorCreditLimit, 
           A.OverdueLimit AS CreditorOverdueLimit, A.CurrencyCode AS CreditorCurrencyCode
FROM       dbo.Creditor A 
		   LEFT OUTER JOIN dbo.Area B ON A.AreaCode = B.AreaCode 
		   LEFT OUTER JOIN dbo.CreditorType C ON A.CreditorType = C.CreditorType 
		   LEFT OUTER JOIN dbo.vPurchaseAgent D ON A.PurchaseAgent = D.PurchaseAgent
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPCreditNote]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPCreditNote]
GO

CREATE VIEW dbo.vAPCreditNote
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.Ref, A.Description, A.Total, A.LocalTotal, A.NetTotal, A.LocalNetTotal, A.RefundAmt, A.KnockOffAmt, E.*, 
           A.CurrencyRate, A.Tax, A.Note, A.Cancelled, A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, 
           A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, A.SourceKey, D.*
FROM       dbo.APCN A 
		   LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
		   LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
		   LEFT OUTER JOIN dbo.vCreditorARAP D ON A.CreditorCode = D.CreditorCode
		   LEFT OUTER JOIN dbo.vCurrency E ON A.CurrencyCode = E.CurrencyCode
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPCreditNoteDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPCreditNoteDetail]
GO

CREATE VIEW dbo.vAPCreditNoteDetail
AS
SELECT     DocKey, Seq, AccNo, ToAccountRate, Description, ProjNo, DeptNo, TaxType, Tax, LocalTax, Amount, LocalAmount, NetAmount, LocalNetAmount, 
           UnappliedAmount, LocalUnappliedAmount, KnockOffAmount
FROM       dbo.APCNDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPDebitNote]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPDebitNote]
GO

CREATE VIEW dbo.vAPDebitNote
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.DueDate, A.Ref, A.DisplayTerm, A.Description, A.Total, A.LocalTotal, A.PaymentAmt, A.LocalPaymentAmt, A.Outstanding,
           A.CurrencyRate, A.NetTotal, A.LocalNetTotal, A.Tax, A.Note, A.Cancelled, 
           A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, 
           A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, A.SourceKey, D.*, E.*, F.*
FROM       dbo.APDN A 
		   LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
           LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
           LEFT OUTER JOIN dbo.vCreditorARAP D ON A.CreditorCode = D.CreditorCode 
           LEFT OUTER JOIN dbo.vDebitNoteType E ON A.DNType = E.DNType 
           LEFT OUTER JOIN dbo.vCurrency F ON A.CurrencyCode = F.CurrencyCode
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPDebitNoteDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPDebitNoteDetail]
GO

CREATE VIEW dbo.vAPDebitNoteDetail
AS
SELECT     DocKey, Seq, AccNo, ToAccountRate, Description, ProjNo, DeptNo, TaxType, Tax, LocalTax, Amount, LocalAmount, NetAmount, LocalNetAmount, 
           KnockOffAmount
FROM       dbo.APDNDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPInvoice]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPInvoice]
GO

CREATE VIEW dbo.vAPInvoice
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.Description, A.DisplayTerm, A.DueDate, A.Total, A.LocalTotal, A.PaymentAmt, A.LocalPaymentAmt, A.Outstanding,
           A.CurrencyRate, A.NetTotal, A.LocalNetTotal, A.Tax, A.LocalTax, A.Note, A.Cancelled, A.LastModified, A.LastModifiedUserID, 
           B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, 
           A.SourceKey, D.*, E.*
FROM       dbo.APInvoice A 
		   LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
		   LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
		   LEFT OUTER JOIN dbo.vCreditorARAP D ON A.CreditorCode = D.CreditorCode 
		   LEFT OUTER JOIN dbo.vCurrency E ON A.CurrencyCode = E.CurrencyCode
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPInvoiceDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPInvoiceDetail]
GO

CREATE VIEW dbo.vAPInvoiceDetail
AS
SELECT     DocKey, Seq, AccNo, ToAccountRate, Description, ProjNo, DeptNo, TaxType, Tax, LocalTax, Amount, LocalAmount, NetAmount, LocalNetAmount, 
           KnockOffAmount
FROM       dbo.APInvoiceDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPPayment]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPPayment]
GO

CREATE VIEW dbo.vAPPayment
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.Description, A.ProjNo, A.DeptNo, A.ToCreditorRate, A.ToHomeRate, A.PaymentAmt, A.LocalPaymentAmt, 
           A.KnockOffAmt, E.*, A.Note, A.Cancelled, A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, 
           A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, A.SourceKey, D.*, A.LocalUnappliedAmount, A.RefundAmt
FROM       dbo.APPayment A
           LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
           LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
		   LEFT OUTER JOIN dbo.vCreditorARAP D ON A.CreditorCode = D.CreditorCode 
		   LEFT OUTER JOIN dbo.vCurrency E ON A.CurrencyCode = E.CurrencyCode
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPPaymentDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPPaymentDetail]
GO

CREATE VIEW dbo.vAPPaymentDetail
AS
SELECT     DocKey, Seq, PaymentBy, ChequeNo, FloatDay, BankCharge, PaymentAmt, CreditorPaymentAmt, IsRCHQ, RCHQDate, DepositDocKey
FROM       dbo.APPaymentDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPRefund]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPRefund]
GO

CREATE VIEW dbo.vAPRefund
AS
SELECT     A.DocKey, A.DocNo, A.DocDate, A.Description, A.ProjNo, A.DeptNo, A.ToCreditorRate, A.ToHomeRate, A.PaymentAmt, A.LocalPaymentAmt, 
           A.KnockOffAmt, E.*, A.Note, A.Cancelled, A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, 
           A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.SourceType, A.SourceKey, D.*
FROM       dbo.APRefund A 
           LEFT OUTER JOIN dbo.Users B ON A.LastModifiedUserID = B.UserID 
           LEFT OUTER JOIN dbo.Users C ON A.CreatedUserID = C.UserID 
           LEFT OUTER JOIN dbo.vCreditorARAP D ON A.CreditorCode = D.CreditorCode 
           LEFT OUTER JOIN dbo.vCurrency E ON A.CurrencyCode = E.CurrencyCode
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPRefundDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPRefundDetail]
GO

CREATE VIEW dbo.vAPRefundDetail
AS
SELECT     DocKey, Seq, PaymentBy, ChequeNo, FloatDay, BankCharge, PaymentAmt, CreditorPaymentAmt, IsRCHQ, RCHQDate
FROM       dbo.APRefundDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPDeposit]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPDeposit]
GO

CREATE VIEW vAPDeposit
AS
SELECT A.DocKey, A.DocNo, A.CreditorName, A.InvAddr1, A.InvAddr2, A.InvAddr3, A.InvAddr4, A.Phone1, A.Fax1, A.Attention,
       A.DocDate, A.Description, A.ProjNo, A.DeptNo, D.*, E.*, A.ToHomeRate, A.PaymentAmt,  A.PaymentAmt*A.ToHomeRate AS LocalPaymentAmt, A.ToDepositRate,
       A.DepositPaymentMethod, A.TransferedAmt, A.RefundAmt, A.ForfeitedAmt, A.Outstanding, A.PrintCount, 
       A.Cancelled, A.LastModified, A.LastModifiedUserID, B.UserName AS LastModifiedUserName, A.CreatedTimeStamp, 
       A.CreatedUserID, C.UserName AS CreatedUserName, A.ExternalLink, A.Note
FROM   APDeposit A 
       LEFT OUTER JOIN Users B ON (A.LastModifiedUserID=B.UserID) 
       LEFT OUTER JOIN Users C ON (A.CreatedUserID=C.UserID)
       LEFT OUTER JOIN vCurrency D ON (A.CurrencyCode=D.CurrencyCode)
       LEFT OUTER JOIN vCreditorARAP E ON A.CreditorCode = E.CreditorCode
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vAPDepositDetail]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vAPDepositDetail]
GO

CREATE VIEW dbo.vAPDepositDetail
AS
SELECT A.DocKey, A.Seq, A.PaymentBy, A.ChequeNo, A.FloatDay, A.BankCharge, A.PaymentAmt, A.IsRCHQ, A.RCHQDate
FROM APDepositDTL A
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockGroup]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockGroup]
GO

CREATE VIEW dbo.vStockGroup
AS
SELECT     ItemGroup, Description AS ItemGroupDescription, Desc2, Note, SalesCode, 
           CashSalesCode, SalesReturnCode, SalesDiscountCode, PurchaseDiscountCode, 
           PurchaseCode, PurchaseReturnCode, LastUpdate
FROM       dbo.ItemGroup
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vStockItemType]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vStockItemType]
GO

CREATE VIEW dbo.vStockItemType
AS
SELECT     ItemType, Description AS ItemTypeDescription, Desc2, Note, LastUpdate
FROM       dbo.ItemType
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vArea]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vArea]
GO

CREATE VIEW dbo.vArea
AS
SELECT     AreaCode, Description AS AreaDescription, Desc2 AS AreaDesc2
FROM       dbo.Area
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vDebtorType]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vDebtorType]
GO

CREATE VIEW dbo.vDebtorType
AS
SELECT     DebtorType, Description AS DebtorTypeDescription, Desc2 AS DebtorTypeDesc2
FROM       dbo.DebtorType
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vCreditorType]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vCreditorType]
GO

CREATE VIEW dbo.vCreditorType
AS
SELECT     CreditorType, Description AS CreditorTypeDescription, Desc2 AS CreditorTypeDesc2
FROM       dbo.CreditorType
GO
�FIF NOT EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'd_MemberPoint' AND ss.name = N'dbo')
CREATE TYPE [dbo].[d_MemberPoint] FROM [decimal](19, 2) NULL
GO

/* The following DDL will add Gender column to Member table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'Gender')
  ALTER TABLE [dbo].[Member] 
    ADD [Gender] [char](1) NULL
GO

/* The following DDL will add RegisterDate column to Member table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'RegisterDate')
  ALTER TABLE [dbo].[Member] 
    ADD [RegisterDate] [datetime] NULL
GO

/* The following DDL will add ExpiryDate column to Member table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'ExpiryDate')
  ALTER TABLE [dbo].[Member] 
    ADD [ExpiryDate] [datetime] NULL
GO

/* The following DDL will add IsActive column to Member table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'IsActive')
  ALTER TABLE [dbo].[Member] 
    ADD [IsActive] [d_Boolean] NOT NULL
GO

/* The following DDL will add CreatedTime column to Member table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'CreatedTime')
  ALTER TABLE [dbo].[Member] 
    ADD [CreatedTime] [datetime] NOT NULL
GO

/* The following DDL will add CreatedUserID column to Member table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'CreatedUserID')
  ALTER TABLE [dbo].[Member] 
    ADD [CreatedUserID] [d_UserID] NOT NULL
GO

/* The following DDL will add LastModified column to Member table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'LastModified')
  ALTER TABLE [dbo].[Member] 
    ADD [LastModified] [datetime] NOT NULL
GO

/* The following DDL will add LastModifiedUserID column to Member table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'LastModifiedUserID')
  ALTER TABLE [dbo].[Member] 
    ADD [LastModifiedUserID] [d_UserID] NOT NULL
GO

/* The following DDL will update OpeningPoints datatype in Member table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'OpeningPoints')
	  ALTER TABLE [dbo].[Member] 
		ALTER COLUMN [OpeningPoints] [d_MemberPoint] NOT NULL
GO

/* The following DDL will add SourceGuid column to PointTrans table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PointTrans]') and name = N'SourceGuid')
  ALTER TABLE [dbo].[PointTrans] 
    ADD [SourceGuid] [uniqueidentifier] NOT NULL
GO

/* The following DDL will add Guid column to PointTrans table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PointTrans]') and name = N'Guid')
  ALTER TABLE [dbo].[PointTrans] 
    ADD [Guid] [uniqueidentifier] NOT NULL
GO

/* The following DDL will update Points datatype in PointTrans table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PointTrans]') and name = N'Points')
	  ALTER TABLE [dbo].[PointTrans] 
		ALTER COLUMN [Points] [d_MemberPoint] NOT NULL
GO


/* The following DDL will update MemberNo datatype in PointTrans table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PointTrans]') and name = N'MemberNo')
	  ALTER TABLE [dbo].[PointTrans] 
		ALTER COLUMN [MemberNo] [d_MemberNo] NOT NULL
GO

/* The following DDL will add Level column to MemberType table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[MemberType]') and name = N'Level')
  ALTER TABLE [dbo].[MemberType] 
    ADD [Level] [tinyint] NOT NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'BonusPointAccNo')
  EXEC sp_rename 'IV.BonusPointAccNo', 'MemberNo', 'COLUMN'
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'BonusPointAccNo')
  EXEC sp_rename 'CS.BonusPointAccNo', 'MemberNo', 'COLUMN'
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'BonusPointAccNo')
  EXEC sp_rename 'CN.BonusPointAccNo', 'MemberNo', 'COLUMN'
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'BonusPointAccNo')
  EXEC sp_rename 'DN.BonusPointAccNo', 'MemberNo', 'COLUMN'
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointRedemption]') and name = N'BonusPointAccNo')
  EXEC sp_rename 'BonusPointRedemption.BonusPointAccNo', 'MemberNo', 'COLUMN'
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[POS]') and name = N'BonusPointAccNo')
  EXEC sp_rename 'POS.BonusPointAccNo', 'MemberNo', 'COLUMN'
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BonusPointTrans_BonusPointAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BonusPointTrans] DROP CONSTRAINT [FK_BonusPointTrans_BonusPointAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BonusPointAccount_BonusPointAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BonusPointAccount] DROP CONSTRAINT [FK_BonusPointAccount_BonusPointAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IV_BonusPointAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IV] DROP CONSTRAINT [FK_IV_BonusPointAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CS_BonusPointAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CS] DROP CONSTRAINT [FK_CS_BonusPointAccNo]
GO	

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CN_BonusPointAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CN] DROP CONSTRAINT [FK_CN_BonusPointAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DN_BonusPointAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DN] DROP CONSTRAINT [FK_DN_BonusPointAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_BonusPointRedemption_BonusPointAccount]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[BonusPointRedemption] DROP CONSTRAINT [FK_BonusPointRedemption_BonusPointAccount]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Pos_BonusPointAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[POS] DROP CONSTRAINT [FK_Pos_BonusPointAccNo]
GO

/* The following DDL will update MemberNo datatype in IV table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'MemberNo')
	  ALTER TABLE [dbo].[IV] 
		ALTER COLUMN [MemberNo] [d_MemberNo] NULL
GO

/* The following DDL will update MemberNo datatype in CS table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'MemberNo')
	  ALTER TABLE [dbo].[CS] 
		ALTER COLUMN [MemberNo] [d_MemberNo] NULL
GO

/* The following DDL will update MemberNo datatype in CN table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'MemberNo')
	  ALTER TABLE [dbo].[CN] 
		ALTER COLUMN [MemberNo] [d_MemberNo] NULL
GO

/* The following DDL will update MemberNo datatype in DN table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'MemberNo')
	  ALTER TABLE [dbo].[DN] 
		ALTER COLUMN [MemberNo] [d_MemberNo] NULL
GO

/* The following DDL will update MemberNo datatype in BonusPointRedemption table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointRedemption]') and name = N'MemberNo')
	  ALTER TABLE [dbo].[BonusPointRedemption] 
		ALTER COLUMN [MemberNo] [d_MemberNo] NULL
GO

/* The following DDL will update MemberNo datatype in POS table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[POS]') and name = N'MemberNo')
	  ALTER TABLE [dbo].[POS] 
		ALTER COLUMN [MemberNo] [d_MemberNo] NULL
GO

/* The following DDL will update MemberPoint datatype in IV table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'TotalBonusPoint')
	  ALTER TABLE [dbo].[IV] 
		ALTER COLUMN [TotalBonusPoint] [d_MemberPoint] NULL
GO

/* The following DDL will update MemberPoint datatype in CS table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'TotalBonusPoint')
	  ALTER TABLE [dbo].[CS] 
		ALTER COLUMN [TotalBonusPoint] [d_MemberPoint] NULL
GO

/* The following DDL will update MemberPoint datatype in CN table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'TotalBonusPoint')
	  ALTER TABLE [dbo].[CN] 
		ALTER COLUMN [TotalBonusPoint] [d_MemberPoint] NULL
GO

/* The following DDL will update MemberPoint datatype in DN table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'TotalBonusPoint')
	  ALTER TABLE [dbo].[DN] 
		ALTER COLUMN [TotalBonusPoint] [d_MemberPoint] NULL		
GO

/* The following DDL will update MemberPoint datatype in BonusPointRedemption table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointRedemption]') and name = N'TotalPointRedeem')
	  ALTER TABLE [dbo].[BonusPointRedemption] 
		ALTER COLUMN [TotalPointRedeem] [d_MemberPoint] NULL
GO

/* The following DDL will update MemberPoint datatype in IVDTL table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'BonusPoint')
	  ALTER TABLE [dbo].[IVDTL] 
		ALTER COLUMN [BonusPoint] [d_MemberPoint] NULL		
GO

/* The following DDL will update MemberPoint datatype in CSDTL table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'BonusPoint')
	  ALTER TABLE [dbo].[CSDTL] 
		ALTER COLUMN [BonusPoint] [d_MemberPoint] NULL		
GO

/* The following DDL will update MemberPoint datatype in CNDTL table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'BonusPoint')
	  ALTER TABLE [dbo].[CNDTL] 
		ALTER COLUMN [BonusPoint] [d_MemberPoint] NULL		
GO

/* The following DDL will update MemberPoint datatype in DNDTL table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'BonusPoint')
	  ALTER TABLE [dbo].[DNDTL] 
		ALTER COLUMN [BonusPoint] [d_MemberPoint] NULL		
GO

/* The following DDL will update MemberPoint datatype in BonusPointRedemptionDTL table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointRedemptionDTL]') and name = N'UnitPoint')
	  ALTER TABLE [dbo].[BonusPointRedemptionDTL] 
		ALTER COLUMN [UnitPoint] [d_MemberPoint] NULL
GO

/* The following DDL will update MemberPoint datatype in ItemUOM table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemUOM]') and name = N'BonusPoint')
	  ALTER TABLE [dbo].[ItemUOM] 
		ALTER COLUMN [BonusPoint] [d_MemberPoint] NULL		
GO

/* The following DDL will update MemberPoint datatype in ItemPrice table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemPrice]') and name = N'BonusPoint')
	  ALTER TABLE [dbo].[ItemPrice] 
		ALTER COLUMN [BonusPoint] [d_MemberPoint] NULL		
GO

/* The following DDL will update MemberPoint datatype in ItemUOM table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemUOM]') and name = N'RedeemBonusPoint')
	  ALTER TABLE [dbo].[ItemUOM] 
		ALTER COLUMN [RedeemBonusPoint] [d_MemberPoint] NULL		
GO

/* The following DDL will update Points datatype in Debtor table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'OpeningBonusPoint')
	  ALTER TABLE [dbo].[Debtor] 
		ALTER COLUMN [OpeningBonusPoint] [d_MemberPoint] NULL
GO

/* The following DDL will drop Sex column in Member table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'Sex')
  ALTER TABLE [dbo].[Member] 
    DROP COLUMN [Sex]
GO

/* The following DDL will drop Guid column in Member table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'Guid')
  ALTER TABLE [dbo].[Member] 
    DROP COLUMN [Guid]
GO

/* The following DDL will drop LastUpdate column in Member table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'LastUpdate')
  ALTER TABLE [dbo].[Member] 
    DROP COLUMN [LastUpdate]
GO

/* The following DDL will drop SourceKey column in PointTrans table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PointTrans]') and name = N'SourceKey')
  ALTER TABLE [dbo].[PointTrans] 
    DROP COLUMN [SourceKey]
GO

/* The following DDL will drop Guid column in Race table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Race]') and name = N'Guid')
  ALTER TABLE [dbo].[Race] 
    DROP COLUMN [Guid]
GO

/* The following DDL will drop LastUpdate column in Race table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Race]') and name = N'LastUpdate')
  ALTER TABLE [dbo].[Race] 
    DROP COLUMN [LastUpdate]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Currency]') and name = N'CurrencyWord')
	  ALTER TABLE [dbo].[Currency] 
		ALTER COLUMN [CurrencyWord] [nvarchar](40) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Currency]') and name = N'CurrencyWord2')
	  ALTER TABLE [dbo].[Currency] 
		ALTER COLUMN [CurrencyWord2] [nvarchar](40) NULL
GO

/* The following DDL will modify BonusPointRedemption Tables to add in GUID to master table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

INSERT @ListTable VALUES('BonusPointRedemption', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('MemberType', 'Guid', '', 'D')
INSERT @ListTable VALUES('MemberType', 'LastUpdate', '', 'D')
INSERT @ListTable VALUES('DocNoFormat', 'MaxNumber', '[int] NULL', 'A')
INSERT @ListTable VALUES('QTDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SODTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DODTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XSDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DRDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PODTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GRDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PIDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CPDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PRDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XPDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GTDTL', 'ExtraDiscountAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('Package', 'PurchaseNetTotal', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PackageDTL', 'PurchaseSubTotal', '[d_Price] NULL', 'A')
INSERT @ListTable VALUES('Footer', 'AddToCalculateExtraDiscountAmount', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('IPHIST', 'MemberNo', '[d_MemberNo] NULL', 'A')
INSERT @ListTable VALUES('IPHIST', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('ItemUOM', 'Price2', '[d_Price] NULL', 'A')
INSERT @ListTable VALUES('CSGN', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('CSGNDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('SupplierCSGN', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')
INSERT @ListTable VALUES('SupplierCSGNDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE PackageDTL Set PurchaseSubTotal=Qty*PurchasePrice

(/* The following DDL will set empty MemberNo value to null in IV, CS, CN, DN, BonusPointRedemption and POS table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IV]') and name = N'MemberNo' and isnullable = '1')
	  Update [dbo].[IV] SET MemberNo = Null Where MemberNo =''
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CS]') and name = N'MemberNo' and isnullable = '1')
	  Update [dbo].[CS] SET MemberNo = Null Where MemberNo =''
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'MemberNo' and isnullable = '1')
	  Update [dbo].[CN] SET MemberNo = Null Where MemberNo =''
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'MemberNo' and isnullable = '1')
	  Update [dbo].[DN] SET MemberNo = Null Where MemberNo =''
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointRedemption]') and name = N'MemberNo' and isnullable = '1')
	  Update [dbo].[BonusPointRedemption] SET MemberNo = Null Where MemberNo =''
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[POS]') and name = N'MemberNo' and isnullable = '1')
	  Update [dbo].[POS] SET MemberNo = Null Where MemberNo =''
GO


/* The following DDL will create MemberNo foreign key in IV, CS, CN, DN, BonusPointRedemption and POS table */
if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_IV_MemberNo')))
ALTER TABLE [dbo].[IV]  WITH NOCHECK ADD  CONSTRAINT [FK_IV_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO

ALTER TABLE [dbo].[IV] NOCHECK CONSTRAINT [FK_IV_MemberNo]
GO


if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_CS_MemberNo')))
ALTER TABLE [dbo].[CS]  WITH NOCHECK ADD  CONSTRAINT [FK_CS_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO

ALTER TABLE [dbo].[CS] NOCHECK CONSTRAINT [FK_CS_MemberNo]
GO

if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_CN_MemberNo')))
ALTER TABLE [dbo].[CN]  WITH NOCHECK ADD  CONSTRAINT [FK_CN_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO

ALTER TABLE [dbo].[CN] NOCHECK CONSTRAINT [FK_CN_MemberNo]
GO

if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_DN_MemberNo')))
ALTER TABLE [dbo].[DN]  WITH NOCHECK ADD  CONSTRAINT [FK_DN_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO

ALTER TABLE [dbo].[DN] NOCHECK CONSTRAINT [FK_DN_MemberNo]
GO

if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_BonusPointRedemption_MemberNo')))
ALTER TABLE [dbo].[BonusPointRedemption]  WITH NOCHECK ADD  CONSTRAINT [FK_BonusPointRedemption_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO

ALTER TABLE [dbo].[BonusPointRedemption] NOCHECK CONSTRAINT [FK_BonusPointRedemption_MemberNo]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_POS_MemberNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[POS]  WITH CHECK ADD  CONSTRAINT [FK_POS_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_POS_MemberNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[POS] CHECK CONSTRAINT [FK_POS_MemberNo]
GO


/* The following DDL will drop BonusPointTrans table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointTrans]'))
  DROP TABLE [dbo].[BonusPointTrans] 
GO

/* The following DDL will drop BonusPointAccount table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointAccount]'))
  DROP TABLE [dbo].[BonusPointAccount] 
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vMember]'))
    DROP VIEW dbo.vMember
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vBonusPointAccount]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vBonusPointAccount]
GO

CREATE VIEW dbo.vMember
AS
SELECT MemberNo, Name as MemberName, Address1 as MemberAddress1,
Address2 as MemberAddress2, Address3 as MemberAddress3,
Address4 as MemberAddress4, Department as MemberDepartment,
Title as MemberTitle, MobilePhone as MemberMobilePhone,
DirectPhone as MemberDirectPhone, DirectFax as MemberDirectFax,
EmailAddress as MemberEmailAddress, IMAddress as MemberIMAddress,
Note as MemberNote
FROM Member
GO

UPDATE REGISTRY SET RegValue = '1.0.9.30' WHERE RegID = 2
GO�/* Support CreditCardChargesAccNo in Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'CreditCardChargesAccNo')
    ALTER TABLE [dbo].[Location] ADD [CreditCardChargesAccNo] [d_AccNo] NULL
GO

/* Add Foreign Key to CreditCardChargesAccNo in Location table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_CreditCardChargesAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_CreditCardChargesAccNo]
GO

ALTER TABLE [dbo].[Location] WITH CHECK ADD CONSTRAINT [FK_Location_CreditCardChargesAccNo] 
FOREIGN KEY([CreditCardChargesAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

/* If PointPaymentAccNo does not exist in Location, then add it */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'PointPaymentAccNo')
  ALTER TABLE [dbo].[Location] 
    ADD [PointPaymentAccNo] [d_AccNo] NULL
GO

/* Set PointPaymentAccNo TO NULL for those records not exists in GLMAST */
UPDATE Location
SET PointPaymentAccNo=NULL
WHERE PointPaymentAccNo NOT IN (SELECT AccNo FROM GLMast)
GO

/* Add Foreign Key to PointPaymentAccNo in Location table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_PointPaymentAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_PointPaymentAccNo]
GO

ALTER TABLE [dbo].[Location] WITH CHECK ADD CONSTRAINT [FK_Location_PointPaymentAccNo] 
FOREIGN KEY([PointPaymentAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

/* Support ReverseGLPosting in UnrealizedGainLoss table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLoss]') and name = N'ReverseGLPosting')
  ALTER TABLE [dbo].[UnrealizedGainLoss] 
    ADD [ReverseGLPosting] [d_Boolean] NOT NULL DEFAULT 'F'
GO

/* The following DDL supports BankBuyRate and BankSellRate in UnrealizedGainLossRate table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLossRate]') and name = N'CurrencyRate')
  EXEC sp_rename 'UnrealizedGainLossRate.CurrencyRate', 'BankBuyRate', 'COLUMN'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UnrealizedGainLossRate]') and name = N'BankSellRate')
  ALTER TABLE [dbo].[UnrealizedGainLossRate] 
    ADD [BankSellRate] [d_CurrencyRate] NOT NULL DEFAULT 0
GO

UPDATE [dbo].[UnrealizedGainLossRate]
SET BankSellRate=BankBuyRate 
WHERE BankSellRate=0
GO

/* The following DDL supports BankBuyRate and BankSellRate in FCRevalueRate table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[FCRevalueRate]') and name = N'CurrencyRate')
  EXEC sp_rename 'FCRevalueRate.CurrencyRate', 'BankBuyRate', 'COLUMN'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[FCRevalueRate]') and name = N'BankSellRate')
  ALTER TABLE [dbo].[FCRevalueRate] 
    ADD [BankSellRate] [d_CurrencyRate] NOT NULL DEFAULT 0
GO

UPDATE [dbo].[UnrealizedGainLossRate]
SET BankSellRate=BankBuyRate 
WHERE BankSellRate=0
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support Description in CB table */
INSERT @ListTable VALUES('CB', 'Description', '[nvarchar] (80) NULL', 'A')
/* Support 'CalcDiscountOnUnitPrice in DEBTOR, CREDITOR, and All Sales and Purchase document */
INSERT @ListTable VALUES('DEBTOR', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('CREDITOR', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('QT', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('SO', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('DO', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('IV', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('CS', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('CN', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('DN', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('XS', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('DR', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('PO', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('GR', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('PI', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('CP', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('PR', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('XP', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('GT', 'CalcDiscountOnUnitPrice', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('Users', 'FilteredByCreatedUserID', '[d_Boolean] NULL', 'A')
INSERT @ListTable VALUES('Users', 'FilteredByLastModifiedUserID', '[d_Boolean] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE CB
SET Description=(SELECT Description FROM ARPayment WHERE DocKey=CB.SourceKey)
WHERE SourceType='RP'
GO

UPDATE CB
SET Description=(SELECT Description FROM ARRefund WHERE DocKey=CB.SourceKey)
WHERE SourceType='RF'
GO

UPDATE CB
SET Description=(SELECT Description FROM APPayment WHERE DocKey=CB.SourceKey)
WHERE SourceType='PP'
GO

UPDATE CB
SET Description=(SELECT Description FROM APRefund WHERE DocKey=CB.SourceKey)
WHERE SourceType='PF'
GO

UPDATE REGISTRY SET RegValue = '1.0.9.31' WHERE RegID = 2
GO
�DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* Support TaxRefNo in CBDTL table */
INSERT @ListTable VALUES('CBDTL', 'TaxRefNo', '[nvarchar](20) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.32' WHERE RegID = 2
GO�
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'PasswordStrength')
  ALTER TABLE [dbo].[Users] 
    ADD [PasswordStrength] [char] (1) NULL
GO

if not exists (select * from Registry where RegID=86020)
begin
  UPDATE Users SET PasswordStrength='0'
end
else
begin
  UPDATE Users SET PasswordStrength=(SELECT RegValue FROM Registry WHERE RegID=86020)
end
GO

/* Change ForeignCharges, LocalCharges, Duty column types in GRDTL, PIDTL, CPDTL tables */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('GRDTL', 'ForeignCharges', '[d_Cost] NULL')
INSERT @ListTable VALUES('GRDTL', 'LocalCharges', '[d_Cost] NULL')
INSERT @ListTable VALUES('GRDTL', 'Duty', '[d_Cost] NULL')
INSERT @ListTable VALUES('PIDTL', 'ForeignCharges', '[d_Cost] NULL')
INSERT @ListTable VALUES('PIDTL', 'LocalCharges', '[d_Cost] NULL')
INSERT @ListTable VALUES('PIDTL', 'Duty', '[d_Cost] NULL')
INSERT @ListTable VALUES('CPDTL', 'ForeignCharges', '[d_Cost] NULL')
INSERT @ListTable VALUES('CPDTL', 'LocalCharges', '[d_Cost] NULL')
INSERT @ListTable VALUES('CPDTL', 'Duty', '[d_Cost] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'alter table [dbo].[' + @tableName + '] alter column [' + @colName + '] ' + @colType
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Support ServiceChargeAccNo in Location table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'ServiceChargeAccNo')
    ALTER TABLE [dbo].[Location] ADD [ServiceChargeAccNo] [d_AccNo] NULL
GO

/* Add Foreign Key to ServiceChargeAccNo in Location table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_ServiceChargeAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_ServiceChargeAccNo]
GO

ALTER TABLE [dbo].[Location] WITH CHECK ADD CONSTRAINT [FK_Location_ServiceChargeAccNo] 
FOREIGN KEY([ServiceChargeAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

UPDATE REGISTRY SET RegValue = '1.0.9.33' WHERE RegID = 2
GOa /* Support maintained Tax Number that is purchased from Tax Authority Department */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxDocNo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[TaxDocNo](
		[TaxDocNoKey] [int] IDENTITY(1,1) NOT NULL,
		[NextNumber] [bigint] NULL,
		[FromNumber] [bigint] NOT NULL,
		[ToNumber] [bigint] NOT NULL,
		[Count] [int] NOT NULL,
		[UseCount] [int] NOT NULL,
		[VoidCount] [int] NOT NULL,
		[FromDate] [datetime] NULL,
		[ToDate] [datetime] NULL,
		[Format] [nvarchar](30) NOT NULL,
		[IsDefault] [dbo].[d_Boolean] NOT NULL,
		CONSTRAINT [PK_TaxDocNo] PRIMARY KEY CLUSTERED
		(
			[TaxDocNoKey] ASC
		)
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxDocNoDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[TaxDocNoDTL](
		[TaxDocNoDTLKey] [bigint] IDENTITY(1,1) NOT NULL,
		[TaxDocNoKey] [int] NOT NULL,
		[Number] [nvarchar] (20) NOT NULL,
		[UseInDocType] [dbo].[d_DocType] NULL,
		[UseInDocKey] [bigint] NULL,
		[UseInDocNo] [dbo].[d_DocNo] NULL,
		[Void] [d_Boolean] NOT NULL,
		CONSTRAINT [PK_TaxDocNoDTL] PRIMARY KEY CLUSTERED
		(
			[TaxDocNoDTLKey] ASC
		)
	) ON [PRIMARY]
GO

/* Trigger [dbo].[TAXDOCNODTL_TRIGGER_AFTER_COUNT] */
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS (SELECT * FROM SYS.TRIGGERS WHERE Name = 'TAXDOCNODTL_TRIGGER_AFTER_COUNT')
DROP TRIGGER TAXDOCNODTL_TRIGGER_AFTER_COUNT
GO
CREATE TRIGGER TAXDOCNODTL_TRIGGER_AFTER_COUNT ON TaxDocNoDTL
AFTER UPDATE
AS

DECLARE InsertRow CURSOR FAST_FORWARD
FOR SELECT TaxDocNoDtlKey, TaxDocNoKey, UseInDocKey, Void FROM INSERTED
DECLARE DeleteRow CURSOR FAST_FORWARD
FOR SELECT Void, UseInDocKey FROM DELETED

DECLARE @NewVoid VARCHAR(1), @NewUseInDocKey VARCHAR(30), @NewTaxDocNoDtlKey VARCHAR(30), @NewTaxDocNoKey VARCHAR(30),
@OldVoid VARCHAR(1), @OldUseInDocKey VARCHAR(30)

OPEN InsertRow
FETCH NEXT FROM InsertRow INTO @NewTaxDocNoDtlKey, @NewTaxDocNoKey, @NewUseInDocKey, @NewVoid
OPEN DeleteRow
FETCH NEXT FROM DeleteRow INTO @OldVoid, @OldUseInDocKey

WHILE (@@fetch_status = 0)
BEGIN
       IF UPDATE (UseInDocKey) OR UPDATE (Void)
       BEGIN
              IF @NewUseInDocKey IS NOT NULL AND @OldUseInDocKey IS NULL AND @NewVoid = 'F' AND @OldVoid = 'F'
                     UPDATE TaxDocNo SET UseCount = UseCount + 1 WHERE TaxDocNoKey = @NewTaxDocNoKey
              ELSE IF @NewUseInDocKey IS NOT NULL AND @NewVoid = 'F' AND @OldVoid = 'T'
                     UPDATE TaxDocNo SET UseCount = UseCount + 1 WHERE TaxDocNoKey = @NewTaxDocNoKey
       
              ELSE IF @NewUseInDocKey IS NULL AND @OldUseInDocKey IS NOT NULL AND @NewVoid = 'F' AND @OldVoid = 'F'
                     UPDATE TaxDocNo SET UseCount = UseCount - 1 WHERE TaxDocNoKey = @NewTaxDocNoKey
              ELSE IF @OldUseInDocKey IS NOT NULL AND @NewVoid = 'T' AND @OldVoid = 'F'
                     UPDATE TaxDocNo SET UseCount = UseCount - 1 WHERE TaxDocNoKey = @NewTaxDocNoKey

              IF @NewVoid = 'F' AND @OldVoid = 'T'
                     UPDATE TaxDocNo SET VoidCount = VoidCount - 1 WHERE TaxDocNoKey = @NewTaxDocNoKey
              ELSE IF @NewVoid = 'T' AND @OldVoid = 'F'       
                     UPDATE TaxDocNo SET VoidCount = VoidCount + 1 WHERE TaxDocNoKey = @NewTaxDocNoKey
       END

       FETCH NEXT FROM InsertRow INTO @NewTaxDocNoDtlKey, @NewTaxDocNoKey, @NewUseInDocKey, @NewVoid
       FETCH NEXT FROM DeleteRow INTO @OldVoid, @OldUseInDocKey
END

CLOSE InsertRow
DEALLOCATE InsertRow
CLOSE DeleteRow
DEALLOCATE DeleteRow
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* Support TaxRefNo in CBDTL table */
INSERT @ListTable VALUES('IV', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('CS', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('CN', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('DN', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('PI', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('CP', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('PR', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('ARInvoice', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('ARDN', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('ARCN', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('APInvoice', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('APDN', 'TaxDocNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('APCN', 'TaxDocNo', '[nvarchar](20) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[ItemBOM2]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	IF EXISTS(SELECT * FROM information_schema.referential_constraints WHERE CONSTRAINT_NAME ='FK_ItemBOM_SubItemCode')
	BEGIN
		ALTER TABLE [dbo].[ItemBOM] DROP CONSTRAINT [FK_ItemBOM_SubItemCode]
	END

	CREATE TABLE [dbo].[ItemBOM2](
    [ItemBOMKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[SubItemCode] [dbo].[d_ItemCode] NOT NULL,
	[Qty] [dbo].[d_Qty] NOT NULL,
	[OverheadCost] [dbo].[d_Cost] NOT NULL,
	[Seq] [int] NOT NULL,
	 CONSTRAINT [PK_ItemBOM_ItemBOMKey] PRIMARY KEY CLUSTERED 
	(
		[ItemBOMKey] ASC
	)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF),

	CONSTRAINT [FK_ItemBOM_ItemCode] FOREIGN KEY ([ItemCode]) REFERENCES [dbo].[Item] ([ItemCode]),
	CONSTRAINT [FK_ItemBOM_SubItemCode] FOREIGN KEY ([SubItemCode]) REFERENCES [dbo].[Item] ([ItemCode])
	)
	
	-- After ItemBOM2 table is created

	IF EXISTS (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemBOM]'))
	BEGIN
		-- Copy data from ItemBOM table to ItemBOM2 table
		INSERT INTO ItemBOM2 (ItemCode, SubItemCode, Qty, OverheadCost, Seq)
		SELECT ItemCode, SubItemCode, Qty, OverheadCost, Seq FROM ItemBOM
			
		IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name = 'IX_ItemBOM_ItemCode_SubItemCode' AND object_id = OBJECT_ID('ItemBOM2'))
		BEGIN 
			CREATE INDEX [IX_ItemBOM_ItemCode_SubItemCode] ON [dbo].[ItemBOM2] ([ItemCode], [SubItemCode])
		END	

		DROP TABLE [dbo].[ItemBOM]
		EXEC SP_RENAME 'ItemBOM2','ItemBOM';
	END	
END

GO

/* Support VoucherForfeitedAccNo in Location table */
if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[Location]') and name='VoucherForfeitedAccNo')
  ALTER TABLE [dbo].[Location] ADD [VoucherForfeitedAccNo] [dbo].[d_AccNo] NULL
GO

if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_Location_VoucherForfeitedAccNo')))
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_VoucherForfeitedAccNo] FOREIGN KEY([VoucherForfeitedAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_VoucherForfeitedAccNo]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.34' WHERE RegID = 2
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CSPaymentDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[CSPaymentDTL](
		[DtlKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
		[DocKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
		[PaymentBy] [dbo].[d_PaymentBy] NULL,
		[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
		[ChequeNo] [dbo].[d_ChequeNo] NULL,
		[FloatDay] [smallint] NULL,
		[BankCharge] [dbo].[d_Money] NULL,
		[PaymentAmt] [dbo].[d_Money] NULL,
		[CreditorPaymentAmt] [dbo].[d_Money] NULL,
		[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
		[RCHQDate] [datetime] NULL,
		[DepositDocKey] [bigint] NULL,
		[BankChargeDtlKey] [bigint] NULL,
		[LocalPaymentAmt] [dbo].[d_Money] NULL,
		[WithholdingTax] [dbo].[d_Money] NULL,
		[BankChargeProjNo] [dbo].[d_Project] NULL,
		[BankChargeDeptNo] [dbo].[d_Dept] NULL,
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSPaymentDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CSPaymentDTL] DROP CONSTRAINT [FK_CSPaymentDTL_BankChargeDeptNo]
GO

ALTER TABLE [dbo].[CSPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSPaymentDTL_BankChargeDeptNo] FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO

ALTER TABLE [dbo].[CSPaymentDTL] CHECK CONSTRAINT [FK_CSPaymentDTL_BankChargeDeptNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSPaymentDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CSPaymentDTL] DROP CONSTRAINT [FK_CSPaymentDTL_BankChargeProjNo]
GO

ALTER TABLE [dbo].[CSPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSPaymentDTL_BankChargeProjNo] FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO

ALTER TABLE [dbo].[CSPaymentDTL] CHECK CONSTRAINT [FK_CSPaymentDTL_BankChargeProjNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSPaymentDTL_PaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CSPaymentDTL] DROP CONSTRAINT [FK_CSPaymentDTL_PaymentMethod]
GO

ALTER TABLE [dbo].[CSPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSPaymentDTL_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[CSPaymentDTL] CHECK CONSTRAINT [FK_CSPaymentDTL_PaymentMethod]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.34' WHERE RegID = 2
GOPif not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ASMDTL]') and name='OrderQty')
BEGIN
  ALTER TABLE [dbo].[ASMDTL] ADD [OrderQty] [d_Qty] NULL DEFAULT 0   
  DECLARE @sql nvarchar(300);
  SET @sql = 'UPDATE [dbo].[ASMDTL] SET [OrderQty] = [Qty]';
  EXEC sp_executesql @sql
END 
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ItemOpening]') and name='ProjNo')
  ALTER TABLE [dbo].[ItemOpening] ADD [ProjNo] [d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ItemOpening]') and name='DeptNo')
  ALTER TABLE [dbo].[ItemOpening] ADD [DeptNo] [d_Dept] NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemOpening_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ItemOpening]  WITH CHECK ADD CONSTRAINT [FK_ItemOpening_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemOpening_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[ItemOpening]  WITH CHECK ADD CONSTRAINT [FK_ItemOpening_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO

UPDATE REGISTRY SET RegValue = '1.0.9.35' WHERE RegID = 2
GO



>if exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARCNKnockOff]') and name='GainLossDate')
  ALTER TABLE [dbo].[ARCNKnockOff] ALTER COLUMN [GainLossDate] [datetime] NOT NULL
GO

if exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARPaymentKnockOff]') and name='GainLossDate')
  ALTER TABLE [dbo].[ARPaymentKnockOff] ALTER COLUMN [GainLossDate] [datetime] NOT NULL
GO

if exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARRefundKnockOff]') and name='GainLossDate')
  ALTER TABLE [dbo].[ARRefundKnockOff] ALTER COLUMN [GainLossDate] [datetime] NOT NULL
GO

if exists (select * from dbo.syscolumns where id=object_id('[dbo].[APCNKnockOff]') and name='GainLossDate')
  ALTER TABLE [dbo].[APCNKnockOff] ALTER COLUMN [GainLossDate] [datetime] NOT NULL
GO

if exists (select * from dbo.syscolumns where id=object_id('[dbo].[APPaymentKnockOff]') and name='GainLossDate')
  ALTER TABLE [dbo].[APPaymentKnockOff] ALTER COLUMN [GainLossDate] [datetime] NOT NULL
GO

if exists (select * from dbo.syscolumns where id=object_id('[dbo].[APRefundKnockOff]') and name='GainLossDate')
  ALTER TABLE [dbo].[APRefundKnockOff] ALTER COLUMN [GainLossDate] [datetime] NOT NULL
GO

if exists (select * from dbo.syscolumns where id=object_id('[dbo].[ARContraKnockOff]') and name='GainLossDate')
  ALTER TABLE [dbo].[ARContraKnockOff] ALTER COLUMN [GainLossDate] [datetime] NOT NULL
GO

if exists (select * from dbo.syscolumns where id=object_id('[dbo].[APContraKnockOff]') and name='GainLossDate')
  ALTER TABLE [dbo].[APContraKnockOff] ALTER COLUMN [GainLossDate] [datetime] NOT NULL
GO

/* Support Document Report Setting */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DocReportSetting]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[DocReportSetting](
		[DocType] [d_DocType] NOT NULL,
		[Data] [varbinary] (max) NULL,
		CONSTRAINT [PK_DocReportSetting] PRIMARY KEY CLUSTERED
		(
			[DocType] ASC
		)
	) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.36' WHERE RegID = 2
GO



Z2-- Add SupplyPurchase column when does not have SupplyPurchase column in taxtype table
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'SupplyPurchase') 
ALTER TABLE TaxType ADD SupplyPurchase [char] (1) NOT NULL DEFAULT 'S'
GO

-- Add IsDefault column taxtype table
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'IsDefault')
ALTER TABLE [dbo].[TaxType]
  ADD [IsDefault] [d_Boolean] NOT NULL DEFAULT 'F'
GO

-- Add TaxAccNo column and foreign key in taxtype table
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'TaxAccNo')
begin
  ALTER TABLE [dbo].[TaxType] ADD [TaxAccNo] [d_AccNo] NULL

  -- Update TaxAccNo value in taxtype table
  DECLARE @sql nvarchar(300);
  SET @sql = 'Update TaxType Set TaxAccNo = (CASE WHEN SupplyPurchase=''P'' THEN InputTaxAccNo ELSE OutputTaxAccNo END)';
  EXEC sp_executesql @sql
end
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxType_TaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[TaxType]  WITH CHECK ADD  CONSTRAINT [FK_TaxType_TaxAccNo] FOREIGN KEY([TaxAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

-- drop input and output TaxAccNo columns and foreign key in taxtype table
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxType_InputTaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxType] DROP CONSTRAINT [FK_TaxType_InputTaxAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxType_OutputTaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxType] DROP CONSTRAINT [FK_TaxType_OutputTaxAccNo]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'InputTaxAccNo')
ALTER TABLE [dbo].[TaxType]
  DROP COLUMN [InputTaxAccNo]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'OutputTaxAccNo')
ALTER TABLE [dbo].[TaxType]
  DROP COLUMN [OutputTaxAccNo]
GO

/* Modification to TaxTrans Table */

-- Add CurrencyCode column to TaxTrans table
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTrans]') and name = N'CurrencyCode')
begin
  ALTER TABLE [dbo].[TaxTrans] ADD [CurrencyCode] [d_CurrencyCode] NULL

  DECLARE @sql nvarchar(300);
  SET @sql = 'UPDATE TaxTrans SET CurrencyCode=(SELECT CurrencyCode FROM ARInvoice WHERE TaxTrans.SourceKey=ARInvoice.DocKey) WHERE SourceType=''RI''';
  EXEC sp_executesql @sql
  SET @sql = 'UPDATE TaxTrans SET CurrencyCode=(SELECT CurrencyCode FROM ARDN WHERE TaxTrans.SourceKey=ARDN.DocKey) WHERE SourceType=''RD''';
  EXEC sp_executesql @sql
  SET @sql = 'UPDATE TaxTrans SET CurrencyCode=(SELECT CurrencyCode FROM ARCN WHERE TaxTrans.SourceKey=ARCN.DocKey) WHERE SourceType=''RC''';
  EXEC sp_executesql @sql
  SET @sql = 'UPDATE TaxTrans SET CurrencyCode=(SELECT CurrencyCode FROM APInvoice WHERE TaxTrans.SourceKey=APInvoice.DocKey) WHERE SourceType=''PB''';
  EXEC sp_executesql @sql
  SET @sql = 'UPDATE TaxTrans SET CurrencyCode=(SELECT CurrencyCode FROM APDN WHERE TaxTrans.SourceKey=APDN.DocKey) WHERE TaxTrans.SourceType=''PD''';
  EXEC sp_executesql @sql
  SET @sql = 'UPDATE TaxTrans SET CurrencyCode=(SELECT CurrencyCode FROM APCN WHERE TaxTrans.SourceKey=APCN.DocKey) WHERE TaxTrans.SourceType=''PC''';
  EXEC sp_executesql @sql
  SET @sql = 'UPDATE TaxTrans SET CurrencyCode=(SELECT CurrencyCode FROM CB WHERE TaxTrans.SourceKey=CB.DocKey) WHERE (TaxTrans.SourceType=''PV'' OR TaxTrans.SourceType=''OR'')';
  EXEC sp_executesql @sql
  SET @sql = 'UPDATE TaxTrans SET CurrencyCode=(SELECT CurrencyCode FROM JE WHERE TaxTrans.SourceKey=JE.DocKey) WHERE TaxTrans.SourceType=''JE''';
  EXEC sp_executesql @sql
  SET @sql = 'UPDATE TaxTrans SET CurrencyCode=(SELECT RegValue FROM Registry WHERE RegID=0x1F) Where CurrencyCode Is Null';
  EXEC sp_executesql @sql

  ALTER TABLE [dbo].[TaxTrans] ALTER COLUMN [CurrencyCode] [d_CurrencyCode] NOT NULL
end
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTrans_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[TaxTrans]  WITH CHECK ADD  CONSTRAINT [FK_TaxTrans_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[Currency] ([CurrencyCode])
GO

-- Add CurrencyRate column to TaxTrans table
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTrans]') and name = N'CurrencyRate')
begin
  ALTER TABLE [dbo].[TaxTrans] ADD [CurrencyRate] [d_CurrencyRate] NOT NULL DEFAULT 1

  DECLARE @sql nvarchar(300);
  SET @sql = 'UPDATE TaxTrans SET CurrencyRate=(CASE WHEN Tax=0 THEN 1 ELSE LocalTax/Tax END)';
  EXEC sp_executesql @sql
end
GO

/* Modification to GLMast Table */

-- Add MSICCode column to GLMast table
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLMAST]') and name = N'MSICCode')
  ALTER TABLE [dbo].[GLMAST] ADD [MSICCode] [varchar] (5) NULL
GO

/* Manage ARAP Bad Debt */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ARAPBadDebt]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ARAPBadDebt](
		[DocType] [d_DocType] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[JEDocKey] [bigint] NULL,
		[JEDocDate] [datetime] NULL,
		[BDCNDocKey] [bigint] NULL,
		[BDCNDocDate] [datetime] NULL,
		[BDWithBDRCNDocKey] [bigint] NULL,
		[BDWithBDRCNDocDate] [datetime] NULL,
		[BadDebtType] [int] NULL,
		CONSTRAINT [PK_ARAPBadDebt] PRIMARY KEY CLUSTERED
		(
			[DocType] ASC,
			[DocKey] ASC
		)
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ARAPBadDebtRecovery]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ARAPBadDebtRecovery](
		[DocType] [d_DocType] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[PaymentDocKey] [bigint] NOT NULL,
		[JEDocKey] [bigint] NULL,
		[JEDRDtlKey] [bigint] NULL,
		[JECRDtlKey] [bigint] NULL,
		[JEDocDate] [datetime] NULL,
		CONSTRAINT [PK_ARAPBadDebtRecovery] PRIMARY KEY CLUSTERED
		(
			[DocType] ASC,
			[DocKey] ASC,
			[PaymentDocKey] ASC
		),
		CONSTRAINT [FK_ARAPBadDebtRecovery_Doc] FOREIGN KEY 
		(
		[DocType], [DocKey]
		) REFERENCES [dbo].[ARAPBadDebt] (
		[DocType], [DocKey]
		)
	) ON [PRIMARY]
GO

/* GST Processor */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTProcessor]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[GSTProcessor](
		[GSTKey] [bigint] IDENTITY(1,1) NOT NULL,
		[FromDate] [datetime] NOT NULL,
		[ToDate] [datetime] NOT NULL,
		[Duration] [tinyint] NOT NULL,
		[Submitted] [d_Boolean] NOT NULL,
		[TaxDataReport] [varbinary](max) NULL,
		CONSTRAINT [PK_GSTProcessor] PRIMARY KEY CLUSTERED
		(
			[GSTKey] ASC
		)
	) ON [PRIMARY]
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* Support TotalExTax in Sales and Purchase master table */
INSERT @ListTable VALUES('QT', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SO', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DO', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CN', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DN', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DR', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XS', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'TotalExTax', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  set @sql = 'update ' + @tableName + ' set ' + @colName + '=(select sum(SubTotalExTax) from ' + @tableName + 'DTL A where A.DocKey=' + @tableName + '.DocKey and A.DtlType not in (''S'', ''P''))'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* Support TaxableAmt in Sales and Purchase master table */
INSERT @ListTable VALUES('QT', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SO', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DO', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IV', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CS', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CN', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DN', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DR', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XS', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('RQ', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PO', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GR', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PI', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CP', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PR', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GT', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XP', 'TaxableAmt', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'update ' + @tableName + ' set ' + @colName + '=(select sum(case when B.Inclusive=''T'' then A.TaxableAmt-A.Tax else A.TaxableAmt end) from ' + @tableName + 'DTL A left outer join TaxType B ON (A.TaxType=B.TaxType) where A.DocKey=' + @tableName + '.DocKey and A.DtlType<>''S'' AND A.Tax<>0 AND A.TaxType IS NOT NULL)'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.37' WHERE RegID = 2
GO
�IF NOT EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'd_DocNos' AND ss.name = N'dbo')
CREATE TYPE [dbo].[d_DocNos] FROM [nvarchar](40) NULL
GO

IF NOT EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'd_Reason' AND ss.name = N'dbo')
CREATE TYPE [dbo].[d_Reason] FROM [nvarchar](80) NULL
GO

/* To support 40 characters of OurInvoiceNo */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCN]') and name = N'OurInvoiceNo')
ALTER TABLE [ARCN]
ADD [OurInvoiceNo] [d_DocNos] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDN]') and name = N'OurInvoiceNo')
ALTER TABLE [ARDN]
ADD [OurInvoiceNo] [d_DocNos] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'OurInvoiceNo')
ALTER TABLE [CN]
ALTER COLUMN [OurInvoiceNo] [d_DocNos] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'OurInvoiceNo')
ALTER TABLE [DN]
ALTER COLUMN [OurInvoiceNo] [d_DocNos] NULL
GO

/* To support 40 characters of SupplierInvoiceNo */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCN]') and name = N'SupplierInvoiceNo')
ALTER TABLE [APCN]
ADD [SupplierInvoiceNo] [d_DocNos] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDN]') and name = N'SupplierInvoiceNo')
ALTER TABLE [APDN]
ADD [SupplierInvoiceNo] [d_DocNos] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PR]') and name = N'SupplierInvoiceNo')
ALTER TABLE [PR]
ADD [SupplierInvoiceNo] [d_DocNos] NULL
GO

/* To support 80 characters of Reason */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCN]') and name = N'Reason')
ALTER TABLE [ARCN]
ADD [Reason] [d_Reason] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDN]') and name = N'Reason')
ALTER TABLE [ARDN]
ADD [Reason] [d_Reason] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CN]') and name = N'Reason')
ALTER TABLE [CN]
ADD [Reason] [d_Reason] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DN]') and name = N'Reason')
ALTER TABLE [DN]
ADD [Reason] [d_Reason] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCN]') and name = N'Reason')
ALTER TABLE [APCN]
ADD [Reason] [d_Reason] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDN]') and name = N'Reason')
ALTER TABLE [APDN]
ADD [Reason] [d_Reason] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PR]') and name = N'Reason')
ALTER TABLE [PR]
ADD [Reason] [d_Reason] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'SelfBilledApprovalNo')
ALTER TABLE [Profile]
ADD [SelfBilledApprovalNo] [nvarchar] (20) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARInvoiceDTL]') and name = N'SourceDtlKey')
ALTER TABLE [ARInvoiceDTL]
ADD [SourceDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCNDTL]') and name = N'SourceDtlKey')
ALTER TABLE [ARCNDTL]
ADD [SourceDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDNDTL]') and name = N'SourceDtlKey')
ALTER TABLE [ARDNDTL]
ADD [SourceDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APInvoiceDTL]') and name = N'SourceDtlKey')
ALTER TABLE [APInvoiceDTL]
ADD [SourceDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCNDTL]') and name = N'SourceDtlKey')
ALTER TABLE [APCNDTL]
ADD [SourceDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDNDTL]') and name = N'SourceDtlKey')
ALTER TABLE [APDNDTL]
ADD [SourceDtlKey] [bigint] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.38' WHERE RegID = 2
GO
�DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* Support InclusiveTax in Sales, Purchase, Cash Book Entry, Journal Entry, A/R and A/P master table */
INSERT @ListTable VALUES('QT', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('SO', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('DO', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('IV', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('CS', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('CN', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('DN', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('DR', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('XS', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('RQ', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('PO', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('GR', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('PI', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('CP', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('PR', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('GT', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('XP', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('CB', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('JE', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('ARInvoice', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('ARCN', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('ARDN', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('APInvoice', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('APCN', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')
INSERT @ListTable VALUES('APDN', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLDTL]') and name = N'TaxType')
  ALTER TABLE [dbo].[GLDTL] ADD [TaxType] [d_TaxType] NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GLDTL_TaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[GLDTL]  WITH CHECK ADD  CONSTRAINT [FK_GLDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLDTL]') and name = N'Tax')
  ALTER TABLE [dbo].[GLDTL] ADD [Tax] [d_Money] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLDTL]') and name = N'HomeTax')
  ALTER TABLE [dbo].[GLDTL] ADD [HomeTax] [d_Money] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.39' WHERE RegID = 2
GO
�'
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* Support TotalExTax in CB and JE master table */
INSERT @ListTable VALUES('CB', 'TotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'TotalDRExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'TotalCRExTax', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  if @tableName = 'JE' AND @colName='TotalDRExTax'
    set @sql = 'update ' + @tableName + ' set ' + @colName + '=(case when InclusiveTax=''T'' then TotalDR-TaxDR else TotalDR end)'
  else if @tableName = 'JE' AND @colName='TotalCRExTax'
    set @sql = 'update ' + @tableName + ' set ' + @colName + '=(case when InclusiveTax=''T'' then TotalCR-TaxCR else TotalCR end)'
  else
	set @sql = 'update ' + @tableName + ' set ' + @colName + '=(select sum(case when B.InclusiveTax=''T'' then A.Amount-A.Tax else A.Amount end) from ' + @tableName + 'DTL A left outer join ' + @tableName + ' B ON (A.DocKey=B.DocKey) where A.DocKey=' + @tableName + '.DocKey)'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* Support LocalTotalExTax in CB and JE master table */
INSERT @ListTable VALUES('CB', 'LocalTotalExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalTotalDRExTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JE', 'LocalTotalCRExTax', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  if @tableName = 'JE' AND @colName='LocalTotalDRExTax'
    set @sql = 'update ' + @tableName + ' set ' + @colName + '=(case when InclusiveTax=''T'' then LocalTotalDR-LocalTaxDR else LocalTotalDR end)'
  else if @tableName = 'JE' AND @colName='LocalTotalCRExTax'
    set @sql = 'update ' + @tableName + ' set ' + @colName + '=(case when InclusiveTax=''T'' then LocalTotalCR-LocalTaxCR else LocalTotalCR end)'
  else
	set @sql = 'update ' + @tableName + ' set ' + @colName + '=(select sum(case when B.InclusiveTax=''T'' then A.LocalAmount-A.LocalTax else A.LocalAmount end) from ' + @tableName + 'DTL A left outer join ' + @tableName + ' B ON (A.DocKey=B.DocKey) where A.DocKey=' + @tableName + '.DocKey)'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* Support TaxableAmt in ARAP and CB master table */
INSERT @ListTable VALUES('ARInvoice', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARCN', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARDN', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APInvoice', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APCN', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APDN', 'TaxableAmt', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CB', 'TaxableAmt', '[d_Money] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'update ' + @tableName + ' set ' + @colName + '=(select sum(case when B.InclusiveTax=''T'' then A.TaxableAmt-A.Tax else A.TaxableAmt end) from ' + @tableName + 'DTL A left outer join ' + @tableName + ' B ON (A.DocKey=B.DocKey) where A.DocKey=' + @tableName + '.DocKey AND A.Tax<>0 AND A.TaxType IS NOT NULL)'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40))
/* Recalculate Taxable Amount for JE master table */
INSERT @ListTable VALUES('JE', 'TaxableDR')
INSERT @ListTable VALUES('JE', 'TaxableCR')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  if @colName = 'TaxableDR'
	set @sql = 'update ' + @tableName + ' set ' + @colName + '=(select COALESCE(sum(case when B.InclusiveTax=''T'' then COALESCE(A.TaxableDR, 0)-COALESCE(A.TaxDR, 0) else COALESCE(A.TaxableDR, 0) end), 0) from ' + @tableName + 'DTL A left outer join ' + @tableName + ' B ON (A.DocKey=B.DocKey) where A.DocKey=' + @tableName + '.DocKey AND A.TaxDR<>0 AND A.TaxType IS NOT NULL)'
  else if @colName = 'TaxableCR'
	set @sql = 'update ' + @tableName + ' set ' + @colName + '=(select COALESCE(sum(case when B.InclusiveTax=''T'' then COALESCE(A.TaxableCR, 0)-COALESCE(A.TaxCR, 0) else COALESCE(A.TaxableCR, 0) end), 0) from ' + @tableName + 'DTL A left outer join ' + @tableName + ' B ON (A.DocKey=B.DocKey) where A.DocKey=' + @tableName + '.DocKey AND A.TaxCR<>0 AND A.TaxType IS NOT NULL)'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO


DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40))
/* Recalculate Local Taxable Amount for JE master table */
INSERT @ListTable VALUES('JE', 'LocalTaxableDR')
INSERT @ListTable VALUES('JE', 'LocalTaxableCR')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  if @colName = 'LocalTaxableDR'
	set @sql = 'update ' + @tableName + ' set ' + @colName + '=' + @tableName + '.TaxableDR * ' + @tableName + '.CurrencyRate'
  else if @colName = 'LocalTaxableCR'
	set @sql = 'update ' + @tableName + ' set ' + @colName + '=' + @tableName + '.TaxableCR * ' + @tableName + '.CurrencyRate'

  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ReportDenyList]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
begin
  if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ReportDenyList]') and name = N'Attributes')
    ALTER TABLE [ReportDenyList] ADD [Attributes] [nvarchar] (max) NULL;
  EXEC sp_rename 'ReportDenyList', 'ReportAttributes';
end
GO

UPDATE REGISTRY SET RegValue = '1.0.9.40' WHERE RegID = 2
GO
�'/* 1. Support Bonus Point Adjustment table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BonusPointADJ]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[BonusPointADJ](
       [DocKey] [bigint] NOT NULL,
       [DocNo] [dbo].[d_DocNo] NOT NULL,
       [DocDate] [datetime] NOT NULL,
       [Description] [nvarchar](100) NULL,
       [Note] [ntext] NULL,
       [Remark1] [dbo].[d_Remark] NULL,
       [Remark2] [dbo].[d_Remark] NULL,
       [Remark3] [dbo].[d_Remark] NULL,
       [Remark4] [dbo].[d_Remark] NULL,
       [PrintCount] [smallint] NOT NULL,
       [Cancelled] [dbo].[d_Boolean] NOT NULL,
       [LastModified] [datetime] NOT NULL,
       [LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
       [CreatedTimeStamp] [datetime] NOT NULL,
       [CreatedUserID] [dbo].[d_UserID] NOT NULL,
       [ExternalLink] [ntext] NULL,
       [RefDocNo] [dbo].[d_DocNo] NULL,
       [LastUpdate] [int] NOT NULL,
       [CanSync] [dbo].[d_Boolean] NOT NULL,
       [Guid] [uniqueidentifier] NOT NULL,
       CONSTRAINT [PK_BonusPointADJ] PRIMARY KEY CLUSTERED
       (
             [DocKey] ASC
       )
) ON [PRIMARY]
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('BonusPointADJ') AND name = 'Guid')
ALTER TABLE [dbo].[BonusPointADJ] ADD DEFAULT (newid()) FOR [Guid]
GO

if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_BonusPointADJ_CreatedUserID')))
ALTER TABLE [dbo].[BonusPointADJ] WITH CHECK ADD CONSTRAINT [FK_BonusPointADJ_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO

ALTER TABLE [dbo].[BonusPointADJ] CHECK CONSTRAINT [FK_BonusPointADJ_CreatedUserID]
GO

if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_BonusPointADJ_LastModifiedUserID')))
ALTER TABLE [dbo].[BonusPointADJ] WITH CHECK ADD CONSTRAINT [FK_BonusPointADJ_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO

ALTER TABLE [dbo].[BonusPointADJ] CHECK CONSTRAINT [FK_BonusPointADJ_LastModifiedUserID]
GO

/* 2. Support Bonus Point Adjustment Detail table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BonusPointADJDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[BonusPointADJDTL](
       [DtlKey] [bigint] NOT NULL,
       [DocKey] [bigint] NOT NULL,
       [Seq] [int] NOT NULL,
       [MemberNo] [dbo].[d_MemberNo] NULL,
       [Point] [dbo].[d_MemberPoint] NULL,
       [PrintOut] [dbo].[d_Boolean] NOT NULL,
       [Guid] [uniqueidentifier] NOT NULL,
       CONSTRAINT [PK_BonusPointADJDTL] PRIMARY KEY CLUSTERED
       (
             [DtlKey] ASC
       )
) ON [PRIMARY]
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('BonusPointADJDTL') AND name = 'Guid')
ALTER TABLE [dbo].[BonusPointADJDTL] ADD DEFAULT (newid()) FOR [Guid]
GO

if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_BonusPointADJDTL_MemberNo')))
ALTER TABLE [dbo].[BonusPointADJDTL]  WITH CHECK ADD CONSTRAINT [FK_BonusPointADJDTL_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO

ALTER TABLE [dbo].[BonusPointADJDTL] CHECK CONSTRAINT [FK_BonusPointADJDTL_MemberNo]
GO

/* 3. Support Bonus Point Adjustment Trigger */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateBonusPointADJChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateBonusPointADJChangeCount]
GO

CREATE TRIGGER [dbo].[UpdateBonusPointADJChangeCount] ON [dbo].[BonusPointADJ]
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='BonusPointADJ'
SET NOCOUNT OFF
GO

if not exists (SELECT * FROM RemarkName WHERE DocType='PA')
INSERT INTO RemarkName VALUES ('PA','Remark 1','Remark 2','Remark 3','Remark 4','T','T','T','T')
GO

if not exists (SELECT * FROM ChangeCount WHERE TableName='BonusPointADJ')
INSERT INTO ChangeCount VALUES ('BonusPointADJ',0)
GO

if not exists (select * from [DocNoFormat] where Name='PA Default')
INSERT INTO [DocNoFormat] (Name, DocType, NextNumber, [Format], [Sample], IsDefault, OneMonthOneSet) VALUES ('PA Default', 'PA', 1, 'PA-<000000>', 'PA-000001', 'T', 'F')
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* 4. Support PointType in PointTrans table */
INSERT @ListTable VALUES('PointTrans', 'PointType', '[char](1) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'update ' + @tableName + ' set ' + @colName + '= (CASE WHEN Points<0 THEN ''R'' ELSE ''C'' END)'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* 5. Support GLTrxID in ARAP, JE, CB, UnrealizedGainLoss and GLDTL master table */
INSERT @ListTable VALUES('GLDTL', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARPayment', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARInvoice', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARCN', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARDN', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARDeposit', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARRefund', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APPayment', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APInvoice', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APCN', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APDN', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APDeposit', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('APRefund', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('ARAPContra', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('JE', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('UnrealizedGainLoss', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('CB', 'GLTrxID', '[bigint] NULL', 'A')
INSERT @ListTable VALUES('FCRevalue', 'GLTrxID', '[bigint] NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)
DECLARE @docType NVARCHAR(10)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* GLTrxID Trash */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GLTrxIDTrash]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[GLTrxIDTrash](
		[GLTrxID] [bigint] NOT NULL,
		[UserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [DateTime] NOT NULL DEFAULT GetDate(),
		[DocType] [d_DocType] NULL,
		[DocKey] [bigint] NULL,
		[SourceData] [varbinary](max) NULL,
		CONSTRAINT [PK_GLTrxIDTrash] PRIMARY KEY CLUSTERED
		(
			[GLTrxID] ASC
		)
	) ON [PRIMARY]
GO

/* The following DDL will add Foreign Key to GLTrxIDTrash table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GLTrxIDTrash_UserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[GLTrxIDTrash] DROP CONSTRAINT [FK_GLTrxIDTrash_UserID]
GO

ALTER TABLE [dbo].[GLTrxIDTrash] ADD CONSTRAINT [FK_GLTrxIDTrash_UserID] FOREIGN KEY 
	(
		[UserID]
	) REFERENCES [dbo].[Users] (
		[UserID]
	) ON UPDATE CASCADE
GO

/* Create some index to make update GLTrxID faster */
IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name = 'IX_CB_SourceKey' AND object_id = OBJECT_ID('CB'))
CREATE  INDEX [IX_CB_SourceKey] ON [dbo].[CB]([SourceKey]) ON [PRIMARY]
GO

IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name = 'IX_GLDTL_SourceKey' AND object_id = OBJECT_ID('GLDTL'))
CREATE  INDEX [IX_GLDTL_SourceKey] ON [dbo].[GLDTL]([SourceKey]) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.41' WHERE RegID = 2
GO
�
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('Users') AND name = 'UserType')
ALTER TABLE [dbo].[Users] ADD [UserType] [char](1) NOT NULL DEFAULT ('F')
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))
/* Support TaxBName, TaxBRNo in JE and CB master table */
INSERT @ListTable VALUES('JEDTL', 'TaxBRNo', '[nvarchar](25) NULL', 'A')
INSERT @ListTable VALUES('JEDTL', 'TaxBName', '[d_AccDescription] NULL', 'A')
INSERT @ListTable VALUES('CB', 'TaxBRNo', '[nvarchar](25) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Support PlugIn table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PlugIn]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[PlugIn] (
       [Guid] [uniqueidentifier] NOT NULL,
       [Seq] [int] NOT NULL,
       [Name] [nvarchar] (100) NOT NULL,
       [Version] [nvarchar] (20) NOT NULL,
       [Description] [nvarchar] (max) NULL,
       [WhatsNew] [nvarchar] (max) NULL,
       [ExtractFiles] [dbo].[d_Boolean] NOT NULL,
       [AssemblyFile] [nvarchar] (max) NULL,
       CONSTRAINT [PK_PlugIn] PRIMARY KEY CLUSTERED
       (
             [Guid] ASC
       )
) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PlugInFiles]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[PlugInFiles] (
       [Guid] [uniqueidentifier] NOT NULL,
       [FileName] [nvarchar] (260) NOT NULL,
       [CreationTimeUtc] [datetime] NULL,
       [LastAccessTimeUtc] [datetime] NULL,
       [LastWriteTimeUtc] [datetime] NULL,
       [ExecuteAfterExtracted] [d_Boolean] NOT NULL,
       [MsiGuid] [uniqueidentifier] NULL,
       [FileImage] [varbinary] (max) NULL,
       CONSTRAINT [PK_PlugInFiles] PRIMARY KEY CLUSTERED
       (
             [Guid] ASC,
			 [FileName] ASC
       )
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PlugInFiles_Guid]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PlugInFiles] DROP CONSTRAINT [FK_PlugInFiles_Guid]
GO

ALTER TABLE [dbo].[PlugInFiles] WITH CHECK ADD CONSTRAINT [FK_PlugInFiles_Guid] 
FOREIGN KEY([Guid])
REFERENCES [dbo].[PlugIn] ([Guid])
GO

UPDATE REGISTRY SET RegValue = '1.0.9.42' WHERE RegID = 2
GO/* Add GSTJEDocKey column in DO table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('DO') AND name = 'GSTJEDocKey')
ALTER TABLE [dbo].[DO] ADD [GSTJEDocKey] [bigint] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.43' WHERE RegID = 2
GO/* Add BarCode column in Package table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('Package') AND name = 'BarCode')
ALTER TABLE [dbo].[Package] ADD [BarCode] [d_BarCode] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.44' WHERE RegID = 2
GO�/* Add Photo column in Member table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('Member') AND name = 'Photo')
ALTER TABLE [dbo].[Member] ADD [Photo] [image] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ChangeMemberNo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_ChangeMemberNo]
GO

-- bsp_ChangeMemberNo
CREATE PROCEDURE [dbo].[bsp_ChangeMemberNo](@OldMemberNo d_MemberNo, @NewMemberNo d_MemberNo, @ID BIGINT OUTPUT) AS 

IF @OldMemberNo = @NewMemberNo
    RETURN
   
BEGIN TRANSACTION

--Add for Sync part 1
DECLARE @IsMergeCode VARCHAR(1), @TransactionID BIGINT, @LastTableID BIGINT, @StartTime DATETIME
SELECT @TransactionID = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
SELECT @LastTableID = IDENT_CURRENT('ChangeLog')
SELECT @StartTime = GetDate()

SET @IsMergeCode = 'T'

IF NOT EXISTS (select * from Member where MemberNo = @NewMemberNo)
BEGIN
  --Create New Record For Member
  INSERT INTO Member([MemberNo], [MemberType], [ID], [Name], [Address1], [Address2], [Address3], [Address4], [PostCode], [AreaCode],
  [Individual], [Race], [DOB], [DebtorCode], [CompanyName], [Department], [Title], [MobilePhone], [DirectPhone], [DirectFax],
  [EmailAddress], [IMAddress], [Note], [OpeningPoints], [Gender], [RegisterDate], [ExpiryDate], [IsActive], [CreatedTime], [CreatedUserID],
  [LastModified], [LastModifiedUserID], [Photo]) 
  SELECT @NewMemberNo, [MemberType], [ID], [Name], [Address1], [Address2], [Address3], [Address4], [PostCode], [AreaCode],
  [Individual], [Race], [DOB], [DebtorCode], [CompanyName], [Department], [Title], [MobilePhone], [DirectPhone], [DirectFax],
  [EmailAddress], [IMAddress], [Note], [OpeningPoints], [Gender], [RegisterDate], [ExpiryDate], [IsActive], [CreatedTime], [CreatedUserID],
  [LastModified], [LastModifiedUserID], [Photo]
  FROM Member WHERE MemberNo = @OldMemberNo

  IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

  DECLARE @sql NVARCHAR(200)
  DECLARE @dec NVARCHAR(100)
  DECLARE @colName  NVARCHAR(50)

  DECLARE @cur_item cursor
  SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT FieldName From UDF where TableName = 'Member'

  OPEN @cur_Item
  FETCH NEXT FROM @cur_Item INTO @colName

  WHILE @@FETCH_STATUS = 0
  BEGIN
	set @sql = 'update Member set [UDF_' + @colName + '] = (select [UDF_' + @colName + '] from Member where MemberNo = @OldMemberNo ) WHERE MemberNo = @NewMemberNo'

	set @dec = '@NewMemberNo d_MemberNo, @OldMemberNo d_MemberNo'

	Exec sp_executesql @sql, @dec, @NewMemberNo, @OldMemberNo

	FETCH NEXT FROM @cur_Item INTO @colName
  END

  CLOSE @cur_Item
  DEALLOCATE @cur_Item

  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    RETURN
  END

  SET @IsMergeCode = 'F'
END

IF @IsMergeCode = 'T'
  BEGIN
  	set @sql = 'Update Member Set OpeningPoints = ISNULL(OpeningPoints, 0) + ISNULL((Select OpeningPoints From Member Where MemberNo = @OldMemberNo), 0) From Member Where MemberNo = @NewMemberNo'
	set @dec = '@NewMemberNo d_MemberNo, @OldMemberNo d_MemberNo'

	Exec sp_executesql @sql, @dec, @NewMemberNo, @OldMemberNo
	IF @@ERROR <> 0 
    BEGIN 
      ROLLBACK TRANSACTION 
      RETURN
    END
  END

--Update related tables
DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

INSERT @ListTable VALUES('IV', 'MemberNo')
INSERT @ListTable VALUES('CS', 'MemberNo')
INSERT @ListTable VALUES('BonusPointRedemption', 'MemberNo')
INSERT @ListTable VALUES('CN', 'MemberNo')
INSERT @ListTable VALUES('DN', 'MemberNo')
INSERT @ListTable VALUES('IPHIST', 'MemberNo')
INSERT @ListTable VALUES('PointTrans', 'MemberNo')
INSERT @ListTable VALUES('PromotionMember', 'MemberNo')
INSERT @ListTable VALUES('Pos', 'MemberNo')
INSERT @ListTable VALUES('BonusPointADJDTL', 'MemberNo')

DECLARE @tableName  NVARCHAR(50)
set @dec = '@NewMemberNo d_MemberNo, @OldMemberNo d_MemberNo'

SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  IF @IsMergeCode = 'T' AND @tableName = 'PromotionMember'
  BEGIN
	set @sql = 'Delete From [' + @tableName + '] Where PromotionKey In (Select PromotionKey From PromotionMember Where [' + @colName + '] = @OldMemberNo) AND [' + @colName + '] = @NewMemberNo'
	Exec sp_executesql @sql, @dec, @NewMemberNo, @OldMemberNo
  END

  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewMemberNo WHERE [' + @colName + '] = @OldMemberNo'

  Exec sp_executesql @sql, @dec, @NewMemberNo, @OldMemberNo
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

-- Execute stored procedure created by plug ins
DECLARE @spName  NVARCHAR(50)
DECLARE @cur_sp cursor
SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeMemberNo_%'

OPEN @cur_sp
FETCH NEXT FROM @cur_sp INTO @spName

WHILE @@FETCH_STATUS = 0
BEGIN
  DECLARE @return_status int
  EXEC @return_status = @spName @OldMemberNo, @NewMemberNo
  IF (@@ERROR <> 0 OR @return_status = 1)
  BEGIN
	ROLLBACK TRANSACTION
	CLOSE @cur_sp
	DEALLOCATE @cur_sp
	RETURN
  END

  FETCH NEXT FROM @cur_sp INTO @spName
END

CLOSE @cur_sp
DEALLOCATE @cur_sp

-- Finally, delete @OldMemberNo
DELETE FROM Member WHERE MemberNo = @OldMemberNo
IF @@ERROR <> 0 
  BEGIN 
    ROLLBACK TRANSACTION
    RETURN 
  END

--Add for Sync part 2
DECLARE @EndTime DATETIME, @EndLastTableID BIGINT
SET @EndTime = GETDATE()
SET @EndLastTableID = IDENT_CURRENT('ChangeLog')
IF EXISTS(SELECT RegValue FROM Registry WHERE RegID = 65000 AND RegValue = 'True') 
	BEGIN
	DELETE FROM ChangeLog WHERE ChangeTime >= @StartTime AND ChangeTime <= @EndTime AND ID > @LastTableID AND ID <= @EndLastTableID AND TransactionID = @TransactionID AND SyncKey IS NULL
	IF @@ERROR <> 0
		BEGIN
		ROLLBACK TRANSACTION
		RETURN
		END
	INSERT INTO ChangeLog (TableName, Key1, NewKey1, ChangeType, ChangeTime, TransactionID) VALUES('Member', @OldMemberNo, @NewMemberNo, 'K', GETDATE(), @TransactionID)
	IF @@ERROR <> 0
		BEGIN
		ROLLBACK TRANSACTION
		RETURN
		END
	SELECT @ID = @@IDENTITY
	IF @@ERROR <> 0
		BEGIN
		ROLLBACK TRANSACTION
		RETURN
		END
	END

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '1.0.9.45' WHERE RegID = 2
GO�	/* Add TaxType column in GLMast table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GLMast') AND name = 'InputTaxType')
ALTER TABLE [dbo].[GLMast] ADD [InputTaxType] [d_TaxType] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GLMast') AND name = 'OutputTaxType')
ALTER TABLE [dbo].[GLMast] ADD [OutputTaxType] [d_TaxType] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GSTProcessor') AND name = 'JEDocKey')
ALTER TABLE [dbo].[GSTProcessor] ADD [JEDocKey] [bigint] NULL
GO

/* Create GST AccNo Setting table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTSetting]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[GSTSetting] (
       [GSTName] [nvarchar] (100) NOT NULL,
       [GSTValue] [nvarchar] (300) NULL,
       CONSTRAINT [PK_GSTSetting] PRIMARY KEY CLUSTERED
       (
             [GSTName] ASC
       )
) ON [PRIMARY]
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APPayment') AND name = 'ReferISJEDocKey')
ALTER TABLE [dbo].[APPayment] ADD [ReferISJEDocKey] [bigint] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APPayment') AND name = 'ReferISJEDocNo')
ALTER TABLE [dbo].[APPayment] ADD [ReferISJEDocNo] [d_DocNo] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APPayment') AND name = 'ReferISJEIsNonTaxableSupply')
ALTER TABLE [dbo].[APPayment] ADD [ReferISJEIsNonTaxableSupply] [d_Boolean] NULL
GO

/* Create Cash Book Imported Goods Detail table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CBIGDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[CBIGDTL] (
	   [DtlKey] [bigint] NOT NULL,
	   [DocKey] [bigint] NOT NULL,
       [CBDtlKey] [bigint] NOT NULL,
       [SourceDtlKey] [bigint] NOT NULL,
	   [TaxableAmt] [d_Money] NULL,
	   [TaxType] [d_TaxType] NULL,
	   [Tax] [d_Money] NULL,
	   [LocalTax] [d_Money] NULL,
	   [TaxPermitNo] [nvarchar](20) NULL,
	   [Seq] [int] NOT NULL,
       CONSTRAINT [PK_CBIGDTL] PRIMARY KEY CLUSTERED
       (
             [DtlKey] ASC
       )
) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UC_CBIGDTL_SourceDtlKey]') and OBJECTPROPERTY(id, N'IsUniqueCnst') = 1)
ALTER TABLE CBIGDTL ADD CONSTRAINT UC_CBIGDTL_SourceDtlKey UNIQUE (SourceDtlKey)

UPDATE REGISTRY SET RegValue = '1.0.9.46' WHERE RegID = 2
GO�9if EXISTS (SELECT * from dbo.sysobjects WHERE id = object_id(N'[dbo].[GiftRule]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[GiftRule]
GO

CREATE TABLE [dbo].[GiftRule] (
    [DocKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED, 
    [DocNo] [d_DocNo] NOT NULL,
	[DocDate][DateTime] NOT NULL,
	[Name] [nvarchar] (100) NOT NULL,
	[ICNo]  [nvarchar] (25) NULL,
	[Address1] [d_Address] NULL,
	[Address2] [d_Address] NULL,
	[Address3] [d_Address] NULL,
	[Address4] [d_Address] NULL,
	[Phone] [d_Phone] NULL,
	[EmailAddress] [nvarchar] (80) NULL,
	[GiftDescription][nvarchar] (100) NULL,
	[GiftTotalAmount][d_money] NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[JEDocKey][bigint] NULL,
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[GiftRule] ADD 
	CONSTRAINT [IX_Gift_DocNo] UNIQUE  NONCLUSTERED 
	(
		[DocNo]
	)  ON [PRIMARY]

GO

if NOT EXISTS (SELECT * FROM [DocNoFormat] WHERE Name='GI Default')
INSERT INTO [DocNoFormat] (Name, DocType, NextNumber, [Format], [Sample], IsDefault, OneMonthOneSet) VALUES ('GI Default', 'GI', 1, 'GI-<000000>', 'GI-000001', 'T', 'F')

/* Create GST DO Reverse JE table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ReverseGSTDO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[ReverseGSTDO] (
	   [DocKey] [bigint] NOT NULL,
       [DocType] [d_DocType] NOT NULL,
       [JEDocKey] [bigint] NOT NULL,
       CONSTRAINT [PK_ReverseGSTDO] PRIMARY KEY CLUSTERED
       (
             [DocKey] ASC,
			 [DocType] ASC
       )
) ON [PRIMARY]
GO

/* Add GSTJEDocKey column in ARPayment table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ARPayment') AND name = 'GSTJEDocKey')
ALTER TABLE [dbo].[ARPayment] ADD [GSTJEDocKey] [bigint] NULL
GO

/* Add GSTJEDocKey column in ARCN table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ARCN') AND name = 'GSTJEDocKey')
ALTER TABLE [dbo].[ARCN] ADD [GSTJEDocKey] [bigint] NULL
GO

/* Add GSTJEDocKey column in ARDeposit table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ARDeposit') AND name = 'GSTJEDocKey')
ALTER TABLE [dbo].[ARDeposit] ADD [GSTJEDocKey] [bigint] NULL
GO

/* Create GST Payment Reverse JE table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ReverseGSTPayment]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[ReverseGSTPayment] (
	   [DocKey] [bigint] NOT NULL,
	   [DocType] [d_DocType] NOT NULL,
	   [AppliedDocKey] [bigint] NOT NULL,
       [AppliedDocType] [d_DocType] NOT NULL,
       [JEDocKey] [bigint] NOT NULL,
       CONSTRAINT [PK_ReverseGSTPayment] PRIMARY KEY CLUSTERED
       (
             [DocKey] ASC,
			 [DocType] ASC,
			 [AppliedDocKey] ASC,
			 [AppliedDocType] ASC
       )
) ON [PRIMARY]
GO

/* Add TaxBName column in CB table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CB') AND name = 'TaxBName')
ALTER TABLE [dbo].[CB] ADD [TaxBName] [d_AccDescription] NULL
GO

/* Add TaxRefNo column in JEDTL table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('JEDTL') AND name = 'TaxRefNo')
ALTER TABLE [dbo].[JEDTL] ADD [TaxRefNo] [nvarchar](20) NULL
GO

/* Add DtlType column in CBIGDTL table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'DtlType')
ALTER TABLE [dbo].[CBIGDTL] ADD [DtlType] [d_DtlType] NULL
GO

/* rename SourceDtlKey column in CBIGDTL table*/
/* Add SourceKey column in CBIGDTL table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceKey')
ALTER TABLE [dbo].[CBIGDTL] ADD [SourceKey] [bigint] NULL
GO

/* Update SourceKey value in CBIGDTL table*/
DECLARE @sql NVARCHAR(300)
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceDtlKey')
BEGIN
 set @sql = 'UPDATE CBIGDTL SET SourceKey = SourceDtlKey'
 Exec sp_executesql @sql
END
GO

/* modify SourceKey column in CBIGDTL table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceKey')
ALTER TABLE [dbo].[CBIGDTL] ALTER COLUMN [SourceKey] [bigint] NOT NULL
GO

/* Drop SourceDtlKey constraint in CBIGDTL table*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UC_CBIGDTL_SourceDtlKey]') and OBJECTPROPERTY(id, N'IsUniqueCnst') = 1)
ALTER TABLE [dbo].[CBIGDTL] DROP CONSTRAINT [UC_CBIGDTL_SourceDtlKey]
GO

/* Drop SourceDtlKey column in CBIGDTL table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceDtlKey')
ALTER TABLE [dbo].[CBIGDTL] DROP COLUMN [SourceDtlKey]
GO


UPDATE CBIGDTL SET DtlType = 'N' Where DtlType IS NULL
GO

/* modify unique constraint in CBIGDTL table*/
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UC_CBIGDTL_SourceKey_DtlType]') and OBJECTPROPERTY(id, N'IsUniqueCnst') = 1)
ALTER TABLE CBIGDTL ADD CONSTRAINT UC_CBIGDTL_SourceKey_DtlType UNIQUE (SourceKey, DtlType)
GO

/* Add GSTStatusVerifiedDate column in Debtor table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('Debtor') AND name = 'GSTStatusVerifiedDate')
ALTER TABLE [dbo].[Debtor] ADD [GSTStatusVerifiedDate] [datetime] NULL
GO

/* Add GSTStatusVerifiedDate column in Creditor table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('Creditor') AND name = 'GSTStatusVerifiedDate')
ALTER TABLE [dbo].[Creditor] ADD [GSTStatusVerifiedDate] [datetime] NULL
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), RefColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support TaxRate in Sales, Purchase, Cash Book Entry, Journal Entry, A/R and A/P master table */
INSERT @ListTable VALUES('QT', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('QT', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('QT', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('QTDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('SO', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('SO', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('SO', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('SODTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DO', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DO', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DO', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DODTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('IV', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('IV', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('IV', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('IVDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CS', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CS', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CS', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CSDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CN', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CN', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CN', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CNDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DN', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DN', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DN', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DNDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DR', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DR', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DR', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DRDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('XS', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('XS', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('XS', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('XSDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('RQ', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('RQ', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('RQ', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('RQDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PO', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PO', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PO', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PODTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('GR', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('GR', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('GR', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('GRDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PI', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PI', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PI', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PIDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CP', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CP', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CP', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CPDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PR', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PR', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PR', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('PRDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('GT', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('GT', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('GT', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('GTDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('XP', 'Footer1TaxRate', 'Footer1TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('XP', 'Footer2TaxRate', 'Footer2TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('XP', 'Footer3TaxRate', 'Footer3TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('XPDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CBDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('CBIGDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('JEDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('ARInvoiceDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('ARCNDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('ARDNDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('APInvoiceDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('APCNDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('APDNDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('DRProcessing', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('TaxTrans', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('GLDTL', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('IPHIST', 'TaxRate', 'TaxType', '[d_Percent] NULL')
INSERT @ListTable VALUES('ColumnLock', 'TaxRate', '', '[d_Boolean] NOT NULL DEFAULT ''T''')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @refColName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, RefColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @refColName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  if @refColName != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set [' + @colName + ']=(Select TaxRate From TaxType Where TaxType.TaxType=[' + @tableName + '].[' + @refColName + ']) Where [' + @colName + '] is null'
	  Exec sp_executesql @sql
  END

  if @tableName = 'TaxTrans'
  BEGIN
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [d_Percent] NOT NULL'
	Exec sp_executesql @sql
  END

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @refColName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add IsZeroRate column in TaxType table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('TaxType') AND name = 'IsZeroRate')
ALTER TABLE [dbo].[TaxType] ADD [IsZeroRate] [d_Boolean] NOT NULL DEFAULT 'F'
GO

Update TaxType Set IsZeroRate = 'T' Where (ISNULL(IRASTaxCode, '') <> '' AND COALESCE(TaxRate, 0) = 0) OR TaxType IN ('IM-GDS', 'IM-SVC')
GO

UPDATE REGISTRY SET RegValue = '1.0.9.47' WHERE RegID = 2
GO�if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferATMSJEDocKey')
ALTER TABLE [dbo].[APInvoice] ADD [ReferATMSJEDocKey] [bigint] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferATMSJEDocNo')
ALTER TABLE [dbo].[APInvoice] ADD [ReferATMSJEDocNo] [d_DocNo] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferATMSJEIsNonTaxableSupply')
ALTER TABLE [dbo].[APInvoice] ADD [ReferATMSJEIsNonTaxableSupply] [d_Boolean] NULL
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support IsSecurityDeposit in A/R Deposit table */
INSERT @ListTable VALUES('ARDeposit', 'IsSecurityDeposit', '[d_Boolean] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + ']=''F'' Where [' + @colName + '] is null'
  Exec sp_executesql @sql

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [d_Boolean] NOT NULL'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GSTProcessor') AND name = 'CarryForwardRefundGST')
ALTER TABLE [dbo].[GSTProcessor] ADD [CarryForwardRefundGST] [d_Boolean] NULL
GO

/* Remove DtlType column in CBIGDTL table*/
DECLARE @sql NVARCHAR(300)
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'DtlType')
BEGIN
 set @sql = 'DELETE CBIGDTL Where DtlType <> ''N'''
 Exec sp_executesql @sql
END
GO

/* modify unique constraint in CBIGDTL table*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UC_CBIGDTL_SourceKey_DtlType]') and OBJECTPROPERTY(id, N'IsUniqueCnst') = 1)
ALTER TABLE [dbo].[CBIGDTL] DROP CONSTRAINT [UC_CBIGDTL_SourceKey_DtlType]
GO

if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'DtlType')
ALTER TABLE [dbo].[CBIGDTL] DROP COLUMN [DtlType]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UC_CBIGDTL_SourceKey]') and OBJECTPROPERTY(id, N'IsUniqueCnst') = 1)
ALTER TABLE CBIGDTL ADD CONSTRAINT UC_CBIGDTL_SourceKey UNIQUE (SourceKey)
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support CalculationMethod in ARAP Invoice, CN, DN table */
INSERT @ListTable VALUES('ARInvoice', 'CalculationMethod', '[int] NULL')
INSERT @ListTable VALUES('ARDN', 'CalculationMethod', '[int] NULL')
INSERT @ListTable VALUES('ARCN', 'CalculationMethod', '[int] NULL')
INSERT @ListTable VALUES('APInvoice', 'CalculationMethod', '[int] NULL')
INSERT @ListTable VALUES('APDN', 'CalculationMethod', '[int] NULL')
INSERT @ListTable VALUES('APCN', 'CalculationMethod', '[int] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = 0 Where [' + @colName + '] is null'
  Exec sp_executesql @sql

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [int] NOT NULL'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.48' WHERE RegID = 2
GO�	/* Support InclusiveTax in Creditor table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'InclusiveTax')
  ALTER TABLE [dbo].[Creditor] 
    ADD [InclusiveTax] [d_Boolean] NOT NULL DEFAULT 'F'
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support TaxDate in Sales, Purchase, ARAP, CB and JE table */
INSERT @ListTable VALUES('IV', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('CS', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('CN', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('DN', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('PI', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('CP', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('PR', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('ARInvoice', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('ARCN', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('ARDN', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('APInvoice', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('APCN', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('APDN', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('CB', 'TaxDate', '[datetime] NULL')
INSERT @ListTable VALUES('JE', 'TaxDate', '[datetime] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GSTProcessor') AND name = 'Amendment')
ALTER TABLE [dbo].[GSTProcessor] ADD [Amendment] [d_Boolean] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.49' WHERE RegID = 2
GO1/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

/* Support IsRoundAdj, RoundAdj and FinalTotal to IV and CS */
INSERT @ListTable VALUES('PI', 'IsRoundAdj', '[d_Boolean] NOT NULL DEFAULT ''F''')
INSERT @ListTable VALUES('PI', 'RoundAdj', '[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'FinalTotal', '[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'IsRoundAdj', '[d_Boolean] NOT NULL DEFAULT ''F''')
INSERT @ListTable VALUES('CP', 'RoundAdj', '[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'FinalTotal', '[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'IsRoundAdj', '[d_Boolean] NOT NULL DEFAULT ''F''')
INSERT @ListTable VALUES('CN', 'RoundAdj', '[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'FinalTotal', '[d_Money] NULL')
INSERT @ListTable VALUES('SO', 'IsRoundAdj', '[d_Boolean] NOT NULL DEFAULT ''F''')
INSERT @ListTable VALUES('SO', 'RoundAdj', '[d_Money] NULL')
INSERT @ListTable VALUES('SO', 'FinalTotal', '[d_Money] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
	Exec sp_executesql @sql
	IF @@ERROR <> 0
	BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE PI SET RoundAdj = COALESCE (RoundAdj, 0), FinalTotal = NetTotal + COALESCE (RoundAdj, 0)
GO

UPDATE CP SET RoundAdj = COALESCE (RoundAdj, 0), FinalTotal = NetTotal + COALESCE (RoundAdj, 0)
GO

UPDATE CN SET RoundAdj = COALESCE (RoundAdj, 0), FinalTotal = NetTotal + COALESCE (RoundAdj, 0)
GO

UPDATE SO SET RoundAdj = COALESCE (RoundAdj, 0), FinalTotal = NetTotal + COALESCE (RoundAdj, 0)
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GSTProcessor') AND name = 'AuthorizerName')
ALTER TABLE [dbo].[GSTProcessor] ADD [AuthorizerName] [nvarchar] (200) NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GSTProcessor') AND name = 'NewICNo')
ALTER TABLE [dbo].[GSTProcessor] ADD [NewICNo] [nvarchar] (20) NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GSTProcessor') AND name = 'OldICNo')
ALTER TABLE [dbo].[GSTProcessor] ADD [OldICNo] [nvarchar] (20) NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GSTProcessor') AND name = 'PassportNo')
ALTER TABLE [dbo].[GSTProcessor] ADD [PassportNo] [nvarchar] (20) NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GSTProcessor') AND name = 'Nationality')
ALTER TABLE [dbo].[GSTProcessor] ADD [Nationality] [nvarchar] (40) NULL
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support BankChargeTaxType and BankChargeTaxRate to Payment Method, A/R and A/P Payment and Refund, Cash Book Entry */
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxBRNo', '[nvarchar](25) NULL', 'A')
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxBRName', '[d_AccDescription] NULL', 'A')
INSERT @ListTable VALUES('ARPaymentDTL', 'BankChargeTaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('ARPaymentDTL', 'BankChargeTaxRate', '[d_Percent] NULL', 'A')
INSERT @ListTable VALUES('ARPaymentDTL', 'BankChargeTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARPaymentDTL', 'BankChargeTaxRefNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('ARRefundDTL', 'BankChargeTaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDTL', 'BankChargeTaxRate', '[d_Percent] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDTL', 'BankChargeTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDTL', 'BankChargeTaxRefNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('ARDepositDTL', 'BankChargeTaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('ARDepositDTL', 'BankChargeTaxRate', '[d_Percent] NULL', 'A')
INSERT @ListTable VALUES('ARDepositDTL', 'BankChargeTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARDepositDTL', 'BankChargeTaxRefNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('ARRefundDepositDTL', 'BankChargeTaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDepositDTL', 'BankChargeTaxRate', '[d_Percent] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDepositDTL', 'BankChargeTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARRefundDepositDTL', 'BankChargeTaxRefNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('APPaymentDTL', 'BankChargeTaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('APPaymentDTL', 'BankChargeTaxRate', '[d_Percent] NULL', 'A')
INSERT @ListTable VALUES('APPaymentDTL', 'BankChargeTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APPaymentDTL', 'BankChargeTaxRefNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('APRefundDTL', 'BankChargeTaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('APRefundDTL', 'BankChargeTaxRate', '[d_Percent] NULL', 'A')
INSERT @ListTable VALUES('APRefundDTL', 'BankChargeTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APRefundDTL', 'BankChargeTaxRefNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('APDepositDTL', 'BankChargeTaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('APDepositDTL', 'BankChargeTaxRate', '[d_Percent] NULL', 'A')
INSERT @ListTable VALUES('APDepositDTL', 'BankChargeTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APDepositDTL', 'BankChargeTaxRefNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('APRefundDepositDTL', 'BankChargeTaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('APRefundDepositDTL', 'BankChargeTaxRate', '[d_Percent] NULL', 'A')
INSERT @ListTable VALUES('APRefundDepositDTL', 'BankChargeTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APRefundDepositDTL', 'BankChargeTaxRefNo', '[nvarchar](20) NULL', 'A')
INSERT @ListTable VALUES('CBPaymentDTL', 'BankChargeTaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('CBPaymentDTL', 'BankChargeTaxRate', '[d_Percent] NULL', 'A')
INSERT @ListTable VALUES('CBPaymentDTL', 'BankChargeTax', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CBPaymentDTL', 'BankChargeTaxRefNo', '[nvarchar](20) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add Foreign Key to all Payment Method, ARAP And CB BankChargeTaxType */

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PaymentMethod_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PaymentMethod] DROP CONSTRAINT [FK_PaymentMethod_BankChargeTaxType]
GO

ALTER TABLE [dbo].[PaymentMethod] WITH CHECK ADD CONSTRAINT [FK_PaymentMethod_BankChargeTaxType] 
FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARPaymentDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARPaymentDTL] DROP CONSTRAINT [FK_ARPaymentDTL_BankChargeTaxType]
GO

ALTER TABLE [dbo].[ARPaymentDTL] WITH CHECK ADD CONSTRAINT [FK_ARPaymentDTL_BankChargeTaxType] 
FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARRefundDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundDTL] DROP CONSTRAINT [FK_ARRefundDTL_BankChargeTaxType]
GO

ALTER TABLE [dbo].[ARRefundDTL] WITH CHECK ADD CONSTRAINT [FK_ARRefundDTL_BankChargeTaxType] 
FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDepositDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDepositDTL] DROP CONSTRAINT [FK_ARDepositDTL_BankChargeTaxType]
GO

ALTER TABLE [dbo].[ARDepositDTL] WITH CHECK ADD CONSTRAINT [FK_ARDepositDTL_BankChargeTaxType] 
FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARRefundDepositDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundDepositDTL] DROP CONSTRAINT [FK_ARRefundDepositDTL_BankChargeTaxType]
GO

ALTER TABLE [dbo].[ARRefundDepositDTL] WITH CHECK ADD CONSTRAINT [FK_ARRefundDepositDTL_BankChargeTaxType] 
FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APPaymentDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APPaymentDTL] DROP CONSTRAINT [FK_APPaymentDTL_BankChargeTaxType]
GO

ALTER TABLE [dbo].[APPaymentDTL] WITH CHECK ADD CONSTRAINT [FK_APPaymentDTL_BankChargeTaxType] 
FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APRefundDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundDTL] DROP CONSTRAINT [FK_APRefundDTL_BankChargeTaxType]
GO

ALTER TABLE [dbo].[APRefundDTL] WITH CHECK ADD CONSTRAINT [FK_APRefundDTL_BankChargeTaxType] 
FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APDepositDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDepositDTL] DROP CONSTRAINT [FK_APDepositDTL_BankChargeTaxType]
GO

ALTER TABLE [dbo].[APDepositDTL] WITH CHECK ADD CONSTRAINT [FK_APDepositDTL_BankChargeTaxType] 
FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APRefundDepositDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundDepositDTL] DROP CONSTRAINT [FK_APRefundDepositDTL_BankChargeTaxType]
GO

ALTER TABLE [dbo].[APRefundDepositDTL] WITH CHECK ADD CONSTRAINT [FK_APRefundDepositDTL_BankChargeTaxType] 
FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CBPaymentDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CBPaymentDTL] DROP CONSTRAINT [FK_CBPaymentDTL_BankChargeTaxType]
GO

ALTER TABLE [dbo].[CBPaymentDTL] WITH CHECK ADD CONSTRAINT [FK_CBPaymentDTL_BankChargeTaxType] 
FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

UPDATE REGISTRY SET RegValue = '1.0.9.50' WHERE RegID = 2
GO�/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

/* Support IsRoundAdj, RoundAdj and FinalTotal to IV, CS and PR */
INSERT @ListTable VALUES('PR', 'IsRoundAdj', '[d_Boolean] NOT NULL DEFAULT ''F''')
INSERT @ListTable VALUES('PR', 'RoundAdj', '[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'FinalTotal', '[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'IsRoundAdj', '[d_Boolean] NOT NULL DEFAULT ''F''')
INSERT @ListTable VALUES('CS', 'IsRoundAdj', '[d_Boolean] NOT NULL DEFAULT ''F''')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
	Exec sp_executesql @sql
	IF @@ERROR <> 0
	BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE PR SET RoundAdj = COALESCE (RoundAdj, 0), FinalTotal = NetTotal + COALESCE (RoundAdj, 0)
GO

UPDATE IV SET IsRoundAdj = 'T' Where COALESCE (RoundAdj, 0) <> 0
GO

UPDATE CS SET IsRoundAdj = 'T' Where COALESCE (RoundAdj, 0) <> 0
GO

UPDATE REGISTRY SET RegValue = '1.0.9.51' WHERE RegID = 2
GO/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support SelfBilledApprovalNo in Creditor, PI & CP table */
/* Remove SelfBilledApprovalNo from profile table */
INSERT @ListTable VALUES('Creditor', 'SelfBilledApprovalNo', '[nvarchar] (20) NULL', 'A')
INSERT @ListTable VALUES('PI', 'SelfBilledApprovalNo', '[nvarchar] (20) NULL', 'A')
INSERT @ListTable VALUES('CP', 'SelfBilledApprovalNo', '[nvarchar] (20) NULL', 'A')
INSERT @ListTable VALUES('Profile', 'SelfBilledApprovalNo', '[nvarchar] (20) NULL', 'D')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)
DECLARE @docType NVARCHAR(10)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add TaxBRNo column in CBDTL table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBDTL') AND name = 'TaxBRNo')
ALTER TABLE [dbo].[CBDTL] ADD [TaxBRNo] [nvarchar](25) NULL
GO

/* Add TaxBName column in CBDTL table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBDTL') AND name = 'TaxBName')
ALTER TABLE [dbo].[CBDTL] ADD [TaxBName] [d_AccDescription] NULL
GO

/* Update TaxBRNo and TaxBName value in CBDTL table*/
DECLARE @sql NVARCHAR(300)
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CB') AND name = 'TaxBRNo')
BEGIN
 set @sql = 'UPDATE CBDTL SET TaxBRNo = (Select CB.TaxBRNo From CB Where CB.DocKey=CBDTL.DocKey)'
 Exec sp_executesql @sql
END
GO

DECLARE @sql NVARCHAR(300)
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CB') AND name = 'TaxBName')
BEGIN
 set @sql = 'UPDATE CBDTL SET TaxBName = (Select CB.TaxBName From CB Where CB.DocKey=CBDTL.DocKey)'
 Exec sp_executesql @sql
END
GO

/* Drop TaxBRNo column in CB table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CB') AND name = 'TaxBRNo')
ALTER TABLE [dbo].[CB] DROP COLUMN [TaxBRNo]
GO

/* Drop TaxBName column in CB table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CB') AND name = 'TaxBName')
ALTER TABLE [dbo].[CB] DROP COLUMN [TaxBName]
GO

/* rename BankChargeTaxBRName column in PaymentMethod table*/
/* Add BankChargeTaxBName column in CBDTL table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('PaymentMethod') AND name = 'BankChargeTaxBName')
ALTER TABLE [dbo].[PaymentMethod] ADD [BankChargeTaxBName] [d_AccDescription] NULL
GO

/* Update BankChargeTaxBName value in CBDTL table*/
DECLARE @sql NVARCHAR(300)
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('PaymentMethod') AND name = 'BankChargeTaxBRName')
BEGIN
 set @sql = 'UPDATE PaymentMethod SET BankChargeTaxBName = BankChargeTaxBRName'
 Exec sp_executesql @sql
END
GO

/* Drop BankChargeTaxBRName column in PaymentMethod table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('PaymentMethod') AND name = 'BankChargeTaxBRName')
ALTER TABLE [dbo].[PaymentMethod] DROP COLUMN [BankChargeTaxBRName]
GO


/* Add UseTrxTaxAccNo column in TaxType table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('TaxType') AND name = 'UseTrxTaxAccNo')
ALTER TABLE [dbo].[TaxType] ADD [UseTrxTaxAccNo] [d_Boolean] NOT NULL DEFAULT 'F'
GO

-- Add TaxAccNo column and foreign key in TaxTrans table
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTrans]') and name = N'TaxAccNo')
begin
  ALTER TABLE [dbo].[TaxTrans] ADD [TaxAccNo] [d_AccNo] NULL

  -- Update TaxAccNo value in TaxTrans table
  DECLARE @sql nvarchar(300);
  SET @sql = 'Update TaxTrans Set TaxAccNo = (Select TaxType.TaxAccNo From TaxType Where TaxType.TaxType = TaxTrans.TaxType)';
  EXEC sp_executesql @sql
end
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTrans_TaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[TaxTrans]  WITH CHECK ADD  CONSTRAINT [FK_TaxTrans_TaxAccNo] FOREIGN KEY([TaxAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

/* Support InclusiveTax in Debtor table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'InclusiveTax')
  ALTER TABLE [dbo].[Debtor] 
    ADD [InclusiveTax] [d_Boolean] NOT NULL DEFAULT 'F'
GO

UPDATE REGISTRY SET RegValue = '1.0.9.52' WHERE RegID = 2
GObUDECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support K1 Form exchange rate in CBIGDTL table */
INSERT @ListTable VALUES('CBIGDTL', 'CurrencyRate', '[d_CurrencyRate] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'Update CBIGDTL Set CurrencyRate = COALESCE(TaxableAmt, 0)/COALESCE((Select SubTotal From APInvoiceDTL Where APInvoiceDTL.DtlKey = CBIGDTL.SourceKey AND COALESCE(APInvoiceDTL.SubTotal, 0) != 0), 1) Where CurrencyRate is null'
  Exec sp_executesql @sql

  set @sql = 'Update CBIGDTL Set CurrencyRate = 1 Where CurrencyRate = 0'
  Exec sp_executesql @sql

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [d_CurrencyRate] NOT NULL'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO


/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support TaxAdjustment in Cash Book Imported Goods */
INSERT @ListTable VALUES('CBIGDTL', 'TaxAdjustment', '[d_Money] NULL', 'A')

/* Support LocalTaxAdjustment in G/L, A/R and A/P */
INSERT @ListTable VALUES('ARInvoiceDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARDNDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('ARCNDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APInvoiceDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APDNDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('APCNDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CBDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CBIGDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('JEDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')

/* Support LocalTaxAdjustment in Purchase */
INSERT @ListTable VALUES('RQDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PODTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GRDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XPDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('GTDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PIDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CPDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('PRDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')

/* Support LocalTaxAdjustment in Sales */
INSERT @ListTable VALUES('QTDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('SODTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DODTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('XSDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DRDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'LocalTaxAdjustment', '[d_Money] NULL', 'A')


DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support RoundingMethod in Sales, Purchase, CB, JE table */
INSERT @ListTable VALUES('QT', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('SO', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('DO', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('IV', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('CS', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('CN', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('DN', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('DR', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('XS', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('RQ', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('PO', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('GR', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('PI', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('CP', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('PR', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('GT', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('XP', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('CB', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('JE', 'RoundingMethod', '[int] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = 1 Where [' + @colName + '] is null'
  Exec sp_executesql @sql

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [int] NOT NULL'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support Default RoundingMethod in Debtor & Creditor table */
INSERT @ListTable VALUES('Debtor', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('Creditor', 'RoundingMethod', '[int] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = -1 Where [' + @colName + '] is null'
  Exec sp_executesql @sql

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [int] NOT NULL'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* rename CalculationMethod column to RoundingMethod column in ARAP table*/
DECLARE @ListTable TABLE(TableName nvarchar(40), OldColumnName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support RoundingMethod in ARAP table */
INSERT @ListTable VALUES('ARInvoice', 'CalculationMethod', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('ARDN', 'CalculationMethod', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('ARCN', 'CalculationMethod', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('APInvoice', 'CalculationMethod', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('APDN', 'CalculationMethod', 'RoundingMethod', '[int] NULL')
INSERT @ListTable VALUES('APCN', 'CalculationMethod', 'RoundingMethod', '[int] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @oldColName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, OldColumnName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @oldColName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  /* Add RoundingMethod column in ARAP table*/
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  /* Update RoundingMethod value in ARAP table*/
  if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id(@tableName) AND name = @oldColName)
  BEGIN
   set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = [' + @oldColName + ']'
   Exec sp_executesql @sql
  END

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [int] NOT NULL'
  Exec sp_executesql @sql

  /* Drop CalculationMethod column in ARAP table*/
  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @oldColName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @oldColName + ']'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @oldColName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support GainLossTaxType in ARAP table */
INSERT @ListTable VALUES('ARCNKnockOff', 'GainLossTaxType', '[d_TaxType] NULL')
INSERT @ListTable VALUES('ARPaymentKnockOff', 'GainLossTaxType', '[d_TaxType] NULL')
INSERT @ListTable VALUES('ARRefundKnockOff', 'GainLossTaxType', '[d_TaxType] NULL')
INSERT @ListTable VALUES('ARContraKnockOff', 'GainLossTaxType', '[d_TaxType] NULL')
INSERT @ListTable VALUES('APCNKnockOff', 'GainLossTaxType', '[d_TaxType] NULL')
INSERT @ListTable VALUES('APPaymentKnockOff', 'GainLossTaxType', '[d_TaxType] NULL')
INSERT @ListTable VALUES('APRefundKnockOff', 'GainLossTaxType', '[d_TaxType] NULL')
INSERT @ListTable VALUES('APContraKnockOff', 'GainLossTaxType', '[d_TaxType] NULL')

/* Support ToTaxCurrencyRate in ARAP table */
INSERT @ListTable VALUES('ARCNKnockOff', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL')
INSERT @ListTable VALUES('ARPaymentKnockOff', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL')
INSERT @ListTable VALUES('ARRefundKnockOff', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL')
INSERT @ListTable VALUES('ARContraKnockOff', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL')
INSERT @ListTable VALUES('APCNKnockOff', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL')
INSERT @ListTable VALUES('APPaymentKnockOff', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL')
INSERT @ListTable VALUES('APRefundKnockOff', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL')
INSERT @ListTable VALUES('APContraKnockOff', 'ToTaxCurrencyRate', '[d_CurrencyRate] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add Foreign Key to all ARAP KnockOff GainLossTaxType */

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARCNKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARCNKnockOff] DROP CONSTRAINT [FK_ARCNKnockOff_GainLossTaxType]
GO

ALTER TABLE [dbo].[ARCNKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARCNKnockOff_GainLossTaxType] 
FOREIGN KEY([GainLossTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARPaymentKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARPaymentKnockOff] DROP CONSTRAINT [FK_ARPaymentKnockOff_GainLossTaxType]
GO

ALTER TABLE [dbo].[ARPaymentKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARPaymentKnockOff_GainLossTaxType] 
FOREIGN KEY([GainLossTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARRefundKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundKnockOff] DROP CONSTRAINT [FK_ARRefundKnockOff_GainLossTaxType]
GO

ALTER TABLE [dbo].[ARRefundKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARRefundKnockOff_GainLossTaxType] 
FOREIGN KEY([GainLossTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARContraKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARContraKnockOff] DROP CONSTRAINT [FK_ARContraKnockOff_GainLossTaxType]
GO

ALTER TABLE [dbo].[ARContraKnockOff] WITH CHECK ADD CONSTRAINT [FK_ARContraKnockOff_GainLossTaxType] 
FOREIGN KEY([GainLossTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APCNKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APCNKnockOff] DROP CONSTRAINT [FK_APCNKnockOff_GainLossTaxType]
GO

ALTER TABLE [dbo].[APCNKnockOff] WITH CHECK ADD CONSTRAINT [FK_APCNKnockOff_GainLossTaxType] 
FOREIGN KEY([GainLossTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APPaymentKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APPaymentKnockOff] DROP CONSTRAINT [FK_APPaymentKnockOff_GainLossTaxType]
GO

ALTER TABLE [dbo].[APPaymentKnockOff] WITH CHECK ADD CONSTRAINT [FK_APPaymentKnockOff_GainLossTaxType] 
FOREIGN KEY([GainLossTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APRefundKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundKnockOff] DROP CONSTRAINT [FK_APRefundKnockOff_GainLossTaxType]
GO

ALTER TABLE [dbo].[APRefundKnockOff] WITH CHECK ADD CONSTRAINT [FK_APRefundKnockOff_GainLossTaxType] 
FOREIGN KEY([GainLossTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APContraKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APContraKnockOff] DROP CONSTRAINT [FK_APContraKnockOff_GainLossTaxType]
GO

ALTER TABLE [dbo].[APContraKnockOff] WITH CHECK ADD CONSTRAINT [FK_APContraKnockOff_GainLossTaxType] 
FOREIGN KEY([GainLossTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support Compressed in GSTProcessor table */
INSERT @ListTable VALUES('GSTProcessor', 'Compressed', '[d_Boolean] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = ''F'' Where [' + @colName + '] is null'
  Exec sp_executesql @sql

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [d_Boolean] NOT NULL'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DODTL_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DODTL] DROP CONSTRAINT [FK_DODTL_AccNo]
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support AccNo in DODTL table */
INSERT @ListTable VALUES('DODTL', 'AccNo', '[d_AccNo] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = (Select ItemGroup.SalesCode From Item Inner Join ItemGroup On Item.ItemGroup = ItemGroup.ItemGroup Where Item.ItemCode = DODTL.ItemCode) Where [' + @colName + '] is null'
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = (Select RegValue From Registry Where RegID=''296'') Where [' + @colName + '] is null AND DtlType In (''D'', ''V'')'
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = (Select RegValue From Registry Where RegID=''264'') Where [' + @colName + '] is null'
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = NULL Where [' + @colName + '] is not null AND [' + @colName + '] NOT IN (SELECT AccNo FROM GLMast)'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

ALTER TABLE dbo.DODTL WITH CHECK ADD CONSTRAINT
	FK_DODTL_AccNo FOREIGN KEY
	(
	[AccNo]
	) REFERENCES dbo.GLMast
	(
	[AccNo]
	)
GO

UPDATE REGISTRY SET RegValue = '1.0.9.53' WHERE RegID = 2
GO��/* Update Cash Book Imported Goods Currency Rate */
Update CBIGDTL Set CurrencyRate = 1 Where CurrencyRate = 0
GO

/* Delete APDeposit and APDepositRefund from taxtrans when does not exist */
Delete From TaxTrans Where SourceType = 'PS' AND SourceKey Not In (Select DocKey From APDeposit)
GO

Delete From TaxTrans Where SourceType = 'PU' AND SourceKey Not In (Select DocKey From APDeposit)
GO

/* Drop Foreign Key for all ARAP KnockOff GainLossTaxType */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARCNKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARCNKnockOff] DROP CONSTRAINT [FK_ARCNKnockOff_GainLossTaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARPaymentKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARPaymentKnockOff] DROP CONSTRAINT [FK_ARPaymentKnockOff_GainLossTaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARRefundKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundKnockOff] DROP CONSTRAINT [FK_ARRefundKnockOff_GainLossTaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARContraKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARContraKnockOff] DROP CONSTRAINT [FK_ARContraKnockOff_GainLossTaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APCNKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APCNKnockOff] DROP CONSTRAINT [FK_APCNKnockOff_GainLossTaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APPaymentKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APPaymentKnockOff] DROP CONSTRAINT [FK_APPaymentKnockOff_GainLossTaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APRefundKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundKnockOff] DROP CONSTRAINT [FK_APRefundKnockOff_GainLossTaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APContraKnockOff_GainLossTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APContraKnockOff] DROP CONSTRAINT [FK_APContraKnockOff_GainLossTaxType]
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40))
/* Drop GainLossTaxType column in ARAP table */
INSERT @ListTable VALUES('ARCNKnockOff', 'GainLossTaxType')
INSERT @ListTable VALUES('ARPaymentKnockOff', 'GainLossTaxType')
INSERT @ListTable VALUES('ARRefundKnockOff', 'GainLossTaxType')
INSERT @ListTable VALUES('ARContraKnockOff', 'GainLossTaxType')
INSERT @ListTable VALUES('APCNKnockOff', 'GainLossTaxType')
INSERT @ListTable VALUES('APPaymentKnockOff', 'GainLossTaxType')
INSERT @ListTable VALUES('APRefundKnockOff', 'GainLossTaxType')
INSERT @ListTable VALUES('APContraKnockOff', 'GainLossTaxType')

/* Drop ToTaxCurrencyRate column in ARAP table */
INSERT @ListTable VALUES('ARCNKnockOff', 'ToTaxCurrencyRate')
INSERT @ListTable VALUES('ARPaymentKnockOff', 'ToTaxCurrencyRate')
INSERT @ListTable VALUES('ARRefundKnockOff', 'ToTaxCurrencyRate')
INSERT @ListTable VALUES('ARContraKnockOff', 'ToTaxCurrencyRate')
INSERT @ListTable VALUES('APCNKnockOff', 'ToTaxCurrencyRate')
INSERT @ListTable VALUES('APPaymentKnockOff', 'ToTaxCurrencyRate')
INSERT @ListTable VALUES('APRefundKnockOff', 'ToTaxCurrencyRate')
INSERT @ListTable VALUES('APContraKnockOff', 'ToTaxCurrencyRate')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* update SourceDtlKey column in ARAP table*/
Update ARInvoiceDTL Set SourceDtlKey = null Where DocKey IN (Select DocKey From ARInvoice Where SourceType Is Null AND SourceKey Is Null)
GO

Update ARCNDTL Set SourceDtlKey = null Where DocKey IN (Select DocKey From ARCN Where SourceType Is Null AND SourceKey Is Null)
GO

Update ARDNDTL Set SourceDtlKey = null Where DocKey IN (Select DocKey From ARDN Where SourceType Is Null AND SourceKey Is Null)
GO

Update APInvoiceDTL Set SourceDtlKey = null Where DocKey IN (Select DocKey From APInvoice Where SourceType Is Null AND SourceKey Is Null)
GO

Update APCNDTL Set SourceDtlKey = null Where DocKey IN (Select DocKey From APCN Where SourceType Is Null AND SourceKey Is Null)
GO

Update APDNDTL Set SourceDtlKey = null Where DocKey IN (Select DocKey From APDN Where SourceType Is Null AND SourceKey Is Null)
GO

/* Add SourceDtlType fields in ARAP table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
INSERT @ListTable VALUES('ARInvoiceDTL', 'SourceDtlType', '[d_DtlType] NULL')
INSERT @ListTable VALUES('ARCNDTL', 'SourceDtlType', '[d_DtlType] NULL')
INSERT @ListTable VALUES('ARDNDTL', 'SourceDtlType', '[d_DtlType] NULL')
INSERT @ListTable VALUES('APInvoiceDTL', 'SourceDtlType', '[d_DtlType] NULL')
INSERT @ListTable VALUES('APCNDTL', 'SourceDtlType', '[d_DtlType] NULL')
INSERT @ListTable VALUES('APDNDTL', 'SourceDtlType', '[d_DtlType] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* rename DocDate column to TaxDate column in TaxTrans table*/
DECLARE @ListTable TABLE(TableName nvarchar(40), OldColumnName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support TaxDate in TaxTrans table */
INSERT @ListTable VALUES('TaxTrans', 'DocDate', 'TaxDate', '[datetime] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @oldColName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, OldColumnName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @oldColName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id(@tableName) AND name = @colName)
  BEGIN
	  /* Add TaxDate column in TaxTrans table*/
	  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
	  Exec sp_executesql @sql

	  /* Update TaxDate value in TaxTrans table*/
	  if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id(@tableName) AND name = @oldColName)
	  BEGIN
	   set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = [' + @oldColName + ']'
	   Exec sp_executesql @sql
	  END

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [datetime] NOT NULL'
	  Exec sp_executesql @sql

	  --/* Drop DocDate column in TaxTrans table*/
	  --set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @oldColName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @oldColName + ']'
	  --Exec sp_executesql @sql
  END

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @oldColName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* update document date to DocDate column in TaxTrans table*/
Update TaxTrans Set DocDate = (Select ARInvoice.DocDate From ARInvoice Where ARInvoice.DocKey=TaxTrans.SourceKey) Where SourceType = 'RI' AND SourceKey IN (Select DocKey From ARInvoice)
GO

Update TaxTrans Set DocDate = (Select ARCN.DocDate From ARCN Where ARCN.DocKey=TaxTrans.SourceKey) Where SourceType = 'RC' AND SourceKey IN (Select DocKey From ARCN)
GO

Update TaxTrans Set DocDate = (Select ARDN.DocDate From ARDN Where ARDN.DocKey=TaxTrans.SourceKey) Where SourceType = 'RD' AND SourceKey IN (Select DocKey From ARDN)
GO

Update TaxTrans Set DocDate = (Select APInvoice.DocDate From APInvoice Where APInvoice.DocKey=TaxTrans.SourceKey) Where SourceType = 'PB' AND SourceKey IN (Select DocKey From APInvoice)
GO

Update TaxTrans Set DocDate = (Select APCN.DocDate From APCN Where APCN.DocKey=TaxTrans.SourceKey) Where SourceType = 'PC' AND SourceKey IN (Select DocKey From APCN)
GO

Update TaxTrans Set DocDate = (Select APDN.DocDate From APDN Where APDN.DocKey=TaxTrans.SourceKey) Where SourceType = 'PD' AND SourceKey IN (Select DocKey From APDN)
GO

Update TaxTrans Set DocDate = (Select CB.DocDate From CB Where CB.DocKey=TaxTrans.SourceKey) Where SourceType IN ('OR', 'PV') AND SourceKey IN (Select DocKey From CB)
GO

Update TaxTrans Set DocDate = (Select JE.DocDate From JE Where JE.DocKey=TaxTrans.SourceKey) Where SourceType = 'JE' AND SourceKey IN (Select DocKey From JE)
GO

/* Add GAF fields in TaxTrans table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
INSERT @ListTable VALUES('TaxTrans', 'RegisterNo', '[nvarchar] (25) NULL')
INSERT @ListTable VALUES('TaxTrans', 'TaxRegisterNo', '[nvarchar] (20) NULL')
INSERT @ListTable VALUES('TaxTrans', 'TaxRefNo', '[nvarchar] (30) NULL')
INSERT @ListTable VALUES('TaxTrans', 'TaxPermitNo', '[nvarchar] (20) NULL')
INSERT @ListTable VALUES('TaxTrans', 'TaxExportCountry', '[nvarchar] (50) NULL')
INSERT @ListTable VALUES('TaxTrans', 'Description', '[d_GLDescription] NULL')
INSERT @ListTable VALUES('TaxTrans', 'OriginalDtlKey', '[bigint] NULL')
INSERT @ListTable VALUES('TaxTrans', 'OriginalDtlType', '[d_DtlType] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* update TaxBName column in TaxTrans table*/
Update TaxTrans Set TaxableName = (Select CASE WHEN ISNULL(CBDTL.TaxBName, '') != '' THEN CBDTL.TaxBName ELSE CB.DealWith END From CB Inner Join CBDTL On CB.DocKey = CBDTL.DocKey Where CBDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType IN ('OR', 'PV') AND SourceDtlKey IN (Select DtlKey From CBDTL)
GO

Update TaxTrans Set TaxableName = (Select CASE WHEN ISNULL(JEDTL.TaxBName, '') != '' THEN JEDTL.TaxBName ELSE JE.Description END From JE Inner Join JEDTL On JE.DocKey = JEDTL.DocKey Where JEDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType IN ('JE') AND SourceDtlKey IN (Select DtlKey From JEDTL)
GO

/* update RegisterNo column in TaxTrans table*/
Update TaxTrans Set RegisterNo = (Select SubString(Debtor.RegisterNo, 1, 25) From Debtor Inner Join ARInvoice On Debtor.AccNo = ARInvoice.DebtorCode Where ARInvoice.DocKey=TaxTrans.SourceKey) Where SourceType = 'RI'
GO

Update TaxTrans Set RegisterNo = (Select SubString(Debtor.RegisterNo, 1, 25) From Debtor Inner Join ARCN On Debtor.AccNo = ARCN.DebtorCode Where ARCN.DocKey=TaxTrans.SourceKey) Where SourceType = 'RC'
GO

Update TaxTrans Set RegisterNo = (Select SubString(Debtor.RegisterNo, 1, 25) From Debtor Inner Join ARDN On Debtor.AccNo = ARDN.DebtorCode Where ARDN.DocKey=TaxTrans.SourceKey) Where SourceType = 'RD'
GO

Update TaxTrans Set RegisterNo = (Select SubString(Creditor.RegisterNo, 1, 25) From Creditor Inner Join APInvoice On Creditor.AccNo = APInvoice.CreditorCode Where APInvoice.DocKey=TaxTrans.SourceKey) Where SourceType = 'PB'
GO

Update TaxTrans Set RegisterNo = (Select SubString(Creditor.RegisterNo, 1, 25) From Creditor Inner Join APCN On Creditor.AccNo = APCN.CreditorCode Where APCN.DocKey=TaxTrans.SourceKey) Where SourceType = 'PC'
GO

Update TaxTrans Set RegisterNo = (Select SubString(Creditor.RegisterNo, 1, 25) From Creditor Inner Join APDN On Creditor.AccNo = APDN.CreditorCode Where APDN.DocKey=TaxTrans.SourceKey) Where SourceType = 'PD'
GO

Update TaxTrans Set RegisterNo = (Select SubString(CBDTL.TaxBRNo, 1, 25) From CBDTL Where CBDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType IN ('OR', 'PV') AND RegisterNo IS NULL
GO

DECLARE @sql NVARCHAR(400)
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceKey')
BEGIN
 set @sql = 'Update TaxTrans Set RegisterNo = (Select SubString(Creditor.RegisterNo, 1, 25) From Creditor Inner Join APInvoice On Creditor.AccNo = APInvoice.CreditorCode Inner Join APInvoiceDtl On APInvoice.DocKey = APInvoiceDtl.DocKey Inner Join CBIGDTL On APInvoiceDtl.DtlKey = CBIGDTL.SourceKey Where CBIGDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = ''PV'' AND RegisterNo IS NULL'
 Exec sp_executesql @sql
END
GO

Update TaxTrans Set RegisterNo = (Select SubString(JEDTL.TaxBRNo, 1, 25) From JEDTL Where JEDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'JE'
GO

Update TaxTrans Set RegisterNo = (Select SubString(PaymentMethod.BankChargeTaxBRNo, 1, 25) From PaymentMethod Inner Join ARPaymentDtl On PaymentMethod.PaymentMethod = ARPaymentDtl.PaymentMethod Where ARPaymentDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RP'
GO

Update TaxTrans Set RegisterNo = (Select SubString(PaymentMethod.BankChargeTaxBRNo, 1, 25) From PaymentMethod Inner Join ARRefundDTL On PaymentMethod.PaymentMethod = ARRefundDTL.PaymentMethod Where ARRefundDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RF'
GO

Update TaxTrans Set RegisterNo = (Select SubString(PaymentMethod.BankChargeTaxBRNo, 1, 25) From PaymentMethod Inner Join ARDepositDTL On PaymentMethod.PaymentMethod = ARDepositDTL.PaymentMethod Where ARDepositDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RS'
GO

Update TaxTrans Set RegisterNo = (Select SubString(PaymentMethod.BankChargeTaxBRNo, 1, 25) From PaymentMethod Inner Join ARRefundDepositDTL On PaymentMethod.PaymentMethod = ARRefundDepositDTL.PaymentMethod Where ARRefundDepositDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RU'
GO

Update TaxTrans Set RegisterNo = (Select SubString(PaymentMethod.BankChargeTaxBRNo, 1, 25) From PaymentMethod Inner Join APPaymentDtl On PaymentMethod.PaymentMethod = APPaymentDtl.PaymentMethod Where APPaymentDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PP'
GO

Update TaxTrans Set RegisterNo = (Select SubString(PaymentMethod.BankChargeTaxBRNo, 1, 25) From PaymentMethod Inner Join APRefundDTL On PaymentMethod.PaymentMethod = APRefundDTL.PaymentMethod Where APRefundDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PF'
GO

Update TaxTrans Set RegisterNo = (Select SubString(PaymentMethod.BankChargeTaxBRNo, 1, 25) From PaymentMethod Inner Join APDepositDTL On PaymentMethod.PaymentMethod = APDepositDTL.PaymentMethod Where APDepositDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PS'
GO

Update TaxTrans Set RegisterNo = (Select SubString(PaymentMethod.BankChargeTaxBRNo, 1, 25) From PaymentMethod Inner Join APRefundDepositDTL On PaymentMethod.PaymentMethod = APRefundDepositDTL.PaymentMethod Where APRefundDepositDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PU'
GO

Update TaxTrans Set RegisterNo = (Select SubString(PaymentMethod.BankChargeTaxBRNo, 1, 25) From PaymentMethod Inner Join CBPaymentDtl On PaymentMethod.PaymentMethod = CBPaymentDtl.PaymentMethod Where CBPaymentDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType IN ('OR', 'PV') AND RegisterNo IS NULL
GO

Update TaxTrans Set RegisterNo = Null Where RegisterNo = ''
GO

/* update TaxRegisterNo column in TaxTrans table*/
Update TaxTrans Set TaxRegisterNo = (Select SubString(Debtor.TaxRegisterNo, 1, 20) From Debtor Inner Join ARInvoice On Debtor.AccNo = ARInvoice.DebtorCode Where ARInvoice.DocKey=TaxTrans.SourceKey) Where SourceType = 'RI'
GO

Update TaxTrans Set TaxRegisterNo = (Select SubString(Debtor.TaxRegisterNo, 1, 20) From Debtor Inner Join ARCN On Debtor.AccNo = ARCN.DebtorCode Where ARCN.DocKey=TaxTrans.SourceKey) Where SourceType = 'RC'
GO

Update TaxTrans Set TaxRegisterNo = (Select SubString(Debtor.TaxRegisterNo, 1, 20) From Debtor Inner Join ARDN On Debtor.AccNo = ARDN.DebtorCode Where ARDN.DocKey=TaxTrans.SourceKey) Where SourceType = 'RD'
GO

Update TaxTrans Set TaxRegisterNo = (Select SubString(Creditor.TaxRegisterNo, 1, 20) From Creditor Inner Join APInvoice On Creditor.AccNo = APInvoice.CreditorCode Where APInvoice.DocKey=TaxTrans.SourceKey) Where SourceType = 'PB'
GO

Update TaxTrans Set TaxRegisterNo = (Select SubString(Creditor.TaxRegisterNo, 1, 20) From Creditor Inner Join APCN On Creditor.AccNo = APCN.CreditorCode Where APCN.DocKey=TaxTrans.SourceKey) Where SourceType = 'PC'
GO

Update TaxTrans Set TaxRegisterNo = (Select SubString(Creditor.TaxRegisterNo, 1, 20) From Creditor Inner Join APDN On Creditor.AccNo = APDN.CreditorCode Where APDN.DocKey=TaxTrans.SourceKey) Where SourceType = 'PD'
GO

Update TaxTrans Set TaxRegisterNo = Null Where TaxRegisterNo = ''
GO

/* update TaxRefNo column in TaxTrans table*/
Update TaxTrans Set TaxRefNo = (Select SubString(CBDTL.TaxRefNo, 1, 30) From CBDTL Where CBDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType IN ('OR', 'PV') AND TaxRefNo IS NULL
GO

DECLARE @sql NVARCHAR(400)
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceKey')
BEGIN
 set @sql = 'Update TaxTrans Set TaxRefNo = (Select CASE WHEN ISNULL(APInvoice.SupplierInvoiceNo, '''') != '''' THEN SubString(APInvoice.SupplierInvoiceNo, 1, 30) ELSE SubString(APInvoice.DocNo, 1, 30) END From APInvoice Inner Join APInvoiceDtl On APInvoice.DocKey = APInvoiceDtl.DocKey Inner Join CBIGDTL On APInvoiceDtl.DtlKey = CBIGDTL.SourceKey Where CBIGDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = ''PV'' AND TaxRefNo IS NULL'
 Exec sp_executesql @sql
END
GO

Update TaxTrans Set TaxRefNo = (Select SubString(JEDTL.TaxRefNo, 1, 30) From JEDTL Where JEDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'JE'
GO

Update TaxTrans Set TaxRefNo = (Select SubString(ARPaymentDtl.BankChargeTaxRefNo, 1, 30) From ARPaymentDtl Where ARPaymentDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RP'
GO

Update TaxTrans Set TaxRefNo = (Select SubString(ARRefundDTL.BankChargeTaxRefNo, 1, 30) From ARRefundDTL Where ARRefundDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RF'
GO

Update TaxTrans Set TaxRefNo = (Select SubString(ARDepositDTL.BankChargeTaxRefNo, 1, 30) From ARDepositDTL Where ARDepositDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RS'
GO

Update TaxTrans Set TaxRefNo = (Select SubString(ARRefundDepositDTL.BankChargeTaxRefNo, 1, 30) From ARRefundDepositDTL Where ARRefundDepositDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RU'
GO

Update TaxTrans Set TaxRefNo = (Select SubString(APPaymentDtl.BankChargeTaxRefNo, 1, 30) From APPaymentDtl Where APPaymentDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PP'
GO

Update TaxTrans Set TaxRefNo = (Select SubString(APRefundDTL.BankChargeTaxRefNo, 1, 30) From APRefundDTL Where APRefundDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PF'
GO

Update TaxTrans Set TaxRefNo = (Select SubString(APDepositDTL.BankChargeTaxRefNo, 1, 30) From APDepositDTL Where APDepositDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PS'
GO

Update TaxTrans Set TaxRefNo = (Select SubString(APRefundDepositDTL.BankChargeTaxRefNo, 1, 30) From APRefundDepositDTL Where APRefundDepositDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PU'
GO

Update TaxTrans Set TaxRefNo = (Select SubString(CBPaymentDtl.BankChargeTaxRefNo, 1, 30) From CBPaymentDtl Where CBPaymentDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType IN ('OR', 'PV') AND TaxRefNo IS NULL
GO

Update TaxTrans Set TaxRefNo = Null Where TaxRefNo = ''
GO

/* update TaxExportCountry column in TaxTrans table*/
Update TaxTrans Set TaxExportCountry = (Select SubString(ARInvoiceDtl.TaxExportCountry, 1, 50) From ARInvoiceDtl Where ARInvoiceDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RI'
GO

Update TaxTrans Set TaxExportCountry = (Select SubString(ARCNDtl.TaxExportCountry, 1, 50) From ARCNDtl Where ARCNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RC'
GO

Update TaxTrans Set TaxExportCountry = (Select SubString(ARDNDtl.TaxExportCountry, 1, 50) From ARDNDtl Where ARDNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RD'
GO

Update TaxTrans Set TaxExportCountry = (Select SubString(CBDTL.TaxExportCountry, 1, 50) From CBDTL Where CBDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'OR'
GO

Update TaxTrans Set TaxExportCountry = (Select SubString(JEDTL.TaxExportCountry, 1, 50) From JEDTL Where JEDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'JE'
GO

Update TaxTrans Set TaxExportCountry = Null Where TaxExportCountry = ''
GO

/* update TaxPermitNo column in TaxTrans table*/
Update TaxTrans Set TaxPermitNo = (Select SubString(APInvoiceDtl.TaxPermitNo, 1, 20) From APInvoiceDtl Where APInvoiceDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PB'
GO

Update TaxTrans Set TaxPermitNo = (Select SubString(APCNDtl.TaxPermitNo, 1, 20) From APCNDtl Where APCNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PC'
GO

Update TaxTrans Set TaxPermitNo = (Select SubString(APDNDtl.TaxPermitNo, 1, 20) From APDNDtl Where APDNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PD'
GO

Update TaxTrans Set TaxPermitNo = (Select SubString(CBDTL.TaxPermitNo, 1, 20) From CBDTL Where CBDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PV'
GO

Update TaxTrans Set TaxPermitNo = (Select SubString(CBIGDTL.TaxPermitNo, 1, 20) From CBIGDTL Where CBIGDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PV' AND TaxPermitNo IS NULL
GO

Update TaxTrans Set TaxPermitNo = (Select SubString(JEDTL.TaxPermitNo, 1, 20) From JEDTL Where JEDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'JE'
GO

Update TaxTrans Set TaxPermitNo = Null Where TaxPermitNo = ''
GO

/* update Description column in TaxTrans table*/
Update TaxTrans Set Description = (Select SubString(ARInvoiceDtl.Description, 1, 100) From ARInvoiceDtl Where ARInvoiceDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RI'
GO

Update TaxTrans Set Description = (Select SubString(ARCNDtl.Description, 1, 100) From ARCNDtl Where ARCNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RC'
GO

Update TaxTrans Set Description = (Select SubString(ARDNDtl.Description, 1, 100) From ARDNDtl Where ARDNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RD'
GO

Update TaxTrans Set Description = (Select SubString(APInvoiceDtl.Description, 1, 100) From APInvoiceDtl Where APInvoiceDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PB'
GO

Update TaxTrans Set Description = (Select SubString(APCNDtl.Description, 1, 100) From APCNDtl Where APCNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PC'
GO

Update TaxTrans Set Description = (Select SubString(APDNDtl.Description, 1, 100) From APDNDtl Where APDNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PD'
GO

Update TaxTrans Set Description = (Select SubString(CBDTL.Description, 1, 100) From CBDTL Where CBDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType IN ('OR', 'PV') AND Description IS NULL
GO

DECLARE @sql NVARCHAR(400)
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceKey')
BEGIN
 set @sql = 'Update TaxTrans Set Description = (Select SubString(APInvoiceDtl.Description, 1, 100) From APInvoiceDtl Inner Join CBIGDTL On APInvoiceDtl.DtlKey = CBIGDTL.SourceKey Where CBIGDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = ''PV'' AND Description IS NULL'
 Exec sp_executesql @sql
END
GO

Update TaxTrans Set Description = (Select SubString(JEDTL.Description, 1, 100) From JEDTL Where JEDTL.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'JE'
GO

Update TaxTrans Set Description = 'BANK CHARGES' Where SourceType = 'RP'
GO

Update TaxTrans Set Description = 'BANK CHARGES' Where SourceType = 'RF'
GO

Update TaxTrans Set Description = 'BANK CHARGES' Where SourceType = 'RS'
GO

Update TaxTrans Set Description = 'BANK CHARGES' Where SourceType = 'RU'
GO

Update TaxTrans Set Description = 'BANK CHARGES' Where SourceType = 'PP'
GO

Update TaxTrans Set Description = 'BANK CHARGES' Where SourceType = 'PF'
GO

Update TaxTrans Set Description = 'BANK CHARGES' Where SourceType = 'PS'
GO

Update TaxTrans Set Description = 'BANK CHARGES' Where SourceType = 'PU'
GO

Update TaxTrans Set Description = 'BANK CHARGES' Where SourceType IN ('OR', 'PV') AND SourceDtlKey IN (Select DtlKey From CBPaymentDTL)
GO

Update TaxTrans Set Description = Null Where Description = ''
GO

/* update OriginalDtlKey column in TaxTrans table*/
Update TaxTrans Set OriginalDtlKey = (Select ARInvoiceDtl.SourceDtlKey From ARInvoiceDtl Where ARInvoiceDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RI'
GO

Update TaxTrans Set OriginalDtlKey = (Select ARCNDtl.SourceDtlKey From ARCNDtl Where ARCNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RC'
GO

Update TaxTrans Set OriginalDtlKey = (Select ARDNDtl.SourceDtlKey From ARDNDtl Where ARDNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'RD'
GO

Update TaxTrans Set OriginalDtlKey = (Select APInvoiceDtl.SourceDtlKey From APInvoiceDtl Where APInvoiceDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PB'
GO

Update TaxTrans Set OriginalDtlKey = (Select APCNDtl.SourceDtlKey From APCNDtl Where APCNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PC'
GO

Update TaxTrans Set OriginalDtlKey = (Select APDNDtl.SourceDtlKey From APDNDtl Where APDNDtl.DtlKey=TaxTrans.SourceDtlKey) Where SourceType = 'PD'
GO

/* Create TaxTransAudit table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxTransAudit]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[TaxTransAudit]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxTransAudit]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[TaxTransAudit] (
	   [TaxTransAuditKey] [bigint] IDENTITY(1,1) NOT NULL,
       [AuditDateTime] [DateTime] NOT NULL,
       [UserID] [d_UserID] NOT NULL,
       CONSTRAINT [PK_TaxTransAudit] PRIMARY KEY CLUSTERED
       (
             [TaxTransAuditKey] ASC
       )
) ON [PRIMARY]
GO

/* Create TaxTransAuditDTL table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxTransAuditDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[TaxTransAuditDTL]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxTransAuditDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[TaxTransAuditDTL] (
	   [TaxTransAuditDtlKey] [bigint] IDENTITY(1,1) NOT NULL,
	   [TaxTransAuditKey] [bigint] NOT NULL,
	   [TaxTransKey] [bigint] NOT NULL,
	   [SourceType] [d_SourceType] NOT NULL,
	   [SourceKey] [bigint] NOT NULL,
	   [DocNo] [d_DocNo] NOT NULL,
	   [DocDate] [DateTime] NOT NULL,
	   [TaxType] [d_TaxType] NOT NULL,
	   [SupplyPurchase] [d_SupplyPurchase] NOT NULL,
	   [ProjNo] [d_Project] NULL,
	   [DeptNo] [d_Dept] NULL,
	   [TaxableAccNo] [d_AccNo] NULL,
	   [TaxableName] [d_AccDescription] NULL,
	   [TaxableAmt] [d_Money] NULL,
	   [LocalTaxableAmt] [d_Money] NULL,
	   [Tax] [d_Money] NULL,
	   [LocalTax] [d_Money] NULL,
	   [SourceDtlKey] [bigint] NULL,
	   [Seq] [int] NULL,
	   [CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	   [CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	   [TaxRate] [dbo].[d_Percent] NOT NULL,
	   [TaxAccNo] [dbo].[d_AccNo] NULL,
	   [TaxDate] [datetime] NOT NULL,
	   [RegisterNo] [nvarchar](25) NULL,
	   [TaxRegisterNo] [nvarchar](20) NULL,
	   [TaxRefNo] [nvarchar](30) NULL,
	   [TaxPermitNo] [nvarchar](20) NULL,
	   [TaxExportCountry] [nvarchar](50) NULL,
	   [Description] [dbo].[d_GLDescription] NULL,
	   [OriginalDtlKey] [bigint] NULL,
	   [OriginalDtlType] [d_DtlType] NULL,
	   [Action] [tinyint] NOT NULL,
	   [Severity] [tinyint] NOT NULL,
       CONSTRAINT [PK_TaxTransAuditDTL] PRIMARY KEY CLUSTERED
       (
             [TaxTransAuditDtlKey] ASC
       )
) ON [PRIMARY]
GO

/* Add Foreign Key to TaxTransAudit and TaxTransAuditDTL table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransAudit_UserID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransAudit] DROP CONSTRAINT [FK_TaxTransAudit_UserID]
GO

ALTER TABLE [dbo].[TaxTransAudit] WITH CHECK ADD CONSTRAINT [FK_TaxTransAudit_UserID] 
FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransAuditDTL_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransAuditDTL] DROP CONSTRAINT [FK_TaxTransAuditDTL_CurrencyCode]
GO

ALTER TABLE [dbo].[TaxTransAuditDTL] WITH CHECK ADD CONSTRAINT [FK_TaxTransAuditDTL_CurrencyCode] 
FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[Currency] ([CurrencyCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransAuditDTL_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransAuditDTL] DROP CONSTRAINT [FK_TaxTransAuditDTL_DeptNo]
GO

ALTER TABLE [dbo].[TaxTransAuditDTL] WITH CHECK ADD CONSTRAINT [FK_TaxTransAuditDTL_DeptNo] 
FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransAuditDTL_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransAuditDTL] DROP CONSTRAINT [FK_TaxTransAuditDTL_ProjNo]
GO

ALTER TABLE [dbo].[TaxTransAuditDTL] WITH CHECK ADD CONSTRAINT [FK_TaxTransAuditDTL_ProjNo] 
FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransAuditDTL_TaxableAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransAuditDTL] DROP CONSTRAINT [FK_TaxTransAuditDTL_TaxableAccNo]
GO

ALTER TABLE [dbo].[TaxTransAuditDTL] WITH CHECK ADD CONSTRAINT [FK_TaxTransAuditDTL_TaxableAccNo] 
FOREIGN KEY([TaxableAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransAuditDTL_TaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransAuditDTL] DROP CONSTRAINT [FK_TaxTransAuditDTL_TaxAccNo]
GO

ALTER TABLE [dbo].[TaxTransAuditDTL] WITH CHECK ADD CONSTRAINT [FK_TaxTransAuditDTL_TaxAccNo] 
FOREIGN KEY([TaxAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransAuditDTL_TaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransAuditDTL] DROP CONSTRAINT [FK_TaxTransAuditDTL_TaxType]
GO

ALTER TABLE [dbo].[TaxTransAuditDTL] WITH CHECK ADD CONSTRAINT [FK_TaxTransAuditDTL_TaxType] 
FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysindexes where name = N'IX_TaxTransAuditDTL_SourceType_SourceKey')
  DROP INDEX [IX_TaxTransAuditDTL_SourceType_SourceKey] ON [dbo].[TaxTransAuditDTL]
GO

CREATE INDEX [IX_TaxTransAuditDTL_SourceType_SourceKey] ON [dbo].[TaxTransAuditDTL]([SourceType], [SourceKey]) ON [PRIMARY]
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support TaxRegisterNo in Payment Method, JE and CB detail table */
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxRegisterNo', '[nvarchar](20) NULL')
INSERT @ListTable VALUES('JEDTL', 'TaxRegisterNo', '[nvarchar](20) NULL')
INSERT @ListTable VALUES('CBDTL', 'TaxRegisterNo', '[nvarchar](20) NULL')

/* Support TaxBillDate in JEDTL and CBDTL detail table */
INSERT @ListTable VALUES('CBDTL', 'TaxBillDate', '[datetime] NULL')
INSERT @ListTable VALUES('JEDTL', 'TaxBillDate', '[datetime] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Drop Tax column in GLDTL table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GLDTL') AND name = 'Tax')
ALTER TABLE [dbo].[GLDTL] DROP COLUMN [Tax]
GO

/* Drop HomeTax column in GLDTL table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GLDTL') AND name = 'HomeTax')
ALTER TABLE [dbo].[GLDTL] DROP COLUMN [HomeTax]
GO

/* Drop TaxRate column in GLDTL table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GLDTL') AND name = 'TaxRate')
ALTER TABLE [dbo].[GLDTL] DROP COLUMN [TaxRate]
GO

Update GLDTL Set TaxType = Null Where SourceType IN ('RC', 'RD', 'RI') AND AccNo IN (Select AccNo From Debtor)
GO

Update GLDTL Set TaxType = Null Where SourceType IN ('PC', 'PD', 'PB') AND AccNo IN (Select AccNo From Creditor)
GO

/* Add LocalTaxableAmt fields in GL, ARAP, Sales & Purchase table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

/* Support LocalTaxableAmt in GL table */
INSERT @ListTable VALUES('CB', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CBDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CBIGDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('JEDTL', 'LocalTaxableDR', '[d_Money] NULL')
INSERT @ListTable VALUES('JEDTL', 'LocalTaxableCR', '[d_Money] NULL')

/* Support LocalTaxableAmt in AR table */
INSERT @ListTable VALUES('ARInvoice', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoiceDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('ARCNDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('ARDNDTL', 'LocalTaxableAmt', '[d_Money] NULL')

/* Support LocalTaxableAmt in AP table */
INSERT @ListTable VALUES('APInvoice', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('APInvoiceDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('APCNDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('APDNDTL', 'LocalTaxableAmt', '[d_Money] NULL')

/* Support LocalTaxableAmt in Sales table */
INSERT @ListTable VALUES('QT', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('QTDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('SO', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('SODTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DO', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DODTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('IVDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CSDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CNDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DNDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DR', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DRDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('XS', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('XSDTL', 'LocalTaxableAmt', '[d_Money] NULL')

/* Support LocalTaxableAmt in Purchase table */
INSERT @ListTable VALUES('RQ', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('RQDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PO', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PODTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('GR', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('GRDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PIDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CPDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PRDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('GT', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('GTDTL', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('XP', 'LocalTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('XPDTL', 'LocalTaxableAmt', '[d_Money] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  /* Update LocalTaxableAmt value in document table*/
  if @colName='LocalTaxableDR'
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = TaxableDR'
  else if @colName='LocalTaxableCR'
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = TaxableCR'
  else
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = TaxableAmt'

  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add LocalTax fields in JE table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

/* Support LocalTax in GL table */
INSERT @ListTable VALUES('JEDTL', 'LocalTaxDR', '[d_Money] NULL')
INSERT @ListTable VALUES('JEDTL', 'LocalTaxCR', '[d_Money] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  /* Update LocalTax value in document table*/
  if @colName='LocalTaxDR'
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = TaxDR'
  else
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = TaxCR'

  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add TaxCurrencyTax fields in GL, ARAP, Sales & Purchase table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

/* Support TaxCurrencyTax in GL table */
INSERT @ListTable VALUES('CB', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CBDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CBIGDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('JE', 'TaxCurrencyTaxDR', '[d_Money] NULL')
INSERT @ListTable VALUES('JE', 'TaxCurrencyTaxCR', '[d_Money] NULL')
INSERT @ListTable VALUES('JEDTL', 'TaxCurrencyTaxDR', '[d_Money] NULL')
INSERT @ListTable VALUES('JEDTL', 'TaxCurrencyTaxCR', '[d_Money] NULL')

/* Support TaxCurrencyTax in AR table */
INSERT @ListTable VALUES('ARInvoice', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoiceDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('ARCNDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('ARDNDTL', 'TaxCurrencyTax', '[d_Money] NULL')

/* Support TaxCurrencyTax in AP table */
INSERT @ListTable VALUES('APInvoice', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('APInvoiceDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('APCNDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('APDNDTL', 'TaxCurrencyTax', '[d_Money] NULL')

/* Support TaxCurrencyTax in Sales table */
INSERT @ListTable VALUES('QT', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('QTDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('SO', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('SODTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('DO', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('DODTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('IVDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CSDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CNDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('DNDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('DR', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('DRDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('XS', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('XSDTL', 'TaxCurrencyTax', '[d_Money] NULL')

/* Support TaxCurrencyTax in Purchase table */
INSERT @ListTable VALUES('RQ', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('RQDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('PO', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('PODTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('GR', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('GRDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('PIDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CPDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('PRDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('GT', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('GTDTL', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('XP', 'TaxCurrencyTax', '[d_Money] NULL')
INSERT @ListTable VALUES('XPDTL', 'TaxCurrencyTax', '[d_Money] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  /* Update TaxCurrencyTax value in document table*/
  if @colName='TaxCurrencyTaxDR'
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = TaxDR'
  else if @colName='TaxCurrencyTaxCR'
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = TaxCR'
  else
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = Tax'

  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add TaxCurrencyTaxableAmt fields in GL, ARAP, Sales & Purchase table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

/* Support TaxCurrencyTaxableAmt in GL table */
INSERT @ListTable VALUES('CB', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CBDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CBIGDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('JE', 'TaxCurrencyTaxableDR', '[d_Money] NULL')
INSERT @ListTable VALUES('JE', 'TaxCurrencyTaxableCR', '[d_Money] NULL')
INSERT @ListTable VALUES('JEDTL', 'TaxCurrencyTaxableDR', '[d_Money] NULL')
INSERT @ListTable VALUES('JEDTL', 'TaxCurrencyTaxableCR', '[d_Money] NULL')

/* Support TaxCurrencyTaxableAmt in AR table */
INSERT @ListTable VALUES('ARInvoice', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoiceDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('ARCNDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('ARDNDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')

/* Support TaxCurrencyTaxableAmt in AP table */
INSERT @ListTable VALUES('APInvoice', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('APInvoiceDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('APCNDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('APDNDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')

/* Support TaxCurrencyTaxableAmt in Sales table */
INSERT @ListTable VALUES('QT', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('QTDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('SO', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('SODTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DO', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DODTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('IVDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CSDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CNDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DNDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DR', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('DRDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('XS', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('XSDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')

/* Support TaxCurrencyTaxableAmt in Purchase table */
INSERT @ListTable VALUES('RQ', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('RQDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PO', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PODTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('GR', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('GRDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PIDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('CPDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('PRDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('GT', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('GTDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('XP', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')
INSERT @ListTable VALUES('XPDTL', 'TaxCurrencyTaxableAmt', '[d_Money] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  /* Update TaxCurrencyTaxableAmt value in document table*/
  if @colName='TaxCurrencyTaxableDR'
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = TaxableDR'
  else if @colName='TaxCurrencyTaxableCR'
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = TaxableCR'
  else
	set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = TaxableAmt'

  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* rename SourceKey column in CBIGDTL table*/
/* Add SourceDtlKey column in CBIGDTL table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceDtlKey')
ALTER TABLE [dbo].[CBIGDTL] ADD [SourceDtlKey] [bigint] NULL
GO

/* Update SourceDtlKey value in CBIGDTL table*/
DECLARE @sql NVARCHAR(300)
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceKey')
BEGIN
 set @sql = 'UPDATE CBIGDTL SET SourceDtlKey = SourceKey'
 Exec sp_executesql @sql
END
GO

/* modify SourceDtlKey column in CBIGDTL table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceDtlKey')
ALTER TABLE [dbo].[CBIGDTL] ALTER COLUMN [SourceDtlKey] [bigint] NOT NULL
GO

/* Drop SourceKey constraint in CBIGDTL table*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UC_CBIGDTL_SourceKey]') and OBJECTPROPERTY(id, N'IsUniqueCnst') = 1)
ALTER TABLE [dbo].[CBIGDTL] DROP CONSTRAINT [UC_CBIGDTL_SourceKey]
GO

/* Drop SourceKey column in CBIGDTL table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('CBIGDTL') AND name = 'SourceKey')
ALTER TABLE [dbo].[CBIGDTL] DROP COLUMN [SourceKey]
GO

/* Add SourceType & SourceDtlType fields in CBIGDTL table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
INSERT @ListTable VALUES('CBIGDTL', 'SourceType', '[d_SourceType] NULL')
INSERT @ListTable VALUES('CBIGDTL', 'SourceDtlType', '[d_DtlType] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* update SourceType column in CBIGDTL table*/
Update CBIGDTL Set SourceType = (Select APInvoice.SourceType From APInvoice Inner Join APInvoiceDtl On APInvoice.DocKey = APInvoiceDtl.DocKey Where APInvoiceDtl.DtlKey = CBIGDTL.SourceDtlKey) Where SourceType Is Null
GO

Update CBIGDTL Set SourceType = 'PB' Where SourceType Is Null
GO

UPDATE REGISTRY SET RegValue = '1.0.9.54' WHERE RegID = 2
GOD/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

/* Support IsRoundAdj, RoundAdj and FinalTotal to QT */
INSERT @ListTable VALUES('QT', 'IsRoundAdj', '[d_Boolean] NOT NULL DEFAULT ''F''')
INSERT @ListTable VALUES('QT', 'RoundAdj', '[d_Money] NULL')
INSERT @ListTable VALUES('QT', 'FinalTotal', '[d_Money] NULL')
INSERT @ListTable VALUES('PO', 'IsRoundAdj', '[d_Boolean] NOT NULL DEFAULT ''F''')
INSERT @ListTable VALUES('PO', 'RoundAdj', '[d_Money] NULL')
INSERT @ListTable VALUES('PO', 'FinalTotal', '[d_Money] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
	Exec sp_executesql @sql
	IF @@ERROR <> 0
	BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE QT SET RoundAdj = COALESCE (RoundAdj, 0), FinalTotal = NetTotal + COALESCE (RoundAdj, 0)
GO

UPDATE PO SET RoundAdj = COALESCE (RoundAdj, 0), FinalTotal = NetTotal + COALESCE (RoundAdj, 0)
GO

/* Add InclusiveTax fields in CBDTL and JEDTL table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
INSERT @ListTable VALUES('CBDTL', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''')
INSERT @ListTable VALUES('JEDTL', 'InclusiveTax', '[d_Boolean] NOT NULL DEFAULT ''F''')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE CBDTL SET InclusiveTax = (Select CB.InclusiveTax From CB Where CB.DocKey = CBDTL.DocKey) Where CBDTL.DocKey IN (Select CB.DocKey From CB)
GO

UPDATE JEDTL SET InclusiveTax = (Select JE.InclusiveTax From JE Where JE.DocKey = JEDTL.DocKey) Where JEDTL.DocKey IN (Select JE.DocKey From JE)
GO

/* Add ReferCNReason fields in ARAP Payment table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARPayment]') and name = N'ReferCNReason')
ALTER TABLE [ARPayment]
ADD [ReferCNReason] [d_Reason] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APPayment]') and name = N'ReferCNReason')
ALTER TABLE [APPayment]
ADD [ReferCNReason] [d_Reason] NULL
GO

UPDATE ARPayment SET ReferCNReason = (Select ARCN.Reason From ARCN Where ARCN.DocKey = ARPayment.ReferCNDocKey)
GO

UPDATE APPayment SET ReferCNReason = (Select APCN.Reason From APCN Where APCN.DocKey = APPayment.ReferCNDocKey)
GO

/* Add AmountExTax, LocalAmountExTax, AmountWithTax and LocalAmountWithTax fields in CBDTL table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
INSERT @ListTable VALUES('CBDTL', 'AmountExTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CBDTL', 'LocalAmountExTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CBDTL', 'AmountWithTax', '[d_Money] NULL')
INSERT @ListTable VALUES('CBDTL', 'LocalAmountWithTax', '[d_Money] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* update AmountExTax column in CBDTL table*/
UPDATE CBDTL SET AmountExTax = Amount Where InclusiveTax = 'F'
GO

UPDATE CBDTL SET AmountExTax = Amount - (Tax + (Select COALESCE(SUM(COALESCE(Tax, 0)), 0) From CBIGDTL Where CBIGDTL.CBDtlKey = CBDTL.DtlKey)) Where InclusiveTax != 'F'
GO

/* update LocalAmountExTax column in CBDTL table*/
UPDATE CBDTL SET LocalAmountExTax = LocalAmount Where InclusiveTax = 'F'
GO

UPDATE CBDTL SET LocalAmountExTax = LocalAmount - (LocalTax + (Select COALESCE(SUM(COALESCE(LocalTax, 0)), 0) From CBIGDTL Where CBIGDTL.CBDtlKey = CBDTL.DtlKey)) Where InclusiveTax != 'F'
GO

/* update AmountWithTax column in CBDTL table*/
UPDATE CBDTL SET AmountWithTax = AmountExTax + (Tax + (Select COALESCE(SUM(COALESCE(Tax, 0)), 0) From CBIGDTL Where CBIGDTL.CBDtlKey = CBDTL.DtlKey))
GO

/* update LocalAmountWithTax column in CBDTL table*/
UPDATE CBDTL SET LocalAmountWithTax = LocalAmountExTax + (LocalTax + (Select COALESCE(SUM(COALESCE(LocalTax, 0)), 0) From CBIGDTL Where CBIGDTL.CBDtlKey = CBDTL.DtlKey))
GO

/* Add RCHQTaxTransKeymap fields in CB table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CB]') and name = N'RCHQTaxTransKeymap')
ALTER TABLE [CB]
ADD [RCHQTaxTransKeymap] [varbinary](max) NULL
GO

/* To support 60 characters of ReportType in DefaultReport table */
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('DefaultReport') AND name = 'ReportType')
ALTER TABLE [DefaultReport] ALTER COLUMN [ReportType] [nvarchar] (60) NOT NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.55' WHERE RegID = 2
GO0/* Add NegativeKOPayment fields in CBDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CBDTL]') and name = N'NegativeKOPayment')
ALTER TABLE [CBDTL]
ADD [NegativeKOPayment] [d_Boolean] NULL
GO

/* Add FilterByAccNo fields in Users table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'FilterByAccNo')
ALTER TABLE [Users]
ADD [FilterByAccNo] [d_Boolean] NOT NULL DEFAULT 'F'
GO

/* Create UsersAccNo table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UsersAccNo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[UsersAccNo]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UsersAccNo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[UsersAccNo] (
	[UserID] [d_UserID] NOT NULL,
	[AccNo] [d_AccNo] NOT NULL,
	CONSTRAINT [PK_UsersAccNo] PRIMARY KEY CLUSTERED 
	(
		[UserID],
		[AccNo]
	)
) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.56' WHERE RegID = 2
GO�/* Add IsTaxRegistered fields in Debtor table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'IsTaxRegistered')
ALTER TABLE Debtor
ADD [IsTaxRegistered] [d_Boolean] NULL
GO

UPDATE Debtor SET IsTaxRegistered = 'T' Where TaxRegisterNo != ''
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), DefaultValue nvarchar(1))
/* Support SupplyPurchase in ARDN, ARCN, APDN and APCN detail table */
INSERT @ListTable VALUES('ARDNDTL', 'SupplyPurchase', '[d_SupplyPurchase] NULL', 'S')
INSERT @ListTable VALUES('ARCNDTL', 'SupplyPurchase', '[d_SupplyPurchase] NULL', 'S')
INSERT @ListTable VALUES('APDNDTL', 'SupplyPurchase', '[d_SupplyPurchase] NULL', 'P')
INSERT @ListTable VALUES('APCNDTL', 'SupplyPurchase', '[d_SupplyPurchase] NULL', 'P')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @defaultValue  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, DefaultValue From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @defaultValue

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = ''' + @defaultValue + ''' Where [' + @colName + '] is null'
  Exec sp_executesql @sql

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [d_SupplyPurchase] NOT NULL'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @defaultValue
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.57' WHERE RegID = 2
GO�
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Support DocDate2 in Purchase and AP table */
INSERT @ListTable VALUES('PI', 'DocDate2', '[datetime] NULL')
INSERT @ListTable VALUES('CP', 'DocDate2', '[datetime] NULL')
INSERT @ListTable VALUES('PR', 'DocDate2', '[datetime] NULL')
INSERT @ListTable VALUES('APInvoice', 'DocDate2', '[datetime] NULL')
INSERT @ListTable VALUES('APCN', 'DocDate2', '[datetime] NULL')
INSERT @ListTable VALUES('APDN', 'DocDate2', '[datetime] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[ARAPBadDebtRecovery2]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
	IF EXISTS(SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_ARAPBadDebtRecovery_Doc]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
	BEGIN
		ALTER TABLE [dbo].[ARAPBadDebtRecovery] DROP CONSTRAINT [FK_ARAPBadDebtRecovery_Doc]
	END

	IF EXISTS(SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[PK_ARAPBadDebtRecovery]') and OBJECTPROPERTY(id,N'IsPrimaryKey') = 1)
	BEGIN
		ALTER TABLE [dbo].[ARAPBadDebtRecovery] DROP CONSTRAINT [PK_ARAPBadDebtRecovery]
	END

	CREATE TABLE [dbo].[ARAPBadDebtRecovery2](
		[DocType] [d_DocType] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[PaymentDocType] [d_DocType] NOT NULL,
		[PaymentDocKey] [bigint] NOT NULL,
		[JEDocKey] [bigint] NULL,
		[JEDRDtlKey] [bigint] NULL,
		[JECRDtlKey] [bigint] NULL,
		[JEDocDate] [datetime] NULL,
		CONSTRAINT [PK_ARAPBadDebtRecovery] PRIMARY KEY CLUSTERED
		(
			[DocType] ASC,
			[DocKey] ASC,
			[PaymentDocType] ASC,
			[PaymentDocKey] ASC
		),
		CONSTRAINT [FK_ARAPBadDebtRecovery_Doc] FOREIGN KEY 
		(
		[DocType], [DocKey]
		) REFERENCES [dbo].[ARAPBadDebt] (
		[DocType], [DocKey]
		)
	) ON [PRIMARY]
	
	-- After ARAPBadDebtRecovery2 table is created

	IF EXISTS (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARAPBadDebtRecovery]'))
	BEGIN
		-- Copy data from ARAPBadDebtRecovery table to ARAPBadDebtRecovery2 table
		INSERT INTO ARAPBadDebtRecovery2 (DocType, DocKey, PaymentDocType, PaymentDocKey, JEDocKey, JEDRDtlKey, JECRDtlKey, JEDocDate)
		SELECT DocType, DocKey, CASE WHEN DocType = 'PB' THEN 'PP' ELSE 'RP' END AS PaymentDocType, PaymentDocKey, JEDocKey, JEDRDtlKey, JECRDtlKey, JEDocDate FROM ARAPBadDebtRecovery

		DROP TABLE [dbo].[ARAPBadDebtRecovery]
		EXEC SP_RENAME 'ARAPBadDebtRecovery2','ARAPBadDebtRecovery';
	END	
END
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLDTL]') and name = N'SourceDtlKey')
  ALTER TABLE [dbo].[GLDTL] ADD [SourceDtlKey] [bigint] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.58' WHERE RegID = 2
GO^if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTProcessor]') and name = N'ParentGSTKey')
  ALTER TABLE [dbo].[GSTProcessor] ADD [ParentGSTKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTProcessor]') and name = N'Seq')
  ALTER TABLE [dbo].[GSTProcessor] ADD [Seq] [int] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTProcessor]') and name = N'Amendment')
  ALTER TABLE [dbo].[GSTProcessor] DROP COLUMN [Amendment]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.59' WHERE RegID = 2
GO�if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferISJEIsPayment')
ALTER TABLE [dbo].[APInvoice] ADD [ReferISJEIsPayment] [d_Boolean] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferISJEDocKey')
ALTER TABLE [dbo].[APInvoice] ADD [ReferISJEDocKey] [bigint] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferISJEDocNo')
ALTER TABLE [dbo].[APInvoice] ADD [ReferISJEDocNo] [d_DocNo] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferISJEIsNonTaxableSupply')
ALTER TABLE [dbo].[APInvoice] ADD [ReferISJEIsNonTaxableSupply] [d_Boolean] NULL
GO

UPDATE APInvoice Set ReferISJEIsPayment = 'T' Where ReferISJEDocKey IS NULL

UPDATE REGISTRY SET RegValue = '1.0.9.60' WHERE RegID = 2
GO//* Create GSTPartialExemption table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTPartialExemption]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[GSTPartialExemption]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTPartialExemption]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[GSTPartialExemption] (
	   [FromDate] [datetime] NOT NULL,
	   [ToDate] [datetime] NOT NULL,
	   [GSTSeq] [int] NOT NULL,
	   [IsRemainPeriod] [d_Boolean] NOT NULL,
	   [TTaxableAmt] [d_Money] NULL,
	   [ETaxableAmt] [d_Money] NULL,
	   [O1TaxableAmt] [d_Money] NULL,
	   [O2TaxableAmt] [d_Money] NULL,
	   [R1_O1TaxableAmt] [d_Money] NULL,
	   [R1_O2TaxableAmt] [d_Money] NULL,
	   [R2TaxableAmt] [d_Money] NULL,
	   [R3TaxableAmt] [d_Money] NULL,
	   [R4TaxableAmt] [d_Money] NULL,
	   [R5TaxableAmt] [d_Money] NULL,
	   [N43Tax] [d_Money] NULL,
	   [RETax] [d_Money] NULL,
	   [IsDeMinimis] [d_Boolean] NULL,
	   [IRRate] [d_Percent] NULL,
	   [N43TaxClaim] [d_Money] NULL,
	   [RETaxClaim] [d_Money] NULL,
	   [JEPeriodDocKey] [bigint] NULL,
	   [JEPeriodAdjDocKey] [bigint] NULL,
	   [JEAnnualAdjDocKey] [bigint] NULL,
	   [IsDeMinimisCalcContent] [nvarchar](max) NULL,
	   [IRRateCalcContent] [nvarchar](max) NULL,
       CONSTRAINT [PK_GSTPartialExemption] PRIMARY KEY CLUSTERED
       (
             [FromDate] ASC,
			 [ToDate] ASC,
			 [GSTSeq] ASC
       )
) ON [PRIMARY]
GO

/* Add IsPartialExemption field in GSTProcessor table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTProcessor]') and name = N'IsPartialExemption')
  ALTER TABLE [dbo].[GSTProcessor] ADD [IsPartialExemption] [d_Boolean] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.61' WHERE RegID = 2
GOu/* Merge BL_X into TX-N43 */
DECLARE @OldTaxType d_TaxType, @NewTaxType d_TaxType
SET @OldTaxType = 'BL_X'
SET @NewTaxType = 'TX-N43'

if exists (select * from dbo.[TaxType] where TaxType = @OldTaxType)
BEGIN
	if not exists (select * from dbo.[TaxType] where TaxType = @NewTaxType)
	BEGIN
	  INSERT INTO TaxType(TaxType, Description, TaxRate, Inclusive, TaxAccNo, IsActive, LastUpdate, TaxTypeCategory, IRASTaxCode, SupplyPurchase, IsDefault, IsZeroRate, UseTrxTaxAccNo) 
	  SELECT @NewTaxType, 'Input Tax 6% - To make Non-Incidental Exempt Supplies', TaxRate, Inclusive, TaxAccNo, IsActive, LastUpdate, TaxTypeCategory, @NewTaxType, SupplyPurchase, IsDefault, IsZeroRate, UseTrxTaxAccNo
	  FROM TaxType WHERE TaxType = @OldTaxType
	END
	
	--Update related tables
	DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

	INSERT @ListTable VALUES('CBDTL', 'TaxType')
	INSERT @ListTable VALUES('CBIGDTL', 'TaxType')
	INSERT @ListTable VALUES('JEDTL', 'TaxType')
	INSERT @ListTable VALUES('TaxTrans', 'TaxType')
	INSERT @ListTable VALUES('TaxTransAuditDtl', 'TaxType')
	INSERT @ListTable VALUES('Debtor', 'TaxType')
	INSERT @ListTable VALUES('Creditor', 'TaxType')
	INSERT @ListTable VALUES('Item', 'TaxType')
	INSERT @ListTable VALUES('ARInvoiceDTL', 'TaxType')
	INSERT @ListTable VALUES('ARDNDTL', 'TaxType')
	INSERT @ListTable VALUES('ARCNDTL', 'TaxType')
	INSERT @ListTable VALUES('APInvoiceDTL', 'TaxType')
	INSERT @ListTable VALUES('APDNDTL', 'TaxType')
	INSERT @ListTable VALUES('APCNDTL', 'TaxType')
	INSERT @ListTable VALUES('IPHIST', 'TaxType')
	INSERT @ListTable VALUES('QTDTL', 'TaxType')
	INSERT @ListTable VALUES('SODTL', 'TaxType')
	INSERT @ListTable VALUES('DODTL', 'TaxType')
	INSERT @ListTable VALUES('IVDTL', 'TaxType')
	INSERT @ListTable VALUES('CSDTL', 'TaxType')
	INSERT @ListTable VALUES('DNDTL', 'TaxType')
	INSERT @ListTable VALUES('CNDTL', 'TaxType')
	INSERT @ListTable VALUES('XSDTL', 'TaxType')
	INSERT @ListTable VALUES('DRDTL', 'TaxType')
	INSERT @ListTable VALUES('RQDTL', 'TaxType')
	INSERT @ListTable VALUES('PODTL', 'TaxType')
	INSERT @ListTable VALUES('GRDTL', 'TaxType')
	INSERT @ListTable VALUES('PIDTL', 'TaxType')
	INSERT @ListTable VALUES('CPDTL', 'TaxType')
	INSERT @ListTable VALUES('PRDTL', 'TaxType')
	INSERT @ListTable VALUES('XPDTL', 'TaxType')
	INSERT @ListTable VALUES('GTDTL', 'TaxType')
	INSERT @ListTable VALUES('Footer', 'TaxType')
	INSERT @ListTable VALUES('QT', 'Footer1TaxType')
	INSERT @ListTable VALUES('QT', 'Footer2TaxType')
	INSERT @ListTable VALUES('QT', 'Footer3TaxType')
	INSERT @ListTable VALUES('SO', 'Footer1TaxType')
	INSERT @ListTable VALUES('SO', 'Footer2TaxType')
	INSERT @ListTable VALUES('SO', 'Footer3TaxType')
	INSERT @ListTable VALUES('DO', 'Footer1TaxType')
	INSERT @ListTable VALUES('DO', 'Footer2TaxType')
	INSERT @ListTable VALUES('DO', 'Footer3TaxType')
	INSERT @ListTable VALUES('IV', 'Footer1TaxType')
	INSERT @ListTable VALUES('IV', 'Footer2TaxType')
	INSERT @ListTable VALUES('IV', 'Footer3TaxType')
	INSERT @ListTable VALUES('CS', 'Footer1TaxType')
	INSERT @ListTable VALUES('CS', 'Footer2TaxType')
	INSERT @ListTable VALUES('CS', 'Footer3TaxType')
	INSERT @ListTable VALUES('DN', 'Footer1TaxType')
	INSERT @ListTable VALUES('DN', 'Footer2TaxType')
	INSERT @ListTable VALUES('DN', 'Footer3TaxType')
	INSERT @ListTable VALUES('CN', 'Footer1TaxType')
	INSERT @ListTable VALUES('CN', 'Footer2TaxType')
	INSERT @ListTable VALUES('CN', 'Footer3TaxType')
	INSERT @ListTable VALUES('XS', 'Footer1TaxType')
	INSERT @ListTable VALUES('XS', 'Footer2TaxType')
	INSERT @ListTable VALUES('XS', 'Footer3TaxType')
	INSERT @ListTable VALUES('DR', 'Footer1TaxType')
	INSERT @ListTable VALUES('DR', 'Footer2TaxType')
	INSERT @ListTable VALUES('DR', 'Footer3TaxType')
	INSERT @ListTable VALUES('RQ', 'Footer1TaxType')
	INSERT @ListTable VALUES('RQ', 'Footer2TaxType')
	INSERT @ListTable VALUES('RQ', 'Footer3TaxType')
	INSERT @ListTable VALUES('PO', 'Footer1TaxType')
	INSERT @ListTable VALUES('PO', 'Footer2TaxType')
	INSERT @ListTable VALUES('PO', 'Footer3TaxType')
	INSERT @ListTable VALUES('GR', 'Footer1TaxType')
	INSERT @ListTable VALUES('GR', 'Footer2TaxType')
	INSERT @ListTable VALUES('GR', 'Footer3TaxType')
	INSERT @ListTable VALUES('PI', 'Footer1TaxType')
	INSERT @ListTable VALUES('PI', 'Footer2TaxType')
	INSERT @ListTable VALUES('PI', 'Footer3TaxType')
	INSERT @ListTable VALUES('CP', 'Footer1TaxType')
	INSERT @ListTable VALUES('CP', 'Footer2TaxType')
	INSERT @ListTable VALUES('CP', 'Footer3TaxType')
	INSERT @ListTable VALUES('PR', 'Footer1TaxType')
	INSERT @ListTable VALUES('PR', 'Footer2TaxType')
	INSERT @ListTable VALUES('PR', 'Footer3TaxType')
	INSERT @ListTable VALUES('XP', 'Footer1TaxType')
	INSERT @ListTable VALUES('XP', 'Footer2TaxType')
	INSERT @ListTable VALUES('XP', 'Footer3TaxType')
	INSERT @ListTable VALUES('GT', 'Footer1TaxType')
	INSERT @ListTable VALUES('GT', 'Footer2TaxType')
	INSERT @ListTable VALUES('GT', 'Footer3TaxType')
	INSERT @ListTable VALUES('DRProcessing', 'TaxType')
	INSERT @ListTable VALUES('Item', 'PurchaseTaxType')
	INSERT @ListTable VALUES('GLDTL', 'TaxType')
	INSERT @ListTable VALUES('GLMast', 'InputTaxType')
	INSERT @ListTable VALUES('GLMast', 'OutputTaxType')
	INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxType')
	INSERT @ListTable VALUES('ARPaymentDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('ARRefundDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('ARDepositDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('ARRefundDepositDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('APPaymentDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('APRefundDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('APDepositDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('APRefundDepositDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('CBPaymentDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('POSDTL', 'TaxType')
	INSERT @ListTable VALUES('PosDtlDelivery', 'TaxType')
	INSERT @ListTable VALUES('POS', 'TaxType')
	INSERT @ListTable VALUES('POS', 'ServiceTaxType')

	DECLARE @sql NVARCHAR(200)
	DECLARE @dec NVARCHAR(100)
	DECLARE @tableName  NVARCHAR(50)
	DECLARE @colName  NVARCHAR(50)
	set @dec = '@NewTaxType d_TaxType, @OldTaxType d_TaxType'

	DECLARE @cur_item cursor
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	
	if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[' + @tableName + ']') and name = N'' + @colName + '') 
	BEGIN
	  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewTaxType WHERE [' + @colName + '] = @OldTaxType'

	  Exec sp_executesql @sql, @dec, @NewTaxType, @OldTaxType
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END
	END
	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- Execute stored procedure created by plug ins
	DECLARE @spName  NVARCHAR(50)
	DECLARE @cur_sp cursor
	SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeTaxType_%'

	OPEN @cur_sp
	FETCH NEXT FROM @cur_sp INTO @spName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  DECLARE @return_status int
	  EXEC @return_status = @spName @OldTaxType, @NewTaxType
	  IF (@@ERROR <> 0 OR @return_status = 1)
	  BEGIN
		CLOSE @cur_sp
		DEALLOCATE @cur_sp
		RETURN
	  END

	  FETCH NEXT FROM @cur_sp INTO @spName
	END

	CLOSE @cur_sp
	DEALLOCATE @cur_sp

	-- Finally, delete @OldTaxType
	DELETE FROM TaxType WHERE TaxType = @OldTaxType
END
GOj'/* Recreate GSTPartialExemption table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTPartialExemption]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[GSTPartialExemption]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTPartialExemption]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[GSTPartialExemption] (
	   [FromDate] [datetime] NOT NULL,
	   [ToDate] [datetime] NOT NULL,
	   [GSTSeq] [int] NOT NULL,
	   [IsRemainPeriod] [d_Boolean] NOT NULL,
	   [T1TaxableAmt] [d_Money] NULL,
	   [T2TaxableAmt] [d_Money] NULL,
	   [ETaxableAmt] [d_Money] NULL,
	   [O1TaxableAmt] [d_Money] NULL,
	   [O2TaxableAmt] [d_Money] NULL,
	   [R1_O1TaxableAmt] [d_Money] NULL,
	   [R1_O2TaxableAmt] [d_Money] NULL,
	   [R2TaxableAmt] [d_Money] NULL,
	   [R3TaxableAmt] [d_Money] NULL,
	   [R4TaxableAmt] [d_Money] NULL,
	   [R5TaxableAmt] [d_Money] NULL,
	   [N43Tax] [d_Money] NULL,
	   [RETax] [d_Money] NULL,
	   [IsDeMinimis] [d_Boolean] NULL,
	   [IRRate] [d_Percent] NULL,
	   [N43TaxClaim] [d_Money] NULL,
	   [RETaxClaim] [d_Money] NULL,
	   [N43TaxClaimPeriodAdj] [d_Money] NULL,
	   [RETaxClaimPeriodAdj] [d_Money] NULL,
	   [JEPeriodDocKey] [bigint] NULL,
	   [JEPeriodAdjDocKey] [bigint] NULL,
	   [JEAnnualAdjDocKey] [bigint] NULL,
	   [IsDeMinimisCalcContent] [nvarchar](max) NULL,
	   [IRRateCalcContent] [nvarchar](max) NULL,
	   [ProcessJEPeriodAdj] [d_Boolean] NULL,
       CONSTRAINT [PK_GSTPartialExemption] PRIMARY KEY CLUSTERED
       (
             [FromDate] ASC,
			 [ToDate] ASC,
			 [GSTSeq] ASC
       )
) ON [PRIMARY]
GO

/* Drop Foreign Key to GSTCapitalGoodsDTL, GSTCapitalGoodsSchedule and GSTCapitalGoodsScheduleAdj table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GSTCapitalGoodsDTL_DocKey]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[GSTCapitalGoodsDTL] DROP CONSTRAINT [FK_GSTCapitalGoodsDTL_DocKey]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GSTCapitalGoodsSchedule_DocKey]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[GSTCapitalGoodsSchedule] DROP CONSTRAINT [FK_GSTCapitalGoodsSchedule_DocKey]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GSTCapitalGoodsScheduleAdj_DocKey]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[GSTCapitalGoodsScheduleAdj] DROP CONSTRAINT [FK_GSTCapitalGoodsScheduleAdj_DocKey]
GO

/* Create GSTCapitalGoods table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTCapitalGoods]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[GSTCapitalGoods]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTCapitalGoods]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[GSTCapitalGoods] (
	   [DocKey] [bigint] NOT NULL,
	   [CapitalCode] [nvarchar](50) NOT NULL,
	   [Description] [nvarchar](200) NULL,
	   [FurtherDescription] [nvarchar](max) NULL,
	   [CommenceDate] [datetime] NOT NULL,
	   [DisposalDate] [datetime] NULL,
	   [IsLost] [d_Boolean] NOT NULL,
	   [DocumentLink] [nvarchar](max) NULL,
	   [NumOfInterval] [int] NOT NULL,
	   [TotalAmount] [d_Money] NULL,
	   [TotalTax] [d_Money] NULL,
       CONSTRAINT [PK_GSTCapitalGoods] PRIMARY KEY CLUSTERED
       (
             [DocKey] ASC
       ),
       CONSTRAINT [UIX_GSTCapitalGoods_CapitalCode] UNIQUE NONCLUSTERED
       (
             [CapitalCode] ASC
       )
) ON [PRIMARY]
GO

/* Create GSTCapitalGoodsDTL table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTCapitalGoodsDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[GSTCapitalGoodsDTL]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTCapitalGoodsDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[GSTCapitalGoodsDTL] (
	   [DtlKey] [bigint] NOT NULL,
	   [DocKey] [bigint] NOT NULL,
	   [ParentDtlKey] [bigint] NULL,
	   [Seq] [int] NOT NULL,
	   [Description] [nvarchar](200) NULL,
	   [FurtherDescription] [nvarchar](max) NULL,
	   [IncurredDate] [datetime] NOT NULL,
	   [DisposalDate] [datetime] NULL,
	   [IsLost] [d_Boolean] NOT NULL,
	   [Amount] [d_Money] NULL,
	   [Tax] [d_Money] NULL,
       CONSTRAINT [PK_GSTCapitalGoodsDTL] PRIMARY KEY CLUSTERED
       (
             [DtlKey] ASC
       )
) ON [PRIMARY]
GO

/* Create GSTCapitalGoodsSchedule table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTCapitalGoodsSchedule]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[GSTCapitalGoodsSchedule]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTCapitalGoodsSchedule]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[GSTCapitalGoodsSchedule] (
	   [DocKey] [bigint] NOT NULL,
	   [DtlKey] [bigint] NOT NULL,
	   [GSTSeq] [int] NOT NULL,
	   [Interval] [int] NOT NULL,
	   [FromDate] [datetime] NOT NULL,
	   [ToDate] [datetime] NOT NULL,
	   [RETax] [d_Money] NULL,
	   [IRRate] [d_Percent] NULL,
	   [RETaxClaim] [d_Money] NULL,
	   [JEAdjDocKey] [bigint] NULL,
	   [IRRateCalcContent] [nvarchar](max) NULL,
       CONSTRAINT [PK_GSTCapitalGoodsSchedule] PRIMARY KEY CLUSTERED
       (
             [DocKey] ASC,
			 [DtlKey] ASC,
			 [GSTSeq] ASC,
			 [Interval] ASC
       )
) ON [PRIMARY]
GO

/* Create GSTCapitalGoodsScheduleAdj table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTCapitalGoodsScheduleAdj]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[GSTCapitalGoodsScheduleAdj]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTCapitalGoodsScheduleAdj]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[GSTCapitalGoodsScheduleAdj] (
	   [DocKey] [bigint] NOT NULL,
	   [DtlKey] [bigint] NOT NULL,
	   [GSTSeq] [int] NOT NULL,
	   [Interval] [int] NOT NULL,
	   [IntervalAdj] [int] NOT NULL,
	   [CGARate] [d_Percent] NULL,
	   [CGAAmount] [d_Money] NULL,
	   [CGARateCalcContent] [nvarchar](max) NULL,
	   [CGAAmountCalcContent] [nvarchar](max) NULL,
       CONSTRAINT [PK_GSTCapitalGoodsScheduleAdj] PRIMARY KEY CLUSTERED
       (
             [DocKey] ASC,
			 [DtlKey] ASC,
			 [GSTSeq] ASC,
			 [Interval] ASC,
			 [IntervalAdj] ASC
       )
) ON [PRIMARY]
GO


/* Add Foreign Key to GSTCapitalGoodsDTL, GSTCapitalGoodsSchedule and GSTCapitalGoodsScheduleAdj table */
ALTER TABLE [dbo].[GSTCapitalGoodsDTL] WITH CHECK ADD CONSTRAINT [FK_GSTCapitalGoodsDTL_DocKey] 
FOREIGN KEY([DocKey])
REFERENCES [dbo].[GSTCapitalGoods] ([DocKey])
GO

ALTER TABLE [dbo].[GSTCapitalGoodsSchedule] WITH CHECK ADD CONSTRAINT [FK_GSTCapitalGoodsSchedule_DocKey] 
FOREIGN KEY([DocKey])
REFERENCES [dbo].[GSTCapitalGoods] ([DocKey])
GO

ALTER TABLE [dbo].[GSTCapitalGoodsScheduleAdj] WITH CHECK ADD CONSTRAINT [FK_GSTCapitalGoodsScheduleAdj_DocKey] 
FOREIGN KEY([DocKey])
REFERENCES [dbo].[GSTCapitalGoods] ([DocKey])
GO

/* Support GST Capital Goods Trigger */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateGSTCapitalGoodsChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateGSTCapitalGoodsChangeCount]
GO

CREATE TRIGGER [dbo].[UpdateGSTCapitalGoodsChangeCount] ON [dbo].[GSTCapitalGoods]
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='GSTCapitalGoods'
SET NOCOUNT OFF
GO

if not exists (SELECT * FROM ChangeCount WHERE TableName='GSTCapitalGoods')
INSERT INTO ChangeCount VALUES ('GSTCapitalGoods',0)
GO

/* Add IsCapitalGoodsAdj field in GSTProcessor table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTProcessor]') and name = N'IsCapitalGoodsAdj')
  ALTER TABLE [dbo].[GSTProcessor] ADD [IsCapitalGoodsAdj] [d_Boolean] NULL
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support TaxPermitNo to A/R Invoice, ARCN, ARDN, IV, CS, CN, DN */
INSERT @ListTable VALUES('ARInvoiceDTL', 'TaxPermitNo', 'nvarchar(20) NULL', 'A')
INSERT @ListTable VALUES('ARCNDTL', 'TaxPermitNo', 'nvarchar(20) NULL', 'A')
INSERT @ListTable VALUES('ARDNDTL', 'TaxPermitNo', 'nvarchar(20) NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'TaxPermitNo', 'nvarchar(20) NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'TaxPermitNo', 'nvarchar(20) NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'TaxPermitNo', 'nvarchar(20) NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'TaxPermitNo', 'nvarchar(20) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.62' WHERE RegID = 2
GOQ/* Drop Foreign Key to WithholdingTax and WithholdingTaxDocDTL table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_WithholdingTax_TaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[WithholdingTax] DROP CONSTRAINT [FK_WithholdingTax_TaxAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_WithholdingTaxDocDTL_WithholdingTaxCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[WithholdingTaxDocDTL] DROP CONSTRAINT [FK_WithholdingTaxDocDTL_WithholdingTaxCode]
GO

if not exists (select * from dbo.systypes where name = N'd_WithholdingTaxCode')
  EXEC sp_addtype N'd_WithholdingTaxCode', N'nvarchar (14)'
GO

if not exists (select * from dbo.systypes where name = N'd_ReceiptPayment')
  EXEC sp_addtype N'd_ReceiptPayment', N'char (1)'
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WithholdingTax]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[WithholdingTax]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WithholdingTax]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[WithholdingTax] (
	   [WithholdingTaxCode] [d_WithholdingTaxCode] NOT NULL,
	   [Description] [nvarchar] (80) NULL, 
	   [WithholdingTaxRate] [d_Percent] NOT NULL,
	   [WithholdingTaxAccNo] [d_AccNo] NOT NULL,
	   --[ReceiptTaxAccNo] [d_AccNo] NOT NULL,
	   --[PaymentTaxAccNo] [d_AccNo] NOT NULL,
	   [IsActive] [d_Boolean] NOT NULL,
	   [LastUpdate] [int] NOT NULL,
	   [ReceiptPayment] [d_ReceiptPayment] NOT NULL,
	   [IsDefault] [d_Boolean] NOT NULL,
       CONSTRAINT [PK_WithholdingTax] PRIMARY KEY CLUSTERED
       (
             [WithholdingTaxCode] ASC
       )
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WithholdingTaxDocDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[WithholdingTaxDocDTL]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WithholdingTaxDocDTL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[WithholdingTaxDocDTL] (
	   [TaxDocDtlKey] [bigint] NOT NULL,
	   [DocType] [d_DocType] NOT NULL,
	   [DocKey] [bigint] NOT NULL,
	   [DtlKey] [bigint] NOT NULL,
	   [PaymentAmt] [d_Money] NULL,
	   [WithholdingTaxCode] [d_WithholdingTaxCode] NULL,
	   [WithholdingTaxRate] [d_Percent] NULL,
	   [WithholdingTax] [d_Money] NULL,
       CONSTRAINT [PK_WithholdingTaxDocDTL] PRIMARY KEY CLUSTERED
       (
             [TaxDocDtlKey] ASC
       )
) ON [PRIMARY]
GO

/* Add Foreign Key to WithholdingTax and WithholdingTaxDocDTL table */
ALTER TABLE [dbo].[WithholdingTax] WITH CHECK ADD CONSTRAINT [FK_WithholdingTax_TaxAccNo] 
FOREIGN KEY([WithholdingTaxAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

ALTER TABLE [dbo].[WithholdingTaxDocDTL] WITH CHECK ADD CONSTRAINT [FK_WithholdingTaxDocDTL_WithholdingTaxCode] 
FOREIGN KEY([WithholdingTaxCode])
REFERENCES [dbo].[WithholdingTax] ([WithholdingTaxCode])
GO

/* Support WithholdingTax Trigger */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateWithholdingTaxChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateWithholdingTaxChangeCount]
GO

CREATE TRIGGER [dbo].[UpdateWithholdingTaxChangeCount] ON [dbo].[WithholdingTax]
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='WithholdingTax'
SET NOCOUNT OFF
GO

if not exists (SELECT * FROM ChangeCount WHERE TableName='WithholdingTax')
INSERT INTO ChangeCount VALUES ('WithholdingTax',0)
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support fields to WithholdingTaxTrans, Debtor & Creditor */
INSERT @ListTable VALUES('WithholdingTaxTrans', 'ReceiptPayment', 'd_ReceiptPayment NULL', 'A')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'TaxableName', 'd_AccDescription NULL', 'A')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'WithholdingTaxCode', 'd_WithholdingTaxCode NULL', 'A')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'WithholdingTaxRate', 'd_Percent NULL', 'A')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'CurrencyCode', 'd_CurrencyCode NULL', 'A')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'CurrencyRate', 'd_CurrencyRate NULL', 'A')
INSERT @ListTable VALUES('Debtor', 'WithholdingTaxPercent', 'd_Percent NULL', 'D')
INSERT @ListTable VALUES('Debtor', 'ReceiptWithholdingTaxCode', 'd_WithholdingTaxCode NULL', 'A')
INSERT @ListTable VALUES('Debtor', 'PaymentWithholdingTaxCode', 'd_WithholdingTaxCode NULL', 'A')
INSERT @ListTable VALUES('Creditor', 'WithholdingTaxPercent', 'd_Percent NULL', 'D')
INSERT @ListTable VALUES('Creditor', 'ReceiptWithholdingTaxCode', 'd_WithholdingTaxCode NULL', 'A')
INSERT @ListTable VALUES('Creditor', 'PaymentWithholdingTaxCode', 'd_WithholdingTaxCode NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO�/* update SourceDtlKey column in WithholdingTaxTrans table*/
Delete From WithholdingTaxTrans Where SourceDtlKey NOT IN (Select DtlKey From WithholdingTaxDocDTL)
GO

Update WithholdingTaxTrans Set SourceDtlKey = (Select TaxDocDtlKey From WithholdingTaxDocDTL Where WithholdingTaxDocDTL.DtlKey=WithholdingTaxTrans.SourceDtlKey)
GO

/* update ReceiptPayment column in WithholdingTaxTrans table*/
Update WithholdingTaxTrans Set ReceiptPayment = 'R' Where SourceType IN ('RP', 'PF')
GO

Update WithholdingTaxTrans Set ReceiptPayment = 'P' Where SourceType IN ('PP', 'RF')
GO

/* update TaxableName column in WithholdingTaxTrans table*/
Update WithholdingTaxTrans Set TaxableName = (Select Debtor.CompanyName From Debtor Inner Join ARPayment On Debtor.AccNo = ARPayment.DebtorCode Where ARPayment.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'RP'
GO

Update WithholdingTaxTrans Set TaxableName = (Select Debtor.CompanyName From Debtor Inner Join ARRefund On Debtor.AccNo = ARRefund.DebtorCode Where ARRefund.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'RF'
GO

Update WithholdingTaxTrans Set TaxableName = (Select Creditor.CompanyName From Creditor Inner Join APPayment On Creditor.AccNo = APPayment.CreditorCode Where APPayment.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'PP'
GO

Update WithholdingTaxTrans Set TaxableName = (Select Creditor.CompanyName From Creditor Inner Join APRefund On Creditor.AccNo = APRefund.CreditorCode Where APRefund.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'PF'
GO

Update WithholdingTaxTrans Set TaxableName = Null Where TaxableName = ''
GO

/* update WithholdingTaxCode column in WithholdingTaxTrans table*/
Update WithholdingTaxTrans Set WithholdingTaxCode = (Select WithholdingTaxCode From WithholdingTaxDocDTL Where WithholdingTaxDocDTL.TaxDocDtlKey=WithholdingTaxTrans.SourceDtlKey) Where SourceType = 'RP'
GO

Update WithholdingTaxTrans Set WithholdingTaxCode = (Select WithholdingTaxCode From WithholdingTaxDocDTL Where WithholdingTaxDocDTL.TaxDocDtlKey=WithholdingTaxTrans.SourceDtlKey) Where SourceType = 'RF'
GO

Update WithholdingTaxTrans Set WithholdingTaxCode = (Select WithholdingTaxCode From WithholdingTaxDocDTL Where WithholdingTaxDocDTL.TaxDocDtlKey=WithholdingTaxTrans.SourceDtlKey) Where SourceType = 'PP'
GO

Update WithholdingTaxTrans Set WithholdingTaxCode = (Select WithholdingTaxCode From WithholdingTaxDocDTL Where WithholdingTaxDocDTL.TaxDocDtlKey=WithholdingTaxTrans.SourceDtlKey) Where SourceType = 'PF'
GO

Update WithholdingTaxTrans Set WithholdingTaxCode = Null Where WithholdingTaxCode = ''
GO

/* update WithholdingTaxRate column in WithholdingTaxTrans table*/
Update WithholdingTaxTrans Set WithholdingTaxRate = (Select WithholdingTaxRate From WithholdingTaxDocDTL Where WithholdingTaxDocDTL.TaxDocDtlKey=WithholdingTaxTrans.SourceDtlKey) Where SourceType = 'RP'
GO

Update WithholdingTaxTrans Set WithholdingTaxRate = (Select WithholdingTaxRate From WithholdingTaxDocDTL Where WithholdingTaxDocDTL.TaxDocDtlKey=WithholdingTaxTrans.SourceDtlKey) Where SourceType = 'RF'
GO

Update WithholdingTaxTrans Set WithholdingTaxRate = (Select WithholdingTaxRate From WithholdingTaxDocDTL Where WithholdingTaxDocDTL.TaxDocDtlKey=WithholdingTaxTrans.SourceDtlKey) Where SourceType = 'PP'
GO

Update WithholdingTaxTrans Set WithholdingTaxRate = (Select WithholdingTaxRate From WithholdingTaxDocDTL Where WithholdingTaxDocDTL.TaxDocDtlKey=WithholdingTaxTrans.SourceDtlKey) Where SourceType = 'PF'
GO

/* update CurrencyCode column in WithholdingTaxTrans table*/
Update WithholdingTaxTrans Set CurrencyCode = (Select CurrencyCode From ARPayment Where ARPayment.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'RP'
GO

Update WithholdingTaxTrans Set CurrencyCode = (Select CurrencyCode From ARRefund Where ARRefund.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'RF'
GO

Update WithholdingTaxTrans Set CurrencyCode = (Select CurrencyCode From APPayment Where APPayment.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'PP'
GO

Update WithholdingTaxTrans Set CurrencyCode = (Select CurrencyCode From APRefund Where APRefund.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'PF'
GO

Update WithholdingTaxTrans Set CurrencyCode = Null Where CurrencyCode = ''
GO

/* update CurrencyRate column in WithholdingTaxTrans table*/
Update WithholdingTaxTrans Set CurrencyRate = (Select ToHomeRate From ARPayment Where ARPayment.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'RP'
GO

Update WithholdingTaxTrans Set CurrencyRate = (Select ToHomeRate From ARRefund Where ARRefund.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'RF'
GO

Update WithholdingTaxTrans Set CurrencyRate = (Select ToHomeRate From APPayment Where APPayment.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'PP'
GO

Update WithholdingTaxTrans Set CurrencyRate = (Select ToHomeRate From APRefund Where APRefund.DocKey=WithholdingTaxTrans.SourceKey) Where SourceType = 'PF'
GO

/* General Alter Columns */
Delete From WithholdingTaxTrans Where ReceiptPayment Is Null OR WithholdingTaxCode Is Null OR WithholdingTaxRate Is Null OR CurrencyCode Is Null OR CurrencyRate Is Null
GO


DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

/* Support WithholdingTaxCode, TaxRate to WithholdingTaxTrans */
INSERT @ListTable VALUES('WithholdingTaxTrans', 'ReceiptPayment', 'd_ReceiptPayment NOT NULL')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'WithholdingTaxCode', 'd_WithholdingTaxCode NOT NULL')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'WithholdingTaxRate', 'd_Percent NOT NULL')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'CurrencyCode', 'd_CurrencyCode NOT NULL')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'CurrencyRate', 'd_CurrencyRate NOT NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType
  Exec sp_executesql @sql    
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.63' WHERE RegID = 2
GO/* extend Tax Type Description Length */
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('TaxType') AND name = 'Description')
ALTER TABLE [TaxType] ALTER COLUMN [Description] [nvarchar](120) NULL
GO


/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support fields to GSTProcessor */
INSERT @ListTable VALUES('GSTProcessor', 'ProductVersion', 'nvarchar(100) NULL', 'A')
INSERT @ListTable VALUES('GSTProcessor', 'GAFVersion', 'nvarchar(100) NULL', 'A')
INSERT @ListTable VALUES('GSTPartialExemption', 'T1TaxableAmt', 'd_Money NULL', 'D')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

/* Rename T2TaxableAmt to TTaxableAmt column in GSTPartialExemption table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTPartialExemption]') and name = N'T2TaxableAmt')
  EXEC sp_rename 'GSTPartialExemption.T2TaxableAmt', 'TTaxableAmt', 'COLUMN'
GO

/* Rename N43Tax to ESTax column in GSTPartialExemption table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTPartialExemption]') and name = N'N43Tax')
  EXEC sp_rename 'GSTPartialExemption.N43Tax', 'ESTax', 'COLUMN'
GO

/* Rename N43TaxClaim to ESTaxClaim column in GSTPartialExemption table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTPartialExemption]') and name = N'N43TaxClaim')
  EXEC sp_rename 'GSTPartialExemption.N43TaxClaim', 'ESTaxClaim', 'COLUMN'
GO

/* Rename N43TaxClaimPeriodAdj to ESTaxClaimPeriodAdj column in GSTPartialExemption table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTPartialExemption]') and name = N'N43TaxClaimPeriodAdj')
  EXEC sp_rename 'GSTPartialExemption.N43TaxClaimPeriodAdj', 'ESTaxClaimPeriodAdj', 'COLUMN'
GO

/* change ReferISJEIsNonTaxableSupply & ReferATMSJEIsNonTaxableSupply data type */
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APPayment') AND name = 'ReferISJEIsNonTaxableSupply')
ALTER TABLE [APPayment] ALTER COLUMN [ReferISJEIsNonTaxableSupply] [char] (1) NULL
GO

if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferISJEIsNonTaxableSupply')
ALTER TABLE [APInvoice] ALTER COLUMN [ReferISJEIsNonTaxableSupply] [char] (1) NULL
GO

if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferATMSJEIsNonTaxableSupply')
ALTER TABLE [APInvoice] ALTER COLUMN [ReferATMSJEIsNonTaxableSupply] [char] (1) NULL
GO

/* update TaxableName column in WithholdingTaxTrans table*/
Update APPayment Set ReferISJEIsNonTaxableSupply = 'N' Where ReferISJEDocKey Is Not Null AND ReferISJEIsNonTaxableSupply = 'T'
GO

Update APPayment Set ReferISJEIsNonTaxableSupply = 'T' Where ReferISJEDocKey Is Not Null AND IsNull(ReferISJEIsNonTaxableSupply, 'F') = 'F'
GO

Update APInvoice Set ReferISJEIsNonTaxableSupply = 'N' Where ReferISJEDocKey Is Not Null AND ReferISJEIsNonTaxableSupply = 'T'
GO

Update APInvoice Set ReferISJEIsNonTaxableSupply = 'T' Where ReferISJEDocKey Is Not Null AND IsNull(ReferISJEIsNonTaxableSupply, 'F') = 'F'
GO

Update APInvoice Set ReferATMSJEIsNonTaxableSupply = 'N' Where ReferATMSJEDocKey Is Not Null AND ReferATMSJEIsNonTaxableSupply = 'T'
GO

Update APInvoice Set ReferATMSJEIsNonTaxableSupply = 'T' Where ReferATMSJEDocKey Is Not Null AND IsNull(ReferATMSJEIsNonTaxableSupply, 'F') = 'F'
GO

UPDATE REGISTRY SET RegValue = '1.0.9.64' WHERE RegID = 2
GO� if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GiftRule') AND name = 'TaxCurrencyGiftTotalAmount')
ALTER TABLE [GiftRule] ADD [TaxCurrencyGiftTotalAmount] [d_Money] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GiftRule') AND name = 'CurrencyCode')
ALTER TABLE [GiftRule] ADD [CurrencyCode] [d_CurrencyCode] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GiftRule') AND name = 'ToTaxCurrencyRate')
ALTER TABLE [GiftRule] ADD [ToTaxCurrencyRate] [d_CurrencyRate] NOT NULL DEFAULT 1
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('GiftRule') AND name = 'CurrencyRate')
ALTER TABLE [GiftRule] ADD [CurrencyRate] [d_CurrencyRate] NOT NULL DEFAULT 1
GO

UPDATE [GiftRule] SET [TaxCurrencyGiftTotalAmount] = [GiftTotalAmount]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.65' WHERE RegID = 2
GO�&/* Add CurrRate to ChangeCount */
if NOT EXISTS (SELECT * FROM [ChangeCount] WHERE TableName = 'CurrRate') 
  INSERT INTO [ChangeCount] VALUES('CurrRate',0);
GO

if EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[UpdateCurrRateChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
	DROP TRIGGER [dbo].[UpdateCurrRateChangeCount]
GO

CREATE TRIGGER UpdateCurrRateChangeCount ON CurrRate
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CurrRate'
SET NOCOUNT OFF
GO

/* Add GSTVersion field in GSTProcessor table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTProcessor]') and name = N'GSTVersion')
  ALTER TABLE [dbo].[GSTProcessor] ADD [GSTVersion] [int] NULL
GO

Update GSTProcessor Set GSTVersion = 1 Where GSTVersion IS NULL
GO

ALTER TABLE [dbo].[GSTProcessor] ALTER COLUMN [GSTVersion] [int] NOT NULL
GO

-- bsp_MergeTaxType_Temp
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_MergeTaxType_Temp]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[bsp_MergeTaxType_Temp]
GO

CREATE PROCEDURE bsp_MergeTaxType_Temp(@OldTaxType d_TaxType, @NewTaxType d_TaxType) AS 
   
BEGIN TRANSACTION

/* Merge old into new */
DECLARE @Description nvarchar(120), @IRASTaxCode varchar(8)

IF @OldTaxType = 'TX-ER'
BEGIN
	SET @Description = 'Input Tax 6% � To Make Taxable Supplies (standard rated)'
	SET @IRASTaxCode = 'TX'
END
ELSE IF @OldTaxType = 'IM-RE'
BEGIN
	SET @Description = 'Input Tax 6% - Residual Input Tax'
	SET @IRASTaxCode = 'TX-RE'
END
ELSE IF @OldTaxType = 'IM-RE-CG'
BEGIN
	SET @Description = 'Input Tax 6% - Residual Input Tax of Capital Goods'
	SET @IRASTaxCode = 'TX-RE'
END
ELSE IF @OldTaxType = 'OS-ER' OR @OldTaxType = 'OS-OV'
BEGIN
	SET @Description = 'Output Tax 0% - Out of Scope Supplies Of Oversea which are taxable in Malaysia'
	SET @IRASTaxCode = 'OS'
END
ELSE
BEGIN
	SET @Description = null
	SET @IRASTaxCode = null
END

if exists (select * from dbo.[TaxType] where TaxType = @OldTaxType)
BEGIN
	if not exists (select * from dbo.[TaxType] where TaxType = @NewTaxType)
	BEGIN
	  INSERT INTO TaxType(TaxType, Description, TaxRate, Inclusive, TaxAccNo, IsActive, LastUpdate, TaxTypeCategory, IRASTaxCode, SupplyPurchase, IsDefault, IsZeroRate, UseTrxTaxAccNo) 
	  SELECT @NewTaxType, @Description, TaxRate, Inclusive, TaxAccNo, IsActive, LastUpdate, TaxTypeCategory, @IRASTaxCode, SupplyPurchase, IsDefault, IsZeroRate, UseTrxTaxAccNo
	  FROM TaxType WHERE TaxType = @OldTaxType

	  IF @@ERROR <> 0 
	  BEGIN 
		ROLLBACK TRANSACTION
		RETURN
	  END
	END
	
	--Update related tables
	DECLARE @ListTable TABLE(TableName nvarchar(50), ColumnName nvarchar(50))

	INSERT @ListTable VALUES('CBDTL', 'TaxType')
	INSERT @ListTable VALUES('CBIGDTL', 'TaxType')
	INSERT @ListTable VALUES('JEDTL', 'TaxType')
	INSERT @ListTable VALUES('TaxTrans', 'TaxType')
	INSERT @ListTable VALUES('TaxTransAuditDtl', 'TaxType')
	INSERT @ListTable VALUES('Debtor', 'TaxType')
	INSERT @ListTable VALUES('Creditor', 'TaxType')
	INSERT @ListTable VALUES('Item', 'TaxType')
	INSERT @ListTable VALUES('ARInvoiceDTL', 'TaxType')
	INSERT @ListTable VALUES('ARDNDTL', 'TaxType')
	INSERT @ListTable VALUES('ARCNDTL', 'TaxType')
	INSERT @ListTable VALUES('APInvoiceDTL', 'TaxType')
	INSERT @ListTable VALUES('APDNDTL', 'TaxType')
	INSERT @ListTable VALUES('APCNDTL', 'TaxType')
	INSERT @ListTable VALUES('IPHIST', 'TaxType')
	INSERT @ListTable VALUES('QTDTL', 'TaxType')
	INSERT @ListTable VALUES('SODTL', 'TaxType')
	INSERT @ListTable VALUES('DODTL', 'TaxType')
	INSERT @ListTable VALUES('IVDTL', 'TaxType')
	INSERT @ListTable VALUES('CSDTL', 'TaxType')
	INSERT @ListTable VALUES('DNDTL', 'TaxType')
	INSERT @ListTable VALUES('CNDTL', 'TaxType')
	INSERT @ListTable VALUES('XSDTL', 'TaxType')
	INSERT @ListTable VALUES('DRDTL', 'TaxType')
	INSERT @ListTable VALUES('RQDTL', 'TaxType')
	INSERT @ListTable VALUES('PODTL', 'TaxType')
	INSERT @ListTable VALUES('GRDTL', 'TaxType')
	INSERT @ListTable VALUES('PIDTL', 'TaxType')
	INSERT @ListTable VALUES('CPDTL', 'TaxType')
	INSERT @ListTable VALUES('PRDTL', 'TaxType')
	INSERT @ListTable VALUES('XPDTL', 'TaxType')
	INSERT @ListTable VALUES('GTDTL', 'TaxType')
	INSERT @ListTable VALUES('Footer', 'TaxType')
	INSERT @ListTable VALUES('QT', 'Footer1TaxType')
	INSERT @ListTable VALUES('QT', 'Footer2TaxType')
	INSERT @ListTable VALUES('QT', 'Footer3TaxType')
	INSERT @ListTable VALUES('SO', 'Footer1TaxType')
	INSERT @ListTable VALUES('SO', 'Footer2TaxType')
	INSERT @ListTable VALUES('SO', 'Footer3TaxType')
	INSERT @ListTable VALUES('DO', 'Footer1TaxType')
	INSERT @ListTable VALUES('DO', 'Footer2TaxType')
	INSERT @ListTable VALUES('DO', 'Footer3TaxType')
	INSERT @ListTable VALUES('IV', 'Footer1TaxType')
	INSERT @ListTable VALUES('IV', 'Footer2TaxType')
	INSERT @ListTable VALUES('IV', 'Footer3TaxType')
	INSERT @ListTable VALUES('CS', 'Footer1TaxType')
	INSERT @ListTable VALUES('CS', 'Footer2TaxType')
	INSERT @ListTable VALUES('CS', 'Footer3TaxType')
	INSERT @ListTable VALUES('DN', 'Footer1TaxType')
	INSERT @ListTable VALUES('DN', 'Footer2TaxType')
	INSERT @ListTable VALUES('DN', 'Footer3TaxType')
	INSERT @ListTable VALUES('CN', 'Footer1TaxType')
	INSERT @ListTable VALUES('CN', 'Footer2TaxType')
	INSERT @ListTable VALUES('CN', 'Footer3TaxType')
	INSERT @ListTable VALUES('XS', 'Footer1TaxType')
	INSERT @ListTable VALUES('XS', 'Footer2TaxType')
	INSERT @ListTable VALUES('XS', 'Footer3TaxType')
	INSERT @ListTable VALUES('DR', 'Footer1TaxType')
	INSERT @ListTable VALUES('DR', 'Footer2TaxType')
	INSERT @ListTable VALUES('DR', 'Footer3TaxType')
	INSERT @ListTable VALUES('RQ', 'Footer1TaxType')
	INSERT @ListTable VALUES('RQ', 'Footer2TaxType')
	INSERT @ListTable VALUES('RQ', 'Footer3TaxType')
	INSERT @ListTable VALUES('PO', 'Footer1TaxType')
	INSERT @ListTable VALUES('PO', 'Footer2TaxType')
	INSERT @ListTable VALUES('PO', 'Footer3TaxType')
	INSERT @ListTable VALUES('GR', 'Footer1TaxType')
	INSERT @ListTable VALUES('GR', 'Footer2TaxType')
	INSERT @ListTable VALUES('GR', 'Footer3TaxType')
	INSERT @ListTable VALUES('PI', 'Footer1TaxType')
	INSERT @ListTable VALUES('PI', 'Footer2TaxType')
	INSERT @ListTable VALUES('PI', 'Footer3TaxType')
	INSERT @ListTable VALUES('CP', 'Footer1TaxType')
	INSERT @ListTable VALUES('CP', 'Footer2TaxType')
	INSERT @ListTable VALUES('CP', 'Footer3TaxType')
	INSERT @ListTable VALUES('PR', 'Footer1TaxType')
	INSERT @ListTable VALUES('PR', 'Footer2TaxType')
	INSERT @ListTable VALUES('PR', 'Footer3TaxType')
	INSERT @ListTable VALUES('XP', 'Footer1TaxType')
	INSERT @ListTable VALUES('XP', 'Footer2TaxType')
	INSERT @ListTable VALUES('XP', 'Footer3TaxType')
	INSERT @ListTable VALUES('GT', 'Footer1TaxType')
	INSERT @ListTable VALUES('GT', 'Footer2TaxType')
	INSERT @ListTable VALUES('GT', 'Footer3TaxType')
	INSERT @ListTable VALUES('DRProcessing', 'TaxType')
	INSERT @ListTable VALUES('Item', 'PurchaseTaxType')
	INSERT @ListTable VALUES('GLDTL', 'TaxType')
	INSERT @ListTable VALUES('GLMast', 'InputTaxType')
	INSERT @ListTable VALUES('GLMast', 'OutputTaxType')
	INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxType')
	INSERT @ListTable VALUES('ARPaymentDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('ARRefundDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('ARDepositDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('ARRefundDepositDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('APPaymentDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('APRefundDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('APDepositDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('APRefundDepositDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('CBPaymentDTL', 'BankChargeTaxType')
	INSERT @ListTable VALUES('POSDTL', 'TaxType')
	INSERT @ListTable VALUES('PosDtlDelivery', 'TaxType')
	INSERT @ListTable VALUES('POS', 'TaxType')
	INSERT @ListTable VALUES('POS', 'ServiceTaxType')

	DECLARE @sql NVARCHAR(200)
	DECLARE @dec NVARCHAR(100)
	DECLARE @tableName  NVARCHAR(50)
	DECLARE @colName  NVARCHAR(50)
	set @dec = '@NewTaxType d_TaxType, @OldTaxType d_TaxType'

	DECLARE @cur_item cursor
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	
	if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[' + @tableName + ']') and name = N'' + @colName + '') 
	BEGIN
	  set @sql = 'update [' + @tableName + '] SET [' + @colName + '] = @NewTaxType WHERE [' + @colName + '] = @OldTaxType'

	  Exec sp_executesql @sql, @dec, @NewTaxType, @OldTaxType
	  IF @@ERROR <> 0
	  BEGIN
	    ROLLBACK TRANSACTION
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END
	END
	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- Execute stored procedure created by plug ins
	DECLARE @spName  NVARCHAR(50)
	DECLARE @cur_sp cursor
	SET @cur_sp = CURSOR FAST_FORWARD FOR SELECT name FROM dbo.sysobjects WHERE name LIKE 'bsp_ChangeTaxType_%'

	OPEN @cur_sp
	FETCH NEXT FROM @cur_sp INTO @spName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  DECLARE @return_status int
	  EXEC @return_status = @spName @OldTaxType, @NewTaxType
	  IF (@@ERROR <> 0 OR @return_status = 1)
	  BEGIN
	    ROLLBACK TRANSACTION
		CLOSE @cur_sp
		DEALLOCATE @cur_sp
		RETURN
	  END

	  FETCH NEXT FROM @cur_sp INTO @spName
	END

	CLOSE @cur_sp
	DEALLOCATE @cur_sp

	-- Finally, delete @OldTaxType
	DELETE FROM TaxType WHERE TaxType = @OldTaxType
	IF @@ERROR <> 0 
	BEGIN 
		ROLLBACK TRANSACTION
		RETURN 
	END
END

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '1.0.9.66' WHERE RegID = 2
GO��EXEC sp_addtype N'd_DocNoFormatName', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_Money', N'decimal(19,2)'
GO

EXEC sp_addtype N'd_Number', N'decimal(25, 8)'
GO

EXEC sp_addtype N'd_Qty', N'decimal(25, 8)'
GO

EXEC sp_addtype N'd_Price', N'decimal(25, 8)'
GO

EXEC sp_addtype N'd_Cost', N'decimal(25, 8)'
GO

EXEC sp_addtype N'd_CurrencyRate', N'decimal(19, 12)'
GO

EXEC sp_addtype N'd_Percent', N'decimal(18,6)'
GO

EXEC sp_addtype N'd_Boolean', N'char (1)'
GO

EXEC sp_addtype N'd_Project', N'nvarchar (10)'
GO

EXEC sp_addtype N'd_Dept', N'nvarchar (10)'
GO

EXEC sp_addtype N'd_AccNo', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_AccDescription', N'nvarchar (100)'
GO

EXEC sp_addtype N'd_BranchCode', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_BudgetName', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_Location', N'nvarchar (8)'
GO

EXEC sp_addtype N'd_DocNo', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_Contact', N'nvarchar (40)'
GO

EXEC sp_addtype N'd_Agent', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_AreaCode', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_DebtorType', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_CreditorType', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_CNType', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_DNType', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_UserID', N'nvarchar (10)'
GO

EXEC sp_addtype N'd_Remark', N'nvarchar (40)'
GO

EXEC sp_addtype N'd_Phone', N'nvarchar (25)'
GO

EXEC sp_addtype N'd_EmailAddress', N'nvarchar (200)'
GO

EXEC sp_addtype N'd_IMAddress', N'nvarchar (40)'
GO

EXEC sp_addtype N'd_DtlType', N'char (1)'
GO

EXEC sp_addtype N'd_ItemCode', N'nvarchar (30)'   
GO

EXEC sp_addtype N'd_ItemDescription', N'nvarchar (100)'
GO

EXEC sp_addtype N'd_GLDescription', N'nvarchar (100)'
GO

EXEC sp_addtype N'd_BarCode', N'nvarchar (30)'
GO

EXEC sp_addtype N'd_UOM', N'nvarchar (8)'
GO

EXEC sp_addtype N'd_Discount', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_Numbering', N'nvarchar (6)'
GO

EXEC sp_addtype N'd_Path', N'nvarchar (120)'
GO

EXEC sp_addtype N'd_Address', N'nvarchar (40)' 
GO

EXEC sp_addtype N'd_PostCode', N'nvarchar (10)' 
GO

EXEC sp_addtype N'd_DisplayTerm', N'nvarchar (30)' 
GO

EXEC sp_addtype N'd_FontStyle', N'nvarchar (8)'
GO

EXEC sp_addtype N'd_FontSize', N'decimal(6,2)'
GO

EXEC sp_addtype N'd_JournalType', N'nvarchar (10)'
GO

EXEC sp_addtype N'd_EntryType', N'varchar (1)'
GO

EXEC sp_addtype N'd_CurrencyCode', N'nvarchar (5)'
GO

EXEC sp_addtype N'd_PaymentMethod', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_PaymentBy', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_AccType', N'nvarchar (2)'
GO

EXEC sp_addtype N'd_SpecialAccType', N'varchar (3)'
GO

EXEC sp_addtype N'd_ItemGroup', N'nvarchar (8)'   
GO

EXEC sp_addtype N'd_ItemType', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_ItemBrand', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_ItemClass', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_ItemCategory', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_ChequeNo', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_TaxType', N'nvarchar (14)'
GO

EXEC sp_addtype N'd_SourceType', N'varchar (2)'
GO

EXEC sp_addtype N'd_PeriodNo', N'int'
GO

EXEC sp_addtype N'd_ReconTrans', N'char (1)'
GO

EXEC sp_addtype N'd_CmdID', N'varchar (60)'
GO

EXEC sp_addtype N'd_RegisterNo', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_ReconStatus', N'char (1)'
GO

EXEC sp_addtype N'd_DocType', N'varchar (2)'
GO

EXEC sp_addtype N'd_YourPONo', N'nvarchar (25)'
GO

EXEC sp_addtype N'd_BatchNo', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_SerialNo', N'nvarchar (40)'
GO

EXEC sp_addtype N'd_FullTransferOption', N'char (1)'
GO

EXEC sp_addtype N'd_AgingOn', N'char (1)'
GO

EXEC sp_addtype N'd_StatementType', N'char (1)'
GO

EXEC sp_addtype N'd_PriceCategory', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_FieldType', N'char (1)'
GO

EXEC sp_addtype N'd_SupplyPurchase', N'char (1)'
GO

EXEC sp_addtype N'd_SalesExemptionNo', N'nvarchar (60)'
GO

EXEC sp_addtype N'd_CostingMethod', N'tinyint'
GO

EXEC sp_addtype N'd_CostType', N'tinyint'
GO

EXEC sp_addtype N'd_FRRowType', N'char (1)'
GO

EXEC sp_addtype N'd_BonusPointAccNo', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_DocNos', N'nvarchar (40)'
GO

EXEC sp_addtype N'd_MemberNo', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_MemberPoint', N'decimal (19, 2)'
GO

EXEC sp_addtype N'd_MemberType', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_PostingAccountGroup', N'nvarchar (12)'
GO

EXEC sp_addtype N'd_Race', N'nvarchar (10)'
GO

EXEC sp_addtype N'd_Reason', N'nvarchar (80)'
GO

EXEC sp_addtype N'd_ShippingMethod', N'nvarchar (20)'
GO

EXEC sp_addtype N'd_WithholdingTaxCode', N'nvarchar (14)'
GO

EXEC sp_addtype N'd_ReceiptPayment', N'char (1)'
GO

CREATE FUNCTION [dbo].[List](@List nvarchar(max))
RETURNS @ListTable TABLE(Item nvarchar(100) COLLATE database_default)
BEGIN
DECLARE @Pos int, @ChunkPos int, @Length int, @ChunkLen smallint,
@Chunk nvarchar(4000), @LeftOver nvarchar(4000)
SET @Pos = 1
SET @Length = DATALENGTH(@List) / 2
SET @LeftOver = ''
WHILE @Pos <= @Length
BEGIN
SET @ChunkLen = 4000 - DATALENGTH(@LeftOver) / 2
SET @Chunk = @LeftOver + SUBSTRING(@List, @Pos, @ChunkLen)
SET @Pos = @Pos + @ChunkLen
SET @ChunkPos = CHARINDEX(',', @Chunk)
WHILE @ChunkPos > 0
BEGIN
INSERT @ListTable VALUES(LTRIM(RTRIM(LEFT(@Chunk, @ChunkPos - 1))))
SET @Chunk = SUBSTRING(@Chunk, @ChunkPos + 1, LEN(@Chunk))
SET @ChunkPos = CHARINDEX(',', @Chunk)
END
SET @LeftOver = @Chunk
END
INSERT @ListTable VALUES(LTRIM(RTRIM(@LeftOver)))
RETURN
END
GO

CREATE FUNCTION [dbo].[List2](@List nvarchar(max))
RETURNS @ListTable TABLE(Item nvarchar(100) COLLATE database_default)
BEGIN
DECLARE @Pos int, @ChunkPos int, @Length int, @ChunkLen smallint,
@Chunk nvarchar(4000), @LeftOver nvarchar(4000)
SET @Pos = 1
SET @Length = DATALENGTH(@List) / 2
SET @LeftOver = ''
WHILE @Pos <= @Length
BEGIN
SET @ChunkLen = 4000 - DATALENGTH(@LeftOver) / 2
SET @Chunk = @LeftOver + SUBSTRING(@List, @Pos, @ChunkLen)
SET @Pos = @Pos + @ChunkLen
SET @ChunkPos = CHARINDEX(CHAR(10), @Chunk)
WHILE @ChunkPos > 0 AND @ChunkPos < LEN(@Chunk)
BEGIN
INSERT @ListTable VALUES(LEFT(@Chunk, @ChunkPos - 1))
SET @Chunk = SUBSTRING(@Chunk, @ChunkPos + 2, LEN(@Chunk))
SET @ChunkPos = CHARINDEX(CHAR(10), @Chunk)
END
SET @LeftOver = @Chunk
END
SET @ChunkPos = CHARINDEX(CHAR(10), @LeftOver)
IF @ChunkPos > 0
SET @LeftOver = LEFT(@LeftOver, @ChunkPos-1)
IF @LeftOver <> ''
INSERT @ListTable VALUES(@LeftOver)
RETURN
END
GO

CREATE TABLE [dbo].[AccessRight](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[CmdID] [dbo].[d_CmdID] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_AccessRight_CmdID_UserID] PRIMARY KEY CLUSTERED 
(
	[CmdID] ASC,
	[UserID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AccGroup](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[Seq] [int] NOT NULL,
	[AccType] [dbo].[d_AccType] NOT NULL,
	[NormalBalance] [char](1) NOT NULL,
	[Group] [char](2) NOT NULL,
	[Level] [int] NOT NULL DEFAULT ((0)),
 CONSTRAINT [PK_AccGroup_AutoKey] PRIMARY KEY CLUSTERED
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_AccGroup_AccType] UNIQUE NONCLUSTERED
(
	[AccType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Accountant](
	[AccountantID] [dbo].[d_EmailAddress] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
	[SchedulerData] [varbinary](max) NULL,
	[IsActive] [dbo].[d_Boolean] NULL,
 CONSTRAINT [PK_Accountant_AccountantID] PRIMARY KEY CLUSTERED 
(
	[AccountantID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AccPeriod](
	[PeriodNo] [int] NOT NULL,
	[Lock] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_AccPeriod_PeriodNo] PRIMARY KEY CLUSTERED 
(
	[PeriodNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AccType](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccType] [dbo].[d_AccType] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[IsBSType] [dbo].[d_Boolean] NOT NULL,
	[IsSystemType] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_AccType_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_AccType_AccType] UNIQUE NONCLUSTERED 
(
	[AccType] ASC
) ON [PRIMARY]
) ON [PRIMARY]

GO

CREATE TABLE [dbo].[Activity](
	[ActivityKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ActivityDateTime] [datetime] NOT NULL,
	[EventKey] [bigint] NULL,
	[UserID] [dbo].[d_UserID] NULL,
	[ComputerName] [nvarchar](20) NULL,
	[DocType] [dbo].[d_DocType] NULL,
	[DocKey] [bigint] NULL,
	[Description] [nvarchar](100) NULL,
	[Detail] [nvarchar](max) NULL,
 CONSTRAINT [PK_Activity_ActivityKey] PRIMARY KEY CLUSTERED 
(
	[ActivityKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Address](
    [AutoKey] [bigint] IDENTITY(1,1) NOT NULL,	/* New added */
	[Name] [nvarchar](40) NOT NULL,
	[Address1] [dbo].[d_Address] NULL,
	[Address2] [dbo].[d_Address] NULL,
	[Address3] [dbo].[d_Address] NULL,
	[Address4] [dbo].[d_Address] NULL,
	[PostCode] [dbo].[d_PostCode] NULL,
	[Contact] [dbo].[d_Contact] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Phone2] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Fax2] [dbo].[d_Phone] NULL,
 CONSTRAINT [PK_Address_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Address_Name] UNIQUE NONCLUSTERED 
(
	[Name] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ADJ](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Total] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ADJ_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ADJ_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ADJDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UnitCost] [dbo].[d_Cost] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ADJDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AORProcessing](
	[DocKey] [bigint] NOT NULL,
	[FromDtlKey] [bigint] NULL,
	[FromDocKey] [bigint] NULL,
	[AODocKey] [bigint] NULL,
	[AODocNo] [dbo].[d_DocNo] NULL,
	[AODtlKey] [bigint] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[Location] [dbo].[d_Location] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[RequestQty] [dbo].[d_Qty] NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[Remark] [nvarchar](100) NULL,
	[DeliveryDate] [datetime] NULL,
 CONSTRAINT [PK_AORProcessing_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APCN](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NOT NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[CNType] [dbo].[d_CNType] NULL,
	[Ref] [nvarchar](40) NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Total] [dbo].[d_Money] NULL,
	[LocalTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[KnockOffAmt] [dbo].[d_Money] NULL,
	[RefundAmt] [dbo].[d_Money] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[IsJournal] [dbo].[d_Boolean] NOT NULL,
	[JEKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[TotalRevalueGainLoss] [dbo].[d_Money] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[Total2] [dbo].[d_Money] NULL,
	[LocalTotal2] [dbo].[d_Money] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[SupplierCNNo] [dbo].[d_DocNo] NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[SupplierInvoiceNo] [dbo].[d_DocNos] NULL,
	[Reason] [dbo].[d_Reason] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[GLTrxID] [bigint] NULL,
	[TaxDate] [datetime] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[DocDate2] [datetime] NULL,
 CONSTRAINT [PK_APCN_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_APCN_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APCNDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[ToAccountRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Amount] [dbo].[d_Money] NULL,
	[NetAmount] [dbo].[d_Money] NULL,
	[LocalNetAmount] [dbo].[d_Money] NULL,
	[UnappliedAmount] [dbo].[d_Money] NULL,
	[LocalUnappliedAmount] [dbo].[d_Money] NULL,
	[KnockOffAmount] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[SourceDtlKey] [bigint] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[SourceDtlType] [dbo].[d_DtlType] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SupplyPurchase] [d_SupplyPurchase] NOT NULL,
CONSTRAINT [PK_APCNDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APCNKnockOff](
	[KnockOffKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[KnockOffDocType] [dbo].[d_DocType] NOT NULL,
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[GainLossDate] [datetime] NOT NULL,
	[Revalue] [dbo].[d_Boolean] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UseProjDept] [dbo].[d_Boolean] NULL,
	[FCRevalueKey] [bigint] NULL,
 CONSTRAINT [PK_APCNKnockOff_KnockOffKey] PRIMARY KEY CLUSTERED 
(
	[KnockOffKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APCNKnockOffDetail](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL, /* New Added */
	[KnockOffKey] [bigint] NOT NULL,
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[LocalCNAmt] [dbo].[d_Money] NULL,
	[LocalInvoiceAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_APCNKnockOffDetail_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_APCNKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED 
(
	[KnockOffKey] ASC,
	[KnockOffDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APContraKnockOff](
	[KnockOffKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[KnockOffDocType] [dbo].[d_DocType] NOT NULL,
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[GainLossDate] [datetime] NOT NULL,
	[Revalue] [dbo].[d_Boolean] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UseProjDept] [dbo].[d_Boolean] NULL,
	[FCRevalueKey] [bigint] NULL,
 CONSTRAINT [PK_APContraKnockOff_KnockOffKey] PRIMARY KEY CLUSTERED 
(
	[KnockOffKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APContraKnockOffDetail](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL, /* New Added */
	[KnockOffKey] [bigint] NOT NULL,
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[LocalContraAmt] [dbo].[d_Money] NULL,
	[LocalInvoiceAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_APContraKnockOffDetail_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_APContraKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED 
(
	[KnockOffKey] ASC,
	[KnockOffDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDeposit](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[DepositPaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[ToDepositRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ToHomeRate] [dbo].[d_CurrencyRate] NOT NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[TransferedAmt] [dbo].[d_Money] NULL,
	[CBKey] [bigint] NULL,
	[Outstanding] [dbo].[d_Money] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[GLTrxID] [bigint] NULL,
 CONSTRAINT [PK_APDeposit_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_APDeposit_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDepositPaymentDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[PaymentBy] [dbo].[d_PaymentBy] NULL,
	[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ChequeNo] [dbo].[d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
	[RCHQDate] [datetime] NULL,
	[BankChargeDtlKey] [bigint] NULL,
	[BankChargeProjNo] [dbo].[d_Project] NULL,
	[BankChargeDeptNo] [dbo].[d_Dept] NULL,
	[BankChargeTaxType] [dbo].[d_TaxType] NULL,
	[BankChargeTaxRate] [dbo].[d_Percent] NULL,
	[BankChargeTax] [dbo].[d_Money] NULL,
	[BankChargeTaxRefNo] [nvarchar](30) NULL,
 CONSTRAINT [PK_APDepositPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDepositForfeit](
	[ForfeitKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[ForfeitedAmt] [dbo].[d_Money] NULL,
	[ForfeitedAccNo] [dbo].[d_AccNo] NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_APDepositForfeit_ForfeitKey] PRIMARY KEY CLUSTERED  
(
	[ForfeitKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDepositRefund](
	[RefundKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Name] [dbo].[d_AccDescription] NULL,
	[Description] [nvarchar](40) NULL,
	[Note] [nvarchar](max) NULL,
	[RefundAmt] [dbo].[d_Money] NULL,
	[CBKey] [bigint] NULL,
	[PrintCount] [smallint] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_APDepositRefund_RefundKey] PRIMARY KEY CLUSTERED 
(
	[RefundKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_APDepositRefund_DocNo] UNIQUE NONCLUSTERED  
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDepositRefundPaymentDTL](
	[DtlKey] [bigint] NOT NULL,
	[RefundKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[PaymentBy] [dbo].[d_PaymentBy] NULL,
	[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ChequeNo] [dbo].[d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
	[RCHQDate] [datetime] NULL,
	[BankChargeDtlKey] [bigint] NULL,
	[BankChargeProjNo] [dbo].[d_Project] NULL,
	[BankChargeDeptNo] [dbo].[d_Dept] NULL,
	[BankChargeTaxType] [dbo].[d_TaxType] NULL,
	[BankChargeTaxRate] [dbo].[d_Percent] NULL,
	[BankChargeTax] [dbo].[d_Money] NULL,
	[BankChargeTaxRefNo] [nvarchar](30) NULL,
 CONSTRAINT [PK_APDepositRefundPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED  
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDN](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NOT NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[DNType] [dbo].[d_DNType] NULL,
	[Ref] [nvarchar](40) NULL,
	[DocDate] [datetime] NOT NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[DueDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Total] [dbo].[d_Money] NULL,
	[LocalTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[Outstanding] [dbo].[d_Money] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[IsJournal] [dbo].[d_Boolean] NOT NULL,
	[JEKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[ForecastDueDate] [datetime] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[TotalRevalueGainLoss] [dbo].[d_Money] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[AgingDate] [datetime] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[Total2] [dbo].[d_Money] NULL,
	[LocalTotal2] [dbo].[d_Money] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[SupplierDNNo] [dbo].[d_DocNo] NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[SupplierInvoiceNo] [dbo].[d_DocNos] NULL,
	[Reason] [dbo].[d_Reason] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[GLTrxID] [bigint] NULL,
	[TaxDate] [datetime] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[DocDate2] [datetime] NULL,
 CONSTRAINT [PK_APDN_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_APDN_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APDNDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[ToAccountRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Amount] [dbo].[d_Money] NULL,
	[NetAmount] [dbo].[d_Money] NULL,
	[LocalNetAmount] [dbo].[d_Money] NULL,
	[KnockOffAmount] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[SourceDtlKey] [bigint] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[SourceDtlType] [dbo].[d_DtlType] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SupplyPurchase] [d_SupplyPurchase] NOT NULL,
 CONSTRAINT [PK_APDNDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APInvoice](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NOT NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[DueDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Total] [dbo].[d_Money] NULL,
	[LocalTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[Outstanding] [dbo].[d_Money] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[ForecastDueDate] [datetime] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[TotalRevalueGainLoss] [dbo].[d_Money] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[AgingDate] [datetime] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[Total2] [dbo].[d_Money] NULL,
	[LocalTotal2] [dbo].[d_Money] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[SupplierInvoiceNo] [dbo].[d_DocNo] NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[GLTrxID] [bigint] NULL,
	[ReferATMSJEDocKey] [bigint] NULL,
	[ReferATMSJEDocNo] [dbo].[d_DocNo] NULL,
	[ReferATMSJEIsNonTaxableSupply] [char](1) NULL,
	[TaxDate] [datetime] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[DocDate2] [datetime] NULL,
	[ReferISJEIsPayment] [d_Boolean] NULL,
	[ReferISJEDocKey] [bigint] NULL,
	[ReferISJEDocNo] [d_DocNo] NULL,
	[ReferISJEIsNonTaxableSupply] [char](1) NULL,
	[ReferCAJEIsPayment] [d_Boolean] NULL,
	[ReferCAJEDocKey] [bigint] NULL,
	[ReferCAJEDocNo] [d_DocNo] NULL,
	[ReferSSTISJEDocKey] [bigint] NULL,
	[ReferSSTISJEDocNo] [d_DocNo] NULL,
 CONSTRAINT [PK_APInvoice_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_APInvoice_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APInvoiceDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[ToAccountRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Amount] [dbo].[d_Money] NULL,
	[NetAmount] [dbo].[d_Money] NULL,
	[LocalNetAmount] [dbo].[d_Money] NULL,
	[KnockOffAmount] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[SourceDtlKey] [bigint] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[SourceDtlType] [dbo].[d_DtlType] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_APInvoiceDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APPayment](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[ToCreditorRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ToHomeRate] [dbo].[d_CurrencyRate] NOT NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[KnockOffAmt] [dbo].[d_Money] NULL,
	[LocalUnappliedAmount] [dbo].[d_Money] NULL,
	[RefundAmt] [dbo].[d_Money] NULL,
	[CBKey] [bigint] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[TotalRevalueGainLoss] [dbo].[d_Money] NULL,
	[HandOverDate] [datetime] NULL,
	[ReferCNDocKey] [bigint] NULL,
	[ReferCNDocDate] [datetime] NULL,
	[ReferCNDocNo] [dbo].[d_DocNo] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DocNo2] [nvarchar](25) NULL,
	[GLTrxID] [bigint] NULL,
	[ReferISJEDocKey] [bigint] NULL,
	[ReferISJEDocNo] [dbo].[d_DocNo] NULL,
	[ReferISJEIsNonTaxableSupply] [char](1) NULL,
	[ReferCNReason] [dbo].[d_Reason] NULL,
	[ReferCAJEDocKey] [bigint] NULL,
	[ReferCAJEDocNo] [d_DocNo] NULL,
 CONSTRAINT [PK_APPayment_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_APPayment_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APPaymentDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[PaymentBy] [dbo].[d_PaymentBy] NULL,
	[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ChequeNo] [dbo].[d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[CreditorPaymentAmt] [dbo].[d_Money] NULL,
	[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
	[RCHQDate] [datetime] NULL,
	[DepositDocKey] [bigint] NULL,
	[BankChargeDtlKey] [bigint] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[WithholdingTax] [dbo].[d_Money] NULL,
	[BankChargeProjNo] [dbo].[d_Project] NULL,
	[BankChargeDeptNo] [dbo].[d_Dept] NULL,
	[BankChargeTaxType] [dbo].[d_TaxType] NULL,
	[BankChargeTaxRate] [dbo].[d_Percent] NULL,
	[BankChargeTax] [dbo].[d_Money] NULL,
	[BankChargeTaxRefNo] [nvarchar](30) NULL,
 CONSTRAINT [PK_APPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APPaymentKnockOff](
	[KnockOffKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[KnockOffDocType] [dbo].[d_DocType] NOT NULL,
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[GainLossDate] [datetime] NOT NULL,
	[Revalue] [dbo].[d_Boolean] NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UseProjDept] [dbo].[d_Boolean] NULL,
	[FCRevalueKey] [bigint] NULL,
 CONSTRAINT [PK_APPaymentKnockOff_KnockOffKey] PRIMARY KEY CLUSTERED 
(
	[KnockOffKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APPaymentKnockOffDetail](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[KnockOffKey] [bigint] NOT NULL,
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[LocalInvoiceAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_APPaymentKnockOffDetail_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_APPaymentKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED 
(
	[KnockOffKey] ASC,
	[KnockOffDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APRefund](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[ToCreditorRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ToHomeRate] [dbo].[d_CurrencyRate] NOT NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[KnockOffAmt] [dbo].[d_Money] NULL,
	[CBKey] [bigint] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[HandOverDate] [datetime] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DocNo2] [nvarchar](25) NULL,
	[GLTrxID] [bigint] NULL,
 CONSTRAINT [PK_APRefund_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_APRefund_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APRefundDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[PaymentBy] [dbo].[d_PaymentBy] NULL,
	[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ChequeNo] [dbo].[d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[CreditorPaymentAmt] [dbo].[d_Money] NULL,
	[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
	[RCHQDate] [datetime] NULL,
	[BankChargeDtlKey] [bigint] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[WithholdingTax] [dbo].[d_Money] NULL,
	[BankChargeProjNo] [dbo].[d_Project] NULL,
	[BankChargeDeptNo] [dbo].[d_Dept] NULL,
	[BankChargeTaxType] [dbo].[d_TaxType] NULL,
	[BankChargeTaxRate] [dbo].[d_Percent] NULL,
	[BankChargeTax] [dbo].[d_Money] NULL,
	[BankChargeTaxRefNo] [nvarchar](30) NULL,
 CONSTRAINT [PK_APRefundDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APRefundKnockOff](
	[KnockOffKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[KnockOffDocType] [dbo].[d_DocType] NOT NULL,
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[GainLossDate] [datetime] NOT NULL,
	[Revalue] [dbo].[d_Boolean] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UseProjDept] [dbo].[d_Boolean] NULL,
	[FCRevalueKey] [bigint] NULL,
 CONSTRAINT [PK_APRefundKnockOff_KnockOffKey] PRIMARY KEY CLUSTERED 
(
	[KnockOffKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APRefundKnockOffDetail](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[KnockOffKey] [bigint] NOT NULL,
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[LocalRefundAmt] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_APRefundKnockOffDetail_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_APRefundKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED 
(
	[KnockOffKey] ASC,
	[KnockOffDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARAPBadDebt](
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[JEDocKey] [bigint] NULL,
	[JEDocDate] [datetime] NULL,
	[BDCNDocKey] [bigint] NULL,
	[BDCNDocDate] [datetime] NULL,
	[BDWithBDRCNDocKey] [bigint] NULL,
	[BDWithBDRCNDocDate] [datetime] NULL,
	[BadDebtType] [int] NULL,
 CONSTRAINT [PK_ARAPBadDebt_DocType_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocType] ASC,
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARAPBadDebtRecovery](
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[PaymentDocType] [d_DocType] NOT NULL,
	[PaymentDocKey] [bigint] NOT NULL,
	[JEDocKey] [bigint] NULL,
	[JEDRDtlKey] [bigint] NULL,
	[JECRDtlKey] [bigint] NULL,
	[JEDocDate] [datetime] NULL,
 CONSTRAINT [PK_ARAPBadDebtRecovery_DocType_DocKey_PaymentDocType_PaymentDocKey] PRIMARY KEY CLUSTERED 
(
	[DocType] ASC,
	[DocKey] ASC,
	[PaymentDocType] ASC,
	[PaymentDocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARAPContra](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NOT NULL,
	[TempAccNo] [dbo].[d_AccNo] NOT NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[Ref] [nvarchar](40) NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[ARLocalNetTotal] [dbo].[d_Money] NULL,
	[APLocalNetTotal] [dbo].[d_Money] NULL,
	[ARKnockOffAmt] [dbo].[d_Money] NULL,
	[APKnockOffAmt] [dbo].[d_Money] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[JEKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[DebtorBranchCode] [dbo].[d_BranchCode] NULL,
	[CreditorBranchCode] [dbo].[d_BranchCode] NULL,
	[GLTrxID] [bigint] NULL,
 CONSTRAINT [PK_ARAPContra_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ARAPContra_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARCN](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[CNType] [dbo].[d_CNType] NULL,
	[Ref] [nvarchar](40) NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Total] [dbo].[d_Money] NULL,
	[LocalTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[KnockOffAmt] [dbo].[d_Money] NULL,
	[RefundAmt] [dbo].[d_Money] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[IsJournal] [dbo].[d_Boolean] NOT NULL,
	[JEKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[TotalRevalueGainLoss] [dbo].[d_Money] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[Total2] [dbo].[d_Money] NULL,
	[LocalTotal2] [dbo].[d_Money] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[OurInvoiceNo] [dbo].[d_DocNos] NULL,
	[Reason] [dbo].[d_Reason] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[GLTrxID] [bigint] NULL,
	[GSTJEDocKey] [bigint] NULL,
	[SSTJEDocKey] [bigint] NULL,
	[TaxDate] [datetime] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_ARCN_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ARCN_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARCNDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[ToAccountRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Amount] [dbo].[d_Money] NULL,
	[NetAmount] [dbo].[d_Money] NULL,
	[LocalNetAmount] [dbo].[d_Money] NULL,
	[UnappliedAmount] [dbo].[d_Money] NULL,
	[LocalUnappliedAmount] [dbo].[d_Money] NULL,
	[KnockOffAmount] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[SourceDtlKey] [bigint] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[SourceDtlType] [dbo].[d_DtlType] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SupplyPurchase] [d_SupplyPurchase] NOT NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
 CONSTRAINT [PK_ARCNDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARCNKnockOff](
	[KnockOffKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[KnockOffDocType] [dbo].[d_DocType] NOT NULL,
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[GainLossDate] [datetime] NOT NULL,
	[Revalue] [dbo].[d_Boolean] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UseProjDept] [dbo].[d_Boolean] NULL,
	[FCRevalueKey] [bigint] NULL,
 CONSTRAINT [PK_ARCNKnockOff_KnockOffKey] PRIMARY KEY CLUSTERED 
(
	[KnockOffKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARCNKnockOffDetail](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[KnockOffKey] [bigint] NOT NULL,
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[LocalCNAmt] [dbo].[d_Money] NULL,
	[LocalInvoiceAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_ARCNKnockOffDetail_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ARCNKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED 
(
	[KnockOffKey] ASC,
	[KnockOffDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARContraKnockOff](
	[KnockOffKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[KnockOffDocType] [dbo].[d_DocType] NOT NULL,
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[GainLossDate] [datetime] NOT NULL,
	[Revalue] [dbo].[d_Boolean] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UseProjDept] [dbo].[d_Boolean] NULL,
	[FCRevalueKey] [bigint] NULL,
 CONSTRAINT [PK_ARContraKnockOff_KnockOffKey] PRIMARY KEY CLUSTERED 
(
	[KnockOffKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARContraKnockOffDetail](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[KnockOffKey] [bigint] NOT NULL,
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[LocalContraAmt] [dbo].[d_Money] NULL,
	[LocalInvoiceAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_ARContraKnockOffDetail_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ARContraKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED 
(
	[KnockOffKey] ASC,
	[KnockOffDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDeposit](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[DepositPaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[ToDepositRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ToHomeRate] [dbo].[d_CurrencyRate] NOT NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[TransferedAmt] [dbo].[d_Money] NULL,
	[CBKey] [bigint] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[Outstanding] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[GLTrxID] [bigint] NULL,
	[GSTJEDocKey] [bigint] NULL,
	[SSTJEDocKey] [bigint] NULL,
	[IsSecurityDeposit] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_ARDeposit_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ARDeposit_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDepositPaymentDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[PaymentBy] [dbo].[d_PaymentBy] NULL,
	[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ChequeNo] [dbo].[d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
	[RCHQDate] [datetime] NULL,
	[BankChargeDtlKey] [bigint] NULL,
	[BankChargeProjNo] [dbo].[d_Project] NULL,
	[BankChargeDeptNo] [dbo].[d_Dept] NULL,
	[BankChargeTaxType] [dbo].[d_TaxType] NULL,
	[BankChargeTaxRate] [dbo].[d_Percent] NULL,
	[BankChargeTax] [dbo].[d_Money] NULL,
	[BankChargeTaxRefNo] [nvarchar](30) NULL,
CONSTRAINT [PK_ARDepositPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDepositForfeit](
	[ForfeitKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[ForfeitedAmt] [dbo].[d_Money] NULL,
	[ForfeitedAccNo] [dbo].[d_AccNo] NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_ARDepositForfeit_ForfeitKey] PRIMARY KEY CLUSTERED 
(
	[ForfeitKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDepositRefund](
	[RefundKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Name] [dbo].[d_AccDescription] NULL,
	[Description] [nvarchar](40) NULL,
	[Note] [nvarchar](max) NULL,
	[RefundAmt] [dbo].[d_Money] NULL,
	[CBKey] [bigint] NULL,
	[PrintCount] [smallint] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_ARDepositRefund_RefundKey] PRIMARY KEY CLUSTERED 
(
	[RefundKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ARDepositRefund_DocNo] UNIQUE NONCLUSTERED  
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDepositRefundPaymentDTL](
	[DtlKey] [bigint] NOT NULL,
	[RefundKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[PaymentBy] [dbo].[d_PaymentBy] NULL,
	[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ChequeNo] [dbo].[d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
	[RCHQDate] [datetime] NULL,
	[BankChargeDtlKey] [bigint] NULL,
	[BankChargeProjNo] [dbo].[d_Project] NULL,
	[BankChargeDeptNo] [dbo].[d_Dept] NULL,
	[BankChargeTaxType] [dbo].[d_TaxType] NULL,
	[BankChargeTaxRate] [dbo].[d_Percent] NULL,
	[BankChargeTax] [dbo].[d_Money] NULL,
	[BankChargeTaxRefNo] [nvarchar](30) NULL,
 CONSTRAINT [PK_ARDepositRefundPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED  
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDN](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[DNType] [dbo].[d_DNType] NULL,
	[Ref] [nvarchar](40) NULL,
	[DocDate] [datetime] NOT NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[DueDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Total] [dbo].[d_Money] NULL,
	[LocalTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[Outstanding] [dbo].[d_Money] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[IsJournal] [dbo].[d_Boolean] NOT NULL,
	[JEKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[ForecastDueDate] [datetime] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[TotalRevalueGainLoss] [dbo].[d_Money] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[AgingDate] [datetime] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[Total2] [dbo].[d_Money] NULL,
	[LocalTotal2] [dbo].[d_Money] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[OurInvoiceNo] [dbo].[d_DocNos] NULL,
	[Reason] [dbo].[d_Reason] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[GLTrxID] [bigint] NULL,
	[TaxDate] [datetime] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_ARDN_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ARDN_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARDNDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[ToAccountRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Amount] [dbo].[d_Money] NULL,
	[NetAmount] [dbo].[d_Money] NULL,
	[LocalNetAmount] [dbo].[d_Money] NULL,
	[KnockOffAmount] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[SourceDtlKey] [bigint] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[SourceDtlType] [dbo].[d_DtlType] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SupplyPurchase] [d_SupplyPurchase] NOT NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
CONSTRAINT [PK_ARDNDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Area](
    [AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AreaCode] [dbo].[d_AreaCode] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[LastUpdate] [int] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_Area_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Area_AreaCode] UNIQUE NONCLUSTERED 
(
	[AreaCode] ASC
),
CONSTRAINT [UIX_Area_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARInvoice](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[DueDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Total] [dbo].[d_Money] NULL,
	[LocalTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[Outstanding] [dbo].[d_Money] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[ForecastDueDate] [datetime] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[TotalRevalueGainLoss] [dbo].[d_Money] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[AgingDate] [datetime] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[Total2] [dbo].[d_Money] NULL,
	[LocalTotal2] [dbo].[d_Money] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[GLTrxID] [bigint] NULL,
	[TaxDate] [datetime] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_ARInvoice_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ARInvoice_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARInvoiceDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[ToAccountRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Amount] [dbo].[d_Money] NULL,
	[NetAmount] [dbo].[d_Money] NULL,
	[LocalNetAmount] [dbo].[d_Money] NULL,
	[KnockOffAmount] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[SourceDtlKey] [bigint] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[SourceDtlType] [dbo].[d_DtlType] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
CONSTRAINT [PK_ARInvoiceDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARPayment](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[ToDebtorRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ToHomeRate] [dbo].[d_CurrencyRate] NOT NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[KnockOffAmt] [dbo].[d_Money] NULL,
	[LocalUnappliedAmount] [dbo].[d_Money] NULL,
	[RefundAmt] [dbo].[d_Money] NULL,
	[CBKey] [bigint] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[TotalRevalueGainLoss] [dbo].[d_Money] NULL,
	[HandOverDate] [datetime] NULL,
	[ReferCNDocKey] [bigint] NULL,
	[ReferCNDocDate] [datetime] NULL,
	[ReferCNDocNo] [dbo].[d_DocNo] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DocNo2] [nvarchar](25) NULL,
	[GLTrxID] [bigint] NULL,
	[GSTJEDocKey] [bigint] NULL,
	[SSTJEDocKey] [bigint] NULL,
	[ReferCNReason] [dbo].[d_Reason] NULL,
CONSTRAINT [PK_ARPayment_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ARPayment_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARPaymentDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[PaymentBy] [dbo].[d_PaymentBy] NULL,
	[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ChequeNo] [dbo].[d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[DebtorPaymentAmt] [dbo].[d_Money] NULL,
	[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
	[RCHQDate] [datetime] NULL,
	[DepositDocKey] [bigint] NULL,
	[BankChargeDtlKey] [bigint] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[WithholdingTax] [dbo].[d_Money] NULL,
	[BankChargeProjNo] [dbo].[d_Project] NULL,
	[BankChargeDeptNo] [dbo].[d_Dept] NULL,
	[BankChargeTaxType] [dbo].[d_TaxType] NULL,
	[BankChargeTaxRate] [dbo].[d_Percent] NULL,
	[BankChargeTax] [dbo].[d_Money] NULL,
	[BankChargeTaxRefNo] [nvarchar](30) NULL,
CONSTRAINT [PK_ARPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARPaymentKnockOff](
	[KnockOffKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[KnockOffDocType] [dbo].[d_DocType] NOT NULL,
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[GainLossDate] [datetime] NOT NULL,
	[Revalue] [dbo].[d_Boolean] NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UseProjDept] [dbo].[d_Boolean] NULL,
	[FCRevalueKey] [bigint] NULL,
 CONSTRAINT [PK_ARPaymentKnockOff_KnockOffKey] PRIMARY KEY CLUSTERED 
(
	[KnockOffKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARPaymentKnockOffDetail](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[KnockOffKey] [bigint] NOT NULL,
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[LocalInvoiceAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_ARPaymentKnockOffDetail_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ARPaymentKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED 
(
	[KnockOffKey] ASC,
	[KnockOffDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARRefund](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[ToDebtorRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ToHomeRate] [dbo].[d_CurrencyRate] NOT NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[KnockOffAmt] [dbo].[d_Money] NULL,
	[CBKey] [bigint] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
	[HandOverDate] [datetime] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DocNo2] [nvarchar](25) NULL,
	[GLTrxID] [bigint] NULL,
 CONSTRAINT [PK_ARRefund_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ARRefund_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARRefundDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[PaymentBy] [dbo].[d_PaymentBy] NULL,
	[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ChequeNo] [dbo].[d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[DebtorPaymentAmt] [dbo].[d_Money] NULL,
	[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
	[RCHQDate] [datetime] NULL,
	[BankChargeDtlKey] [bigint] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
	[WithholdingTax] [dbo].[d_Money] NULL,
	[BankChargeProjNo] [dbo].[d_Project] NULL,
	[BankChargeDeptNo] [dbo].[d_Dept] NULL,
	[BankChargeTaxType] [dbo].[d_TaxType] NULL,
	[BankChargeTaxRate] [dbo].[d_Percent] NULL,
	[BankChargeTax] [dbo].[d_Money] NULL,
	[BankChargeTaxRefNo] [nvarchar](30) NULL,
 CONSTRAINT [PK_ARRefundDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARRefundKnockOff](
	[KnockOffKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[KnockOffDocType] [dbo].[d_DocType] NOT NULL,
	[KnockOffDocKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[GainLossDate] [datetime] NOT NULL,
	[Revalue] [dbo].[d_Boolean] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UseProjDept] [dbo].[d_Boolean] NULL,
	[FCRevalueKey] [bigint] NULL,
 CONSTRAINT [PK_ARRefundKnockOff_KnockOffKey] PRIMARY KEY CLUSTERED 
(
	[KnockOffKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ARRefundKnockOffDetail](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[KnockOffKey] [bigint] NOT NULL,
	[KnockOffDtlKey] [bigint] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[LocalRefundAmt] [dbo].[d_Money] NULL,
	[LocalPaymentAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_ARRefundKnockOffDetail_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ARRefundKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED 
(
	[KnockOffKey] ASC,
	[KnockOffDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ASM](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Total] [dbo].[d_Money] NULL,
	[AssemblyCost] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[FromASMOrderDocKey] [bigint] NULL,
	[Dismantled] [dbo].[d_Boolean] NOT NULL,
	[IsMultilevel] [dbo].[d_Boolean] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ASM_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ASM_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ASMBOMOptional](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NULL,
	[BOMOptionalKey] [bigint] NULL,
	[Qty] [dbo].[d_Qty] NOT NULL,
 CONSTRAINT [PK_ASMBOMOptional_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ASMDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[ItemCost] [dbo].[d_Cost] NULL,
	[OverHeadCost] [money] NULL,
	[SubTotalCost] [money] NULL,
	[Remark] [dbo].[d_Remark] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[FromASMOrderDtlKey] [bigint] NULL,
	[DismantledQty] [dbo].[d_Qty] NULL,
	[ParentDtlKey] [bigint] NULL,
	[IsBOMItem] [dbo].[d_Boolean] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[OrderQty] [dbo].[d_Qty] NULL,
 CONSTRAINT [PK_ASMDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ASMOrder](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NULL,
	[Total] [dbo].[d_Money] NULL,
	[AssemblyCost] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NULL,
	[TotalAssemblyRequestQty] [dbo].[d_Qty] NULL,
	[AssemblyStatus] [smallint] NULL,
	[LastAOPModified] [datetime] NULL,
	[LastAOPModifiedUserID] [dbo].[d_UserID] NULL,
	[ExpectedCompletedDate] [nvarchar](20) NULL,
	[IsMultilevel] [dbo].[d_Boolean] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ASMOrder_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ASMOrder_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ASMOrderDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NULL,
	[ItemCost] [dbo].[d_Cost] NULL,
	[OverHeadCost] [money] NULL,
	[SubTotalCost] [money] NULL,
	[Remark] [dbo].[d_Remark] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[StockReceived] [dbo].[d_Boolean] NOT NULL,
	[TotalPurchaseRequestQty] [dbo].[d_Qty] NULL,
	[TotalAssemblyOrderRequestQty] [dbo].[d_Qty] NULL,
	[PurchaseStatus] [smallint] NULL,
	[AssemblyOrderStatus] [smallint] NULL,
	[LastPRModified] [datetime] NULL,
	[LastPRModifiedUserID] [dbo].[d_UserID] NULL,
	[LastAORPModified] [datetime] NULL,
	[LastAORPModifiedUserID] [dbo].[d_UserID] NULL,
	[ParentDtlKey] [bigint] NULL,
	[IsBOMItem] [dbo].[d_Boolean] NULL,
	[TransferPOQty] [dbo].[d_Qty] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ASMOrderDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AsmRProcessing](
	[DocKey] [bigint] NOT NULL,
	[AODocKey] [bigint] NOT NULL,
	[ASMDocKey] [bigint] NULL,
	[ASMDocNo] [dbo].[d_DocNo] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[RequestQty] [dbo].[d_Qty] NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[Remark] [nvarchar](100) NULL,
 CONSTRAINT [PK_AsmRProcessing_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AssetDisposal](
	[DisposalKey] [bigint] IDENTITY(1,1) NOT NULL,
	[FixedAssetAccNo] [dbo].[d_AccNo] NOT NULL,
	[TransDate] [datetime] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[DisposalValue] [dbo].[d_Money] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[LocalDisposalValue] [dbo].[d_Money] NOT NULL,
 CONSTRAINT [PK_AssetDisposal_DisposalKey] PRIMARY KEY CLUSTERED 
(
	[DisposalKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AssetLink](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL, /* New Added */
	[AssetAccNo] [dbo].[d_AccNo] NOT NULL,
	[AssetDeprnAccNo] [dbo].[d_AccNo] NOT NULL,
 CONSTRAINT [PK_AssetLink_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_AssetLink_AssetAccNo_AssetDeprnAccNo] UNIQUE NONCLUSTERED 
(
	[AssetAccNo] ASC,
	[AssetDeprnAccNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AutoPrice](
	[AutoPriceKey] [int] IDENTITY(1,1) NOT NULL,
	[Seq] [int] NOT NULL,
	[AutoPriceType] [nvarchar](10) NOT NULL,
	[Name] [nvarchar](60) NOT NULL,
	[ForSale] [dbo].[d_Boolean] NOT NULL,
	[Enable] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_AutoPrice_AutoPriceKey] PRIMARY KEY CLUSTERED 
(
	[AutoPriceKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BankRecon](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[BankStatementDate] [datetime] NOT NULL,
	[ActualBankStatementBalance] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_BankRecon_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_BankRecon_AccNo_BankStatementDate] UNIQUE NONCLUSTERED 
(
	[AccNo] ASC,
	[BankStatementDate] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BankSlip](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[BankAccNo] [dbo].[d_AccNo] NOT NULL,
 CONSTRAINT [PK_BankSlip_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BankTrans](
	[BankTransKey] [bigint] IDENTITY(1,1) NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[DtlKey] [bigint] NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[ChequeNo] [dbo].[d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[Description] [dbo].[d_AccDescription] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[BankStatementDate] [datetime] NULL,
	[BankReconStatus] [tinyint] NULL,
	[BankSlipDocKey] [bigint] NULL,
 CONSTRAINT [PK_BankTrans_BankTransKey] PRIMARY KEY CLUSTERED 
(
	[BankTransKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BOMOptional](
	[BOMOptionalKey] [bigint] NOT NULL,
	[BOMOptionalCode] [dbo].[d_ItemCode] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Desc2] [nvarchar](100) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
 CONSTRAINT [PK_BOMOptional_BOMOptionalKey] PRIMARY KEY CLUSTERED 
(
	[BOMOptionalKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BOMOptionalDTL](
	[DtlKey] [bigint] NOT NULL,
	[BOMOptionalKey] [bigint] NOT NULL,
	[SubItemCode] [dbo].[d_ItemCode] NOT NULL,
	[Qty] [dbo].[d_Qty] NOT NULL,
	[OverheadCost] [dbo].[d_Cost] NOT NULL,
 CONSTRAINT [PK_BOMOptionalDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BOMOptionalLink](
	[BOMOptionalLinkKey] [bigint] NOT NULL,
	[BOMOptionalKey] [bigint] NOT NULL,
	[BOMItemCode] [dbo].[d_ItemCode] NOT NULL,
	[Qty] [dbo].[d_Qty] NOT NULL,
 CONSTRAINT [PK_BOMOptionalLink_BOMOptionalLinkKey] PRIMARY KEY CLUSTERED 
(
	[BOMOptionalLinkKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BonusPointADJ](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_BonusPointADJ_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BonusPointADJDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[MemberNo] [dbo].[d_MemberNo] NULL,
	[Point] [dbo].[d_MemberPoint] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_BonusPointADJDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BonusPointRedemption](
	[DocKey] [bigint] NOT NULL,
	[MemberNo] [dbo].[d_MemberNo] NULL,
	[DebtorCode] [dbo].[d_AccNo] NULL,
	[TotalPointRedeem] [dbo].[d_MemberPoint] NULL,
	[DocNo] [dbo].[d_DocNo] NULL,
	[DocDate] [datetime] NULL,
	[Description] [nvarchar](40) NULL,
	[Note] [nvarchar](max) NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_BonusPointRedemption_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BonusPointRedemptionDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[Qty] [bigint] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[UnitPoint] [dbo].[d_MemberPoint] NULL,
	[SubTotal] [bigint] NULL,
	[PostToStockDate] [datetime] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_BonusPointRedemptionDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Branch](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[BranchCode] [dbo].[d_BranchCode] NOT NULL,
	[BranchName] [dbo].[d_AccDescription] NULL,
	[Address1] [dbo].[d_Address] NULL,
	[Address2] [dbo].[d_Address] NULL,
	[Address3] [dbo].[d_Address] NULL,
	[Address4] [dbo].[d_Address] NULL,
	[PostCode] [dbo].[d_PostCode] NULL,
	[Contact] [dbo].[d_Contact] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Phone2] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Fax2] [dbo].[d_Phone] NULL,
	[LastUpdate] [int] NOT NULL,
	[AreaCode] [dbo].[d_AreaCode] NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[EmailAddress] [nvarchar](80) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_Branch_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Branch_AccNo_BranchCode] UNIQUE NONCLUSTERED 
(
	[AccNo] ASC,
	[BranchCode] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BSFormat](
	[AutoKey] [int] IDENTITY(1,1) NOT NULL,
	[Seq] [int] NOT NULL,
	[RowType] [dbo].[d_FRRowType] NOT NULL,
	[AccType] [dbo].[d_AccType] NULL,
	[Description] [dbo].[d_AccDescription] NULL,
	[CreditAsPositive] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_BSFormat_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Budget](
	[BudgetKey] [int] NOT NULL,
	[BudgetName] [dbo].[d_BudgetName] NOT NULL,
 CONSTRAINT [PK_Budget_BudgetKey] PRIMARY KEY CLUSTERED 
(
	[BudgetKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[BudgetPBalance](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[BudgetKey] [int] NOT NULL,
	[PeriodNo] [dbo].[d_PeriodNo] NOT NULL,
	[AccNO] [dbo].[d_AccNo] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Amount] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_BudgetPBalance_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_BudgetPBalance_BudgetKey_PeriodNo_AccNo_ProjNo_DeptNo] UNIQUE NONCLUSTERED 
(
	[BudgetKey] ASC,
	[PeriodNo] ASC,
	[AccNo] ASC,
	[ProjNo] ASC,
	[DeptNo] ASC
)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CashFlowForecast](
	[DocKey] [bigint] NOT NULL,
	[Section] [nvarchar](20) NOT NULL,
	[Description] [nvarchar](50) NOT NULL,
	[StartDate] [datetime] NOT NULL,
	[Frequency] [nvarchar](12) NOT NULL,
	[Amount] [dbo].[d_Money] NOT NULL,
	[EndDate] [datetime] NULL,
 CONSTRAINT [PK_CashFlowForecast_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CB](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DealWith] [dbo].[d_AccDescription] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TotalPayment] [dbo].[d_Money] NULL,
	[Total] [dbo].[d_Money] NULL,
	[LocalTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[LastUpdate] [int] NOT NULL,
	[PostDetailDesc] [dbo].[d_Boolean] NULL,
	[HandOverDate] [datetime] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[DocNo2] [nvarchar](25) NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[LocalTotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[GLTrxID] [bigint] NULL,
	[TaxDate] [datetime] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[RCHQTaxTransKeymap] [varbinary](max) NULL,
 CONSTRAINT [PK_CB_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_CB_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CBDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[ToAccountRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[Amount] [dbo].[d_Money] NULL,
	[LocalAmount] [dbo].[d_Money] NULL,
	[RCHQAmount] [dbo].[d_Money] NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[TaxRefNo] [nvarchar](30) NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[TaxBRNo] [nvarchar](25) NULL,
	[TaxBName] [dbo].[d_AccDescription] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[TaxRegisterNo] [nvarchar](20) NULL,
	[TaxBillDate] [datetime] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[AmountExTax] [dbo].[d_Money] NULL,
	[LocalAmountExTax] [dbo].[d_Money] NULL,
	[AmountWithTax] [dbo].[d_Money] NULL,
	[LocalAmountWithTax] [dbo].[d_Money] NULL,
	[NegativeKOPayment] [dbo].[d_Boolean] NULL,
CONSTRAINT [PK_CBDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CBIGDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[CBDtlKey] [bigint] NOT NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[Seq] [int] NOT NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SourceDtlKey] [bigint] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceDtlType] [dbo].[d_DtlType] NULL,
 CONSTRAINT [PK_CBIGDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY],
 CONSTRAINT [UC_CBIGDTL_SourceType_SourceDtlKey_SourceDtlType] UNIQUE NONCLUSTERED 
(
	[SourceType] ASC,
	[SourceDtlKey] ASC,
	[SourceDtlType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CBPaymentDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[PaymentBy] [dbo].[d_PaymentBy] NULL,
	[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ChequeNo] [dbo].[d_ChequeNo] NULL,
	[FloatDay] [smallint] NULL,
	[BankCharge] [dbo].[d_Money] NULL,
	[PaymentAmt] [dbo].[d_Money] NULL,
	[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
	[RCHQDate] [datetime] NULL,
	[BankChargeDtlKey] [bigint] NULL,
	[WithholdingTax] [dbo].[d_Money] NULL,
	[BankChargeProjNo] [dbo].[d_Project] NULL,
	[BankChargeDeptNo] [dbo].[d_Dept] NULL,
	[BankChargeTaxType] [dbo].[d_TaxType] NULL,
	[BankChargeTaxRate] [dbo].[d_Percent] NULL,
	[BankChargeTax] [dbo].[d_Money] NULL,
	[BankChargeTaxRefNo] [nvarchar](30) NULL,
 CONSTRAINT [PK_CBPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ChangeCount](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[TableName] [nvarchar](40) NOT NULL,
	[Counter] [int] NOT NULL,
 CONSTRAINT [PK_ChangeCount_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ChangeCount_TableName] UNIQUE NONCLUSTERED 
(
	[TableName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ChangeLog](
	[ID] [bigint] IDENTITY(1,1) NOT NULL,
	[TableName] [nvarchar](30) NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[NewGuid] [uniqueidentifier] NULL,
	[Content] [nvarchar](max) NULL,
	[ContentType] [nchar](1) NULL,
	[ChangeType] [nchar](1) NOT NULL,
	[ChangeTime] [datetime] NOT NULL,
	[TransactionID] [bigint] NULL,
	 CONSTRAINT [PK_ChangeLog_ID] PRIMARY KEY CLUSTERED 
	(
		[ID] ASC
	)
	) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CN](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[CNType] [dbo].[d_CNType] NULL,
	[Ref] [nvarchar](40) NULL,
	[OurInvoiceNo] [dbo].[d_DocNos] NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[TotalBonusPoint] [dbo].[d_MemberPoint] NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[PostToGL] [dbo].[d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[MemberNo] [dbo].[d_MemberNo] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[Reason] [dbo].[d_Reason] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[TaxDate] [datetime] NULL,
	[IsRoundAdj] [dbo].[d_Boolean] NOT NULL,
	[RoundAdj] [dbo].[d_Money] NULL,
	[FinalTotal] [dbo].[d_Money] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_CN_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_CN_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CNDTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[PostToStockDate] [datetime] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[UnitCost] [dbo].[d_Cost] NULL,
	[FOCUnitCost] [dbo].[d_Cost] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[BonusPoint] [dbo].[d_MemberPoint] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[IsCalcBonusPoint] [dbo].[d_Boolean] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[GoodsReturn] [dbo].[d_Boolean] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_CNDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CNType](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[CNType] [dbo].[d_CNType] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
 CONSTRAINT [PK_CNType_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_CNType_CNType] UNIQUE NONCLUSTERED 
(
	[CNType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ColumnLock](
	--[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NOT NULL,
	[Indent] [dbo].[d_Boolean] NOT NULL,
	[FontStyle] [dbo].[d_Boolean] NOT NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Boolean] NOT NULL,
	[Location] [dbo].[d_Boolean] NOT NULL,
	[BatchNo] [dbo].[d_Boolean] NOT NULL,
	[Description] [dbo].[d_Boolean] NOT NULL,
	[FurtherDescription] [dbo].[d_Boolean] NOT NULL,
	[YourPONo] [dbo].[d_Boolean] NOT NULL,
	[YourPODate] [dbo].[d_Boolean] NOT NULL,
	[YourDONo] [dbo].[d_Boolean] NOT NULL,
	[YourDODate] [dbo].[d_Boolean] NOT NULL,
	[OurPONo] [dbo].[d_Boolean] NOT NULL,
	[OurPODate] [dbo].[d_Boolean] NOT NULL,
	[DeliveryDate] [dbo].[d_Boolean] NOT NULL,
	[PostToStockDate] [dbo].[d_Boolean] NOT NULL,
	[ProjNo] [dbo].[d_Boolean] NOT NULL,
	[DeptNo] [dbo].[d_Boolean] NOT NULL,
	[Qty] [dbo].[d_Boolean] NOT NULL,
	[FOCQty] [dbo].[d_Boolean] NOT NULL,
	[UnitPrice] [dbo].[d_Boolean] NOT NULL,
	[Discount] [dbo].[d_Boolean] NOT NULL,
	[TaxType] [dbo].[d_Boolean] NOT NULL,
	[Tax] [dbo].[d_Boolean] NOT NULL,
	[SubTotal] [dbo].[d_Boolean] NOT NULL,
	[BonusPoint] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[AccNo] [dbo].[d_Boolean] NOT NULL,
	[ForeignCharges] [dbo].[d_Boolean] NOT NULL,
	[LocalCharges] [dbo].[d_Boolean] NOT NULL,
	[Duty] [dbo].[d_Boolean] NOT NULL,
	[EstimatedDeliveryDate] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[TaxRate] [dbo].[d_Boolean] NOT NULL DEFAULT ('T'),
 CONSTRAINT [PK_ColumnLock_DocType_DtlType] PRIMARY KEY CLUSTERED 
(
	[DocType] ASC,
	[DtlType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Comment](
	[CommentKey] [bigint] IDENTITY(1,1) NOT NULL,
	[CommentType] [tinyint] NOT NULL,
	[CommentDateTime] [datetime] NOT NULL,
	[UserID] [dbo].[d_UserID] NULL,
	[DocType] [dbo].[d_DocType] NULL,
	[DocKey] [bigint] NULL,
	[Comment] [nvarchar](max) NULL,
 CONSTRAINT [PK_Comment_CommentKey] PRIMARY KEY CLUSTERED 
(
	[CommentKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Commission](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NOT NULL,
	[WithinDay] [smallint] NOT NULL,
	[Percentage] [dbo].[d_Percent] NOT NULL,
 CONSTRAINT [PK_Commission_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Commission_SalesAgent_WithinDay] UNIQUE NONCLUSTERED 
(
	[SalesAgent] ASC,
	[WithinDay] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Contact](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[Name] [dbo].[d_Contact] NOT NULL,
	[Department] [nvarchar](30) NULL,
	[Title] [nvarchar](40) NULL,
	[MobilePhone] [dbo].[d_Phone] NULL,
	[DirectPhone] [dbo].[d_Phone] NULL,
	[DirectFax] [dbo].[d_Phone] NULL,
	[EmailAddress] [dbo].[d_EmailAddress] NULL,
	[IMAddress] [dbo].[d_IMAddress] NULL,
	[Note] [nvarchar](max) NULL,
	[OpeningBonusPoint] [int] NULL,
	[LastUpdate] [int] NOT NULL,
	[IncludeInContactInfo] [dbo].[d_Boolean] NULL,
 CONSTRAINT [PK_Contact_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Contact_AccNo_Name] UNIQUE NONCLUSTERED 
(
	[AccNo] ASC,
	[Name] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CP](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[SupplierDONo] [dbo].[d_DocNo] NULL,
	[SupplierInvoiceNo] [dbo].[d_DocNo] NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[ForeignCharges] [dbo].[d_Money] NULL,
	[LocalCharges] [dbo].[d_Money] NULL,
	[LandedCostMethod] [char](1) NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[PostToGL] [dbo].[d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[ReferPaymentDocKey] [bigint] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[RefNo2] [nvarchar](20) NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[PaymentMode] [tinyint] NULL,
	[CashPayment] [dbo].[d_Money] NULL,
	[CCApprovalCode] [nvarchar](10) NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[TaxDate] [datetime] NULL,
	[IsRoundAdj] [dbo].[d_Boolean] NOT NULL,
	[RoundAdj] [dbo].[d_Money] NULL,
	[FinalTotal] [dbo].[d_Money] NULL,
	[SelfBilledApprovalNo] [nvarchar](30) NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[DocDate2] [datetime] NULL,
 CONSTRAINT [PK_CP_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_CP_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CPDTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[OurPONo] [dbo].[d_DocNo] NULL,
	[OurPODate] [datetime] NULL,
	[PostToStockDate] [datetime] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[FOCTransferedQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ForeignCharges] [dbo].[d_Cost] NULL,
	[LocalCharges] [dbo].[d_Cost] NULL,
	[Duty] [dbo].[d_Cost] NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[DeliveryDate] [datetime] NULL,
	[CNAmt] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_CPDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CreditControlSync](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [nvarchar](50) NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[CompanyName] [dbo].[d_AccDescription] NULL,
	[CreditLimit] [dbo].[d_Money] NULL,
	[OverdueLimit] [dbo].[d_Money] NULL,
	[CurrentCredit] [dbo].[d_Money] NULL,
	[CurrentOverdue] [dbo].[d_Money] NULL,
	[OverdueDetail] [nvarchar](max) NULL,
	[Action] [char](1) NULL,
	[ComputerName] [nvarchar](50) NULL,
	[RequestDateTime] [datetime] NULL,
	[CreatedUserID] [dbo].[d_UserID] NULL,
 CONSTRAINT [PK_CreditControlSync_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Creditor](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[CompanyName] [dbo].[d_AccDescription] NULL,
	[Desc2] [dbo].[d_AccDescription] NULL,
	[RegisterNo] [nvarchar](25) NULL,
	[Address1] [dbo].[d_Address] NULL,
	[Address2] [dbo].[d_Address] NULL,
	[Address3] [dbo].[d_Address] NULL,
	[Address4] [dbo].[d_Address] NULL,
	[PostCode] [dbo].[d_PostCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPostCode] [dbo].[d_PostCode] NULL,
	[Attention] [nvarchar](40) NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Phone2] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Fax2] [dbo].[d_Phone] NULL,
	[AreaCode] [dbo].[d_AreaCode] NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[CreditorType] [dbo].[d_CreditorType] NULL,
	[NatureOfBusiness] [nvarchar](40) NULL,
	[WebURL] [nvarchar](80) NULL,
	[EmailAddress] [nvarchar](200) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[CreditLimit] [dbo].[d_Money] NULL,
	[AgingOn] [dbo].[d_AgingOn] NULL,
	[StatementType] [dbo].[d_StatementType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[AllowExceedCreditLimit] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[ExemptNo] [nvarchar](60) NULL,
	[ExpiryDate] [datetime] NULL,
	[PriceCategory] [dbo].[d_PriceCategory] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[DiscountPercent] [dbo].[d_Percent] NOT NULL,
	[DetailDiscount] [nvarchar](20) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[OverdueLimit] [dbo].[d_Money] NULL,
	[POBlockStatus] [smallint] NULL,
	[GNBlockStatus] [smallint] NULL,
	[PIBlockStatus] [smallint] NULL,
	[CPBlockStatus] [smallint] NULL,
	[POBlockMessage] [nvarchar](40) NULL,
	[GNBlockMessage] [nvarchar](40) NULL,
	[PIBlockMessage] [nvarchar](40) NULL,
	[CPBlockMessage] [nvarchar](40) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[IsGroupCompany] [dbo].[d_Boolean] NOT NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ContactInfo] [nvarchar](max) NULL,
	[AccountGroup] [dbo].[d_PostingAccountGroup] NULL,
	[MarkupRatio] [dbo].[d_Percent] NULL,
	[TaxRegisterNo] [nvarchar](20) NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[GSTStatusVerifiedDate] [datetime] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[SelfBilledApprovalNo] [nvarchar](30) NULL,
	[RoundingMethod] [int] NOT NULL,
	[ReceiptWithholdingTaxCode] [dbo].[d_WithholdingTaxCode] NULL,
	[PaymentWithholdingTaxCode] [dbo].[d_WithholdingTaxCode] NULL,
 CONSTRAINT [PK_Creditor_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Creditor_AccNo] UNIQUE NONCLUSTERED 
(
	[AccNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CreditorType](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[CreditorType] [dbo].[d_CreditorType] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
 CONSTRAINT [PK_CreditorType_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_CreditorType_CreditorType] UNIQUE NONCLUSTERED 
(
	[CreditorType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Criteria](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[CriteriaName] [nvarchar](80) NOT NULL,
	[CriteriaType] [nvarchar](8) NOT NULL,
	[Data] [varbinary](max) NULL,
 CONSTRAINT [PK_Criteria_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Criteria_CriteriaName] UNIQUE NONCLUSTERED 
(
	[CriteriaName] ASC,
	[CriteriaType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CS](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[TotalBonusPoint] [dbo].[d_MemberPoint] NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[PostToGL] [dbo].[d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[ReferPaymentDocKey] [bigint] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[MemberNo] [dbo].[d_MemberNo] NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[ReallocatePurchaseByProject] [dbo].[d_Boolean] NOT NULL,
	[ReallocatePurchaseByProjectJEDocKey] [bigint] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[PaymentMode] [tinyint] NULL,
	[CashPayment] [dbo].[d_Money] NULL,
	[CCApprovalCode] [nvarchar](10) NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ReallocatePurchaseByProjectNo] [dbo].[d_Project] NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[RoundAdj] [dbo].[d_Money] NULL,
	[FinalTotal] [dbo].[d_Money] NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[TaxDate] [datetime] NULL,
	[IsRoundAdj] [dbo].[d_Boolean] NOT NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_CS_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_CS_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CSDTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[PostToStockDate] [datetime] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[FOCTransferedQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[LocalFOCTotalCost] [dbo].[d_Cost] NULL,
	[BonusPoint] [dbo].[d_MemberPoint] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[OurDONo] [dbo].[d_DocNo] NULL,
	[OurDODate] [datetime] NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[IsCalcBonusPoint] [dbo].[d_Boolean] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_CSDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Consignment](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Total] [dbo].[d_Money] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[RefNo2] [nvarchar](20) NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_Consignment_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_Consignment_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ConsignmentDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[Remark] [d_ItemDescription] NULL,
 CONSTRAINT [PK_ConsignmentDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ConsignmentReturn](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Total] [dbo].[d_Money] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[ReferAdjDocKey] [bigint] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_ConsignmentReturn_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ConsignmentReturn_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ConsignmentReturnDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Lost] [dbo].[d_Boolean] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[Remark] [d_ItemDescription] NULL,
 CONSTRAINT [PK_ConsignmentReturnDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CSGNItemBalQty](
    [AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[UOM] [dbo].[d_UOM] NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[BalQty] [dbo].[d_Qty] NULL,
 CONSTRAINT [PK_CSGNItemBalQty_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CSGNXFER](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[FromDebtorCode] [dbo].[d_AccNo] NOT NULL,
	[FromDebtorName] [dbo].[d_AccDescription] NULL,
	[FromBranchCode] [dbo].[d_BranchCode] NULL,
	[ToDebtorCode] [dbo].[d_AccNo] NOT NULL,
	[ToDebtorName] [dbo].[d_AccDescription] NULL,
	[ToBranchCode] [dbo].[d_BranchCode] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](40) NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[ToInvAddr1] [dbo].[d_Address] NULL,
	[ToInvAddr2] [dbo].[d_Address] NULL,
	[ToInvAddr3] [dbo].[d_Address] NULL,
	[ToInvAddr4] [dbo].[d_Address] NULL,
	[ToPhone1] [dbo].[d_Phone] NULL,
	[ToFax1] [dbo].[d_Phone] NULL,
	[ToAttention] [dbo].[d_Contact] NULL,
	[ToDeliverAddr1] [dbo].[d_Address] NULL,
	[ToDeliverAddr2] [dbo].[d_Address] NULL,
	[ToDeliverAddr3] [dbo].[d_Address] NULL,
	[ToDeliverAddr4] [dbo].[d_Address] NULL,
	[ToDeliverPhone1] [dbo].[d_Phone] NULL,
	[ToDeliverFax1] [dbo].[d_Phone] NULL,
	[ToDeliverContact] [dbo].[d_Contact] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_CSGNXFER_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_CSGNXFER_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CSGNXFERDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[Remark] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Qty] [dbo].[d_Qty] NULL,
 CONSTRAINT [PK_CSGNXFERDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CURRENCY](
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyWord] [nvarchar](40) NULL,
	[CurrencyWord2] [nvarchar](40) NULL,
	[CurrencySymbol] [nvarchar](6) NULL,
	[BankBuyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[BankSellRate] [dbo].[d_CurrencyRate] NOT NULL,
	[FCGainAccount] [dbo].[d_AccNo] NULL,
	[FCLossAccount] [dbo].[d_AccNo] NULL,
	[GainLossJournalType] [dbo].[d_JournalType] NULL,
	[LastUpdate] [int] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_CURRENCY_CurrencyCode] PRIMARY KEY CLUSTERED 
(
	[CurrencyCode] ASC
),
CONSTRAINT [UIX_CURRENCY_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CurrRate](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[FromDate] [datetime] NOT NULL,
	[ToDate] [datetime] NOT NULL,
	[BankBuyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[BankSellRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_CurrRate_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
CONSTRAINT [UIX_CurrRate_CurrencyCode_FromDate_ToDate] UNIQUE NONCLUSTERED 
(
	[CurrencyCode] ASC,
	[FromDate] ASC,
	[ToDate] ASC
),
CONSTRAINT [UIX_CurrRate_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Debtor](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[CompanyName] [dbo].[d_AccDescription] NULL,
	[Desc2] [dbo].[d_AccDescription] NULL,
	[RegisterNo] [nvarchar](25) NULL,
	[Address1] [dbo].[d_Address] NULL,
	[Address2] [dbo].[d_Address] NULL,
	[Address3] [dbo].[d_Address] NULL,
	[Address4] [dbo].[d_Address] NULL,
	[PostCode] [dbo].[d_PostCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPostCode] [dbo].[d_PostCode] NULL,
	[Attention] [nvarchar](40) NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Phone2] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Fax2] [dbo].[d_Phone] NULL,
	[AreaCode] [dbo].[d_AreaCode] NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[DebtorType] [dbo].[d_DebtorType] NULL,
	[NatureOfBusiness] [nvarchar](40) NULL,
	[WebURL] [nvarchar](80) NULL,
	[EmailAddress] [nvarchar](200) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[CreditLimit] [dbo].[d_Money] NULL,
	[AgingOn] [dbo].[d_AgingOn] NULL,
	[StatementType] [dbo].[d_StatementType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[AllowExceedCreditLimit] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[ExemptNo] [nvarchar](60) NULL,
	[ExpiryDate] [datetime] NULL,
	[PriceCategory] [dbo].[d_PriceCategory] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[DiscountPercent] [dbo].[d_Percent] NOT NULL,
	[DetailDiscount] [nvarchar](20) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[OverdueLimit] [dbo].[d_Money] NULL,
	[HasBonusPoint] [dbo].[d_Boolean] NOT NULL,
	[OpeningBonusPoint] [dbo].[d_MemberPoint] NULL,
	[QTBlockStatus] [smallint] NULL,
	[SOBlockStatus] [smallint] NULL,
	[DOBlockStatus] [smallint] NULL,
	[IVBlockStatus] [smallint] NULL,
	[CSBlockStatus] [smallint] NULL,
	[QTBlockMessage] [nvarchar](40) NULL,
	[SOBlockMessage] [nvarchar](40) NULL,
	[DOBlockMessage] [nvarchar](40) NULL,
	[IVBlockMessage] [nvarchar](40) NULL,
	[CSBlockMessage] [nvarchar](40) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[IsGroupCompany] [dbo].[d_Boolean] NOT NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ContactInfo] [nvarchar](max) NULL,
	[AccountGroup] [dbo].[d_PostingAccountGroup] NULL,
	[MarkupRatio] [dbo].[d_Percent] NULL,
	[TaxRegisterNo] [nvarchar](20) NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[GSTStatusVerifiedDate] [datetime] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[RoundingMethod] [int] NOT NULL,
	[SelfBilledApprovalNo] [nvarchar](30) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[IsTaxRegistered] [d_Boolean] NULL,
	[ReceiptWithholdingTaxCode] [dbo].[d_WithholdingTaxCode] NULL,
	[PaymentWithholdingTaxCode] [dbo].[d_WithholdingTaxCode] NULL,
 CONSTRAINT [PK_Debtor_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Debtor_AccNo] UNIQUE NONCLUSTERED 
(
	[AccNo] ASC
),
CONSTRAINT [UIX_Debtor_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
)ON [PRIMARY]
)ON [PRIMARY]
GO

CREATE TABLE [dbo].[DebtorType](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[DebtorType] [dbo].[d_DebtorType] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_DebtorType_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_DebtorType_DebtorType] UNIQUE NONCLUSTERED 
(
	[DebtorType] ASC
),
CONSTRAINT [UIX_DebtorType_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DefaultReport](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ReportType] [nvarchar](60) NOT NULL,
	[ReportName] [nvarchar](100) NOT NULL,
 CONSTRAINT [PK_DefaultReport_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_DefaultReport_ReportType_ReportType] UNIQUE NONCLUSTERED 
(
	[ReportType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Dept](
	[DeptNo] [dbo].[d_Dept] NOT NULL,
	[ParentDeptNo] [dbo].[d_Dept] NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
 CONSTRAINT [PK_Dept_DeptNo] PRIMARY KEY CLUSTERED 
(
	[DeptNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DN](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[DNType] [dbo].[d_DNType] NULL,
	[Ref] [nvarchar](40) NULL,
	[OurInvoiceNo] [dbo].[d_DocNos] NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[TotalBonusPoint] [dbo].[d_MemberPoint] NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[PostToGL] [dbo].[d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[MemberNo] [dbo].[d_MemberNo] NULL,
	[ReallocatePurchaseByProject] [dbo].[d_Boolean] NOT NULL,
	[ReallocatePurchaseByProjectJEDocKey] [bigint] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ReallocatePurchaseByProjectNo] [dbo].[d_Project] NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[Reason] [dbo].[d_Reason] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[TaxDate] [datetime] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_DN_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_DN_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DNDTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[PostToStockDate] [datetime] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[LocalFOCTotalCost] [dbo].[d_Cost] NULL,
	[BonusPoint] [dbo].[d_MemberPoint] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[IsCalcBonusPoint] [dbo].[d_Boolean] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_DNDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DNType](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[DNType] [dbo].[d_DNType] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
 CONSTRAINT [PK_DNType_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_DNType_DNType] UNIQUE NONCLUSTERED 
(
	[DNType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DO](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[GSTJEDocKey] [bigint] NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_DO_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_DO_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DocNoFormat](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[Name] [dbo].[d_DocNoFormatName] NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[NextNumber] [int] NOT NULL,
	[Format] [nvarchar](30) NOT NULL,
	[Sample] [nvarchar](20) NOT NULL,
	[IsDefault] [dbo].[d_Boolean] NOT NULL,
	[OneMonthOneSet] [dbo].[d_Boolean] NOT NULL,
	[MaxNumber] [int] NULL,
 CONSTRAINT [PK_DocNoFormat_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_DocNoFormat_Name] UNIQUE NONCLUSTERED 
(
	[Name] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DocNoFormatAccNo](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[Name] [dbo].[d_DocNoFormatName] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
 CONSTRAINT [PK_DocNoFormatAccNo_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_DocNoFormatAccNo_Name_AccNo] UNIQUE NONCLUSTERED 
(
	[Name] ASC,
	[AccNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DocNoFormatUsers](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[Name] [dbo].[d_DocNoFormatName] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_DocNoFormatUsers_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_DocNoFormatUsers_Name_UserID] UNIQUE NONCLUSTERED 
(
	[Name] ASC,
	[UserID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DocNoFormatYearlyNumber](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[Name] [dbo].[d_DocNoFormatName] NOT NULL,
	[Year] [int] NOT NULL,
	[M1NextNumber] [int] NOT NULL,
	[M2NextNumber] [int] NOT NULL,
	[M3NextNumber] [int] NOT NULL,
	[M4NextNumber] [int] NOT NULL,
	[M5NextNumber] [int] NOT NULL,
	[M6NextNumber] [int] NOT NULL,
	[M7NextNumber] [int] NOT NULL,
	[M8NextNumber] [int] NOT NULL,
	[M9NextNumber] [int] NOT NULL,
	[M10NextNumber] [int] NOT NULL,
	[M11NextNumber] [int] NOT NULL,
	[M12NextNumber] [int] NOT NULL,
 CONSTRAINT [PK_DocNoFormatYearlyNumber_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_DocNoFormatYearlyNumber_Name_Year] UNIQUE NONCLUSTERED 
(
	[Name] ASC,
	[Year] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DocReportSetting](
	[DocType] [dbo].[d_DocType] NOT NULL,
	[Data] [varbinary](max) NULL,
 CONSTRAINT [PK_DocReportSetting_DocType] PRIMARY KEY CLUSTERED 
(
	[DocType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DODTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[PostToStockDate] [datetime] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[FOCTransferedQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[LocalFOCTotalCost] [dbo].[d_Cost] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[IsValueTransferedItem] [dbo].[d_Boolean] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_DODTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DR](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_DR_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_DR_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DRDTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[PostToStockDate] [datetime] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[LocalFOCTotalCost] [dbo].[d_Cost] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_DRDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DRProcessing](
	[DocKey] [bigint] NOT NULL,
	[SODtlKey] [bigint] NOT NULL,
	[SODocKey] [bigint] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[Location] [dbo].[d_Location] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[DebtorCode] [dbo].[d_AccNo] NULL,
	[DeliveryQty] [dbo].[d_Qty] NULL,
	[DeliveryUOM] [dbo].[d_UOM] NULL,
	[DeliveryRate] [dbo].[d_Qty] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [dbo].[d_Discount] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[Remark] [nvarchar](100) NULL,
	[IsAllowOPEdit] [dbo].[d_Boolean] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
 CONSTRAINT [PK_DRProcessing_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[DRProcessingDO](
	[DocKey] [bigint] NOT NULL,
	[DRPKey] [bigint] NOT NULL,
	[SODtlKey] [bigint] NOT NULL,
	[SODocKey] [bigint] NOT NULL,
	[DODocKey] [bigint] NULL,
	[DODocNo] [dbo].[d_DocNo] NULL,
	[DODtlKey] [bigint] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[DeliveryQty] [dbo].[d_Qty] NULL,
	[DeliveryUOM] [dbo].[d_UOM] NULL,
	[DeliveryRate] [dbo].[d_Qty] NULL,
	[KIV] [dbo].[d_Boolean] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
CONSTRAINT [PK_DRProcessingDO_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[EventLog](
	[EventKey] [bigint] IDENTITY(1,1) NOT NULL,
	[EventDateTime] [datetime] NOT NULL DEFAULT (getdate()),
	[UserID] [dbo].[d_UserID] NOT NULL,
	[ComputerName] [nvarchar](20) NULL,
	[DocType] [dbo].[d_DocType] NULL,
	[DocKey] [bigint] NULL,
	[EventType] [tinyint] NOT NULL,
	[Description] [nvarchar](50) NULL,
	[EventMessage] [nvarchar](max) NULL,
CONSTRAINT [PK_EventLog_EventKey] PRIMARY KEY CLUSTERED 
(
	[EventKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Expenses](
	[DocKey] [bigint] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[StartDate] [datetime] NOT NULL,
	[Frequency] [nvarchar](12) NOT NULL,
	[Amount] [dbo].[d_Money] NOT NULL,
	[EndDate] [datetime] NULL,
 CONSTRAINT [PK_Expenses_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FCRevalue](
	[FCRevalueKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[UnrealizedGainAccount] [dbo].[d_AccNo] NOT NULL,
	[UnrealizedLossAccount] [dbo].[d_AccNo] NOT NULL,
	[GainLossJournalType] [dbo].[d_JournalType] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Note] [nvarchar](max) NULL,
	[TotalGainLoss] [dbo].[d_Money] NOT NULL,
	[JEKey] [bigint] NULL,
	[PrintCount] [smallint] NULL,
	[RefCount] [bigint] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[UseSingleGainLossAccount] [dbo].[d_Boolean] NOT NULL,
	[GLTrxID] [bigint] NULL,
 CONSTRAINT [PK_FCRevalue_FCRevalueKey] PRIMARY KEY CLUSTERED 
(
	[FCRevalueKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FCRevalueDocument](
	[DtlKey] [bigint] NOT NULL,
	[FCRevalueKey] [bigint] NOT NULL,
	[Category] [varchar](2) NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[CompanyName] [dbo].[d_AccDescription] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Outstanding] [dbo].[d_Money] NOT NULL,
	[GainLoss] [dbo].[d_Money] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
 CONSTRAINT [PK_FCRevalueDocument_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FCRevalueGLAccount](
	[DtlKey] [bigint] NOT NULL,
	[FCRevalueKey] [bigint] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Balance] [dbo].[d_Money] NOT NULL,
	[NewHomeBalance] [dbo].[d_Money] NOT NULL,
	[HomeBalance] [dbo].[d_Money] NOT NULL,
	[GainLoss] [dbo].[d_Money] NOT NULL,
 CONSTRAINT [PK_FCRevalueGLAccount_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FCRevalueLock](
	[DtlKey] [bigint] NOT NULL,
	[FCRevalueKey] [bigint] NOT NULL,
	[ObjType] [dbo].[d_DocType] NOT NULL,
	[ObjKey] [bigint] NOT NULL,
	[PrevRevalue] [dbo].[d_Boolean] NULL,
	[PrevRevalueRate] [dbo].[d_CurrencyRate] NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NULL,
 CONSTRAINT [PK_FCRevalueLock_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FCRevalueRate](
	[DtlKey] [bigint] NOT NULL,
	[FCRevalueKey] [bigint] NOT NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[BankBuyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[UnrealizedGainAccount] [dbo].[d_AccNo] NULL,
	[UnrealizedLossAccount] [dbo].[d_AccNo] NULL,
	[BankSellRate] [dbo].[d_CurrencyRate] NOT NULL,
 CONSTRAINT [PK_FCRevalueRate_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FIFOCost](
	[FIFOCostKey] [bigint] IDENTITY(1,1) NOT NULL,
	[StockDTLKey] [bigint] NOT NULL,
	[Seq] [smallint] NOT NULL,
	[Qty] [dbo].[d_Qty] NOT NULL,
	[Cost] [dbo].[d_Cost] NOT NULL,
 CONSTRAINT [PK_FIFOCost_FIFOCostKey] PRIMARY KEY CLUSTERED 
(
	[FIFOCostKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FiscalYear](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[FiscalYearName] [nvarchar](20) NOT NULL,
	[FromDate] [datetime] NOT NULL,
	[ToDate] [datetime] NOT NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_FiscalYear_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_FiscalYear_FiscalYearName] UNIQUE NONCLUSTERED 
(
	[FiscalYearName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FontStyle](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[FontStyle] [dbo].[d_FontStyle] NOT NULL,
	[FontName] [nvarchar](40) NOT NULL,
	[FontSize] [dbo].[d_FontSize] NOT NULL,
	[FontColor] [int] NOT NULL,
	[Bold] [dbo].[d_Boolean] NOT NULL,
	[Italic] [dbo].[d_Boolean] NOT NULL,
	[Underline] [dbo].[d_Boolean] NOT NULL,
	[Indent] [tinyint] NULL,
 CONSTRAINT [PK_FontStyle_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_FontStyle_FontStyle] UNIQUE NONCLUSTERED 
(
	[FontStyle] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Footer](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[FooterName] [nvarchar](20) NOT NULL,
	[Caption] [nvarchar](40) NULL,
	[AddToNetTotal] [dbo].[d_Boolean] NOT NULL,
	[AddToAnalysisNetTotal] [dbo].[d_Boolean] NOT NULL,
	[Formula] [nvarchar](max) NULL,
	[PostToGL] [dbo].[d_Boolean] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[Enable] [dbo].[d_Boolean] NOT NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[ParamCaption] [nvarchar](40) NULL,
	[ParamVisible] [dbo].[d_Boolean] NOT NULL,
	[ParamDecimal] [smallint] NOT NULL,
	[ParamDefaultValue] [dbo].[d_Number] NULL,
	[ParamFromPercent] [dbo].[d_Boolean] NOT NULL,
	[IsCalcBonusPoint] [dbo].[d_Boolean] NULL,
	[AddToCalculateExtraDiscountAmount] [dbo].[d_Boolean] NULL,
 CONSTRAINT [PK_Footer_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Footer_FooterName] UNIQUE NONCLUSTERED 
(
	[FooterName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[FRCustomText](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ID] [nvarchar](20) NOT NULL,
	[Text1] [nvarchar](100) NULL,
	[Text2] [nvarchar](100) NULL,
 CONSTRAINT [PK_FRCustomText_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_FRCustomText_ID] UNIQUE NONCLUSTERED 
(
	[ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GiftRule](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Name] [nvarchar](100) NOT NULL,
	[ICNo] [nvarchar](25) NULL,
	[Address1] [dbo].[d_Address] NULL,
	[Address2] [dbo].[d_Address] NULL,
	[Address3] [dbo].[d_Address] NULL,
	[Address4] [dbo].[d_Address] NULL,
	[Phone] [dbo].[d_Phone] NULL,
	[EmailAddress] [nvarchar](80) NULL,
	[GiftDescription] [nvarchar](100) NULL,
	[GiftTotalAmount] [dbo].[d_Money] NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[JEDocKey] [bigint] NULL,
	[TaxCurrencyGiftTotalAmount] [d_Money] NULL,
	[CurrencyCode] [d_CurrencyCode] NOT NULL,
	[ToTaxCurrencyRate] [d_CurrencyRate] NOT NULL DEFAULT 1,
	[CurrencyRate] [d_CurrencyRate] NOT NULL DEFAULT 1,	
 CONSTRAINT [PK_GiftRule_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_Gift_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GLDTL](
	[GLDtlKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[DEAccNo] [dbo].[d_AccNo] NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ToHomeRate] [dbo].[d_CurrencyRate] NOT NULL,
	[OrgDR] [dbo].[d_Money] NULL,
	[OrgCR] [dbo].[d_Money] NULL,
	[DR] [dbo].[d_Money] NULL,
	[CR] [dbo].[d_Money] NULL,
	[HomeDR] [dbo].[d_Money] NULL,
	[HomeCR] [dbo].[d_Money] NULL,
	[TransDate] [datetime] NOT NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[RefNo1] [nvarchar](20) NULL,
	[RefNo2] [nvarchar](20) NULL,
	[DEKey] [bigint] NULL,
	[UserID] [dbo].[d_UserID] NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[GLTrxID] [bigint] NULL,
	[SourceDtlKey] [bigint] NULL,
 CONSTRAINT [PK_GLDTL_GLDTLKey] PRIMARY KEY CLUSTERED 
(
	[GLDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GLMast](
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[ParentAccNo] [dbo].[d_AccNo] NULL,
	[Description] [dbo].[d_AccDescription] NULL,
	[Desc2] [dbo].[d_AccDescription] NULL,
	[AccType] [dbo].[d_AccType] NOT NULL,
	[SpecialAccType] [dbo].[d_SpecialAccType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CashFlowCategory] [char](1) NULL DEFAULT ('O'),
	[MSICCode] [varchar](5) NULL,
	[InputTaxType] [dbo].[d_TaxType] NULL,
	[OutputTaxType] [dbo].[d_TaxType] NULL,
	[TariffCode] [nvarchar] (12) NULL,
 CONSTRAINT [PK_GLMast_AccNo] PRIMARY KEY CLUSTERED 
(
	[AccNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GLTrxIDTrash](
	[GLTrxID] [bigint] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[DocType] [dbo].[d_DocType] NULL,
	[DocKey] [bigint] NULL,
	[SourceData] [varbinary](max) NULL,
	[Compressed] [dbo].[d_Boolean] NULL,
 CONSTRAINT [PK_GLTrxIDTrash_GLTrxID] PRIMARY KEY CLUSTERED 
(
	[GLTrxID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GR](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[SupplierDONo] [dbo].[d_DocNo] NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[ForeignCharges] [dbo].[d_Money] NULL,
	[LocalCharges] [dbo].[d_Money] NULL,
	[LandedCostMethod] [char](1) NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_GR_DocKey]PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_GR_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GRDTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[OurPONo] [dbo].[d_DocNo] NULL,
	[OurPODate] [datetime] NULL,
	[PostToStockDate] [datetime] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[FOCTransferedQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ForeignCharges] [dbo].[d_Cost] NULL,
	[LocalCharges] [dbo].[d_Cost] NULL,
	[Duty] [dbo].[d_Cost] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[DeliveryDate] [datetime] NULL,
	[CNAmt] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_GRDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GridListingFilter](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[FilterName] [nvarchar](40) NOT NULL,
	[Template] [nvarchar](max) NULL,
	[IsDefault] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_GridListingFilter_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_GridListingFilter_FilterName] UNIQUE NONCLUSTERED
(
	[FilterName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GridListingFilterUsers](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[FilterName] [nvarchar](40) NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_GridListingFilterUsers_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_GridListingFilterUsers_FilterName_UserID] UNIQUE NONCLUSTERED 
(
	[FilterName] ASC,
	[UserID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GSTCapitalGoods] (
	[DocKey] [bigint] NOT NULL,
	[CapitalCode] [nvarchar](50) NOT NULL,
	[Description] [nvarchar](200) NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[CommenceDate] [datetime] NOT NULL,
	[DisposalDate] [datetime] NULL,
	[IsLost] [dbo].[d_Boolean] NOT NULL,
	[DocumentLink] [nvarchar](max) NULL,
	[NumOfInterval] [int] NOT NULL,
	[TotalAmount] [dbo].[d_Money] NULL,
	[TotalTax] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_GSTCapitalGoods] PRIMARY KEY CLUSTERED
(
	[DocKey] ASC
),
 CONSTRAINT [UIX_GSTCapitalGoods_CapitalCode] UNIQUE NONCLUSTERED
(
	[CapitalCode] ASC
)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GSTCapitalGoodsDTL] (
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[ParentDtlKey] [bigint] NULL,
	[Seq] [int] NOT NULL,
	[Description] [nvarchar](200) NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[IncurredDate] [datetime] NOT NULL,
	[DisposalDate] [datetime] NULL,
	[IsLost] [dbo].[d_Boolean] NOT NULL,
	[Amount] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_GSTCapitalGoodsDTL] PRIMARY KEY CLUSTERED
(
	[DtlKey] ASC
)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GSTCapitalGoodsSchedule] (
	[DocKey] [bigint] NOT NULL,
	[DtlKey] [bigint] NOT NULL,
	[GSTSeq] [int] NOT NULL,
	[Interval] [int] NOT NULL,
	[FromDate] [datetime] NOT NULL,
	[ToDate] [datetime] NOT NULL,
	[RETax] [dbo].[d_Money] NULL,
	[IRRate] [dbo].[d_Percent] NULL,
	[RETaxClaim] [dbo].[d_Money] NULL,
	[JEAdjDocKey] [bigint] NULL,
	[IRRateCalcContent] [nvarchar](max) NULL,
 CONSTRAINT [PK_GSTCapitalGoodsSchedule] PRIMARY KEY CLUSTERED
(
	[DocKey] ASC,
	[DtlKey] ASC,
	[GSTSeq] ASC,
	[Interval] ASC
)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GSTCapitalGoodsScheduleAdj] (
	[DocKey] [bigint] NOT NULL,
	[DtlKey] [bigint] NOT NULL,
	[GSTSeq] [int] NOT NULL,
	[Interval] [int] NOT NULL,
	[IntervalAdj] [int] NOT NULL,
	[CGARate] [dbo].[d_Percent] NULL,
	[CGAAmount] [dbo].[d_Money] NULL,
	[CGARateCalcContent] [nvarchar](max) NULL,
	[CGAAmountCalcContent] [nvarchar](max) NULL,
 CONSTRAINT [PK_GSTCapitalGoodsScheduleAdj] PRIMARY KEY CLUSTERED
(
	[DocKey] ASC,
	[DtlKey] ASC,
	[GSTSeq] ASC,
	[Interval] ASC,
	[IntervalAdj] ASC
)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GSTPartialExemption] (
	[FromDate] [datetime] NOT NULL,
	[ToDate] [datetime] NOT NULL,
	[GSTSeq] [int] NOT NULL,
	[IsRemainPeriod] [dbo].[d_Boolean] NOT NULL,
	[TTaxableAmt] [dbo].[d_Money] NULL,
	[ETaxableAmt] [dbo].[d_Money] NULL,
	[O1TaxableAmt] [dbo].[d_Money] NULL,
	[O2TaxableAmt] [dbo].[d_Money] NULL,
	[R1_O1TaxableAmt] [dbo].[d_Money] NULL,
	[R1_O2TaxableAmt] [dbo].[d_Money] NULL,
	[R2TaxableAmt] [dbo].[d_Money] NULL,
	[R3TaxableAmt] [dbo].[d_Money] NULL,
	[R4TaxableAmt] [dbo].[d_Money] NULL,
	[R5TaxableAmt] [dbo].[d_Money] NULL,
	[ESTax] [dbo].[d_Money] NULL,
	[RETax] [dbo].[d_Money] NULL,
	[IsDeMinimis] [dbo].[d_Boolean] NULL,
	[IRRate] [dbo].[d_Percent] NULL,
	[ESTaxClaim] [dbo].[d_Money] NULL,
	[RETaxClaim] [dbo].[d_Money] NULL,
	[ESTaxClaimPeriodAdj] [dbo].[d_Money] NULL,
	[RETaxClaimPeriodAdj] [dbo].[d_Money] NULL,
	[JEPeriodDocKey] [bigint] NULL,
	[JEPeriodAdjDocKey] [bigint] NULL,
	[JEAnnualAdjDocKey] [bigint] NULL,
	[JEAnnualAdjDocKey2] [bigint] NULL,
	[IsDeMinimisCalcContent] [nvarchar](max) NULL,
	[IRRateCalcContent] [nvarchar](max) NULL,
	[ProcessJEPeriodAdj] [dbo].[d_Boolean] NULL,
 CONSTRAINT [PK_GSTPartialExemption] PRIMARY KEY CLUSTERED
(
	[FromDate] ASC,
	[ToDate] ASC,
	[GSTSeq] ASC
)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GSTProcessor](
	[GSTKey] [bigint] IDENTITY(1,1) NOT NULL,
	[FromDate] [datetime] NOT NULL,
	[ToDate] [datetime] NOT NULL,
	[Duration] [tinyint] NOT NULL,
	[Submitted] [dbo].[d_Boolean] NOT NULL,
	[TaxDataReport] [varbinary](max) NULL,
	[JEDocKey] [bigint] NULL,
	[CarryForwardRefundGST] [dbo].[d_Boolean] NULL,
	[AuthorizerName] [nvarchar](200) NULL,
	[NewICNo] [nvarchar](20) NULL,
	[OldICNo] [nvarchar](20) NULL,
	[PassportNo] [nvarchar](20) NULL,
	[Nationality] [nvarchar](40) NULL,
	[Compressed] [dbo].[d_Boolean] NOT NULL,
	[CIMBStatusCode] [nvarchar](10) NULL,
	[CIMBStatusDesc] [nvarchar](100) NULL,
	[CIMBRefNo] [nvarchar](32) NULL,
	[CIMBMediaNo] [nvarchar](15) NULL,
	[CBKey] [bigint] NULL,
	[JEGainLossDocKey] [bigint] NULL,
	[JEFixedAssetAndStockValueDocKey] [bigint] NULL,
	[DeclarationDate] [datetime] NULL,
	[CreatedTimeStamp] [datetime] NULL,
	[CreatedUserID] [dbo].[d_UserID] NULL,
	[ParentGSTKey] [bigint] NULL,
	[Seq] [int] NULL,
	[IsPartialExemption] [dbo].[d_Boolean] NULL,
	[IsCapitalGoodsAdj] [dbo].[d_Boolean] NULL,
	[IsFinalGSTReturn] [dbo].[d_Boolean] NULL,
	[ProductVersion] [nvarchar](100) NULL,
	[GAFVersion] [nvarchar](100) NULL,
	[GSTVersion] [int] NOT NULL,
 CONSTRAINT [PK_GSTProcessor_GSTKey] PRIMARY KEY CLUSTERED 
(
	[GSTKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GSTSetting](
	[GSTName] [nvarchar](100) NOT NULL,
	[GSTValue] [nvarchar](300) NULL,
 CONSTRAINT [PK_GSTSetting_GSTName] PRIMARY KEY CLUSTERED 
(
	[GSTName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GT](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_GT_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_GT_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[GTDTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[OurPONo] [dbo].[d_DocNo] NULL,
	[OurPODate] [datetime] NULL,
	[PostToStockDate] [datetime] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_GTDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[IPHIST](
	[IPKey] [bigint] IDENTITY(1,1) NOT NULL,
	[DtlKey] [bigint] NULL,
	[DocKey] [bigint] NULL,
	[DocType] [dbo].[d_DocType] NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Location] [dbo].[d_Location] NULL,
	[Agent] [dbo].[d_Agent] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LastUpdate] [int] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[Transfered] [dbo].[d_Boolean] NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[MemberNo] [dbo].[d_MemberNo] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
 CONSTRAINT [PK_IPHIST_IPKey] PRIMARY KEY CLUSTERED 
(
	[IPKey] ASC
),
CONSTRAINT [UIX_IPHIST_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY] 
GO

CREATE TABLE [dbo].[ISS](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Total] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[ReallocatePurchaseByProject] [dbo].[d_Boolean] NOT NULL,
	[ReallocatePurchaseByProjectJEDocKey] [bigint] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ReallocatePurchaseByProjectNo] [dbo].[d_Project] NULL,
 CONSTRAINT [PK_ISS_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_ISS_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ISSDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UnitCost] [dbo].[d_Cost] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ISSDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Item](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[Desc2] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ItemGroup] [dbo].[d_ItemGroup] NULL,
	[ItemType] [dbo].[d_ItemType] NULL,
	[AssemblyCost] [dbo].[d_Cost] NULL,
	[LeadTime] [nvarchar](40) NULL,
	[StockControl] [dbo].[d_Boolean] NOT NULL,
	[HasSerialNo] [dbo].[d_Boolean] NOT NULL,
	[HasBatchNo] [dbo].[d_Boolean] NOT NULL,
	[DutyRate] [dbo].[d_Percent] NOT NULL,
	[Taxtype] [dbo].[d_TaxType] NULL,
	[Note] [nvarchar](max) NULL,
	[Image] [varbinary](max) NULL,
	[CostingMethod] [dbo].[d_CostingMethod] NOT NULL,
	[SalesUOM] [dbo].[d_UOM] NOT NULL,
	[PurchaseUOM] [dbo].[d_UOM] NOT NULL,
	[ReportUOM] [dbo].[d_UOM] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[SNFormatName] [nvarchar](20) NULL,
	[IsCalcBonusPoint] [dbo].[d_Boolean] NULL,
	[MarkupRatio] [dbo].[d_Percent] NULL,
	[HasPromoter] [dbo].[d_Boolean] NOT NULL,
	[GlobalCode] [dbo].[d_ItemCode] NULL,
	[ItemBrand] [dbo].[d_ItemBrand] NULL,
	[ItemClass] [dbo].[d_ItemClass] NULL,
	[ItemCategory] [dbo].[d_ItemCategory] NULL,
	[LeadTimeDay] [int] NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[Discontinued] [dbo].[d_Boolean] NOT NULL,
	[AutoUOMConversion] [dbo].[d_Boolean] NULL,
	[BaseUOM] [dbo].[d_UOM] NOT NULL,
	[BackOrderControl] [dbo].[d_Boolean] NOT NULL,
	[PurchaseTaxType] [dbo].[d_TaxType] NULL,
	[TariffCode] [nvarchar](12) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_Item_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
CONSTRAINT [UIX_Item_ItemCode] UNIQUE NONCLUSTERED 
(
	[ItemCode] ASC
),
CONSTRAINT [UIX_Item_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemBatch](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[BatchNo] [dbo].[d_BatchNo] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[ManufacturedDate] [datetime] NULL,
	[ExpiryDate] [datetime] NULL,
	[LastSaleDate] [datetime] NULL,
	--[BalQty] [dbo].[d_Qty] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemBatch_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemBatch_ItemCode_BatchNo] UNIQUE NONCLUSTERED
(
	[ItemCode] ASC,
	[BatchNo] ASC
),
CONSTRAINT [UIX_ItemBatch_Guid] UNIQUE NONCLUSTERED
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemBatchBalQty](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[UOM] [dbo].[d_UOM] NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[BatchNo] [dbo].[d_BatchNo] NOT NULL,
	[BalQty] [dbo].[d_Qty] NULL,
	[MostRecentlyCost] [dbo].[d_Cost] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemBatchBalQty_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemBatchBalQty_ItemCode_UOM_Location_BatchNo] UNIQUE NONCLUSTERED 
(
	[ItemCode] ASC,
	[UOM] ASC,
	[Location] ASC,
	[BatchNo] ASC
),
CONSTRAINT [UIX_ItemBatchBalQty_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemBOM](
	[ItemBOMKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[SubItemCode] [dbo].[d_ItemCode] NOT NULL,
	[Qty] [dbo].[d_Qty] NOT NULL,
	[OverheadCost] [dbo].[d_Cost] NOT NULL,
	[Seq] [int] NOT NULL,
	[CostFraction] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_ItemBOM_ItemBOMKey] PRIMARY KEY CLUSTERED 
(
	[ItemBOMKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemBrand](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemBrand] [dbo].[d_ItemBrand] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[Note] [nvarchar](max) NULL,
	[LastUpdate] [int] NOT NULL,
	[ShortCode] [nvarchar](8) NULL,
	[MarkupRatio] [dbo].[d_Percent] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemBrand_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemBrand_ItemBrand] UNIQUE NONCLUSTERED 
(
	[ItemBrand] ASC
),
CONSTRAINT [UIX_ItemBrand_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemCategory](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCategory] [dbo].[d_ItemCategory] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[Note] [nvarchar](max) NULL,
	[LastUpdate] [int] NOT NULL,
	[ShortCode] [nvarchar](8) NULL,
	[MarkupRatio] [dbo].[d_Percent] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemCategory_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemCategory_ItemCategory] UNIQUE NONCLUSTERED 
(
	[ItemCategory] ASC
),
CONSTRAINT [UIX_ItemCategory_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemClass](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemClass] [dbo].[d_ItemClass] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[Note] [nvarchar](max) NULL,
	[LastUpdate] [int] NOT NULL,
	[ShortCode] [nvarchar](8) NULL,
	[MarkupRatio] [dbo].[d_Percent] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemClass_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemClass_ItemClass] UNIQUE NONCLUSTERED 
(
	[ItemClass] ASC
),
CONSTRAINT [UIX_ItemClass_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemCostChangeHistory](
	[HKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[ChangeTime] [datetime] NOT NULL,
	[Cost] [dbo].[d_Cost] NULL,
 CONSTRAINT [PK_ItemCostChangeHistory_HKey] PRIMARY KEY CLUSTERED 
(
	[HKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemCostHistory](
	[HKey] [int] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[DocDate] [datetime] NOT NULL,
	[Cost] [dbo].[d_Cost] NULL,
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[CreatedTimeStamp] [datetime] NULL,
	[CreatedUserID] [dbo].[d_UserID] NULL,
 CONSTRAINT [PK_ItemCostHistory_HKey] PRIMARY KEY CLUSTERED 
(
	[HKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemCurrencyPrice](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[UOM] [dbo].[d_UOM] NOT NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[Price] [dbo].[d_Price] NULL,
	[LastUpdate] [int] NOT NULL,
 CONSTRAINT [PK_ItemCurrencyPrice_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemCurrencyPrice_ItemCode_UOM_CurrencyCode] UNIQUE NONCLUSTERED 
(
	[ItemCode] ASC,
	[UOM] ASC,
	[CurrencyCode] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemGroup](
	[ItemGroup] [dbo].[d_ItemGroup] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[Note] [nvarchar](max) NULL,
	[SalesCode] [dbo].[d_AccNo] NULL,
	[CashSalesCode] [dbo].[d_AccNo] NULL,
	[SalesReturnCode] [dbo].[d_AccNo] NULL,
	[SalesDiscountCode] [dbo].[d_AccNo] NULL,
	[PurchaseDiscountCode] [dbo].[d_AccNo] NULL,
	[PurchaseCode] [dbo].[d_AccNo] NULL,
	[PurchaseReturnCode] [dbo].[d_AccNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[ShortCode] [nvarchar](8) NULL,
	[MarkupRatio] [dbo].[d_Percent] NULL,
	[BalanceStockCode] [dbo].[d_AccNo] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemGroup_ItemGroup_ItemGroup] PRIMARY KEY CLUSTERED 
(
	[ItemGroup] ASC
),
CONSTRAINT [UIX_ItemGroup_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY] 
GO

CREATE TABLE [dbo].[ItemLocationPrice](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[UOM] [dbo].[d_UOM] NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[Price] [dbo].[d_Price] NULL,
	[LastUpdate] [int] NOT NULL,
	[MinQty] [dbo].[d_Qty] NULL,
	[MaxQty] [dbo].[d_Qty] NULL,
	[NormalLevel] [dbo].[d_Qty] NULL,
	[ReOLevel] [dbo].[d_Qty] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemLocationPrice_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemLocationPrice_ItemCode_UOM_Location] UNIQUE NONCLUSTERED 
(
	[ItemCode] ASC,
	[UOM] ASC,
	[Location] ASC
),
CONSTRAINT [UIX_ItemLocationPrice_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemOpening](
	[ItemOpeningKey] [bigint] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[UOM] [dbo].[d_UOM] NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Seq] [int] NOT NULL,
	[Qty] [dbo].[d_Qty] NOT NULL,
	[Cost] [dbo].[d_Cost] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[DocDate] [datetime] NOT NULL,
 CONSTRAINT [PK_ItemOpening_ItemOpeningKey] PRIMARY KEY CLUSTERED 
(
	[ItemOpeningKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemPrice](
	[ItemPriceKey] [bigint] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[UOM] [dbo].[d_UOM] NOT NULL,
	[PriceCategory] [dbo].[d_PriceCategory] NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[SuppCustItemCode] [dbo].[d_ItemCode] NULL,
	[Ref] [nvarchar](80) NULL,
	[UseFixedPrice] [dbo].[d_Boolean] NOT NULL,
	[FixedPrice] [dbo].[d_Price] NULL,
	[FixedDetailDiscount] [nvarchar](20) NULL,
	[Qty1] [dbo].[d_Qty] NULL,
	[Price1] [dbo].[d_Price] NULL,
	[DetailDiscount1] [nvarchar](20) NULL,
	[Qty2] [dbo].[d_Qty] NULL,
	[Price2] [dbo].[d_Price] NULL,
	[DetailDiscount2] [nvarchar](20) NULL,
	[Qty3] [dbo].[d_Qty] NULL,
	[Price3] [dbo].[d_Price] NULL,
	[DetailDiscount3] [nvarchar](20) NULL,
	[Qty4] [dbo].[d_Qty] NULL,
	[Price4] [dbo].[d_Price] NULL,
	[DetailDiscount4] [nvarchar](20) NULL,
	[FOCLevel] [dbo].[d_Qty] NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[BonusPointQty] [dbo].[d_Qty] NULL,
	[BonusPoint] [dbo].[d_MemberPoint] NULL,
	[LastUpdate] [int] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemPrice_ItemPriceKey] PRIMARY KEY CLUSTERED 
(
	[ItemPriceKey] ASC
),
CONSTRAINT [UIX_ItemPrice_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemPriceChangeHistory](
	[HKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[ChangeTime] [datetime] NOT NULL,
	[Price] [dbo].[d_Price] NULL,
 CONSTRAINT [PK_ItemPriceChangeHistory_HKey] PRIMARY KEY CLUSTERED 
(
	[HKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemReplacement](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[ReplacementItemCode] [dbo].[d_ItemCode] NOT NULL,
	[ReplacementDegree] [dbo].[d_Percent] NOT NULL,
	[Note] [nvarchar](max) NULL,
 CONSTRAINT [PK_ItemReplacement_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemReplacement_ItemCode_ReplacementItemCode] UNIQUE NONCLUSTERED 
(
	[ItemCode] ASC,
	[ReplacementItemCode] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemSerialNo](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[SerialNumber] [dbo].[d_SerialNo] NOT NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[ManufacturedDate] [datetime] NULL,
	[ExpiryDate] [datetime] NULL,
	[LastSalesDate] [datetime] NULL,
	[Remarks] [nvarchar](20) NULL,
	[Qty] [int] NULL,
	[CSGNQty] [int] NULL,
	[Note] [nvarchar](max) NULL,
	[DocDate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemSerialNo_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemSerialNo_ItemCode_SerialNumber] UNIQUE NONCLUSTERED 
(
	[ItemCode] ASC,
	[SerialNumber] ASC
),
CONSTRAINT [UIX_ItemSerialNo_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemSerialNoDtl](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[SerialNumber] [dbo].[d_SerialNo] NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[Qty] [int] NULL,
	[CSGNQty] [int] NULL,
	[Cost] [dbo].[d_Cost] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemSerialNoDtl_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemSerialNoDtl_ItemCode_SerialNumber_Location] UNIQUE NONCLUSTERED 
(
	[ItemCode] ASC,
	[SerialNumber] ASC,
	[Location] ASC
),
CONSTRAINT [UIX_ItemSerialNoDtl_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemSubCode](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[SubCode] [dbo].[d_ItemCode] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemSubCode_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemSubCode_ItemCode_SubCode] UNIQUE NONCLUSTERED 
(
	[ItemCode] ASC,
	[SubCode] ASC
),
CONSTRAINT [UIX_ItemSubCode_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemType](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemType] [dbo].[d_ItemType] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[Note] [nvarchar](max) NULL,
	[LastUpdate] [int] NOT NULL,
	[ShortCode] [nvarchar](8) NULL,
	[MarkupRatio] [dbo].[d_Percent] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ItemType_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ItemType_ItemType] UNIQUE NONCLUSTERED 
(
	[ItemType] ASC
),
CONSTRAINT [UIX_ItemType_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ItemUOM](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[UOM] [dbo].[d_UOM] NOT NULL,
	[Rate] [dbo].[d_Qty] NOT NULL,
	[Shelf] [nvarchar](20) NULL,
	[Price] [dbo].[d_Price] NULL,
	[Cost] [dbo].[d_Cost] NULL,
	[RealCost] [dbo].[d_Cost] NULL,
	[MostRecentlyCost] [dbo].[d_Cost] NULL,
	[MinSalePrice] [dbo].[d_Price] NULL,
	[MaxSalePrice] [dbo].[d_Price] NULL,
	[MinPurchasePrice] [dbo].[d_Price] NULL,
	[MaxPurchasePrice] [dbo].[d_Price] NULL,
	--[BalQty] [dbo].[d_Qty] NOT NULL,
	[MinQty] [dbo].[d_Qty] NULL,
	[MaxQty] [dbo].[d_Qty] NULL,
	[NormalLevel] [dbo].[d_Qty] NULL,
	[ReOLevel] [dbo].[d_Qty] NULL,
	[ReOQty] [dbo].[d_Qty] NULL,
	[FOCLevel] [dbo].[d_Qty] NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[BonusPointQty] [dbo].[d_Qty] NULL,
	[BonusPoint] [dbo].[d_MemberPoint] NULL,
	[Weight] [dbo].[d_Number] NULL,
	[WeightUOM] [dbo].[d_UOM] NULL,
	[Volume] [dbo].[d_Number] NULL,
	[VolumeUOM] [dbo].[d_UOM] NULL,
	[BarCode] [dbo].[d_BarCode] NULL,
	[LastUpdate] [int] NOT NULL,
	[RedeemBonusPoint] [dbo].[d_MemberPoint] NULL,
	[CSGNQty] [dbo].[d_Qty] NULL,
	[Price2] [dbo].[d_Price] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_ITEMUOM_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ITEMUOM_ItemCode_UOM] UNIQUE NONCLUSTERED 
(
	[ItemCode] ASC,
	[UOM] ASC
),
CONSTRAINT [UIX_ITEMUOM_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[IV](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[TotalBonusPoint] [dbo].[d_MemberPoint] NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[PostToGL] [dbo].[d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[ReferPaymentDocKey] [bigint] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[MemberNo] [dbo].[d_MemberNo] NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[ReallocatePurchaseByProject] [dbo].[d_Boolean] NOT NULL,
	[ReallocatePurchaseByProjectJEDocKey] [bigint] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ReallocatePurchaseByProjectNo] [dbo].[d_Project] NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[RoundAdj] [dbo].[d_Money] NULL,
	[FinalTotal] [dbo].[d_Money] NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[TaxDate] [datetime] NULL,
	[IsRoundAdj] [dbo].[d_Boolean] NOT NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_IV_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_IV_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[IVDTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[PostToStockDate] [datetime] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[FOCTransferedQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[LocalTotalCost] [dbo].[d_Cost] NULL,
	[LocalFOCTotalCost] [dbo].[d_Cost] NULL,
	[BonusPoint] [dbo].[d_MemberPoint] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[ValueXferSODocKey] [bigint] NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[OurDONo] [dbo].[d_DocNo] NULL,
	[OurDODate] [datetime] NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[IsCalcBonusPoint] [dbo].[d_Boolean] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_IVDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[JE](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [dbo].[d_AccDescription] NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TotalDR] [dbo].[d_Money] NULL,
	[TotalCR] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[PrintCount] [smallint] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
	[LastUpdate] [int] NOT NULL,
	[PostDetailDesc] [dbo].[d_Boolean] NULL,
	[DocNo2] [nvarchar](25) NULL,
	[TaxableDR] [dbo].[d_Money] NULL,
	[TaxableCR] [dbo].[d_Money] NULL,
	[TaxDR] [dbo].[d_Money] NULL,
	[TaxCR] [dbo].[d_Money] NULL,
	[ExTaxDR] [dbo].[d_Money] NULL,
	[ExTaxCR] [dbo].[d_Money] NULL,
	[NetTotalDR] [dbo].[d_Money] NULL,
	[NetTotalCR] [dbo].[d_Money] NULL,
	[LocalTotalDR] [dbo].[d_Money] NULL,
	[LocalTotalCR] [dbo].[d_Money] NULL,
	[LocalTaxableDR] [dbo].[d_Money] NULL,
	[LocalTaxableCR] [dbo].[d_Money] NULL,
	[LocalTaxDR] [dbo].[d_Money] NULL,
	[LocalTaxCR] [dbo].[d_Money] NULL,
	[LocalExTaxDR] [dbo].[d_Money] NULL,
	[LocalExTaxCR] [dbo].[d_Money] NULL,
	[LocalNetTotalDR] [dbo].[d_Money] NULL,
	[LocalNetTotalCR] [dbo].[d_Money] NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[TotalDRExTax] [dbo].[d_Money] NULL,
	[TotalCRExTax] [dbo].[d_Money] NULL,
	[LocalTotalDRExTax] [dbo].[d_Money] NULL,
	[LocalTotalCRExTax] [dbo].[d_Money] NULL,
	[GLTrxID] [bigint] NULL,
	[TaxDate] [datetime] NULL,
	[RoundingMethod] [int] NOT NULL,
	[TaxCurrencyTaxDR] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxCR] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableDR] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableCR] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_JE_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_JE_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[JEDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[ToAccountRate] [dbo].[d_CurrencyRate] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[DR] [dbo].[d_Money] NULL,
	[CR] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[SupplyPurchase] [dbo].[d_SupplyPurchase] NOT NULL,
	[TaxDR] [dbo].[d_Money] NULL,
	[TaxCR] [dbo].[d_Money] NULL,
	[TotalDR] [dbo].[d_Money] NULL,
	[TotalCR] [dbo].[d_Money] NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[TaxableDR] [dbo].[d_Money] NULL,
	[TaxableCR] [dbo].[d_Money] NULL,
	[RefNo2] [nvarchar](20) NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[TaxBRNo] [nvarchar](25) NULL,
	[TaxBName] [dbo].[d_AccDescription] NULL,
	[TaxRefNo] [nvarchar](30) NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[TaxRegisterNo] [nvarchar](20) NULL,
	[TaxBillDate] [datetime] NULL,
	[LocalTaxableDR] [dbo].[d_Money] NULL,
	[LocalTaxableCR] [dbo].[d_Money] NULL,
	[LocalTaxDR] [dbo].[d_Money] NULL,
	[LocalTaxCR] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxDR] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxCR] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableDR] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableCR] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_JEDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Journal](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[EntryType] [dbo].[d_EntryType] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
 CONSTRAINT [PK_Journal_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Journal_JournalType] UNIQUE NONCLUSTERED 
(
	[JournalType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Layout](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[Title] [nvarchar](60) NOT NULL,
	[FormName] [nvarchar](60) NULL,
	[ComponentName] [nvarchar](60) NULL,
	[Template] [nvarchar](max) NULL,
	[IsDefault] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [bigint] NULL,
 CONSTRAINT [PK_Layout_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Layout_Title] UNIQUE NONCLUSTERED 
(
	[Title] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[LayoutUsers](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[Title] [nvarchar](60) NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_LayoutUsers_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_LayoutUsers_Title_UserID] UNIQUE NONCLUSTERED 
(
	[Title] ASC,
	[UserID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Location](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[Desc2] [nvarchar](80) NULL,
	[Address1] [dbo].[d_Address] NULL,
	[Address2] [dbo].[d_Address] NULL,
	[Address3] [dbo].[d_Address] NULL,
	[Address4] [dbo].[d_Address] NULL,
	[PostCode] [dbo].[d_PostCode] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Phone2] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Fax2] [dbo].[d_Phone] NULL,
	[Contact] [dbo].[d_Contact] NULL,
	[Note] [nvarchar](max) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[AreaCode] [dbo].[d_AreaCode] NULL,
	[CashPaymentMethod] [dbo].[d_PaymentMethod] NULL,
	[DebitCardPaymentMethod] [dbo].[d_PaymentMethod] NULL,
	[VoucherPaymentMethod] [dbo].[d_PaymentMethod] NULL,
	[ChequePaymentMethod] [dbo].[d_PaymentMethod] NULL,
	[PointPaymentMethod] [dbo].[d_PaymentMethod] NULL,
	[RoundingAccNo] [dbo].[d_AccNo] NULL,
	[DepositAccNo] [dbo].[d_AccNo] NULL,
	[ForfeitedAccNo] [dbo].[d_AccNo] NULL,
	[CreditCardChargesAccNo] [dbo].[d_AccNo] NULL,
	[PointPaymentAccNo] [dbo].[d_AccNo] NULL,
	[ServiceChargeAccNo] [dbo].[d_AccNo] NULL,
	[VoucherForfeitedAccNo] [dbo].[d_AccNo] NULL,
	[AlipayPaymentMethod] [dbo].[d_PaymentMethod] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_Location_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Location_Location] UNIQUE NONCLUSTERED 
(
	[Location] ASC
),
CONSTRAINT [UIX_Location_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Member](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[MemberNo] [dbo].[d_MemberNo] NOT NULL,
	[MemberType] [dbo].[d_MemberType] NOT NULL,
	[ID] [nvarchar](20) NULL,
	[Name] [dbo].[d_AccDescription] NULL,
	[Address1] [dbo].[d_Address] NULL,
	[Address2] [dbo].[d_Address] NULL,
	[Address3] [dbo].[d_Address] NULL,
	[Address4] [dbo].[d_Address] NULL,
	[PostCode] [dbo].[d_PostCode] NULL,
	[AreaCode] [dbo].[d_AreaCode] NULL,
	[Individual] [dbo].[d_Boolean] NOT NULL,
	[Race] [dbo].[d_Race] NULL,
	[DOB] [datetime] NULL,
	[DebtorCode] [dbo].[d_AccNo] NULL,
	[CompanyName] [dbo].[d_AccDescription] NULL,
	[Department] [nvarchar](30) NULL,
	[Title] [nvarchar](40) NULL,
	[MobilePhone] [dbo].[d_Phone] NULL,
	[DirectPhone] [dbo].[d_Phone] NULL,
	[DirectFax] [dbo].[d_Phone] NULL,
	[EmailAddress] [dbo].[d_EmailAddress] NULL,
	[IMAddress] [dbo].[d_IMAddress] NULL,
	[Note] [nvarchar](max) NULL,
	[OpeningPoints] [dbo].[d_MemberPoint] NOT NULL,
	[Gender] [char](1) NULL,
	[RegisterDate] [datetime] NULL,
	[ExpiryDate] [datetime] NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[CreatedTime] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[Photo] [varbinary](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_Member_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Member_MemberNo] UNIQUE NONCLUSTERED 
(
	[MemberNo] ASC
),
CONSTRAINT [UIX_Member_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[MemberBalPoint](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[MemberNo] [d_MemberNo] NOT NULL,
	[Point] [d_MemberPoint] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	CONSTRAINT [PK_MemberBalPoint_AutoKey] PRIMARY KEY CLUSTERED
	(
		[AutoKey] ASC
	),
	CONSTRAINT [UK_MemberBalPoint_MemberNo] UNIQUE NONCLUSTERED
	(
		[MemberNo] ASC
	),
	CONSTRAINT [UK_MemberBalPoint_Guid] UNIQUE NONCLUSTERED
	(
		[Guid] ASC
	)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[MemberType](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[MemberType] [dbo].[d_MemberType] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[Level] [tinyint] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_MemberType_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_MemberType_MemberType] UNIQUE NONCLUSTERED 
(
	[MemberType] ASC
),
CONSTRAINT [UIX_MemberType_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[MRU](
	[MRUKey] [int] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
	[MRUItems] [nvarchar](max) NULL,
 CONSTRAINT [PK_MRU_MRUKey_UserID] PRIMARY KEY CLUSTERED 
(
	[MRUKey] ASC,
	[UserID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[NetUsers](
	[SessionKey] [bigint] IDENTITY(1,1) NOT NULL,
	[LastCheckDateTime] [datetime] NOT NULL,
	[LoginTime] [datetime] NOT NULL,
	[IsInternetUser] [dbo].[d_Boolean] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
	[ComputerName] [nvarchar](20) NULL,
	[UserName] [nvarchar](20) NULL,
 CONSTRAINT [PK_NetUsers_SessionKey] PRIMARY KEY CLUSTERED 
(
	[SessionKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[NotifAllowUsers](
	[NotificationKey] [bigint] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_NotifAllowUsers_NotificationKey_UserID] PRIMARY KEY CLUSTERED 
(
	[NotificationKey] ASC,
	[UserID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Notification](
	[NotificationKey] [bigint] NOT NULL,
	[Header] [nvarchar](max) NULL,
	[Detail] [nvarchar](max) NULL,
	[UserName] [nvarchar](40) NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
 CONSTRAINT [PK_Notification_NotificationKey] PRIMARY KEY CLUSTERED 
(
	[NotificationKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[NotifReadUsers](
	[NotificationKey] [bigint] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_NotifReadUsers_NotificationKey_UserID] PRIMARY KEY CLUSTERED 
(
	[NotificationKey] ASC,
	[UserID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[OBalance](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[PeriodNo] [dbo].[d_PeriodNo] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[DR] [dbo].[d_Money] NULL,
	[CR] [dbo].[d_Money] NULL,
	[HomeDR] [dbo].[d_Money] NULL,
	[HomeCR] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_OBalance_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[OBDTL](
	[OBDtlKey] [bigint] IDENTITY(1,1) NOT NULL,
	[PeriodNo] [dbo].[d_PeriodNo] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Amount] [dbo].[d_Money] NULL,
	[HomeAmount] [dbo].[d_Money] NULL,
	[SourceType] [dbo].[d_SourceType] NULL,
	[SourceKey] [bigint] NULL,
 CONSTRAINT [PK_OBDTL_OBDtlKey] PRIMARY KEY CLUSTERED 
(
	[OBDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ObjectEventLog](
	[EventKey] [bigint] NOT NULL,
	[OccurTime] [datetime] NOT NULL,
	[EventType] [char](1) NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
	[ObjType] [dbo].[d_DocType] NULL,
	[ObjKey] [bigint] NULL,
	[ObjCode] [nvarchar](30) NULL,
 CONSTRAINT [PK_ObjectEventLog_EventKey] PRIMARY KEY CLUSTERED 
(
	[EventKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Package](
	[DocKey] [bigint] NOT NULL,
	[PackageCode] [dbo].[d_ItemCode] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[ExpiryDate] [datetime] NULL,
	[OpeningQty] [dbo].[d_Qty] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[LimitedQty] [dbo].[d_Qty] NULL,
	[SoldQty] [dbo].[d_Qty] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[IsActive] [dbo].[d_Boolean] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[PurchaseNetTotal] [dbo].[d_Money] NULL,
	[BarCode] [dbo].[d_BarCode] NULL,
	[PurchasedQty] [dbo].[d_Qty] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_Package_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_Package_PackageCode] UNIQUE NONCLUSTERED 
(
	[PackageCode] ASC
),
CONSTRAINT [UIX_Package_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PackageDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[SubTotal] [dbo].[d_Price] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[PurchasePrice] [dbo].[d_Price] NULL,
	[PurchaseSubTotal] [dbo].[d_Price] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_PackageDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
),
CONSTRAINT [UIX_PackageDtl_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PaymentMethod](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
	[BankAccount] [dbo].[d_AccNo] NOT NULL,
	[BankChargeAccount] [dbo].[d_AccNo] NULL,
	[BankChargePercent] [dbo].[d_Percent] NOT NULL,
	[MergeBankChargeTrans] [dbo].[d_Boolean] NOT NULL,
	[SpecialAccType] [dbo].[d_SpecialAccType] NOT NULL,
	[JournalType] [dbo].[d_JournalType] NOT NULL,
	[AcceptChequeNo] [dbo].[d_Boolean] NOT NULL,
	[PaymentBy] [dbo].[d_PaymentBy] NULL,
	[ODLimit] [dbo].[d_Money] NOT NULL,
	[PaymentFormatName] [dbo].[d_DocNoFormatName] NOT NULL,
	[ReceiptFormatName] [dbo].[d_DocNoFormatName] NOT NULL,
	[NextChequeNo] [dbo].[d_ChequeNo] NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[PaymentType] [nvarchar](12) NULL,
	[MinBankCharge] [dbo].[d_Money] NULL DEFAULT ((0)),
	[BankChargeTaxType] [dbo].[d_TaxType] NULL,
	[BankChargeTaxBRNo] [nvarchar](25) NULL,
	[BankChargeTaxBName] [dbo].[d_AccDescription] NULL,
	[BankChargeTaxRegisterNo] [nvarchar](20) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_PaymentMethod_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_PaymentMethod_PaymentMethod] UNIQUE NONCLUSTERED 
(
	[PaymentMethod] ASC
),
CONSTRAINT [UIX_PaymentMethod_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PBalance](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[PeriodNo] [dbo].[d_PeriodNo] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[DR] [dbo].[d_Money] NULL,
	[CR] [dbo].[d_Money] NULL,
	[HomeDR] [dbo].[d_Money] NULL,
	[HomeCR] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_PBalance_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PeriodLock](
	[PeriodNo] [int] NOT NULL,
	[Lock] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_PeriodLock_PeriodNo] PRIMARY KEY CLUSTERED 
(
	[PeriodNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PeriodLockException](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[PeriodNo] [int] NOT NULL,
	[FunctionName] [nvarchar](40) NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_PeriodLockException_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_PeriodLockException_PeriodNo_FunctionName_UserID] UNIQUE NONCLUSTERED 
(
	[PeriodNo] ASC,
	[FunctionName] ASC,
	[UserID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PI](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[SupplierDONo] [dbo].[d_DocNo] NULL,
	[SupplierInvoiceNo] [dbo].[d_DocNo] NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[ForeignCharges] [dbo].[d_Money] NULL,
	[LocalCharges] [dbo].[d_Money] NULL,
	[LandedCostMethod] [char](1) NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[PostToGL] [dbo].[d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[ReferPaymentDocKey] [bigint] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[RefNo2] [nvarchar](20) NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[TaxDate] [datetime] NULL,
	[IsRoundAdj] [dbo].[d_Boolean] NOT NULL,
	[RoundAdj] [dbo].[d_Money] NULL,
	[FinalTotal] [dbo].[d_Money] NULL,
	[SelfBilledApprovalNo] [nvarchar](30) NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[DocDate2] [datetime] NULL,
 CONSTRAINT [PK_PI_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_PI_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PIDTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[OurPONo] [dbo].[d_DocNo] NULL,
	[OurPODate] [datetime] NULL,
	[PostToStockDate] [datetime] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[FOCTransferedQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ForeignCharges] [dbo].[d_Cost] NULL,
	[LocalCharges] [dbo].[d_Cost] NULL,
	[Duty] [dbo].[d_Cost] NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[DeliveryDate] [datetime] NULL,
	[CNAmt] [dbo].[d_Money] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_PIDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PLFormat](
	[AutoKey] [int] IDENTITY(1,1) NOT NULL,
	[Seq] [int] NOT NULL,
	[RowType] [dbo].[d_FRRowType] NOT NULL,
	[AccType] [dbo].[d_AccType] NULL,
	[Description] [dbo].[d_AccDescription] NULL,
	[CreditAsPositive] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_PLFormat_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PlugIn](
	[Guid] [uniqueidentifier] NOT NULL,
	[Seq] [int] NOT NULL,
	[Name] [nvarchar](100) NOT NULL,
	[Version] [nvarchar](20) NOT NULL,
	[Description] [nvarchar](max) NULL,
	[WhatsNew] [nvarchar](max) NULL,
	[ExtractFiles] [dbo].[d_Boolean] NOT NULL,
	[AssemblyFile] [nvarchar](max) NULL,
	[Signature] [varchar](88) NULL,
	[MinimumAccountingVersion] [varchar](20) NULL,
	[ScriptLanguage] [char](2) NULL,
	[InstallationScript] [nvarchar](max) NULL,
	[CreatedTimeStamp] [datetime] NULL,
	[Manufacturer] [nvarchar](max) NULL,
	[ManufacturerUrl] [nvarchar](max) NULL,
	[Copyright] [nvarchar](max) NULL,
	[SalesPhone] [nvarchar](25) NULL,
	[SupportPhone] [nvarchar](25) NULL,
	[AllowSync] [dbo].[d_Boolean] NULL,
	[SupportLicenseKey] [dbo].[d_Boolean] NULL,
	[LicenseKey] [varchar](max) NULL,
 CONSTRAINT [PK_PlugIn_Guid] PRIMARY KEY CLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PlugInFiles](
	[Guid] [uniqueidentifier] NOT NULL,
	[FileName] [nvarchar](260) NOT NULL,
	[CreationTimeUtc] [datetime] NULL,
	[LastAccessTimeUtc] [datetime] NULL,
	[LastWriteTimeUtc] [datetime] NULL,
	[ExecuteAfterExtracted] [dbo].[d_Boolean] NOT NULL,
	[MsiGuid] [uniqueidentifier] NULL,
	[FileImage] [varbinary](max) NULL,
 CONSTRAINT [PK_PlugInFiles_Guid_FileName] PRIMARY KEY CLUSTERED 
(
	[Guid] ASC,
	[FileName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PO](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[ReferDepositDocKey] [bigint] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanTransferByValue] [dbo].[d_Boolean] NULL,
	[TransferedAmt] [dbo].[d_Money] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[IsRoundAdj] [dbo].[d_Boolean] NOT NULL,
	[RoundAdj] [dbo].[d_Money] NULL,
	[FinalTotal] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_PO_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_PO_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PocketSyncProfile](
	[ProfileKey] [bigint] NOT NULL,
	[ProfileName] [nvarchar](60) NOT NULL,
	[Email] [nvarchar](80) NULL,
	[ExpiredDays] [smallint] NOT NULL,
	[Criteria] [varbinary](max) NULL,
	[FolderName] [nvarchar](200) NULL,
	[LastDate] [datetime] NULL,
	[LastSynchronized] [datetime] NULL,
	[SyncID] [nvarchar](10) NULL,
	[DeviceID] [nvarchar](40) NULL,
	[LastModified] [datetime] NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NULL,
	[LastUpdate] [int] NULL,
 CONSTRAINT [PK_PocketSyncProfile_ProfileKey] PRIMARY KEY CLUSTERED 
(
	[ProfileKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_PocketSyncProfile_ProfileName] UNIQUE NONCLUSTERED 
(
	[ProfileName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PODTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[FOCTransferedQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[FromSODtlKey] [bigint] NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[FromAODtlKey] [bigint] NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[FromSODocList] [nvarchar](max) NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_PODTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PointTrans](
	[PointTransKey] [bigint] NOT NULL,
	[SourceType] [varchar](2) NOT NULL,
	[MemberNo] [dbo].[d_MemberNo] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Points] [dbo].[d_MemberPoint] NOT NULL,
	[SourceGuid] [uniqueidentifier] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[PointType] [char](1) NULL,
 CONSTRAINT [PK_PointTrans_PointTransKey] PRIMARY KEY CLUSTERED 
(
	[PointTransKey] ASC
),
CONSTRAINT [UIX_PointTrans_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PostingAccountGroup](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccountGroup] [dbo].[d_PostingAccountGroup] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[SalesCode] [dbo].[d_AccNo] NULL,
	[CashSalesCode] [dbo].[d_AccNo] NULL,
	[SalesReturnCode] [dbo].[d_AccNo] NULL,
	[SalesDiscountCode] [dbo].[d_AccNo] NULL,
	[PurchaseDiscountCode] [dbo].[d_AccNo] NULL,
	[PurchaseCode] [dbo].[d_AccNo] NULL,
	[PurchaseReturnCode] [dbo].[d_AccNo] NULL,
	[LastUpdate] [int] NOT NULL,
 CONSTRAINT [PK_PostingAccountGroup_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_PostingAccountGroup_AccountGroup] UNIQUE NONCLUSTERED 
(
	[AccountGroup] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PR](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[SupplierCNNo] [dbo].[d_DocNo] NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[PostToStock] [dbo].[d_Boolean] NOT NULL,
	[PostToGL] [dbo].[d_Boolean] NOT NULL,
	[ReferDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[RefNo2] [nvarchar](20) NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TaxDocNo] [nvarchar](20) NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[SupplierInvoiceNo] [dbo].[d_DocNos] NULL,
	[Reason] [dbo].[d_Reason] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[TaxDate] [datetime] NULL,
	[IsRoundAdj] [dbo].[d_Boolean] NOT NULL,
	[RoundAdj] [dbo].[d_Money] NULL,
	[FinalTotal] [dbo].[d_Money] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[DocDate2] [datetime] NULL,
 CONSTRAINT [PK_PR_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_PR_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PRDTL](
	[DtlKey] [bigint] NOT NULL,
	[FOCDtlKey] [bigint] NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[YourDONo] [dbo].[d_DocNo] NULL,
	[YourDODate] [datetime] NULL,
	[OurPONo] [dbo].[d_DocNo] NULL,
	[OurPODate] [datetime] NULL,
	[PostToStockDate] [datetime] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[GoodsReturn] [dbo].[d_Boolean] NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_PRDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PriceBookMatrix](
	[MatrixKey] [bigint] NOT NULL,
	[MatrixName] [nvarchar](20) NOT NULL,
	[FromDate] [datetime] NULL,
	[ToDate] [datetime] NULL,
	[Y] [nvarchar](20) NOT NULL,
	[YCriteria] [nvarchar](max) NULL,
	[X] [nvarchar](20) NULL,
	[XCriteria] [nvarchar](max) NULL,
	[UnitPrice] [dbo].[d_Boolean] NULL,
	[Discount] [dbo].[d_Boolean] NULL,
	[GEQty] [dbo].[d_Qty] NULL,
	[IsActive] [dbo].[d_Boolean] NULL,
	[Priority] [smallint] NULL,
 CONSTRAINT [PK_PriceBookMatrix_MatrixKey] PRIMARY KEY CLUSTERED 
(
	[MatrixKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PriceBookRule](
	[RuleNo] [bigint] IDENTITY(1,1) NOT NULL,
	[FromDate] [datetime] NULL,
	[ToDate] [datetime] NULL,
	[FromItemType] [dbo].[d_ItemType] NULL,
	[ToItemType] [dbo].[d_ItemType] NULL,
	[FromItemGroup] [dbo].[d_ItemGroup] NULL,
	[ToItemGroup] [dbo].[d_ItemGroup] NULL,
	[FromItemBrand] [dbo].[d_ItemBrand] NULL,
	[ToItemBrand] [dbo].[d_ItemBrand] NULL,
	[FromItemClass] [dbo].[d_ItemClass] NULL,
	[ToItemClass] [dbo].[d_ItemClass] NULL,
	[FromItemCategory] [dbo].[d_ItemCategory] NULL,
	[ToItemCategory] [dbo].[d_ItemCategory] NULL,
	[FromItemCode] [dbo].[d_ItemCode] NULL,
	[ToItemCode] [dbo].[d_ItemCode] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[FromLocation] [dbo].[d_Location] NULL,
	[ToLocation] [dbo].[d_Location] NULL,
	[FromProjNo] [dbo].[d_Project] NULL,
	[ToProjNo] [dbo].[d_Project] NULL,
	[FromDeptNo] [dbo].[d_Dept] NULL,
	[ToDeptNo] [dbo].[d_Dept] NULL,
	[FromSalesAgent] [dbo].[d_Agent] NULL,
	[ToSalesAgent] [dbo].[d_Agent] NULL,
	[FromPriceCategory] [dbo].[d_PriceCategory] NULL,
	[ToPriceCategory] [dbo].[d_PriceCategory] NULL,
	[FromDebtorType] [dbo].[d_DebtorType] NULL,
	[ToDebtorType] [dbo].[d_DebtorType] NULL,
	[FromAreaCode] [dbo].[d_AreaCode] NULL,
	[ToAreaCode] [dbo].[d_AreaCode] NULL,
	[FromDebtorCode] [dbo].[d_AccNo] NULL,
	[ToDebtorCode] [dbo].[d_AccNo] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NULL,
	[GEQty] [dbo].[d_Qty] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[IsActive] [dbo].[d_Boolean] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[MatrixKey] [bigint] NULL,
	[Priority] [smallint] NULL,
 CONSTRAINT [PK_PriceBookRule_RuleNo] PRIMARY KEY CLUSTERED 
(
	[RuleNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PriceCategory](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[PriceCategory] [dbo].[d_PriceCategory] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[DiscountPercent] [dbo].[d_Percent] NULL,
	[DetailDiscount] [nvarchar](20) NULL,
	[LastUpdate] [int] NOT NULL,
	[MarkupRatio] [dbo].[d_Percent] NULL,
 CONSTRAINT [PK_PriceCategory_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_PriceCategory_PriceCategory] UNIQUE NONCLUSTERED 
(
	[PriceCategory] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Profile](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[CompanyName] [nvarchar](80) NOT NULL,
	[Remark] [nvarchar](12) NULL,
	[RegisterNo] [nvarchar](25) NULL,
	[Address1] [dbo].[d_Address] NULL,
	[Address2] [dbo].[d_Address] NULL,
	[Address3] [dbo].[d_Address] NULL,
	[Address4] [dbo].[d_Address] NULL,
	[PostCode] [dbo].[d_PostCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPostCode] [dbo].[d_PostCode] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[Attention] [nvarchar](40) NULL,
	[Contact] [dbo].[d_Contact] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Phone2] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Fax2] [dbo].[d_Phone] NULL,
	[NatureOfBusiness] [nvarchar](40) NULL,
	[EmailAddress] [nvarchar](80) NULL,
	[Logo] [varbinary](max) NULL,
	[LogoClass] [nvarchar](40) NULL,
	[ReportHeader] [nvarchar](max) NULL,
	[RemarkColor] [int] NULL,
	[LastUpdate] [int] NOT NULL,
	[TaxRegisterNo] [nvarchar](20) NULL,
	[CountriesInJson] [nvarchar](max) NULL,
 CONSTRAINT [PK_Profile_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Profile_CompanyName] UNIQUE NONCLUSTERED 
(
	[CompanyName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Project](
	[ProjNo] [dbo].[d_Project] NOT NULL,
	[ParentProjNo] [dbo].[d_Project] NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
CONSTRAINT [PK_Project_ProjNo] PRIMARY KEY CLUSTERED 
(
	[ProjNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PRProcessing](
	[DocKey] [bigint] NOT NULL,
	[FromDtlKey] [bigint] NOT NULL,
	[FromDocKey] [bigint] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[SODescription] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[Location] [dbo].[d_Location] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[RequestQty] [dbo].[d_Qty] NULL,
	[RequestUOM] [dbo].[d_UOM] NULL,
	[IsAllowOPEdit] [dbo].[d_Boolean] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[Remark] [nvarchar](100) NULL,
	[DeliveryDate] [datetime] NULL,
 CONSTRAINT [PK_PRProcessing_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PRProcessingPO](
	[DocKey] [bigint] NOT NULL,
	[PRPKey] [bigint] NOT NULL,
	[FromDtlKey] [bigint] NOT NULL,
	[FromDocKey] [bigint] NOT NULL,
	[RefDocKey] [bigint] NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[RefDocType] [dbo].[d_DocType] NULL,
	[RefDtlKey] [bigint] NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[OrderQty] [dbo].[d_Qty] NULL,
	[OrderUOM] [dbo].[d_UOM] NULL,
	[OrderRate] [dbo].[d_Qty] NULL,
	[KIV] [dbo].[d_Boolean] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
 CONSTRAINT [PK_PRProcessingPO_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PurchaseAgent](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[Signature] [varbinary](max) NULL,
 CONSTRAINT [PK_PurchaseAgent_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_PurchaseAgent_PurchaseAgent] UNIQUE NONCLUSTERED 
(
	[PurchaseAgent] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PurchaseConsignment](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NOT NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[SupplierDONo] [dbo].[d_DocNo] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[Total] [dbo].[d_Money] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[RefNo2] [nvarchar](20) NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
CONSTRAINT [PK_PurchaseConsignment_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
CONSTRAINT [IX_PurchaseConsignment_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PurchaseConsignmentDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[Remark] [d_ItemDescription] NULL,
 CONSTRAINT [PK_PurchaseConsignmentDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PurchaseConsignmentReturn](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NOT NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[SupplierDONo] [dbo].[d_DocNo] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[Total] [dbo].[d_Money] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[ReferAdjDocKey] [bigint] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
CONSTRAINT [PK_PurchaseConsignmentReturn_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
CONSTRAINT [IX_PurchaseConsignmentReturn_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PurchaseConsignmentReturnDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Lost] [dbo].[d_Boolean] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[Remark] [d_ItemDescription] NULL,
 CONSTRAINT [PK_PurchaseConsignmentReturnDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PQ](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[RequestedBy] [nvarchar](40) NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[Note] [ntext] NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ApprovalUserID] [dbo].[d_UserID] NULL,
	[ExternalLink] [ntext] NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_PQ_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[PQDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [ntext] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[RequiredDate] [datetime] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_PQDTL] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[QT](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Validity] [nvarchar](40) NULL,
	[DeliveryTerm] [nvarchar](40) NULL,
	[PaymentTerm] [nvarchar](40) NULL,
	[YourRef] [nvarchar](20) NULL,
	[CC] [nvarchar](20) NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ApprovalUserID] [dbo].[d_UserID] NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[IsRoundAdj] [dbo].[d_Boolean] NOT NULL,
	[RoundAdj] [dbo].[d_Money] NULL,
	[FinalTotal] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_QT_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_QT_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[QTDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_QTDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Race](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[Race] [dbo].[d_Race] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_Race_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Race_Race] UNIQUE NONCLUSTERED 
(
	[Race] ASC
),
CONSTRAINT [UIX_Race_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RCV](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Total] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_RCV_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_RCV_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RCVDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UnitCost] [dbo].[d_Cost] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_RCVDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Registry](
	[RegID] [int] NOT NULL,
	[RegType] [smallint] NULL,
	[RegValue] [nvarchar](255) NULL,
 CONSTRAINT [PK_Registry_RegID] PRIMARY KEY CLUSTERED 
(
	[RegID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RemarkName](
	[DocType] [dbo].[d_DocType] NOT NULL,
	[Remark1Name] [nvarchar](30) NULL,
	[Remark2Name] [nvarchar](30) NULL,
	[Remark3Name] [nvarchar](30) NULL,
	[Remark4Name] [nvarchar](30) NULL,
	[Remark1MRU] [dbo].[d_Boolean] NOT NULL,
	[Remark2MRU] [dbo].[d_Boolean] NOT NULL,
	[Remark3MRU] [dbo].[d_Boolean] NOT NULL,
	[Remark4MRU] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_RemarkName_DocType] PRIMARY KEY CLUSTERED 
(
	[DocType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Report](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ReportName] [nvarchar](100) NOT NULL,
	[ReportType] [nvarchar](60) NULL,
	[ReportTemplate] [varbinary](max) NULL,
 CONSTRAINT [PK_Report_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Report_ReportName] UNIQUE NONCLUSTERED 
(
	[ReportName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ReportAttributes](
	[ReportName] [nvarchar](100) NOT NULL,
	[DenyUsers] [nvarchar](max) NULL,
	[Attributes] [nvarchar](max) NULL,
CONSTRAINT [PK_ReportAttributes_ReportName] PRIMARY KEY CLUSTERED 
(
	[ReportName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ReverseGSTDO](
	[DocKey] [bigint] NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[JEDocKey] [bigint] NOT NULL,
 CONSTRAINT [PK_ReverseGSTDO_DocKey_DocType] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC,
	[DocType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ReverseGSTPayment](
	[DocKey] [bigint] NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[AppliedDocKey] [bigint] NOT NULL,
	[AppliedDocType] [dbo].[d_DocType] NOT NULL,
	[JEDocKey] [bigint] NOT NULL,
 CONSTRAINT [PK_ReverseGSTPayment_DocKey_DocType_AppliedDocKey_AppliedDocType] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC,
	[DocType] ASC,
	[AppliedDocKey] ASC,
	[AppliedDocType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ReverseSSTPayment] (
	[DocKey] [bigint] NOT NULL,
	[DocType] [d_DocType] NOT NULL,
	[AppliedDocKey] [bigint] NOT NULL,
	[AppliedDocType] [d_DocType] NOT NULL,
	[JEDocKey] [bigint] NOT NULL,
 CONSTRAINT [PK_ReverseSSTPayment_DocKey_DocType_AppliedDocKey_AppliedDocType] PRIMARY KEY CLUSTERED
(
	[DocKey] ASC,
	[DocType] ASC,
	[AppliedDocKey] ASC,
	[AppliedDocType] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RQ](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_RQ_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_RQ_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RQDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_RQDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SalesAgent](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[Desc2] [nvarchar](40) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[Signature] [varbinary](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_SalesAgent_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_SalesAgent_SalesAgent] UNIQUE NONCLUSTERED 
(
	[SalesAgent] ASC
),
CONSTRAINT [UIX_SalesAgent_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SerialNoTrans](
	[TransKey] [bigint] NOT NULL,
	[DocType] [dbo].[d_DocType] NULL,
	[DocKey] [bigint] NULL,
	[DtlKey] [bigint] NULL,
	[FromSerialNo] [dbo].[d_SerialNo] NULL,
	[ToSerialNo] [dbo].[d_SerialNo] NULL,
	[Count] [bigint] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[TransferedSN] [nvarchar](max) NULL,
	[FromDocDtlKey] [bigint] NULL,
	[ManufacturedDate] [datetime] NULL,
	[ExpiryDate] [datetime] NULL,
	[LastSalesDate] [datetime] NULL,
	[Remarks] [nvarchar](20) NULL,
	[Cancelled] [dbo].[d_Boolean] NULL,
	[Note] [nvarchar](max) NULL,
	[DocDate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_SerialNoTrans_TransKey] PRIMARY KEY CLUSTERED 
(
	[TransKey] ASC
),
CONSTRAINT [UIX_SerialNoTrans_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Session](
	[SessionKey] [int] IDENTITY(1,1) NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
	[TimeStart] [datetime] NULL DEFAULT (getdate()),
	[TimeEnd] [datetime] NULL,
	[ComputerName] [nvarchar](20) NULL,
	[UserName] [nvarchar](20) NULL,
	[PrivateKey] [int] NULL,
 CONSTRAINT [PK_Session_SessionKey] PRIMARY KEY CLUSTERED 
(
	[SessionKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Settings](
	[Name] [nvarchar](100) NOT NULL,
	[Value] [nvarchar](max) NULL,
 CONSTRAINT [PK_Settings_Name] PRIMARY KEY CLUSTERED
(
	[Name] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[ShippingMethod](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[ShippingMethod] [dbo].[d_ShippingMethod] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[LastUpdate] [int] NOT NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_ShippingMethod_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_ShippingMethod_ShippingMethod] UNIQUE NONCLUSTERED 
(
	[ShippingMethod] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SimpleSyncSetting](
	[SettingKey] [bigint] NOT NULL,
	[Server] [nvarchar](50) NULL,
	[Password] [nvarchar](200) NULL,
	[IsDefaultPassword] [dbo].[d_Boolean] NOT NULL,
	[DBName] [nvarchar](50) NULL,
	[LoginUserID] [dbo].[d_UserID] NULL,
	[LoginPassword] [nvarchar](200) NULL,
	[IsCopyPriceBook] [dbo].[d_Boolean] NOT NULL,
	[IsCopyOpening] [dbo].[d_Boolean] NOT NULL,
	[IsCopyQTFromServer] [dbo].[d_Boolean] NOT NULL,
	[IsCopySOFromServer] [dbo].[d_Boolean] NOT NULL,
	[IsCopyDOFromServer] [dbo].[d_Boolean] NOT NULL,
	[IsCopyIVFromServer] [dbo].[d_Boolean] NOT NULL,
	[IsCopyCSFromServer] [dbo].[d_Boolean] NOT NULL,
	[IsExportQTToServer] [dbo].[d_Boolean] NOT NULL,
	[IsExportSOToServer] [dbo].[d_Boolean] NOT NULL,
	[IsExportDOToServer] [dbo].[d_Boolean] NOT NULL,
	[IsExportIVToServer] [dbo].[d_Boolean] NOT NULL,
	[IsExportCSToServer] [dbo].[d_Boolean] NOT NULL,
	[SalesAgentFilterCriteria] [nvarchar](max) NULL,
 CONSTRAINT [PK_SimpleSyncSetting_SettingKey] PRIMARY KEY CLUSTERED 
(
	[SettingKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SO](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[ReferDepositDocKey] [bigint] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[ToDocType] [dbo].[d_DocType] NULL,
	[ToDocKey] [bigint] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanTransferByValue] [dbo].[d_Boolean] NULL,
	[TransferedAmt] [dbo].[d_Money] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[ToDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[ShipVia] [dbo].[d_ShippingMethod] NULL,
	[ShipInfo] [nvarchar](40) NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[IsRoundAdj] [dbo].[d_Boolean] NOT NULL,
	[RoundAdj] [dbo].[d_Money] NULL,
	[FinalTotal] [dbo].[d_Money] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_SO_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_SO_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SODTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[TransferedQty] [dbo].[d_Qty] NOT NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[FOCTransferedQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[Transferable] [dbo].[d_Boolean] NOT NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[TransferedPOQty] [dbo].[d_Qty] NULL,
	[FOCTransferedPOQty] [dbo].[d_Qty] NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[TransferedAOQty] [dbo].[d_Qty] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[StockReceived] [dbo].[d_Boolean] NOT NULL,
	[TotalPurchaseRequestQty] [dbo].[d_Qty] NULL,
	[TotalDeliveryRequestQty] [dbo].[d_Qty] NULL,
	[TotalAssemblyOrderRequestQty] [dbo].[d_Qty] NULL,
	[PurchaseStatus] [smallint] NULL,
	[DeliveryStatus] [smallint] NULL,
	[AssemblyOrderStatus] [smallint] NULL,
	[LastOPModified] [datetime] NULL,
	[LastOPModifiedUserID] [dbo].[d_UserID] NULL,
	[LastDRPModified] [datetime] NULL,
	[LastAORPModified] [datetime] NULL,
	[LastDRPModifiedUserID] [dbo].[d_UserID] NULL,
	[LastAORPModifiedUserID] [dbo].[d_UserID] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_SODTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SSTProcessor](
	[SSTKey] [bigint] IDENTITY(1,1) NOT NULL,
	[FromDate] [datetime] NOT NULL,
	[ToDate] [datetime] NOT NULL,
	[Duration] [tinyint] NOT NULL,
	[Submitted] [dbo].[d_Boolean] NOT NULL,
	[TaxDataReport] [varbinary](max) NULL,
	[JEDocKey] [bigint] NULL,
	[DeclarantName] [nvarchar](200) NULL,
	[ICOrPassportNo] [nvarchar](20) NULL,
	[DeclarantDesignation] [nvarchar](200) NULL,
	[TelephoneNo] [nvarchar](20) NULL,
	[PenaltyRate] [d_Qty] NULL,
	[Compressed] [dbo].[d_Boolean] NOT NULL,
	[ParentSSTKey] [bigint] NULL,
	[Seq] [int] NULL,
	[ProductVersion] [nvarchar](100) NULL,
	[SSTVersion] [int] NOT NULL,
	[DeclarationDate] [datetime] NULL,
	[CreatedTimeStamp] [datetime] NULL,
	[CreatedUserID] [dbo].[d_UserID] NULL,
	CONSTRAINT [PK_SSTProcessorr_SSTKey] PRIMARY KEY CLUSTERED
	(
		[SSTKey] ASC
	)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[StockDisassembly](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[ItemCost] [dbo].[d_Cost] NULL,
	[Total] [dbo].[d_Money] NULL,
	[DtlTotal] [dbo].[d_Money] NULL,
	[DisassemblyCost] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[IsMultilevel] [dbo].[d_Boolean] NULL,
	[CostOptions] [int] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_StockDisassembly_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_StockDisassembly_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[StockDisassemblyDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NULL,
	[Seq] [int] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[CostFraction] [dbo].[d_Money] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[ItemCost] [dbo].[d_Cost] NULL,
	[OverHeadCost] [money] NULL,
	[SubTotalCost] [money] NULL,
	[Remark] [dbo].[d_Remark] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[ParentDtlKey] [bigint] NULL,
	[IsBOMItem] [dbo].[d_Boolean] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_StockDisassemblyDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[StockDTL](
	[StockDTLKey] [bigint] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[UOM] [dbo].[d_UOM] NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[DocDate] [datetime] NOT NULL,
	[Seq] [bigint] NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DtlKey] [bigint] NOT NULL,
	[Qty] [dbo].[d_Qty] NOT NULL,
	[Cost] [dbo].[d_Cost] NOT NULL,
	[AdjustedCost] [dbo].[d_Cost] NOT NULL,
	[TotalCost] [dbo].[d_Cost] NOT NULL,
	[CostType] [dbo].[d_CostType] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[ReferTo] [bigint] NOT NULL,
	[InputCost] [dbo].[d_Cost] NOT NULL,
 CONSTRAINT [PK_StockDTL_StockDTLKey] PRIMARY KEY CLUSTERED 
(
	[StockDTLKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[StockDTLChangeQ](
	[ChangeQKey] [bigint] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[StockDTLKey] [bigint] NOT NULL,
	[Action] [char](1) NOT NULL,
 CONSTRAINT [PK_StockDTLChangeQ_ChangeQKey] PRIMARY KEY CLUSTERED 
(
	[ChangeQKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[StockPBalance](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[StockSetKey] [int] NOT NULL,
	[PeriodNo] [dbo].[d_PeriodNo] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Balance] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_StockPBalance_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[StockSet](
	[StockSetKey] [int] NOT NULL,
	[OpenStock] [dbo].[d_AccNo] NOT NULL,
	[CloseStock] [dbo].[d_AccNo] NOT NULL,
	[BalanceStock] [dbo].[d_AccNo] NOT NULL,
 CONSTRAINT [PK_StockSet_StockSetKey] PRIMARY KEY CLUSTERED 
(
	[StockSetKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[StockTake]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[StockTake](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [DateTime] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[Total] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[Location] [dbo].[d_Location] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastPostedTimeStamp] [datetime] NULL,
	[ToAdjDocKey] [bigint] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_StockTake_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [UIX_StockTake_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[StockTakeDTL]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[StockTakeDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL ,
	[Seq] [int] NOT NULL, 
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[Shelf] [nvarchar](20) NULL,
	[BalQty] [dbo].[d_Qty] NULL,
	[PhysicalQty] [dbo].[d_Qty] NULL,
	[DiffQty] [dbo].[d_Qty] NULL,
	[UnitCost] [dbo].[d_Cost] NULL,
	[SubTotal] [dbo].[d_money] NULL,
	[Remarks] [dbo].[d_Remark] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_StockTakeDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SyncCriteriaProfile](
	[CriteriaKey] [bigint] NOT NULL,
	[CriteriaName] [nvarchar](50) NULL,
	[ItemCodeFilter] [nvarchar](max) NULL,
	[LocationFilter] [nvarchar](max) NULL,
	[MasterDirect] [int] NULL,
	[QTDirect] [int] NULL,
	[SODirect] [int] NULL,
	[DODirect] [int] NULL,
	[IVDirect] [int] NULL,
	[CSDirect] [int] NULL,
	[CNDirect] [int] NULL,
	[DNDirect] [int] NULL,
	[DRDirect] [int] NULL,
	[XSDirect] [int] NULL,
	[RQDirect] [int] NULL,
	[PODirect] [int] NULL,
	[GRDirect] [int] NULL,
	[PIDirect] [int] NULL,
	[CPDirect] [int] NULL,
	[PRDirect] [int] NULL,
	[GTDirect] [int] NULL,
	[XPDirect] [int] NULL,
 CONSTRAINT [PK_SyncCriteriaProfile_CriteriaKey] PRIMARY KEY CLUSTERED 
(
	[CriteriaKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[SyncProfile](
	[ProfileKey] [bigint] NOT NULL,
	[ProfileName] [nvarchar](50) NOT NULL,
	[URI] [nvarchar](255) NOT NULL,
	[PortNumber] [int] NOT NULL,
	[EncryptionKey] [nvarchar](100) NOT NULL,
	[ServerPassword] [nchar](50) NULL,
	[SyncCriteriaProfileKey] [bigint] NOT NULL,
 CONSTRAINT [PK_SyncProfile_ProfileKey] PRIMARY KEY CLUSTERED 
(
	[ProfileKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Tariff](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[TariffCode] [nvarchar](12) NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Desc2] [nvarchar](100) NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_Tariff_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Tariff_TariffCode] UNIQUE NONCLUSTERED 
(
	[TariffCode] ASC
),
CONSTRAINT [UIX_Tariff_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TaxDocNo](
	[TaxDocNoKey] [int] IDENTITY(1,1) NOT NULL,
	[NextNumber] [bigint] NULL,
	[FromNumber] [bigint] NOT NULL,
	[ToNumber] [bigint] NOT NULL,
	[Count] [int] NOT NULL,
	[UseCount] [int] NOT NULL,
	[VoidCount] [int] NOT NULL,
	[FromDate] [datetime] NULL,
	[ToDate] [datetime] NULL,
	[Format] [nvarchar](30) NOT NULL,
	[IsDefault] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_TaxDocNo_TaxDocNoKey] PRIMARY KEY CLUSTERED 
(
	[TaxDocNoKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TaxDocNoDTL](
	[TaxDocNoDTLKey] [bigint] IDENTITY(1,1) NOT NULL,
	[TaxDocNoKey] [int] NOT NULL,
	[Number] [nvarchar](20) NOT NULL,
	[UseInDocType] [dbo].[d_DocType] NULL,
	[UseInDocKey] [bigint] NULL,
	[UseInDocNo] [dbo].[d_DocNo] NULL,
	[Void] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_TaxDocNoDTL_TaxDocNoDTLKey] PRIMARY KEY CLUSTERED 
(
	[TaxDocNoDTLKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TaxExemption](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccNo] [d_AccNo] NOT NULL, 
	[ItemCode] [d_ItemCode] NOT NULL,
	[SalesExemptionNo] [d_SalesExemptionNo] NOT NULL,
	[TaxType] [d_TaxType] NOT NULL,
	[LastUpdate] [int] NOT NULL,
 CONSTRAINT [PK_TaxExemption_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_TaxExemption_AccNo_ItemCode] UNIQUE NONCLUSTERED 
(
	[AccNo] ASC,
	[ItemCode] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TaxTrans](
	[TaxTransKey] [bigint] IDENTITY(1,1) NOT NULL,
	[SourceType] [dbo].[d_SourceType] NOT NULL,
	[SourceKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[TaxType] [dbo].[d_TaxType] NOT NULL,
	[SupplyPurchase] [dbo].[d_SupplyPurchase] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[TaxableAccNo] [dbo].[d_AccNo] NULL,
	[TaxableName] [dbo].[d_AccDescription] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[SourceDtlKey] [bigint] NULL,
	[Seq] [int] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TaxRate] [dbo].[d_Percent] NOT NULL,
	[TaxAccNo] [dbo].[d_AccNo] NULL,
	[TaxDate] [datetime] NOT NULL,
	[RegisterNo] [nvarchar](25) NULL,
	[TaxRegisterNo] [nvarchar](20) NULL,
	[TaxRefNo] [nvarchar](30) NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[OriginalDtlKey] [bigint] NULL,
	[OriginalDtlType] [dbo].[d_DtlType] NULL,
 CONSTRAINT [PK_TaxTrans_TaxTransKey] PRIMARY KEY CLUSTERED 
(
	[TaxTransKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TaxTransAudit](
	[TaxTransAuditKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AuditDateTime] [datetime] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_TaxTransAudit_TaxTransAuditKey] PRIMARY KEY CLUSTERED 
(
	[TaxTransAuditKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TaxTransAuditDTL](
	[TaxTransAuditDtlKey] [bigint] IDENTITY(1,1) NOT NULL,
	[TaxTransAuditKey] [bigint] NOT NULL,
	[TaxTransKey] [bigint] NOT NULL,
	[SourceType] [dbo].[d_SourceType] NOT NULL,
	[SourceKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[TaxType] [dbo].[d_TaxType] NOT NULL,
	[SupplyPurchase] [dbo].[d_SupplyPurchase] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[TaxableAccNo] [dbo].[d_AccNo] NULL,
	[TaxableName] [dbo].[d_AccDescription] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[SourceDtlKey] [bigint] NULL,
	[Seq] [int] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[TaxRate] [dbo].[d_Percent] NOT NULL,
	[TaxAccNo] [dbo].[d_AccNo] NULL,
	[TaxDate] [datetime] NOT NULL,
	[RegisterNo] [nvarchar](25) NULL,
	[TaxRegisterNo] [nvarchar](20) NULL,
	[TaxRefNo] [nvarchar](30) NULL,
	[TaxPermitNo] [nvarchar](20) NULL,
	[TaxExportCountry] [nvarchar](50) NULL,
	[Description] [dbo].[d_GLDescription] NULL,
	[OriginalDtlKey] [bigint] NULL,
	[OriginalDtlType] [dbo].[d_DtlType] NULL,
	[Action] [tinyint] NOT NULL,
	[Severity] [tinyint] NOT NULL,
 CONSTRAINT [PK_TaxTransAuditDTL_TaxTransAuditDtlKey] PRIMARY KEY CLUSTERED 
(
	[TaxTransAuditDtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TaxType](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[TaxType] [dbo].[d_TaxType] NOT NULL,
	[Description] [nvarchar](120) NULL,
	[TaxRate] [dbo].[d_Percent] NOT NULL,
	[Inclusive] [dbo].[d_Boolean] NOT NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[TaxTypeCategory] [nvarchar](40) NULL,
	[IRASTaxCode] [varchar](8) NULL,
	[SupplyPurchase] [char](1) NOT NULL,
	[IsDefault] [dbo].[d_Boolean] NOT NULL,
	[TaxAccNo] [dbo].[d_AccNo] NULL,
	[IsZeroRate] [dbo].[d_Boolean] NOT NULL,
	[UseTrxTaxAccNo] [dbo].[d_Boolean] NOT NULL,
	[AccountingBasis] [int] NOT NULL,
	[AddToCost] [d_Boolean] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_TaxType_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_TaxType_TaxType] UNIQUE NONCLUSTERED 
(
	[TaxType] ASC
),
CONSTRAINT [UIX_TaxType_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE [dbo].[TempDocument](
	[DocKey] [bigint] NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[SaveTime] [datetime] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
	[SaveReason] [nvarchar](20) NULL,
	[Description] [nvarchar](80) NULL,
	[Compressed] [dbo].[d_Boolean] NOT NULL,
	[Data] [varbinary](max) NULL,
 CONSTRAINT [PK_TempDocument_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[TemporaryCredit](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[FromDate] [datetime] NOT NULL,
	[ToDate] [datetime] NOT NULL,
	[CreditLimit] [dbo].[d_Money] NULL,
	[OverdueLimit] [dbo].[d_Money] NULL,
	[Remark] [dbo].[d_Remark] NULL,
 CONSTRAINT [PK_TemporaryCredit_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_TemporaryCredit_AccNo_FormDate_ToDate] UNIQUE NONCLUSTERED 
(
	[AccNo] ASC,
	[FromDate] ASC,
	[ToDate] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Terms](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[Terms] [nvarchar](30) NULL,
	[LastUpdate] [int] NOT NULL,
	[TermType] [varchar](1) NULL,
	[TermDays] [int] NULL,
	[DiscountDays] [int] NULL,
	[DiscountPercent] [dbo].[d_Percent] NULL,
 CONSTRAINT [PK_Terms_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Terms_DisplayTerm] UNIQUE NONCLUSTERED 
(
	[DisplayTerm] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UDF](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[TableName] [nvarchar](25) NOT NULL,
	[FieldName] [nvarchar](10) NOT NULL,
	[Seq] [int] NOT NULL,
	[FieldType] [dbo].[d_FieldType] NOT NULL,
	[Caption] [nvarchar](80) NULL,
	[Properties] [nvarchar](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_UDF_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_UDF_TableName_FieldName] UNIQUE NONCLUSTERED 
(
	[TableName] ASC,
	[FieldName] ASC
),
CONSTRAINT [UIX_UDF_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UDFLayout](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[TableName] [nvarchar](25) NOT NULL,
	[LayoutName] [nvarchar](10) NOT NULL,
	[Layout] [nvarchar](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_UDFLayout_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_UDFLayout_TableName_LayoutName] UNIQUE NONCLUSTERED 
(
	[TableName] ASC,
	[LayoutName] ASC
),
CONSTRAINT [UIX_UDFLayout_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UDFList](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[Name] [nvarchar](10) NOT NULL,
	[Value] [nvarchar](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_UDFList_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_UDFList_Name] UNIQUE NONCLUSTERED 
(
	[Name] ASC
),
CONSTRAINT [UIX_UDFList_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UnapprovedDocument](
	[DocKey] [bigint] NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[SaveTime] [datetime] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
	[NetTotal] [dbo].[d_Money] NOT NULL,
	[Description] [nvarchar](80) NULL,
	[Data] [varbinary](max) NULL,
 CONSTRAINT [PK_UnapprovedDocument_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UnrealizedGainLoss](
	[UnrealizedGainLossKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[UnrealizedGainAccount] [dbo].[d_AccNo] NOT NULL,
	[UnrealizedLossAccount] [dbo].[d_AccNo] NOT NULL,
	[GainLossJournalType] [dbo].[d_JournalType] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Note] [nvarchar](max) NULL,
	[TotalGainLoss] [dbo].[d_Money] NOT NULL,
	[JEKey] [bigint] NULL,
	[PrintCount] [smallint] NULL,
	[RefCount] [bigint] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[UseSingleGainLossAccount] [dbo].[d_Boolean] NOT NULL,
	[GLGainAccount] [dbo].[d_AccNo] NULL,
	[GLLossAccount] [dbo].[d_AccNo] NULL,
	[JEKey2] [bigint] NULL,
	[DocNo2] [dbo].[d_DocNo] NULL,
	[ReverseGLPosting] [dbo].[d_Boolean] NOT NULL,
	[GLTrxID] [bigint] NULL,
 CONSTRAINT [PK_UnrealizedGainLoss_UnrealizedGainLossKey] PRIMARY KEY CLUSTERED 
(
	[UnrealizedGainLossKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UnrealizedGainLossDocument](
	[DtlKey] [bigint] NOT NULL,
	[UnrealizedGainLossKey] [bigint] NOT NULL,
	[Category] [varchar](2) NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[CompanyName] [dbo].[d_AccDescription] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[NewRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Outstanding] [dbo].[d_Money] NOT NULL,
	[GainLoss] [dbo].[d_Money] NOT NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
 CONSTRAINT [PK_UnrealizedGainLossDocument_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UnrealizedGainLossGLAccount](
	[DtlKey] [bigint] NOT NULL,
	[UnrealizedGainLossKey] [bigint] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
	[RevalueRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Balance] [dbo].[d_Money] NOT NULL,
	[NewHomeBalance] [dbo].[d_Money] NOT NULL,
	[HomeBalance] [dbo].[d_Money] NOT NULL,
	[GainLoss] [dbo].[d_Money] NOT NULL,
 CONSTRAINT [PK_UnrealizedGainLossGLAccount_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UnrealizedGainLossRate](
	[DtlKey] [bigint] NOT NULL,
	[UnrealizedGainLossKey] [bigint] NOT NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[BankBuyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[UnrealizedGainAccount] [dbo].[d_AccNo] NULL,
	[UnrealizedLossAccount] [dbo].[d_AccNo] NULL,
	[GLGainAccount] [dbo].[d_AccNo] NULL,
	[GLLossAccount] [dbo].[d_AccNo] NULL,
	[BankSellRate] [dbo].[d_CurrencyRate] NOT NULL,
 CONSTRAINT [PK_UnrealizedGainLossRate_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UOMConv](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Note] [nvarchar](max) NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocKey] [bigint] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_UOMConv_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_UOMConv_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UOMConvDTL](
	[DtlKey] [bigint] NOT NULL,
	[InDtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[FromQty] [dbo].[d_Qty] NULL,
	[FromUOM] [dbo].[d_UOM] NULL,
	[ToUOM] [dbo].[d_UOM] NULL,
	[ToQty] [dbo].[d_Qty] NULL,
 CONSTRAINT [PK_UOMConvDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UpdateCost](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Note] [nvarchar](max) NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[UpdateToRealCost] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[LastUpdate] [int] NOT NULL,
 CONSTRAINT [PK_UpdateCost_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_UpdateCost_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UpdateCostDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[OldCost] [dbo].[d_Cost] NULL,
	[NewCost] [dbo].[d_Cost] NULL,
 CONSTRAINT [PK_UpdateCostDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UserGroup](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[UserGroupID] [dbo].[d_UserID] NOT NULL,
	[Description] [nvarchar](40) NULL,
	[LastUpdate] [int] NOT NULL,
 CONSTRAINT [PK_UserGroup_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_UserGroup] UNIQUE NONCLUSTERED 
(
	[UserGroupID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Users](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
	[UserName] [nvarchar](40) NULL,
	[Department] [nvarchar](30) NULL,
	[Passwd] [nvarchar](max) NULL,
	[Signature] [varbinary](max) NULL,
	[EmailAddress] [dbo].[d_EmailAddress] NULL,
	[FilterBySalesAgent] [dbo].[d_Boolean] NOT NULL,
	[FilterByPurchaseAgent] [dbo].[d_Boolean] NOT NULL,
	[IsActive] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[MainPage] [nvarchar](max) NULL,
	[PasswordAge] [int] NOT NULL DEFAULT ((-1)),
	[LastPasswordDate] [datetime] NULL,
	[Location] [dbo].[d_Location] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[IsExportDebtorToBranch] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[IsExportCreditorToBranch] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[IsExportItemToBranch] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[IsExportPriceHistoryToBranch] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[IsExportQTToBranch] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[IsExportSOToBranch] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[IsExportDOToBranch] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[IsExportIVToBranch] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[IsExportCSToBranch] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[POSMainPage] [nvarchar](max) NULL,
	[SalesCreditLimitIncrementPercentage] [dbo].[d_Money] NULL,
	[SalesOverdueLimitIncrementPercentage] [dbo].[d_Money] NULL,
	[PurchaseCreditLimitIncrementPercentage] [dbo].[d_Money] NULL,
	[PurchaseOverdueLimitIncrementPercentage] [dbo].[d_Money] NULL,
	[FilteredByCreatedUserID] [dbo].[d_Boolean] NULL,
	[FilteredByLastModifiedUserID] [dbo].[d_Boolean] NULL,
	[PasswordStrength] [char](1) NULL,
	[UserType] [char](1) NOT NULL DEFAULT ('F'),
	[FilterByAccNo] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
	[StartScreenData] [varbinary](max) NULL,
 CONSTRAINT [PK_Users_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_Users_UserID] UNIQUE NONCLUSTERED 
(
	[UserID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UsersAccNo](
	[UserID] [dbo].[d_UserID] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NOT NULL,
 CONSTRAINT [PK_UsersAccNo_UserID_AccNo] PRIMARY KEY CLUSTERED 
(
	[UserID] ASC,
	[AccNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UserScript](
	[ScriptName] [nvarchar](60) NOT NULL,
	[Language] [nvarchar](5) NOT NULL,
	[Script] [nvarchar](max) NULL,
	[LastUpdate] [int] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_UserScript_ScriptName] PRIMARY KEY CLUSTERED 
(
	[ScriptName] ASC
),
CONSTRAINT [UIX_UserScript_Guid] UNIQUE NONCLUSTERED 
(
	[Guid] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UsersGroup](
	[UserID] [dbo].[d_UserID] NOT NULL,
	[UserGroupID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_UsersGroup_UserID_UserGroupID] PRIMARY KEY CLUSTERED 
(
	[UserID] ASC,
	[UserGroupID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UsersPurchaseAgent](
	[UserID] [dbo].[d_UserID] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NOT NULL,
 CONSTRAINT [PK_UsersPurchaseAgent_UserID_PurchaseAgent] PRIMARY KEY CLUSTERED 
(
	[UserID] ASC,
	[PurchaseAgent] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UsersSalesAgent](
	[UserID] [dbo].[d_UserID] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NOT NULL,
 CONSTRAINT [PK_UsersSalesAgent_UserID_SalesAgent] PRIMARY KEY CLUSTERED 
(
	[UserID] ASC,
	[SalesAgent] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UTDStockCost](
	[UTDStockCostKey] [bigint] NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NOT NULL,
	[UOM] [dbo].[d_UOM] NOT NULL,
	[Location] [dbo].[d_Location] NOT NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[UTDQty] [dbo].[d_Qty] NOT NULL,
	[UTDCost] [dbo].[d_Cost] NOT NULL,
	[AdjustedCost] [dbo].[d_Cost] NOT NULL,
	[AverageCost] [dbo].[d_Cost] NULL,
 CONSTRAINT [PK_UTDStockCost_UTDStockCostKey] PRIMARY KEY CLUSTERED 
(
	[UTDStockCostKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[UTDStockCostDTL](
	[UTDStockCostDTLKey] [bigint] IDENTITY(1,1) NOT NULL,
	[UTDStockCostKey] [bigint] NOT NULL,
	[Seq] [smallint] NOT NULL,
	[Qty] [dbo].[d_Qty] NOT NULL,
	[Cost] [dbo].[d_Cost] NOT NULL,
 CONSTRAINT [PK_UTDStockCostDTL_UTDStockCostDTLKey] PRIMARY KEY CLUSTERED 
(
	[UTDStockCostDTLKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[WithholdingTax] (
	   [WithholdingTaxCode] [dbo].[d_WithholdingTaxCode] NOT NULL,
	   [Description] [nvarchar] (80) NULL, 
	   [WithholdingTaxRate] [dbo].[d_Percent] NOT NULL,
	   [WithholdingTaxAccNo] [dbo].[d_AccNo] NOT NULL,
	   [IsActive] [dbo].[d_Boolean] NOT NULL,
	   [LastUpdate] [int] NOT NULL,
	   [ReceiptPayment] [dbo].[d_ReceiptPayment] NOT NULL,
	   [IsDefault] [dbo].[d_Boolean] NOT NULL,
       CONSTRAINT [PK_WithholdingTax] PRIMARY KEY CLUSTERED
       (
             [WithholdingTaxCode] ASC
       )
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[WithholdingTaxDocDTL] (
	   [TaxDocDtlKey] [bigint] NOT NULL,
	   [DocType] [dbo].[d_DocType] NOT NULL,
	   [DocKey] [bigint] NOT NULL,
	   [DtlKey] [bigint] NOT NULL,
	   [PaymentAmt] [dbo].[d_Money] NULL,
	   [WithholdingTaxCode] [dbo].[d_WithholdingTaxCode] NULL,
	   [WithholdingTaxRate] [dbo].[d_Percent] NULL,
	   [WithholdingTax] [dbo].[d_Money] NULL,
       CONSTRAINT [PK_WithholdingTaxDocDTL] PRIMARY KEY CLUSTERED
       (
             [TaxDocDtlKey] ASC
       )
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[WithholdingTaxTrans](
	[TaxTransKey] [bigint] IDENTITY(1,1) NOT NULL,
	[SourceType] [dbo].[d_SourceType] NOT NULL,
	[SourceKey] [bigint] NOT NULL,
	[SourceDtlKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[TaxableAccNo] [dbo].[d_AccNo] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[ReceiptPayment] [dbo].[d_ReceiptPayment] NOT NULL,
	[TaxableName] [dbo].[d_AccDescription] NULL,
	[WithholdingTaxCode] [dbo].[d_WithholdingTaxCode] NOT NULL,
	[WithholdingTaxRate] [dbo].[d_Percent] NOT NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
 CONSTRAINT [PK_WithholdingTaxTrans_TaxTransKey] PRIMARY KEY CLUSTERED 
(
	[TaxTransKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[WOFF](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Total] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_WOFF_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_WOFF_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[WOFFDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UnitCost] [dbo].[d_Cost] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_WOFFDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XFER](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[FromLocation] [dbo].[d_Location] NOT NULL,
	[ToLocation] [dbo].[d_Location] NOT NULL,
	[Description] [nvarchar](100) NULL,
	[Total] [dbo].[d_Money] NULL,
	[Reason] [nvarchar](80) NULL,
	[AuthorisedBy] [nvarchar](30) NULL,
	[Ref] [nvarchar](40) NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[LastUpdate] [int] NOT NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_XFER_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_XFER_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XFERDTL](
	[DtlKey] [bigint] NOT NULL,
	[InDtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[BatchNo] [dbo].[d_BatchNo] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UnitCost] [dbo].[d_Cost] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[SerialNoList] [nvarchar](max) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_XFERDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XP](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[CreditorCode] [dbo].[d_AccNo] NULL,
	[CreditorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[PurchaseAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[PurchaseLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_XP_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_XP_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XPDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_XPDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XS](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[DebtorName] [dbo].[d_AccDescription] NULL,
	[Ref] [nvarchar](40) NULL,
	[Description] [nvarchar](80) NULL,
	[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
	[SalesAgent] [dbo].[d_Agent] NULL,
	[InvAddr1] [dbo].[d_Address] NULL,
	[InvAddr2] [dbo].[d_Address] NULL,
	[InvAddr3] [dbo].[d_Address] NULL,
	[InvAddr4] [dbo].[d_Address] NULL,
	[Phone1] [dbo].[d_Phone] NULL,
	[Fax1] [dbo].[d_Phone] NULL,
	[Attention] [dbo].[d_Contact] NULL,
	[BranchCode] [dbo].[d_BranchCode] NULL,
	[DeliverAddr1] [dbo].[d_Address] NULL,
	[DeliverAddr2] [dbo].[d_Address] NULL,
	[DeliverAddr3] [dbo].[d_Address] NULL,
	[DeliverAddr4] [dbo].[d_Address] NULL,
	[DeliverPhone1] [dbo].[d_Phone] NULL,
	[DeliverFax1] [dbo].[d_Phone] NULL,
	[DeliverContact] [dbo].[d_Contact] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	[SalesExemptionExpiryDate] [datetime] NULL,
	[Total] [dbo].[d_Money] NULL,
	[Footer1Param] [dbo].[d_Money] NULL,
	[Footer1Amt] [dbo].[d_Money] NULL,
	[Footer1LocalAmt] [dbo].[d_Money] NULL,
	[Footer1TaxType] [dbo].[d_TaxType] NULL,
	[Footer2Param] [dbo].[d_Money] NULL,
	[Footer2Amt] [dbo].[d_Money] NULL,
	[Footer2LocalAmt] [dbo].[d_Money] NULL,
	[Footer2TaxType] [dbo].[d_TaxType] NULL,
	[Footer3Param] [dbo].[d_Money] NULL,
	[Footer3Amt] [dbo].[d_Money] NULL,
	[Footer3LocalAmt] [dbo].[d_Money] NULL,
	[Footer3TaxType] [dbo].[d_TaxType] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[LocalNetTotal] [dbo].[d_Money] NULL,
	[AnalysisNetTotal] [dbo].[d_Money] NULL,
	[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Note] [nvarchar](max) NULL,
	[Remark1] [dbo].[d_Remark] NULL,
	[Remark2] [dbo].[d_Remark] NULL,
	[Remark3] [dbo].[d_Remark] NULL,
	[Remark4] [dbo].[d_Remark] NULL,
	[PrintCount] [smallint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[ExternalLink] [nvarchar](max) NULL,
	[RefDocNo] [dbo].[d_DocNo] NULL,
	[CanSync] [dbo].[d_Boolean] NOT NULL,
	[LastUpdate] [int] NOT NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[Footer1Tax] [dbo].[d_Money] NULL,
	[Footer1LocalTax] [dbo].[d_Money] NULL,
	[Footer2Tax] [dbo].[d_Money] NULL,
	[Footer2LocalTax] [dbo].[d_Money] NULL,
	[Footer3Tax] [dbo].[d_Money] NULL,
	[Footer3LocalTax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[LocalExTax] [dbo].[d_Money] NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[Footer1TaxRate] [dbo].[d_Percent] NULL,
	[Footer2TaxRate] [dbo].[d_Percent] NULL,
	[Footer3TaxRate] [dbo].[d_Percent] NULL,
	[RoundingMethod] [int] NOT NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_XS_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_XS_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[XSDTL](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Indent] [tinyint] NULL,
	[FontStyle] [dbo].[d_FontStyle] NULL,
	[MainItem] [dbo].[d_Boolean] NOT NULL,
	[Numbering] [dbo].[d_Numbering] NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[Location] [dbo].[d_Location] NULL,
	[Description] [dbo].[d_ItemDescription] NULL,
	[FurtherDescription] [nvarchar](max) NULL,
	[YourPONo] [dbo].[d_YourPONo] NULL,
	[YourPODate] [datetime] NULL,
	[ProjNo] [dbo].[d_Project] NULL,
	[DeptNo] [dbo].[d_Dept] NULL,
	[UOM] [dbo].[d_UOM] NULL,
	[UserUOM] [dbo].[d_UOM] NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Rate] [dbo].[d_Qty] NULL,
	[SmallestQty] [dbo].[d_Qty] NULL,
	[FOCQty] [dbo].[d_Qty] NULL,
	[SmallestUnitPrice] [dbo].[d_Price] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[TaxType] [dbo].[d_TaxType] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[PrintOut] [dbo].[d_Boolean] NOT NULL,
	[DtlType] [dbo].[d_DtlType] NULL,
	[CalcByPercent] [dbo].[d_Percent] NULL,
	[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[FromDocNo] [dbo].[d_DocNo] NULL,
	[FromDocDtlKey] [bigint] NULL,
	[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
	[FullTransferFromDocList] [nvarchar](max) NULL,
	[EstimatedDeliveryDate] [nvarchar](20) NULL,
	[PackageDocKey] [bigint] NULL,
	[ParentDtlKey] [bigint] NULL,
	[SubQty] [dbo].[d_Qty] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[RuleNo] [bigint] NULL,
	[DeliveryDate] [datetime] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[TaxAdjustment] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL,
	[ExtraDiscountAmt] [dbo].[d_Money] NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[LocalTaxAdjustment] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[TaxCurrencyTax] [dbo].[d_Money] NULL,
	[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
 CONSTRAINT [PK_XSDTL_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY] 
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[DocTemplate]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[DocTemplate](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[TemplateName] [nvarchar](100) NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,	
	[Data] [varbinary](max) NULL,
	[IsDefault] [dbo].[d_Boolean] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
 CONSTRAINT [PK_DocTemplate] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_DocTemplate_TemplateName] UNIQUE NONCLUSTERED 
(
	[TemplateName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[DocTemplateUsers]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[DocTemplateUsers](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[TemplateName] [nvarchar](100) NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
 CONSTRAINT [PK_DocTemplateUsers_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
),
 CONSTRAINT [UIX_DocTemplateUsers_ItemCode_UOM] UNIQUE NONCLUSTERED
(
	[TemplateName] ASC,
	[UserID] ASC
)ON [PRIMARY]
)ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[Recurrence]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[Recurrence](
	[RecurrenceKey] [bigint] NOT NULL,
	[RecurrenceName] [nvarchar] (100) NULL,
	[StartDate] [datetime] NOT NULL,
	[EndType] [char] (1) NOT NULL,
	[NoOfOccurs] [int] NULL,
	[EndDate] [datetime] NULL,
	[RecurrenceDateType] [char] (1) NULL,
	[RecurrenceDay1] [dbo].[d_Boolean] NULL,
	[RecurrenceDay2] [dbo].[d_Boolean] NULL,
	[RecurrenceDay3] [dbo].[d_Boolean] NULL,
	[RecurrenceDay4] [dbo].[d_Boolean] NULL,
	[RecurrenceDay5] [dbo].[d_Boolean] NULL,
	[RecurrenceDay6] [dbo].[d_Boolean] NULL,
	[RecurrenceDay7] [dbo].[d_Boolean] NULL,
	[RecurrenceParam1] [int] NULL,
	[RecurrenceParam2] [int] NULL,
	[IsParam2FromBack] [d_Boolean] NULL,
	[IsActive] [d_Boolean] NULL,
	[AutoExecute] [d_Boolean] NOT NULL,
	[AlertUserID] [d_UserID] NULL,
	[DocType] [d_DocType] NOT NULL,
	[DocNoFormatName] [d_DocNoFormatName] NULL,
	[Data] [varbinary](max) NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [d_UserID] NOT NULL,
CONSTRAINT [PK_Recurrence_AutoKey] PRIMARY KEY CLUSTERED 
(
	[RecurrenceKey] ASC
),
CONSTRAINT [UIX_Recurrence_RecurrenceName] UNIQUE NONCLUSTERED 
(
	[RecurrenceName] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[RecurrenceDtl]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[RecurrenceDtl](
	[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
	[RecurrenceKey] [bigint] NOT NULL,
	[RecurrenceDate] [datetime] NOT NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[Status] [nvarchar](20) NULL,
	[SourceDocKey] [bigint] NULL,
	[SourceDocNo] [dbo].[d_DocNo] NULL,
 CONSTRAINT [PK_RecurrenceDtl_AutoKey] PRIMARY KEY CLUSTERED 
(
	[AutoKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ADJDTL_DocKey] ON [dbo].[ADJDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_APCNDTL_DocKey] ON [dbo].[APCNDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_APCNKnockOff_DocKey] ON [dbo].[APCNKnockOff]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_APContraKnockOff_DocKey] ON [dbo].[APContraKnockOff]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_APDNDTL_DocKey] ON [dbo].[APDNDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_APInvoiceDTL_DocKey] ON [dbo].[APInvoiceDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_APPaymentDTL_DocKey] ON [dbo].[APPaymentDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_APPaymentKnockOff_DocKey] ON [dbo].[APPaymentKnockOff]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_APRefundKnockOff_DocKey] ON [dbo].[APRefundKnockOff]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ARCNDTL_DocKey] ON [dbo].[ARCNDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ARCNKnockOff_DocKey] ON [dbo].[ARCNKnockOff]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ARContraKnockOff_DocKey] ON [dbo].[ARContraKnockOff]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ARDNDTL_DocKey] ON [dbo].[ARDNDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ARInvoiceDTL_DocKey] ON [dbo].[ARInvoiceDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ARPaymentDTL_DocKey] ON [dbo].[ARPaymentDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ARPaymentKnockOff_DocKey] ON [dbo].[ARPaymentKnockOff]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ARRefundKnockOff_DocKey] ON [dbo].[ARRefundKnockOff]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ASMDTL_DocKey] ON [dbo].[ASMDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ASMOrder_FromDocDtlKey] ON [dbo].[ASMOrder]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ASMOrderDTL_DocKey] ON [dbo].[ASMOrderDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_BankTrans_AccNo] ON [dbo].[BankTrans]
(
	[AccNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_BankTrans_BankStatementDate] ON [dbo].[BankTrans]
(
	[BankStatementDate] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_BankTrans_SourceType_SourceKey] ON [dbo].[BankTrans]
(
	[SourceType] ASC,
	[SourceKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_BonusPointAccNo] ON [dbo].[BonusPointRedemption]
(
	[MemberNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_DebtorCode] ON [dbo].[BonusPointRedemption]
(
	[DebtorCode] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_DocNo] ON [dbo].[BonusPointRedemption]
(
	[DocNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ItemCode] ON [dbo].[BonusPointRedemptionDTL]
(
	[ItemCode] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_BudgetPBalance] ON [dbo].[BudgetPBalance]
(
	[BudgetKey] ASC,
	[PeriodNo] ASC,
	[AccNO] ASC,
	[ProjNo] ASC,
	[DeptNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CBDTL_DocKey] ON [dbo].[CBDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CBPaymentDTL_DocKey] ON [dbo].[CBPaymentDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE UNIQUE NONCLUSTERED INDEX [IX_ChangeLog_TransactionID_ID_Guid] ON [dbo].[ChangeLog] 
(
	[TransactionID] ASC,
	[ID] ASC,
	[Guid] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CNDTL_DocKey] ON [dbo].[CNDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CNDTL_FromDocDtlKey] ON [dbo].[CNDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CPDTL_DocKey] ON [dbo].[CPDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CPDTL_FromDocDtlKey] ON [dbo].[CPDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_Criteria_CriteriaType] ON [dbo].[Criteria]
(
	[CriteriaType] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CS_ToDocTypeKey] ON [dbo].[CS]
(
	[ToDocType] ASC,
	[ToDocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CSDTL_DocKey] ON [dbo].[CSDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CSDTL_FromDocDtlKey] ON [dbo].[CSDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_Consignment_ToDocTypeKey] ON [dbo].[Consignment]
(
	[ToDocType] ASC,
	[ToDocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ConsignmentDTL_DocKey] ON [dbo].[ConsignmentDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ConsignmentDTL_FromDocDtlKey] ON [dbo].[ConsignmentDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ConsignmentReturnDTL_DocKey] ON [dbo].[ConsignmentReturnDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ConsignmentReturnDTL_FromDocDtlKey] ON [dbo].[ConsignmentReturnDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PurchaseConsignment_ToDocTypeKey] ON [dbo].[PurchaseConsignment]
(
	[ToDocType] ASC,
	[ToDocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PurchaseConsignmentDTL_DocKey] ON [dbo].[PurchaseConsignmentDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PurchaseConsignmentDTL_FromDocDtlKey] ON [dbo].[PurchaseConsignmentDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PurchaseConsignmentReturnDTL_DocKey] ON [dbo].[PurchaseConsignmentReturnDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PurchaseConsignmentReturnDTL_FromDocDtlKey] ON [dbo].[PurchaseConsignmentReturnDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CSGNItemBalQty] ON [dbo].[CSGNItemBalQty]
(
	[AccNo] ASC,
	[ItemCode] ASC,
	[UOM] ASC,
	[Location] ASC,
	[BranchCode] ASC,
	[BatchNo] ASC,
	[ProjNo] ASC,
	[DeptNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CSGNXFERDTL_DocKey] ON [dbo].[CSGNXFERDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_DNDTL_DocKey] ON [dbo].[DNDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_DO_ToDocTypeKey] ON [dbo].[DO]
(
	[ToDocType] ASC,
	[ToDocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_DODTL_DocKey] ON [dbo].[DODTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_DODTL_FromDocDtlKey] ON [dbo].[DODTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_DRDTL_DocKey] ON [dbo].[DRDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_FIFOCost_StockDTLKey] ON [dbo].[FIFOCost]
(
	[StockDTLKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_GLDTL_AccNo] ON [dbo].[GLDTL]
(
	[AccNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_GLDTL_JournalType] ON [dbo].[GLDTL]
(
	[JournalType] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_GLDTL_SourceType_SourceKey] ON [dbo].[GLDTL]
(
	[SourceType] ASC,
	[SourceKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_GLDTL_TransDate] ON [dbo].[GLDTL]
(
	[TransDate] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_GRDTL_DocKey] ON [dbo].[GRDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_GRDTL_FromDocDtlKey] ON [dbo].[GRDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_GTDTL_DocKey] ON [dbo].[GTDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_GTDTL_FromDocDtlKey] ON [dbo].[GTDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_IPHIST_AccNo_ItemCode] ON [dbo].[IPHIST]
(
	[AccNo] ASC,
	[ItemCode] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_IPHIST_DocType_DocKey] ON [dbo].[IPHIST]
(
	[DocType] ASC,
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_IPHIST_DocType_DtlKey] ON [dbo].[IPHIST]
(
	[DocType] ASC,
	[DtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_IPHIST_ItemCode_AccNo] ON [dbo].[IPHIST]
(
	[ItemCode] ASC,
	[AccNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ISSDTL_DocKey] ON [dbo].[ISSDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ItemBOM_ItemCode_SubItemCode] ON [dbo].[ItemBOM]
(
	[ItemCode] ASC,
	[SubItemCode] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ItemOpening] ON [dbo].[ItemOpening]
(
	[ItemCode] ASC,
	[UOM] ASC,
	[Location] ASC,
	[BatchNo] ASC,
	[Seq] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_ItemPrice] ON [dbo].[ItemPrice]
(
	[ItemCode] ASC,
	[UOM] ASC,
	[PriceCategory] ASC,
	[AccNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_IV_ToDocTypeKey] ON [dbo].[IV]
(
	[ToDocType] ASC,
	[ToDocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_IVDTL_DocKey] ON [dbo].[IVDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_IVDTL_FromDocDtlKey] ON [dbo].[IVDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_JEDTL_DocKey] ON [dbo].[JEDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_OBalance] ON [dbo].[OBalance]
(
	[PeriodNo] ASC,
	[AccNo] ASC,
	[ProjNo] ASC,
	[DeptNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PackageDTL_DocKey] ON [dbo].[PackageDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PBalance] ON [dbo].[PBalance]
(
	[PeriodNo] ASC,
	[AccNo] ASC,
	[ProjNo] ASC,
	[DeptNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PIDTL_DocKey] ON [dbo].[PIDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PIDTL_FromDocDtlKey] ON [dbo].[PIDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PODTL_DocKey] ON [dbo].[PODTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PODTL_FromDocDtlKey] ON [dbo].[PODTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PRDTL_DocKey] ON [dbo].[PRDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_PRDTL_FromDocDtlKey] ON [dbo].[PRDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_QT_ToDocTypeKey] ON [dbo].[QT]
(
	[ToDocType] ASC,
	[ToDocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_QTDTL_DocKey] ON [dbo].[QTDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_RCVDTL_DocKey] ON [dbo].[RCVDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_RQDTL_DocKey] ON [dbo].[RQDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_SO_ToDocTypeKey] ON [dbo].[SO]
(
	[ToDocType] ASC,
	[ToDocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_SODTL_DocKey] ON [dbo].[SODTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_SODTL_FromDocDtlKey] ON [dbo].[SODTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_StockDisassemblyDTL_DocKey] ON [dbo].[StockDisassemblyDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_StockDTL_DocType_DocKey] ON [dbo].[StockDTL]
(
	[DocType] ASC,
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_StockDTL_DtlKey] ON [dbo].[StockDTL]
(
	[DtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_StockDTL_ItemCode_UOM_Location] ON [dbo].[StockDTL]
(
	[ItemCode] ASC,
	[UOM] ASC,
	[Location] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_StockPBalance] ON [dbo].[StockPBalance]
(
	[StockSetKey] ASC,
	[PeriodNo] ASC,
	[ProjNo] ASC,
	[DeptNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_StockTakeDTL_DocKey] ON [dbo].[StockTakeDTL]
(
    [DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_TaxTrans_SourceType_SourceKey] ON [dbo].[TaxTrans]
(
	[SourceType] ASC,
	[SourceKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_TaxTransAuditDTL_SourceType_SourceKey] ON [dbo].[TaxTransAuditDTL]
(
	[SourceType] ASC,
	[SourceKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_UOMConvDTL_DocKey] ON [dbo].[UOMConvDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_UpdateCostDTL_DocKey] ON [dbo].[UpdateCostDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_UTDStockCost_ItemCode_UOM_Location_BatchNo] ON [dbo].[UTDStockCost]
(
	[ItemCode] ASC,
	[UOM] ASC,
	[Location] ASC,
	[BatchNo] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_UTDStockCostDTL_UTDStockCostKey] ON [dbo].[UTDStockCostDTL]
(
	[UTDStockCostKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_WOFFDTL_DocKey] ON [dbo].[WOFFDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_XFERDTL_DocKey] ON [dbo].[XFERDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_XPDTL_DocKey] ON [dbo].[XPDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_XPDTL_FromDocDtlKey] ON [dbo].[XPDTL]
(
	[FromDocDtlKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_XSDTL_DocKey] ON [dbo].[XSDTL]
(
	[DocKey] ASC
)ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_CB_SourceKey] ON [dbo].[CB]
(
	[SourceKey]
) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_GLDTL_SourceKey] ON [dbo].[GLDTL]
(
	[SourceKey]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Activity] ADD  CONSTRAINT [DF_Activity_ActivityDateTime]  DEFAULT (getdate()) FOR [ActivityDateTime]
GO
ALTER TABLE [dbo].[ADJ] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[ADJDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[APCN] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[APDN] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[APInvoice] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[ARCN] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[ARDN] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[ARInvoice] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[ASM] ADD  DEFAULT ('F') FOR [Dismantled]
GO
ALTER TABLE [dbo].[ASM] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[ASMDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[ASMDTL] ADD  DEFAULT ((0)) FOR [OrderQty]
GO
ALTER TABLE [dbo].[ASMOrder] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[ASMOrderDTL] ADD  DEFAULT ('F') FOR [StockReceived]
GO
ALTER TABLE [dbo].[ASMOrderDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[BonusPointRedemption] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[Branch] ADD  DEFAULT ('T') FOR [IsActive]
GO
ALTER TABLE [dbo].[CB] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[CBDTL] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[CN] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[CN] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[CN] ADD  DEFAULT ('F') FOR [IsRoundAdj]
GO
ALTER TABLE [dbo].[CNDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[CP] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[CP] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[CP] ADD  DEFAULT ('F') FOR [IsRoundAdj]
GO
ALTER TABLE [dbo].[CPDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[Creditor] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[CS] ADD  DEFAULT ('F') FOR [ReallocatePurchaseByProject]
GO
ALTER TABLE [dbo].[CS] ADD  DEFAULT ((0)) FOR [PaymentMode]
GO
ALTER TABLE [dbo].[CS] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[CS] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[CS] ADD  DEFAULT ('F') FOR [IsRoundAdj]
GO
ALTER TABLE [dbo].[CSDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[Consignment] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[Consignment] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[ConsignmentDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[ConsignmentReturn] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[ConsignmentReturn] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[Debtor] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[DN] ADD  DEFAULT ('F') FOR [ReallocatePurchaseByProject]
GO
ALTER TABLE [dbo].[DN] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[DN] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[DNDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[DO] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[DO] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[DODTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[DR] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[DR] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[DRDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[FCRevalue] ADD  DEFAULT ('T') FOR [UseSingleGainLossAccount]
GO
ALTER TABLE [dbo].[FCRevalueRate] ADD  DEFAULT ((0)) FOR [BankSellRate]
GO
ALTER TABLE [dbo].[GLTrxIDTrash] ADD  DEFAULT (getdate()) FOR [CreatedTimeStamp]
GO
ALTER TABLE [dbo].[GR] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[GR] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[GRDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[GT] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[GT] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[GTDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[IPHIST] ADD  DEFAULT ('F') FOR [Cancelled]
GO
ALTER TABLE [dbo].[IPHIST] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[ISS] ADD  DEFAULT ('F') FOR [ReallocatePurchaseByProject]
GO
ALTER TABLE [dbo].[ISS] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[ISSDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[Item] ADD  DEFAULT ('F') FOR [HasPromoter]
GO
ALTER TABLE [dbo].[Item] ADD  DEFAULT ('F') FOR [Discontinued]
GO
ALTER TABLE [dbo].[Item] ADD  DEFAULT ('T') FOR [AutoUOMConversion]
GO
ALTER TABLE [dbo].[Item] ADD  DEFAULT ('T') FOR [BackOrderControl]
GO
ALTER TABLE [dbo].[ItemOpening] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[ItemOpening] ADD  DEFAULT (getdate()) FOR [DocDate]
GO
ALTER TABLE [dbo].[ItemUOM] ADD  DEFAULT ((0)) FOR [RealCost]
GO
ALTER TABLE [dbo].[IV] ADD  DEFAULT ('F') FOR [ReallocatePurchaseByProject]
GO
ALTER TABLE [dbo].[IV] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[IV] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[IV] ADD  DEFAULT ('F') FOR [IsRoundAdj]
GO
ALTER TABLE [dbo].[IVDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[JE] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[JEDTL] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[ObjectEventLog] ADD  DEFAULT (getdate()) FOR [OccurTime]
GO
ALTER TABLE [dbo].[PI] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[PI] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[PI] ADD  DEFAULT ('F') FOR [IsRoundAdj]
GO
ALTER TABLE [dbo].[PIDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[PO] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[PO] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[PO] ADD  DEFAULT ('F') FOR [IsRoundAdj]
GO
ALTER TABLE [dbo].[PODTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[PR] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[PR] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[PR] ADD  DEFAULT ('F') FOR [IsRoundAdj]
GO
ALTER TABLE [dbo].[PRDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[PriceBookMatrix] ADD  DEFAULT ((0)) FOR [Priority]
GO
ALTER TABLE [dbo].[PriceBookRule] ADD  DEFAULT ((0)) FOR [Priority]
GO
ALTER TABLE [dbo].[PurchaseConsignment] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[PurchaseConsignment] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[QT] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[QT] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[QT] ADD  DEFAULT ('F') FOR [IsRoundAdj]
GO
ALTER TABLE [dbo].[QTDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[RCV] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[RCVDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[RQ] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[RQ] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[RQDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[SerialNoTrans] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[ShippingMethod] ADD  DEFAULT ('T') FOR [IsActive]
GO
ALTER TABLE [dbo].[SO] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[SO] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[SO] ADD  DEFAULT ('F') FOR [IsRoundAdj]
GO
ALTER TABLE [dbo].[SODTL] ADD  DEFAULT ((0)) FOR [TransferedAOQty]
GO
ALTER TABLE [dbo].[SODTL] ADD  DEFAULT ('F') FOR [StockReceived]
GO
ALTER TABLE [dbo].[SODTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[StockDisassembly] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[StockDisassemblyDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[StockDTL] ADD  DEFAULT (getdate()) FOR [LastModified]
GO
ALTER TABLE [dbo].[StockDTL] ADD  DEFAULT ((0)) FOR [InputCost]
GO
ALTER TABLE [dbo].[StockTake] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[StockTakeDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[TaxTrans] ADD  DEFAULT ((1)) FOR [CurrencyRate]
GO
ALTER TABLE [dbo].[TaxType] ADD  DEFAULT ('S') FOR [SupplyPurchase]
GO
ALTER TABLE [dbo].[TaxType] ADD  DEFAULT ('F') FOR [IsDefault]
GO
ALTER TABLE [dbo].[TaxType] ADD  DEFAULT ('F') FOR [IsZeroRate]
GO
ALTER TABLE [dbo].[TaxType] ADD  DEFAULT ('F') FOR [UseTrxTaxAccNo]
GO
ALTER TABLE [dbo].[TaxType] ADD  DEFAULT ((0)) FOR [AccountingBasis]
GO
ALTER TABLE [dbo].[TaxType] ADD  DEFAULT ('F') FOR [AddToCost]
GO
ALTER TABLE [dbo].[UnrealizedGainLoss] ADD  DEFAULT ('T') FOR [UseSingleGainLossAccount]
GO
ALTER TABLE [dbo].[UnrealizedGainLoss] ADD  DEFAULT ('F') FOR [ReverseGLPosting]
GO
ALTER TABLE [dbo].[UnrealizedGainLossRate] ADD  DEFAULT ((0)) FOR [BankSellRate]
GO
ALTER TABLE [dbo].[UTDStockCost] ADD  DEFAULT ((0)) FOR [AverageCost]
GO
ALTER TABLE [dbo].[WOFF] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[WOFFDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[XFER] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[XFERDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[XP] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[XP] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[XPDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[XS] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[XS] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO
ALTER TABLE [dbo].[XSDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO
ALTER TABLE [dbo].[AccGroup]  WITH CHECK ADD  CONSTRAINT [FK_AccGroup_AccType] FOREIGN KEY([AccType])
REFERENCES [dbo].[AccType] ([AccType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[AccGroup] CHECK CONSTRAINT [FK_AccGroup_AccType]
GO
ALTER TABLE [dbo].[Accountant]  WITH CHECK ADD  CONSTRAINT [FK_Accountant_UserID] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Accountant] CHECK CONSTRAINT [FK_Accountant_UserID]
GO
ALTER TABLE [dbo].[Activity]  WITH CHECK ADD  CONSTRAINT [FK_Activity_UserID] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Activity] CHECK CONSTRAINT [FK_Activity_UserID]
GO
ALTER TABLE [dbo].[ADJ]  WITH CHECK ADD  CONSTRAINT [FK_ADJ_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ADJ] CHECK CONSTRAINT [FK_ADJ_CreatedUserID]
GO
ALTER TABLE [dbo].[ADJ]  WITH CHECK ADD  CONSTRAINT [FK_ADJ_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ADJ] CHECK CONSTRAINT [FK_ADJ_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ADJDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADJDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ADJDTL] CHECK CONSTRAINT [FK_ADJDTL_DeptNo]
GO
ALTER TABLE [dbo].[ADJDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADJDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ADJDTL] CHECK CONSTRAINT [FK_ADJDTL_ItemBatch]
GO
ALTER TABLE [dbo].[ADJDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADJDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ADJDTL] CHECK CONSTRAINT [FK_ADJDTL_ItemUOM]
GO
ALTER TABLE [dbo].[ADJDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADJDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[ADJDTL] CHECK CONSTRAINT [FK_ADJDTL_Location]
GO
ALTER TABLE [dbo].[ADJDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADJDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ADJDTL] CHECK CONSTRAINT [FK_ADJDTL_ProjNo]
GO
ALTER TABLE [dbo].[AORProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AORProcessing_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[AORProcessing] CHECK CONSTRAINT [FK_AORProcessing_CreatedUserID]
GO
ALTER TABLE [dbo].[AORProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AORProcessing_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[AORProcessing] CHECK CONSTRAINT [FK_AORProcessing_DeptNo]
GO
ALTER TABLE [dbo].[AORProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AORProcessing_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[AORProcessing] CHECK CONSTRAINT [FK_AORProcessing_ItemCode]
GO
ALTER TABLE [dbo].[AORProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AORProcessing_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[AORProcessing] CHECK CONSTRAINT [FK_AORProcessing_LastModifiedUserID]
GO
ALTER TABLE [dbo].[AORProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AORProcessing_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[AORProcessing] CHECK CONSTRAINT [FK_AORProcessing_Location]
GO
ALTER TABLE [dbo].[AORProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AORProcessing_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[AORProcessing] CHECK CONSTRAINT [FK_AORProcessing_ProjNo]
GO
ALTER TABLE [dbo].[APCN]  WITH CHECK ADD  CONSTRAINT [FK_APCN_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[APCN] CHECK CONSTRAINT [FK_APCN_BranchCode]
GO
ALTER TABLE [dbo].[APCN]  WITH CHECK ADD  CONSTRAINT [FK_APCN_CNType] FOREIGN KEY([CNType])
REFERENCES [dbo].[CNType] ([CNType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APCN] CHECK CONSTRAINT [FK_APCN_CNType]
GO
ALTER TABLE [dbo].[APCN]  WITH CHECK ADD  CONSTRAINT [FK_APCN_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APCN] CHECK CONSTRAINT [FK_APCN_CreatedUserID]
GO
ALTER TABLE [dbo].[APCN]  WITH CHECK ADD  CONSTRAINT [FK_APCN_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APCN] CHECK CONSTRAINT [FK_APCN_CreditorCode]
GO
ALTER TABLE [dbo].[APCN]  WITH CHECK ADD  CONSTRAINT [FK_APCN_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APCN] CHECK CONSTRAINT [FK_APCN_CurrencyCode]
GO
ALTER TABLE [dbo].[APCN]  WITH CHECK ADD  CONSTRAINT [FK_APCN_JournalType] FOREIGN KEY([JournalType])
REFERENCES [dbo].[Journal] ([JournalType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APCN] CHECK CONSTRAINT [FK_APCN_JournalType]
GO
ALTER TABLE [dbo].[APCN]  WITH CHECK ADD  CONSTRAINT [FK_APCN_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APCN] CHECK CONSTRAINT [FK_APCN_LastModifiedUserID]
GO
ALTER TABLE [dbo].[APCNDTL]  WITH CHECK ADD  CONSTRAINT [FK_APCNDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APCNDTL] CHECK CONSTRAINT [FK_APCNDTL_AccNo]
GO
ALTER TABLE [dbo].[APCNDTL]  WITH CHECK ADD  CONSTRAINT [FK_APCNDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APCNDTL] CHECK CONSTRAINT [FK_APCNDTL_DeptNo]
GO
ALTER TABLE [dbo].[APCNDTL]  WITH CHECK ADD  CONSTRAINT [FK_APCNDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APCNDTL] CHECK CONSTRAINT [FK_APCNDTL_ProjNo]
GO
ALTER TABLE [dbo].[APCNDTL]  WITH CHECK ADD  CONSTRAINT [FK_APCNDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[APCNDTL] CHECK CONSTRAINT [FK_APCNDTL_TaxType]
GO
ALTER TABLE [dbo].[APCNKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_APCNKnockOff_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[APCNKnockOff] CHECK CONSTRAINT [FK_APCNKnockOff_DeptNo]
GO
ALTER TABLE [dbo].[APCNKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_APCNKnockOff_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[APCNKnockOff] CHECK CONSTRAINT [FK_APCNKnockOff_ProjNo]
GO
ALTER TABLE [dbo].[APContraKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_APContraKnockOff_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[APContraKnockOff] CHECK CONSTRAINT [FK_APContraKnockOff_DeptNo]
GO
ALTER TABLE [dbo].[APContraKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_APContraKnockOff_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[APContraKnockOff] CHECK CONSTRAINT [FK_APContraKnockOff_ProjNo]
GO
ALTER TABLE [dbo].[APDeposit]  WITH CHECK ADD  CONSTRAINT [FK_APDeposit_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APDeposit] CHECK CONSTRAINT [FK_APDeposit_CreatedUserID]
GO
ALTER TABLE [dbo].[APDeposit]  WITH CHECK ADD  CONSTRAINT [FK_APDeposit_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDeposit] CHECK CONSTRAINT [FK_APDeposit_CreditorCode]
GO
ALTER TABLE [dbo].[APDeposit]  WITH CHECK ADD  CONSTRAINT [FK_APDeposit_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDeposit] CHECK CONSTRAINT [FK_APDeposit_CurrencyCode]
GO
ALTER TABLE [dbo].[APDeposit]  WITH CHECK ADD  CONSTRAINT [FK_APDeposit_DepositPaymentMethod] FOREIGN KEY([DepositPaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
GO
ALTER TABLE [dbo].[APDeposit] CHECK CONSTRAINT [FK_APDeposit_DepositPaymentMethod]
GO
ALTER TABLE [dbo].[APDeposit]  WITH CHECK ADD  CONSTRAINT [FK_APDeposit_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDeposit] CHECK CONSTRAINT [FK_APDeposit_DeptNo]
GO
ALTER TABLE [dbo].[APDeposit]  WITH CHECK ADD  CONSTRAINT [FK_APDeposit_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APDeposit] CHECK CONSTRAINT [FK_APDeposit_LastModifiedUserID]
GO
ALTER TABLE [dbo].[APDeposit]  WITH CHECK ADD  CONSTRAINT [FK_APDeposit_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDeposit] CHECK CONSTRAINT [FK_APDeposit_ProjNo]
GO
ALTER TABLE [dbo].[APDepositPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDepositPaymentDTL_BankChargeDeptNo] FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[APDepositPaymentDTL] CHECK CONSTRAINT [FK_APDepositPaymentDTL_BankChargeDeptNo]
GO
ALTER TABLE [dbo].[APDepositPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDepositPaymentDTL_BankChargeProjNo] FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[APDepositPaymentDTL] CHECK CONSTRAINT [FK_APDepositPaymentDTL_BankChargeProjNo]
GO
ALTER TABLE [dbo].[APDepositPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDepositPaymentDTL_BankChargeTaxType] FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[APDepositPaymentDTL] CHECK CONSTRAINT [FK_APDepositPaymentDTL_BankChargeTaxType]
GO
ALTER TABLE [dbo].[APDepositPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDepositPaymentDTL_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDepositPaymentDTL] CHECK CONSTRAINT [FK_APDepositPaymentDTL_PaymentMethod]
GO
ALTER TABLE [dbo].[APDepositForfeit]  WITH CHECK ADD  CONSTRAINT [FK_APDepositForfeit_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APDepositForfeit] CHECK CONSTRAINT [FK_APDepositForfeit_CreatedUserID]
GO
ALTER TABLE [dbo].[APDepositForfeit]  WITH CHECK ADD  CONSTRAINT [FK_APDepositForfeit_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APDepositForfeit] CHECK CONSTRAINT [FK_APDepositForfeit_LastModifiedUserID]
GO
ALTER TABLE [dbo].[APDepositForfeit]  WITH CHECK ADD  CONSTRAINT [FK_APDepositForfeit_ForfeitedAccNo] FOREIGN KEY([ForfeitedAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[APDepositForfeit] CHECK CONSTRAINT [FK_APDepositForfeit_ForfeitedAccNo]
GO
ALTER TABLE [dbo].[APDepositRefund]  WITH CHECK ADD  CONSTRAINT [FK_APDepositRefund_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APDepositRefund] CHECK CONSTRAINT [FK_APDepositRefund_CreatedUserID]
GO
ALTER TABLE [dbo].[APDepositRefund]  WITH CHECK ADD  CONSTRAINT [FK_APDepositRefund_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APDepositRefund] CHECK CONSTRAINT [FK_APDepositRefund_LastModifiedUserID]
GO
ALTER TABLE [dbo].[APDepositRefundPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDepositRefundPaymentDTL_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDepositRefundPaymentDTL] CHECK CONSTRAINT [FK_APDepositRefundPaymentDTL_PaymentMethod]
GO
ALTER TABLE [dbo].[APDepositRefundPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDepositRefundPaymentDTL_BankChargeDeptNo] FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[APDepositRefundPaymentDTL] CHECK CONSTRAINT [FK_APDepositRefundPaymentDTL_BankChargeDeptNo]
GO
ALTER TABLE [dbo].[APDepositRefundPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDepositRefundPaymentDTL_BankChargeProjNo] FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[APDepositRefundPaymentDTL] CHECK CONSTRAINT [FK_APDepositRefundPaymentDTL_BankChargeProjNo]
GO
ALTER TABLE [dbo].[APDepositRefundPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDepositRefundPaymentDTL_BankChargeTaxType] FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[APDepositRefundPaymentDTL] CHECK CONSTRAINT [FK_APDepositRefundPaymentDTL_BankChargeTaxType]
GO
ALTER TABLE [dbo].[APDN]  WITH CHECK ADD  CONSTRAINT [FK_APDN_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[APDN] CHECK CONSTRAINT [FK_APDN_BranchCode]
GO
ALTER TABLE [dbo].[APDN]  WITH CHECK ADD  CONSTRAINT [FK_APDN_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APDN] CHECK CONSTRAINT [FK_APDN_CreatedUserID]
GO
ALTER TABLE [dbo].[APDN]  WITH CHECK ADD  CONSTRAINT [FK_APDN_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDN] CHECK CONSTRAINT [FK_APDN_CreditorCode]
GO
ALTER TABLE [dbo].[APDN]  WITH CHECK ADD  CONSTRAINT [FK_APDN_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDN] CHECK CONSTRAINT [FK_APDN_CurrencyCode]
GO
ALTER TABLE [dbo].[APDN]  WITH CHECK ADD  CONSTRAINT [FK_APDN_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDN] CHECK CONSTRAINT [FK_APDN_DisplayTerm]
GO
ALTER TABLE [dbo].[APDN]  WITH CHECK ADD  CONSTRAINT [FK_APDN_DNType] FOREIGN KEY([DNType])
REFERENCES [dbo].[DNType] ([DNType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDN] CHECK CONSTRAINT [FK_APDN_DNType]
GO
ALTER TABLE [dbo].[APDN]  WITH CHECK ADD  CONSTRAINT [FK_APDN_JournalType] FOREIGN KEY([JournalType])
REFERENCES [dbo].[Journal] ([JournalType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDN] CHECK CONSTRAINT [FK_APDN_JournalType]
GO
ALTER TABLE [dbo].[APDN]  WITH CHECK ADD  CONSTRAINT [FK_APDN_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APDN] CHECK CONSTRAINT [FK_APDN_LastModifiedUserID]
GO
ALTER TABLE [dbo].[APDN]  WITH CHECK ADD  CONSTRAINT [FK_APDN_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDN] CHECK CONSTRAINT [FK_APDN_PurchaseAgent]
GO
ALTER TABLE [dbo].[APDNDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDNDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDNDTL] CHECK CONSTRAINT [FK_APDNDTL_AccNo]
GO
ALTER TABLE [dbo].[APDNDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDNDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDNDTL] CHECK CONSTRAINT [FK_APDNDTL_DeptNo]
GO
ALTER TABLE [dbo].[APDNDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDNDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APDNDTL] CHECK CONSTRAINT [FK_APDNDTL_ProjNo]
GO
ALTER TABLE [dbo].[APDNDTL]  WITH CHECK ADD  CONSTRAINT [FK_APDNDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[APDNDTL] CHECK CONSTRAINT [FK_APDNDTL_TaxType]
GO
ALTER TABLE [dbo].[APInvoice]  WITH CHECK ADD  CONSTRAINT [FK_APInvoice_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[APInvoice] CHECK CONSTRAINT [FK_APInvoice_BranchCode]
GO
ALTER TABLE [dbo].[APInvoice]  WITH CHECK ADD  CONSTRAINT [FK_APInvoice_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APInvoice] CHECK CONSTRAINT [FK_APInvoice_CreatedUserID]
GO
ALTER TABLE [dbo].[APInvoice]  WITH CHECK ADD  CONSTRAINT [FK_APInvoice_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APInvoice] CHECK CONSTRAINT [FK_APInvoice_CreditorCode]
GO
ALTER TABLE [dbo].[APInvoice]  WITH CHECK ADD  CONSTRAINT [FK_APInvoice_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APInvoice] CHECK CONSTRAINT [FK_APInvoice_CurrencyCode]
GO
ALTER TABLE [dbo].[APInvoice]  WITH CHECK ADD  CONSTRAINT [FK_APInvoice_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APInvoice] CHECK CONSTRAINT [FK_APInvoice_DisplayTerm]
GO
ALTER TABLE [dbo].[APInvoice]  WITH CHECK ADD  CONSTRAINT [FK_APInvoice_JournalType] FOREIGN KEY([JournalType])
REFERENCES [dbo].[Journal] ([JournalType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APInvoice] CHECK CONSTRAINT [FK_APInvoice_JournalType]
GO
ALTER TABLE [dbo].[APInvoice]  WITH CHECK ADD  CONSTRAINT [FK_APInvoice_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APInvoice] CHECK CONSTRAINT [FK_APInvoice_LastModifiedUserID]
GO
ALTER TABLE [dbo].[APInvoice]  WITH CHECK ADD  CONSTRAINT [FK_APInvoice_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APInvoice] CHECK CONSTRAINT [FK_APInvoice_PurchaseAgent]
GO
ALTER TABLE [dbo].[APInvoiceDTL]  WITH CHECK ADD  CONSTRAINT [FK_APInvoiceDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APInvoiceDTL] CHECK CONSTRAINT [FK_APInvoiceDTL_AccNo]
GO
ALTER TABLE [dbo].[APInvoiceDTL]  WITH CHECK ADD  CONSTRAINT [FK_APInvoiceDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APInvoiceDTL] CHECK CONSTRAINT [FK_APInvoiceDTL_DeptNo]
GO
ALTER TABLE [dbo].[APInvoiceDTL]  WITH CHECK ADD  CONSTRAINT [FK_APInvoiceDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APInvoiceDTL] CHECK CONSTRAINT [FK_APInvoiceDTL_ProjNo]
GO
ALTER TABLE [dbo].[APInvoiceDTL]  WITH CHECK ADD  CONSTRAINT [FK_APInvoiceDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[APInvoiceDTL] CHECK CONSTRAINT [FK_APInvoiceDTL_TaxType]
GO
ALTER TABLE [dbo].[APPayment]  WITH CHECK ADD  CONSTRAINT [FK_APPayment_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[APPayment] CHECK CONSTRAINT [FK_APPayment_BranchCode]
GO
ALTER TABLE [dbo].[APPayment]  WITH CHECK ADD  CONSTRAINT [FK_APPayment_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APPayment] CHECK CONSTRAINT [FK_APPayment_CreatedUserID]
GO
ALTER TABLE [dbo].[APPayment]  WITH CHECK ADD  CONSTRAINT [FK_APPayment_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APPayment] CHECK CONSTRAINT [FK_APPayment_CreditorCode]
GO
ALTER TABLE [dbo].[APPayment]  WITH CHECK ADD  CONSTRAINT [FK_APPayment_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APPayment] CHECK CONSTRAINT [FK_APPayment_CurrencyCode]
GO
ALTER TABLE [dbo].[APPayment]  WITH CHECK ADD  CONSTRAINT [FK_APPayment_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APPayment] CHECK CONSTRAINT [FK_APPayment_DeptNo]
GO
ALTER TABLE [dbo].[APPayment]  WITH CHECK ADD  CONSTRAINT [FK_APPayment_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APPayment] CHECK CONSTRAINT [FK_APPayment_LastModifiedUserID]
GO
ALTER TABLE [dbo].[APPayment]  WITH CHECK ADD  CONSTRAINT [FK_APPayment_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APPayment] CHECK CONSTRAINT [FK_APPayment_ProjNo]
GO
ALTER TABLE [dbo].[APPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APPaymentDTL_BankChargeDeptNo] FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[APPaymentDTL] CHECK CONSTRAINT [FK_APPaymentDTL_BankChargeDeptNo]
GO
ALTER TABLE [dbo].[APPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APPaymentDTL_BankChargeProjNo] FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[APPaymentDTL] CHECK CONSTRAINT [FK_APPaymentDTL_BankChargeProjNo]
GO
ALTER TABLE [dbo].[APPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APPaymentDTL_BankChargeTaxType] FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[APPaymentDTL] CHECK CONSTRAINT [FK_APPaymentDTL_BankChargeTaxType]
GO
ALTER TABLE [dbo].[APPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_APPaymentDTL_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APPaymentDTL] CHECK CONSTRAINT [FK_APPaymentDTL_PaymentMethod]
GO
ALTER TABLE [dbo].[APPaymentKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_APPaymentKnockOff_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[APPaymentKnockOff] CHECK CONSTRAINT [FK_APPaymentKnockOff_DeptNo]
GO
ALTER TABLE [dbo].[APPaymentKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_APPaymentKnockOff_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[APPaymentKnockOff] CHECK CONSTRAINT [FK_APPaymentKnockOff_ProjNo]
GO
ALTER TABLE [dbo].[APRefund]  WITH CHECK ADD  CONSTRAINT [FK_APRefund_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[APRefund] CHECK CONSTRAINT [FK_APRefund_BranchCode]
GO
ALTER TABLE [dbo].[APRefund]  WITH CHECK ADD  CONSTRAINT [FK_APRefund_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APRefund] CHECK CONSTRAINT [FK_APRefund_CreatedUserID]
GO
ALTER TABLE [dbo].[APRefund]  WITH CHECK ADD  CONSTRAINT [FK_APRefund_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APRefund] CHECK CONSTRAINT [FK_APRefund_CreditorCode]
GO
ALTER TABLE [dbo].[APRefund]  WITH CHECK ADD  CONSTRAINT [FK_APRefund_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APRefund] CHECK CONSTRAINT [FK_APRefund_CurrencyCode]
GO
ALTER TABLE [dbo].[APRefund]  WITH CHECK ADD  CONSTRAINT [FK_APRefund_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APRefund] CHECK CONSTRAINT [FK_APRefund_DeptNo]
GO
ALTER TABLE [dbo].[APRefund]  WITH CHECK ADD  CONSTRAINT [FK_APRefund_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[APRefund] CHECK CONSTRAINT [FK_APRefund_LastModifiedUserID]
GO
ALTER TABLE [dbo].[APRefund]  WITH CHECK ADD  CONSTRAINT [FK_APRefund_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APRefund] CHECK CONSTRAINT [FK_APRefund_ProjNo]
GO
ALTER TABLE [dbo].[APRefundDTL]  WITH CHECK ADD  CONSTRAINT [FK_APRefundDTL_BankChargeDeptNo] FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[APRefundDTL] CHECK CONSTRAINT [FK_APRefundDTL_BankChargeDeptNo]
GO
ALTER TABLE [dbo].[APRefundDTL]  WITH CHECK ADD  CONSTRAINT [FK_APRefundDTL_BankChargeProjNo] FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[APRefundDTL] CHECK CONSTRAINT [FK_APRefundDTL_BankChargeProjNo]
GO
ALTER TABLE [dbo].[APRefundDTL]  WITH CHECK ADD  CONSTRAINT [FK_APRefundDTL_BankChargeTaxType] FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[APRefundDTL] CHECK CONSTRAINT [FK_APRefundDTL_BankChargeTaxType]
GO
ALTER TABLE [dbo].[APRefundDTL]  WITH CHECK ADD  CONSTRAINT [FK_APRefundDTL_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[APRefundDTL] CHECK CONSTRAINT [FK_APRefundDTL_PaymentMethod]
GO
ALTER TABLE [dbo].[APRefundKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_APRefundKnockOff_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[APRefundKnockOff] CHECK CONSTRAINT [FK_APRefundKnockOff_DeptNo]
GO
ALTER TABLE [dbo].[APRefundKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_APRefundKnockOff_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[APRefundKnockOff] CHECK CONSTRAINT [FK_APRefundKnockOff_ProjNo]
GO
ALTER TABLE [dbo].[ARAPBadDebtRecovery]  WITH CHECK ADD  CONSTRAINT [FK_ARAPBadDebtRecovery_Doc] FOREIGN KEY([DocType], [DocKey])
REFERENCES [dbo].[ARAPBadDebt] ([DocType], [DocKey])
GO
ALTER TABLE [dbo].[ARAPBadDebtRecovery] CHECK CONSTRAINT [FK_ARAPBadDebtRecovery_Doc]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_CreatedUserID]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_CreditorBranchCode] FOREIGN KEY([CreditorCode], [CreditorBranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_CreditorBranchCode]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_CreditorCode]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_CurrencyCode]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_DebtorBranchCode] FOREIGN KEY([DebtorCode], [DebtorBranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_DebtorBranchCode]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_DebtorCode]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_DeptNo]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_JournalType] FOREIGN KEY([JournalType])
REFERENCES [dbo].[Journal] ([JournalType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_JournalType]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_ProjNo]
GO
ALTER TABLE [dbo].[ARAPContra]  WITH CHECK ADD  CONSTRAINT [FK_ARAPContra_TempAccNo] FOREIGN KEY([TempAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ARAPContra] CHECK CONSTRAINT [FK_ARAPContra_TempAccNo]
GO
ALTER TABLE [dbo].[ARCN]  WITH CHECK ADD  CONSTRAINT [FK_ARCN_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[ARCN] CHECK CONSTRAINT [FK_ARCN_BranchCode]
GO
ALTER TABLE [dbo].[ARCN]  WITH CHECK ADD  CONSTRAINT [FK_ARCN_CNType] FOREIGN KEY([CNType])
REFERENCES [dbo].[CNType] ([CNType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARCN] CHECK CONSTRAINT [FK_ARCN_CNType]
GO
ALTER TABLE [dbo].[ARCN]  WITH CHECK ADD  CONSTRAINT [FK_ARCN_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARCN] CHECK CONSTRAINT [FK_ARCN_CreatedUserID]
GO
ALTER TABLE [dbo].[ARCN]  WITH CHECK ADD  CONSTRAINT [FK_ARCN_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARCN] CHECK CONSTRAINT [FK_ARCN_CurrencyCode]
GO
ALTER TABLE [dbo].[ARCN]  WITH CHECK ADD  CONSTRAINT [FK_ARCN_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARCN] CHECK CONSTRAINT [FK_ARCN_DebtorCode]
GO
ALTER TABLE [dbo].[ARCN]  WITH CHECK ADD  CONSTRAINT [FK_ARCN_JournalType] FOREIGN KEY([JournalType])
REFERENCES [dbo].[Journal] ([JournalType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARCN] CHECK CONSTRAINT [FK_ARCN_JournalType]
GO
ALTER TABLE [dbo].[ARCN]  WITH CHECK ADD  CONSTRAINT [FK_ARCN_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARCN] CHECK CONSTRAINT [FK_ARCN_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ARCNDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARCNDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARCNDTL] CHECK CONSTRAINT [FK_ARCNDTL_AccNo]
GO
ALTER TABLE [dbo].[ARCNDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARCNDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARCNDTL] CHECK CONSTRAINT [FK_ARCNDTL_DeptNo]
GO
ALTER TABLE [dbo].[ARCNDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARCNDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARCNDTL] CHECK CONSTRAINT [FK_ARCNDTL_ProjNo]
GO
ALTER TABLE [dbo].[ARCNDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARCNDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[ARCNDTL] CHECK CONSTRAINT [FK_ARCNDTL_TaxType]
GO
ALTER TABLE [dbo].[ARCNKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_ARCNKnockOff_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[ARCNKnockOff] CHECK CONSTRAINT [FK_ARCNKnockOff_DeptNo]
GO
ALTER TABLE [dbo].[ARCNKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_ARCNKnockOff_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[ARCNKnockOff] CHECK CONSTRAINT [FK_ARCNKnockOff_ProjNo]
GO
ALTER TABLE [dbo].[ARContraKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_ARContraKnockOff_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[ARContraKnockOff] CHECK CONSTRAINT [FK_ARContraKnockOff_DeptNo]
GO
ALTER TABLE [dbo].[ARContraKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_ARContraKnockOff_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[ARContraKnockOff] CHECK CONSTRAINT [FK_ARContraKnockOff_ProjNo]
GO
ALTER TABLE [dbo].[ARDeposit]  WITH CHECK ADD  CONSTRAINT [FK_ARDeposit_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARDeposit] CHECK CONSTRAINT [FK_ARDeposit_CreatedUserID]
GO
ALTER TABLE [dbo].[ARDeposit]  WITH CHECK ADD  CONSTRAINT [FK_ARDeposit_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDeposit] CHECK CONSTRAINT [FK_ARDeposit_CurrencyCode]
GO
ALTER TABLE [dbo].[ARDeposit]  WITH CHECK ADD  CONSTRAINT [FK_ARDeposit_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDeposit] CHECK CONSTRAINT [FK_ARDeposit_DebtorCode]
GO
ALTER TABLE [dbo].[ARDeposit]  WITH CHECK ADD  CONSTRAINT [FK_ARDeposit_DepositPaymentMethod] FOREIGN KEY([DepositPaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
GO
ALTER TABLE [dbo].[ARDeposit] CHECK CONSTRAINT [FK_ARDeposit_DepositPaymentMethod]
GO
ALTER TABLE [dbo].[ARDeposit]  WITH CHECK ADD  CONSTRAINT [FK_ARDeposit_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDeposit] CHECK CONSTRAINT [FK_ARDeposit_DeptNo]
GO
ALTER TABLE [dbo].[ARDeposit]  WITH CHECK ADD  CONSTRAINT [FK_ARDeposit_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARDeposit] CHECK CONSTRAINT [FK_ARDeposit_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ARDeposit]  WITH CHECK ADD  CONSTRAINT [FK_ARDeposit_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDeposit] CHECK CONSTRAINT [FK_ARDeposit_ProjNo]
GO
ALTER TABLE [dbo].[ARDepositPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositPaymentDTL_BankChargeDeptNo] FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[ARDepositPaymentDTL] CHECK CONSTRAINT [FK_ARDepositPaymentDTL_BankChargeDeptNo]
GO
ALTER TABLE [dbo].[ARDepositPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositPaymentDTL_BankChargeProjNo] FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[ARDepositPaymentDTL] CHECK CONSTRAINT [FK_ARDepositPaymentDTL_BankChargeProjNo]
GO
ALTER TABLE [dbo].[ARDepositPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositPaymentDTL_BankChargeTaxType] FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[ARDepositPaymentDTL] CHECK CONSTRAINT [FK_ARDepositPaymentDTL_BankChargeTaxType]
GO
ALTER TABLE [dbo].[ARDepositPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositPaymentDTL_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDepositPaymentDTL] CHECK CONSTRAINT [FK_ARDepositPaymentDTL_PaymentMethod]
GO
ALTER TABLE [dbo].[ARDepositForfeit]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositForfeit_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARDepositForfeit] CHECK CONSTRAINT [FK_ARDepositForfeit_CreatedUserID]
GO
ALTER TABLE [dbo].[ARDepositForfeit]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositForfeit_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARDepositForfeit] CHECK CONSTRAINT [FK_ARDepositForfeit_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ARDepositForfeit]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositForfeit_ForfeitedAccNo] FOREIGN KEY([ForfeitedAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ARDepositForfeit] CHECK CONSTRAINT [FK_ARDepositForfeit_ForfeitedAccNo]
GO
ALTER TABLE [dbo].[ARDepositRefund]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositRefund_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARDepositRefund] CHECK CONSTRAINT [FK_ARDepositRefund_CreatedUserID]
GO
ALTER TABLE [dbo].[ARDepositRefund]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositRefund_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARDepositRefund] CHECK CONSTRAINT [FK_ARDepositRefund_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ARDepositRefundPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositRefundPaymentDTL_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDepositRefundPaymentDTL] CHECK CONSTRAINT [FK_ARDepositRefundPaymentDTL_PaymentMethod]
GO
ALTER TABLE [dbo].[ARDepositRefundPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositRefundPaymentDTL_BankChargeDeptNo] FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[ARDepositRefundPaymentDTL] CHECK CONSTRAINT [FK_ARDepositRefundPaymentDTL_BankChargeDeptNo]
GO
ALTER TABLE [dbo].[ARDepositRefundPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositRefundPaymentDTL_BankChargeProjNo] FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[ARDepositRefundPaymentDTL] CHECK CONSTRAINT [FK_ARDepositRefundPaymentDTL_BankChargeProjNo]
GO
ALTER TABLE [dbo].[ARDepositRefundPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDepositRefundPaymentDTL_BankChargeTaxType] FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[ARDepositRefundPaymentDTL] CHECK CONSTRAINT [FK_ARDepositRefundPaymentDTL_BankChargeTaxType]
GO
ALTER TABLE [dbo].[ARDN]  WITH CHECK ADD  CONSTRAINT [FK_ARDN_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[ARDN] CHECK CONSTRAINT [FK_ARDN_BranchCode]
GO
ALTER TABLE [dbo].[ARDN]  WITH CHECK ADD  CONSTRAINT [FK_ARDN_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARDN] CHECK CONSTRAINT [FK_ARDN_CreatedUserID]
GO
ALTER TABLE [dbo].[ARDN]  WITH CHECK ADD  CONSTRAINT [FK_ARDN_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDN] CHECK CONSTRAINT [FK_ARDN_CurrencyCode]
GO
ALTER TABLE [dbo].[ARDN]  WITH CHECK ADD  CONSTRAINT [FK_ARDN_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDN] CHECK CONSTRAINT [FK_ARDN_DebtorCode]
GO
ALTER TABLE [dbo].[ARDN]  WITH CHECK ADD  CONSTRAINT [FK_ARDN_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDN] CHECK CONSTRAINT [FK_ARDN_DisplayTerm]
GO
ALTER TABLE [dbo].[ARDN]  WITH CHECK ADD  CONSTRAINT [FK_ARDN_DNType] FOREIGN KEY([DNType])
REFERENCES [dbo].[DNType] ([DNType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDN] CHECK CONSTRAINT [FK_ARDN_DNType]
GO
ALTER TABLE [dbo].[ARDN]  WITH CHECK ADD  CONSTRAINT [FK_ARDN_JournalType] FOREIGN KEY([JournalType])
REFERENCES [dbo].[Journal] ([JournalType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDN] CHECK CONSTRAINT [FK_ARDN_JournalType]
GO
ALTER TABLE [dbo].[ARDN]  WITH CHECK ADD  CONSTRAINT [FK_ARDN_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARDN] CHECK CONSTRAINT [FK_ARDN_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ARDN]  WITH CHECK ADD  CONSTRAINT [FK_ARDN_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDN] CHECK CONSTRAINT [FK_ARDN_SalesAgent]
GO
ALTER TABLE [dbo].[ARDNDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDNDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDNDTL] CHECK CONSTRAINT [FK_ARDNDTL_AccNo]
GO
ALTER TABLE [dbo].[ARDNDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDNDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDNDTL] CHECK CONSTRAINT [FK_ARDNDTL_DeptNo]
GO
ALTER TABLE [dbo].[ARDNDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDNDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARDNDTL] CHECK CONSTRAINT [FK_ARDNDTL_ProjNo]
GO
ALTER TABLE [dbo].[ARDNDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARDNDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[ARDNDTL] CHECK CONSTRAINT [FK_ARDNDTL_TaxType]
GO
ALTER TABLE [dbo].[ARInvoice]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoice_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[ARInvoice] CHECK CONSTRAINT [FK_ARInvoice_BranchCode]
GO
ALTER TABLE [dbo].[ARInvoice]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoice_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARInvoice] CHECK CONSTRAINT [FK_ARInvoice_CreatedUserID]
GO
ALTER TABLE [dbo].[ARInvoice]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoice_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARInvoice] CHECK CONSTRAINT [FK_ARInvoice_CurrencyCode]
GO
ALTER TABLE [dbo].[ARInvoice]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoice_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARInvoice] CHECK CONSTRAINT [FK_ARInvoice_DebtorCode]
GO
ALTER TABLE [dbo].[ARInvoice]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoice_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARInvoice] CHECK CONSTRAINT [FK_ARInvoice_DisplayTerm]
GO
ALTER TABLE [dbo].[ARInvoice]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoice_JournalType] FOREIGN KEY([JournalType])
REFERENCES [dbo].[Journal] ([JournalType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARInvoice] CHECK CONSTRAINT [FK_ARInvoice_JournalType]
GO
ALTER TABLE [dbo].[ARInvoice]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoice_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARInvoice] CHECK CONSTRAINT [FK_ARInvoice_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ARInvoice]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoice_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARInvoice] CHECK CONSTRAINT [FK_ARInvoice_SalesAgent]
GO
ALTER TABLE [dbo].[ARInvoiceDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoiceDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARInvoiceDTL] CHECK CONSTRAINT [FK_ARInvoiceDTL_AccNo]
GO
ALTER TABLE [dbo].[ARInvoiceDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoiceDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARInvoiceDTL] CHECK CONSTRAINT [FK_ARInvoiceDTL_DeptNo]
GO
ALTER TABLE [dbo].[ARInvoiceDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoiceDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARInvoiceDTL] CHECK CONSTRAINT [FK_ARInvoiceDTL_ProjNo]
GO
ALTER TABLE [dbo].[ARInvoiceDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARInvoiceDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[ARInvoiceDTL] CHECK CONSTRAINT [FK_ARInvoiceDTL_TaxType]
GO
ALTER TABLE [dbo].[ARPayment]  WITH CHECK ADD  CONSTRAINT [FK_ARPayment_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[ARPayment] CHECK CONSTRAINT [FK_ARPayment_BranchCode]
GO
ALTER TABLE [dbo].[ARPayment]  WITH CHECK ADD  CONSTRAINT [FK_ARPayment_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARPayment] CHECK CONSTRAINT [FK_ARPayment_CreatedUserID]
GO
ALTER TABLE [dbo].[ARPayment]  WITH CHECK ADD  CONSTRAINT [FK_ARPayment_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARPayment] CHECK CONSTRAINT [FK_ARPayment_CurrencyCode]
GO
ALTER TABLE [dbo].[ARPayment]  WITH CHECK ADD  CONSTRAINT [FK_ARPayment_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARPayment] CHECK CONSTRAINT [FK_ARPayment_DebtorCode]
GO
ALTER TABLE [dbo].[ARPayment]  WITH CHECK ADD  CONSTRAINT [FK_ARPayment_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARPayment] CHECK CONSTRAINT [FK_ARPayment_DeptNo]
GO
ALTER TABLE [dbo].[ARPayment]  WITH CHECK ADD  CONSTRAINT [FK_ARPayment_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARPayment] CHECK CONSTRAINT [FK_ARPayment_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ARPayment]  WITH CHECK ADD  CONSTRAINT [FK_ARPayment_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARPayment] CHECK CONSTRAINT [FK_ARPayment_ProjNo]
GO
ALTER TABLE [dbo].[ARPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARPaymentDTL_BankChargeDeptNo] FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[ARPaymentDTL] CHECK CONSTRAINT [FK_ARPaymentDTL_BankChargeDeptNo]
GO
ALTER TABLE [dbo].[ARPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARPaymentDTL_BankChargeProjNo] FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[ARPaymentDTL] CHECK CONSTRAINT [FK_ARPaymentDTL_BankChargeProjNo]
GO
ALTER TABLE [dbo].[ARPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARPaymentDTL_BankChargeTaxType] FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[ARPaymentDTL] CHECK CONSTRAINT [FK_ARPaymentDTL_BankChargeTaxType]
GO
ALTER TABLE [dbo].[ARPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARPaymentDTL_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARPaymentDTL] CHECK CONSTRAINT [FK_ARPaymentDTL_PaymentMethod]
GO
ALTER TABLE [dbo].[ARPaymentKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_ARPaymentKnockOff_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[ARPaymentKnockOff] CHECK CONSTRAINT [FK_ARPaymentKnockOff_DeptNo]
GO
ALTER TABLE [dbo].[ARPaymentKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_ARPaymentKnockOff_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[ARPaymentKnockOff] CHECK CONSTRAINT [FK_ARPaymentKnockOff_ProjNo]
GO
ALTER TABLE [dbo].[ARRefund]  WITH CHECK ADD  CONSTRAINT [FK_ARRefund_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[ARRefund] CHECK CONSTRAINT [FK_ARRefund_BranchCode]
GO
ALTER TABLE [dbo].[ARRefund]  WITH CHECK ADD  CONSTRAINT [FK_ARRefund_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARRefund] CHECK CONSTRAINT [FK_ARRefund_CreatedUserID]
GO
ALTER TABLE [dbo].[ARRefund]  WITH CHECK ADD  CONSTRAINT [FK_ARRefund_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARRefund] CHECK CONSTRAINT [FK_ARRefund_CurrencyCode]
GO
ALTER TABLE [dbo].[ARRefund]  WITH CHECK ADD  CONSTRAINT [FK_ARRefund_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARRefund] CHECK CONSTRAINT [FK_ARRefund_DebtorCode]
GO
ALTER TABLE [dbo].[ARRefund]  WITH CHECK ADD  CONSTRAINT [FK_ARRefund_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARRefund] CHECK CONSTRAINT [FK_ARRefund_DeptNo]
GO
ALTER TABLE [dbo].[ARRefund]  WITH CHECK ADD  CONSTRAINT [FK_ARRefund_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ARRefund] CHECK CONSTRAINT [FK_ARRefund_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ARRefund]  WITH CHECK ADD  CONSTRAINT [FK_ARRefund_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARRefund] CHECK CONSTRAINT [FK_ARRefund_ProjNo]
GO
ALTER TABLE [dbo].[ARRefundDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARRefundDTL_BankChargeDeptNo] FOREIGN KEY([BankChargeDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[ARRefundDTL] CHECK CONSTRAINT [FK_ARRefundDTL_BankChargeDeptNo]
GO
ALTER TABLE [dbo].[ARRefundDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARRefundDTL_BankChargeProjNo] FOREIGN KEY([BankChargeProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[ARRefundDTL] CHECK CONSTRAINT [FK_ARRefundDTL_BankChargeProjNo]
GO
ALTER TABLE [dbo].[ARRefundDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARRefundDTL_BankChargeTaxType] FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[ARRefundDTL] CHECK CONSTRAINT [FK_ARRefundDTL_BankChargeTaxType]
GO
ALTER TABLE [dbo].[ARRefundDTL]  WITH CHECK ADD  CONSTRAINT [FK_ARRefundDTL_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ARRefundDTL] CHECK CONSTRAINT [FK_ARRefundDTL_PaymentMethod]
GO
ALTER TABLE [dbo].[ARRefundKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_ARRefundKnockOff_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[ARRefundKnockOff] CHECK CONSTRAINT [FK_ARRefundKnockOff_DeptNo]
GO
ALTER TABLE [dbo].[ARRefundKnockOff]  WITH CHECK ADD  CONSTRAINT [FK_ARRefundKnockOff_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[ARRefundKnockOff] CHECK CONSTRAINT [FK_ARRefundKnockOff_ProjNo]
GO
ALTER TABLE [dbo].[ASM]  WITH CHECK ADD  CONSTRAINT [FK_ASM_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ASM] CHECK CONSTRAINT [FK_ASM_CreatedUserID]
GO
ALTER TABLE [dbo].[ASM]  WITH CHECK ADD  CONSTRAINT [FK_ASM_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASM] CHECK CONSTRAINT [FK_ASM_DeptNo]
GO
ALTER TABLE [dbo].[ASM]  WITH CHECK ADD  CONSTRAINT [FK_ASM_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASM] CHECK CONSTRAINT [FK_ASM_ItemBatch]
GO
ALTER TABLE [dbo].[ASM]  WITH CHECK ADD  CONSTRAINT [FK_ASM_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ASM] CHECK CONSTRAINT [FK_ASM_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ASM]  WITH CHECK ADD  CONSTRAINT [FK_ASM_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[ASM] CHECK CONSTRAINT [FK_ASM_Location]
GO
ALTER TABLE [dbo].[ASM]  WITH CHECK ADD  CONSTRAINT [FK_ASM_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASM] CHECK CONSTRAINT [FK_ASM_ProjNo]
GO
ALTER TABLE [dbo].[ASMDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMDTL] CHECK CONSTRAINT [FK_ASMDTL_DeptNo]
GO
ALTER TABLE [dbo].[ASMDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMDTL] CHECK CONSTRAINT [FK_ASMDTL_ItemBatch]
GO
ALTER TABLE [dbo].[ASMDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMDTL_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMDTL] CHECK CONSTRAINT [FK_ASMDTL_ItemCode]
GO
ALTER TABLE [dbo].[ASMDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMDTL] CHECK CONSTRAINT [FK_ASMDTL_Location]
GO
ALTER TABLE [dbo].[ASMDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMDTL] CHECK CONSTRAINT [FK_ASMDTL_ProjNo]
GO
ALTER TABLE [dbo].[ASMOrder]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrder_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ASMOrder] CHECK CONSTRAINT [FK_ASMOrder_CreatedUserID]
GO
ALTER TABLE [dbo].[ASMOrder]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrder_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMOrder] CHECK CONSTRAINT [FK_ASMOrder_DeptNo]
GO
ALTER TABLE [dbo].[ASMOrder]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrder_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMOrder] CHECK CONSTRAINT [FK_ASMOrder_ItemBatch]
GO
ALTER TABLE [dbo].[ASMOrder]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrder_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMOrder] CHECK CONSTRAINT [FK_ASMOrder_ItemCode]
GO
ALTER TABLE [dbo].[ASMOrder]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrder_LastAOPModifiedUserID] FOREIGN KEY([LastAOPModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ASMOrder] CHECK CONSTRAINT [FK_ASMOrder_LastAOPModifiedUserID]
GO
ALTER TABLE [dbo].[ASMOrder]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrder_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ASMOrder] CHECK CONSTRAINT [FK_ASMOrder_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ASMOrder]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrder_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMOrder] CHECK CONSTRAINT [FK_ASMOrder_Location]
GO
ALTER TABLE [dbo].[ASMOrder]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrder_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMOrder] CHECK CONSTRAINT [FK_ASMOrder_ProjNo]
GO
ALTER TABLE [dbo].[ASMOrderDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrderDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMOrderDTL] CHECK CONSTRAINT [FK_ASMOrderDTL_DeptNo]
GO
ALTER TABLE [dbo].[ASMOrderDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrderDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMOrderDTL] CHECK CONSTRAINT [FK_ASMOrderDTL_ItemBatch]
GO
ALTER TABLE [dbo].[ASMOrderDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrderDTL_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMOrderDTL] CHECK CONSTRAINT [FK_ASMOrderDTL_ItemCode]
GO
ALTER TABLE [dbo].[ASMOrderDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrderDTL_LastAORPModifiedUserID] FOREIGN KEY([LastAORPModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ASMOrderDTL] CHECK CONSTRAINT [FK_ASMOrderDTL_LastAORPModifiedUserID]
GO
ALTER TABLE [dbo].[ASMOrderDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrderDTL_LastPRModifiedUserID] FOREIGN KEY([LastPRModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ASMOrderDTL] CHECK CONSTRAINT [FK_ASMOrderDTL_LastPRModifiedUserID]
GO
ALTER TABLE [dbo].[ASMOrderDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrderDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMOrderDTL] CHECK CONSTRAINT [FK_ASMOrderDTL_Location]
GO
ALTER TABLE [dbo].[ASMOrderDTL]  WITH CHECK ADD  CONSTRAINT [FK_ASMOrderDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ASMOrderDTL] CHECK CONSTRAINT [FK_ASMOrderDTL_ProjNo]
GO
ALTER TABLE [dbo].[AsmRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AsmRProcessing_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[AsmRProcessing] CHECK CONSTRAINT [FK_AsmRProcessing_CreatedUserID]
GO
ALTER TABLE [dbo].[AsmRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AsmRProcessing_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[AsmRProcessing] CHECK CONSTRAINT [FK_AsmRProcessing_DeptNo]
GO
ALTER TABLE [dbo].[AsmRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AsmRProcessing_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[AsmRProcessing] CHECK CONSTRAINT [FK_AsmRProcessing_ItemCode]
GO
ALTER TABLE [dbo].[AsmRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AsmRProcessing_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[AsmRProcessing] CHECK CONSTRAINT [FK_AsmRProcessing_LastModifiedUserID]
GO
ALTER TABLE [dbo].[AsmRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AsmRProcessing_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[AsmRProcessing] CHECK CONSTRAINT [FK_AsmRProcessing_Location]
GO
ALTER TABLE [dbo].[AsmRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_AsmRProcessing_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[AsmRProcessing] CHECK CONSTRAINT [FK_AsmRProcessing_ProjNo]
GO
ALTER TABLE [dbo].[AssetDisposal]  WITH CHECK ADD  CONSTRAINT [FK_AssetDisposal_FixedAssetAccNo] FOREIGN KEY([FixedAssetAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[AssetDisposal] CHECK CONSTRAINT [FK_AssetDisposal_FixedAssetAccNo]
GO
ALTER TABLE [dbo].[AssetLink]  WITH CHECK ADD  CONSTRAINT [FK_AssetLink_AssetAccNo] FOREIGN KEY([AssetAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[AssetLink] CHECK CONSTRAINT [FK_AssetLink_AssetAccNo]
GO
ALTER TABLE [dbo].[AssetLink]  WITH CHECK ADD  CONSTRAINT [FK_AssetLink_AssetDeprnAccNo] FOREIGN KEY([AssetDeprnAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[AssetLink] CHECK CONSTRAINT [FK_AssetLink_AssetDeprnAccNo]
GO
ALTER TABLE [dbo].[BankRecon]  WITH CHECK ADD  CONSTRAINT [FK_BankRecon_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[BankRecon] CHECK CONSTRAINT [FK_BankRecon_AccNo]
GO
ALTER TABLE [dbo].[BankTrans]  WITH CHECK ADD  CONSTRAINT [FK_BankTrans_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[BankTrans] CHECK CONSTRAINT [FK_BankTrans_AccNo]
GO
ALTER TABLE [dbo].[BankTrans]  WITH CHECK ADD  CONSTRAINT [FK_BankTrans_AccNo_BankStatementDate] FOREIGN KEY([AccNo], [BankStatementDate])
REFERENCES [dbo].[BankRecon] ([AccNo], [BankStatementDate])
GO
ALTER TABLE [dbo].[BankTrans] CHECK CONSTRAINT [FK_BankTrans_AccNo_BankStatementDate]
GO
ALTER TABLE [dbo].[BOMOptionalDTL]  WITH CHECK ADD  CONSTRAINT [FK_BOMOptionalDTL_SubItemCode] FOREIGN KEY([SubItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[BOMOptionalDTL] CHECK CONSTRAINT [FK_BOMOptionalDTL_SubItemCode]
GO
ALTER TABLE [dbo].[BOMOptionalLink]  WITH CHECK ADD  CONSTRAINT [FK_BOMOptionalLink_BOMItemCode] FOREIGN KEY([BOMItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[BOMOptionalLink] CHECK CONSTRAINT [FK_BOMOptionalLink_BOMItemCode]
GO
ALTER TABLE [dbo].[BonusPointADJ]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointADJ_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[BonusPointADJ] CHECK CONSTRAINT [FK_BonusPointADJ_CreatedUserID]
GO
ALTER TABLE [dbo].[BonusPointADJ]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointADJ_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[BonusPointADJ] CHECK CONSTRAINT [FK_BonusPointADJ_LastModifiedUserID]
GO
ALTER TABLE [dbo].[BonusPointADJDTL]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointADJDTL_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO
ALTER TABLE [dbo].[BonusPointADJDTL] CHECK CONSTRAINT [FK_BonusPointADJDTL_MemberNo]
GO
ALTER TABLE [dbo].[BonusPointRedemption]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointRedemption_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[BonusPointRedemption] CHECK CONSTRAINT [FK_BonusPointRedemption_CreatedUserID]
GO
ALTER TABLE [dbo].[BonusPointRedemption]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointRedemption_Debtor] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[BonusPointRedemption] CHECK CONSTRAINT [FK_BonusPointRedemption_Debtor]
GO
ALTER TABLE [dbo].[BonusPointRedemption]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointRedemption_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[BonusPointRedemption] CHECK CONSTRAINT [FK_BonusPointRedemption_LastModifiedUserID]
GO
ALTER TABLE [dbo].[BonusPointRedemption]  WITH NOCHECK ADD  CONSTRAINT [FK_BonusPointRedemption_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO
ALTER TABLE [dbo].[BonusPointRedemption] CHECK CONSTRAINT [FK_BonusPointRedemption_MemberNo]
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointRedemptionDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL] CHECK CONSTRAINT [FK_BonusPointRedemptionDTL_DeptNo]
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointRedemptionDTL_DocKey] FOREIGN KEY([DocKey])
REFERENCES [dbo].[BonusPointRedemption] ([DocKey])
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL] CHECK CONSTRAINT [FK_BonusPointRedemptionDTL_DocKey]
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointRedemptionDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL] CHECK CONSTRAINT [FK_BonusPointRedemptionDTL_ItemBatch]
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointRedemptionDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL] CHECK CONSTRAINT [FK_BonusPointRedemptionDTL_ItemUOM]
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointRedemptionDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL] CHECK CONSTRAINT [FK_BonusPointRedemptionDTL_Location]
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL]  WITH CHECK ADD  CONSTRAINT [FK_BonusPointRedemptionDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[BonusPointRedemptionDTL] CHECK CONSTRAINT [FK_BonusPointRedemptionDTL_ProjNo]
GO
ALTER TABLE [dbo].[Branch]  WITH CHECK ADD  CONSTRAINT [FK_Branch_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Branch] CHECK CONSTRAINT [FK_Branch_AccNo]
GO
ALTER TABLE [dbo].[Branch]  WITH CHECK ADD  CONSTRAINT [FK_Branch_AreaCode] FOREIGN KEY([AreaCode])
REFERENCES [dbo].[Area] ([AreaCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Branch] CHECK CONSTRAINT [FK_Branch_AreaCode]
GO
ALTER TABLE [dbo].[Branch]  WITH CHECK ADD  CONSTRAINT [FK_Branch_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
GO
ALTER TABLE [dbo].[Branch] CHECK CONSTRAINT [FK_Branch_PurchaseAgent]
GO
ALTER TABLE [dbo].[Branch]  WITH CHECK ADD  CONSTRAINT [FK_Branch_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
GO
ALTER TABLE [dbo].[Branch] CHECK CONSTRAINT [FK_Branch_SalesAgent]
GO
ALTER TABLE [dbo].[BSFormat]  WITH NOCHECK ADD  CONSTRAINT [FK_BSFormat_AccType] FOREIGN KEY([AccType])
REFERENCES [dbo].[AccType] ([AccType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[BSFormat] CHECK CONSTRAINT [FK_BSFormat_AccType]
GO
ALTER TABLE [dbo].[BudgetPBalance]  WITH CHECK ADD  CONSTRAINT [FK_BudgetPBalance_AccNo] FOREIGN KEY([AccNO])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[BudgetPBalance] CHECK CONSTRAINT [FK_BudgetPBalance_AccNo]
GO
ALTER TABLE [dbo].[BudgetPBalance]  WITH CHECK ADD  CONSTRAINT [FK_BudgetPBalance_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[BudgetPBalance] CHECK CONSTRAINT [FK_BudgetPBalance_DeptNo]
GO
ALTER TABLE [dbo].[BudgetPBalance]  WITH CHECK ADD  CONSTRAINT [FK_BudgetPBalance_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[BudgetPBalance] CHECK CONSTRAINT [FK_BudgetPBalance_ProjNo]
GO
ALTER TABLE [dbo].[CB]  WITH CHECK ADD  CONSTRAINT [FK_CB_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CB] CHECK CONSTRAINT [FK_CB_CreatedUserID]
GO
ALTER TABLE [dbo].[CB]  WITH CHECK ADD  CONSTRAINT [FK_CB_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CB] CHECK CONSTRAINT [FK_CB_CurrencyCode]
GO
ALTER TABLE [dbo].[CB]  WITH CHECK ADD  CONSTRAINT [FK_CB_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CB] CHECK CONSTRAINT [FK_CB_LastModifiedUserID]
GO
ALTER TABLE [dbo].[CBDTL]  WITH CHECK ADD  CONSTRAINT [FK_CBDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CBDTL] CHECK CONSTRAINT [FK_CBDTL_AccNo]
GO
ALTER TABLE [dbo].[CBDTL]  WITH CHECK ADD  CONSTRAINT [FK_CBDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CBDTL] CHECK CONSTRAINT [FK_CBDTL_DeptNo]
GO
ALTER TABLE [dbo].[CBDTL]  WITH CHECK ADD  CONSTRAINT [FK_CBDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CBDTL] CHECK CONSTRAINT [FK_CBDTL_ProjNo]
GO
ALTER TABLE [dbo].[CBDTL]  WITH CHECK ADD  CONSTRAINT [FK_CBDTL_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CBDTL] CHECK CONSTRAINT [FK_CBDTL_SalesAgent]
GO
ALTER TABLE [dbo].[CBDTL]  WITH CHECK ADD  CONSTRAINT [FK_CBDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CBDTL] CHECK CONSTRAINT [FK_CBDTL_TaxType]
GO
ALTER TABLE [dbo].[CBPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_CBPaymentDTL_BankChargeTaxType] FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CBPaymentDTL] CHECK CONSTRAINT [FK_CBPaymentDTL_BankChargeTaxType]
GO
ALTER TABLE [dbo].[CBPaymentDTL]  WITH CHECK ADD  CONSTRAINT [FK_CBPaymentDTL_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CBPaymentDTL] CHECK CONSTRAINT [FK_CBPaymentDTL_PaymentMethod]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_BranchCode]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_CNType] FOREIGN KEY([CNType])
REFERENCES [dbo].[CNType] ([CNType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_CNType]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_CreatedUserID]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_CurrencyCode]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_DebtorCode]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_DisplayTerm]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_Footer1TaxType]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_Footer2TaxType]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_Footer3TaxType]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_LastModifiedUserID]
GO
ALTER TABLE [dbo].[CN]  WITH NOCHECK ADD  CONSTRAINT [FK_CN_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_MemberNo]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_SalesAgent]
GO
ALTER TABLE [dbo].[CN]  WITH CHECK ADD  CONSTRAINT [FK_CN_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[CN] CHECK CONSTRAINT [FK_CN_SalesLocation]
GO
ALTER TABLE [dbo].[CNDTL]  WITH CHECK ADD  CONSTRAINT [FK_CNDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[CNDTL] CHECK CONSTRAINT [FK_CNDTL_AccNo]
GO
ALTER TABLE [dbo].[CNDTL]  WITH CHECK ADD  CONSTRAINT [FK_CNDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CNDTL] CHECK CONSTRAINT [FK_CNDTL_DeptNo]
GO
ALTER TABLE [dbo].[CNDTL]  WITH CHECK ADD  CONSTRAINT [FK_CNDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CNDTL] CHECK CONSTRAINT [FK_CNDTL_FontStyle]
GO
ALTER TABLE [dbo].[CNDTL]  WITH CHECK ADD  CONSTRAINT [FK_CNDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CNDTL] CHECK CONSTRAINT [FK_CNDTL_ItemBatch]
GO
ALTER TABLE [dbo].[CNDTL]  WITH CHECK ADD  CONSTRAINT [FK_CNDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CNDTL] CHECK CONSTRAINT [FK_CNDTL_ItemUOM]
GO
ALTER TABLE [dbo].[CNDTL]  WITH CHECK ADD  CONSTRAINT [FK_CNDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[CNDTL] CHECK CONSTRAINT [FK_CNDTL_Location]
GO
ALTER TABLE [dbo].[CNDTL]  WITH CHECK ADD  CONSTRAINT [FK_CNDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CNDTL] CHECK CONSTRAINT [FK_CNDTL_ProjNo]
GO
ALTER TABLE [dbo].[CNDTL]  WITH CHECK ADD  CONSTRAINT [FK_CNDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CNDTL] CHECK CONSTRAINT [FK_CNDTL_TaxType]
GO
ALTER TABLE [dbo].[Comment]  WITH CHECK ADD  CONSTRAINT [FK_Comment_UserID] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Comment] CHECK CONSTRAINT [FK_Comment_UserID]
GO
ALTER TABLE [dbo].[Commission]  WITH NOCHECK ADD  CONSTRAINT [FK_Commission_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Commission] CHECK CONSTRAINT [FK_Commission_SalesAgent]
GO
ALTER TABLE [dbo].[Contact]  WITH CHECK ADD  CONSTRAINT [FK_Contact_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Contact] CHECK CONSTRAINT [FK_Contact_AccNo]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_BranchCode]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_CreatedUserID]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_CreditorCode]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_CurrencyCode]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_DisplayTerm]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_Footer1TaxType]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_Footer2TaxType]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_Footer3TaxType]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_LastModifiedUserID]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_PurchaseAgent]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_PurchaseLocation]
GO
ALTER TABLE [dbo].[CP]  WITH CHECK ADD  CONSTRAINT [FK_CP_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CP] CHECK CONSTRAINT [FK_CP_ShipVia]
GO
ALTER TABLE [dbo].[CPDTL]  WITH CHECK ADD  CONSTRAINT [FK_CPDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[CPDTL] CHECK CONSTRAINT [FK_CPDTL_AccNo]
GO
ALTER TABLE [dbo].[CPDTL]  WITH CHECK ADD  CONSTRAINT [FK_CPDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CPDTL] CHECK CONSTRAINT [FK_CPDTL_DeptNo]
GO
ALTER TABLE [dbo].[CPDTL]  WITH CHECK ADD  CONSTRAINT [FK_CPDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CPDTL] CHECK CONSTRAINT [FK_CPDTL_FontStyle]
GO
ALTER TABLE [dbo].[CPDTL]  WITH CHECK ADD  CONSTRAINT [FK_CPDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CPDTL] CHECK CONSTRAINT [FK_CPDTL_ItemBatch]
GO
ALTER TABLE [dbo].[CPDTL]  WITH CHECK ADD  CONSTRAINT [FK_CPDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CPDTL] CHECK CONSTRAINT [FK_CPDTL_ItemUOM]
GO
ALTER TABLE [dbo].[CPDTL]  WITH CHECK ADD  CONSTRAINT [FK_CPDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[CPDTL] CHECK CONSTRAINT [FK_CPDTL_Location]
GO
ALTER TABLE [dbo].[CPDTL]  WITH CHECK ADD  CONSTRAINT [FK_CPDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CPDTL] CHECK CONSTRAINT [FK_CPDTL_ProjNo]
GO
ALTER TABLE [dbo].[CPDTL]  WITH CHECK ADD  CONSTRAINT [FK_CPDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CPDTL] CHECK CONSTRAINT [FK_CPDTL_TaxType]
GO
ALTER TABLE [dbo].[CreditControlSync]  WITH CHECK ADD  CONSTRAINT [FK_CreditControlSync_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[CreditControlSync] CHECK CONSTRAINT [FK_CreditControlSync_AccNo]
GO
ALTER TABLE [dbo].[CreditControlSync]  WITH CHECK ADD  CONSTRAINT [FK_CreditControlSync_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CreditControlSync] CHECK CONSTRAINT [FK_CreditControlSync_CreatedUserID]
GO
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Creditor] CHECK CONSTRAINT [FK_Creditor_AccNo]
GO
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_AreaCode] FOREIGN KEY([AreaCode])
REFERENCES [dbo].[Area] ([AreaCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Creditor] CHECK CONSTRAINT [FK_Creditor_AreaCode]
GO
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Creditor] CHECK CONSTRAINT [FK_Creditor_CreatedUserID]
GO
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_CreditorType] FOREIGN KEY([CreditorType])
REFERENCES [dbo].[CreditorType] ([CreditorType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Creditor] CHECK CONSTRAINT [FK_Creditor_CreditorType]
GO
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Creditor] CHECK CONSTRAINT [FK_Creditor_CurrencyCode]
GO
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Creditor] CHECK CONSTRAINT [FK_Creditor_DisplayTerm]
GO
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Creditor] CHECK CONSTRAINT [FK_Creditor_LastModifiedUserID]
GO
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_PriceCategory] FOREIGN KEY([PriceCategory])
REFERENCES [dbo].[PriceCategory] ([PriceCategory])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Creditor] CHECK CONSTRAINT [FK_Creditor_PriceCategory]
GO
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Creditor] CHECK CONSTRAINT [FK_Creditor_PurchaseAgent]
GO
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[Creditor] CHECK CONSTRAINT [FK_Creditor_TaxType]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_BranchCode]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_CreatedUserID]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_CurrencyCode]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_DebtorCode]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_DisplayTerm]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_Footer1TaxType]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_Footer2TaxType]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_Footer3TaxType]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_LastModifiedUserID]
GO
ALTER TABLE [dbo].[CS]  WITH NOCHECK ADD  CONSTRAINT [FK_CS_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_MemberNo]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_ReallocatePurchaseByProjectNo] FOREIGN KEY([ReallocatePurchaseByProjectNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_ReallocatePurchaseByProjectNo]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_SalesAgent]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_SalesLocation]
GO
ALTER TABLE [dbo].[CS]  WITH CHECK ADD  CONSTRAINT [FK_CS_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CS] CHECK CONSTRAINT [FK_CS_ShipVia]
GO
ALTER TABLE [dbo].[CSDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[CSDTL] CHECK CONSTRAINT [FK_CSDTL_AccNo]
GO
ALTER TABLE [dbo].[CSDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSDTL] CHECK CONSTRAINT [FK_CSDTL_DeptNo]
GO
ALTER TABLE [dbo].[CSDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSDTL] CHECK CONSTRAINT [FK_CSDTL_FontStyle]
GO
ALTER TABLE [dbo].[CSDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSDTL] CHECK CONSTRAINT [FK_CSDTL_ItemBatch]
GO
ALTER TABLE [dbo].[CSDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSDTL] CHECK CONSTRAINT [FK_CSDTL_ItemUOM]
GO
ALTER TABLE [dbo].[CSDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[CSDTL] CHECK CONSTRAINT [FK_CSDTL_Location]
GO
ALTER TABLE [dbo].[CSDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSDTL] CHECK CONSTRAINT [FK_CSDTL_ProjNo]
GO
ALTER TABLE [dbo].[CSDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[CSDTL] CHECK CONSTRAINT [FK_CSDTL_TaxType]
GO
ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Consignment] CHECK CONSTRAINT [FK_Consignment_BranchCode]
GO
ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Consignment] CHECK CONSTRAINT [FK_Consignment_CreatedUserID]
GO
ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Consignment] CHECK CONSTRAINT [FK_Consignment_CurrencyCode]
GO
ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Consignment] CHECK CONSTRAINT [FK_Consignment_DebtorCode]
GO
ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Consignment] CHECK CONSTRAINT [FK_Consignment_DisplayTerm]
GO
ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Consignment] CHECK CONSTRAINT [FK_Consignment_LastModifiedUserID]
GO
ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Consignment] CHECK CONSTRAINT [FK_Consignment_SalesAgent]
GO
ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[Consignment] CHECK CONSTRAINT [FK_Consignment_SalesLocation]
GO
ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Consignment] CHECK CONSTRAINT [FK_Consignment_ShipVia]
GO
ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentDTL] CHECK CONSTRAINT [FK_ConsignmentDTL_DeptNo]
GO
ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentDTL] CHECK CONSTRAINT [FK_ConsignmentDTL_FontStyle]
GO
ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentDTL] CHECK CONSTRAINT [FK_ConsignmentDTL_ItemBatch]
GO
ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentDTL] CHECK CONSTRAINT [FK_ConsignmentDTL_ItemUOM]
GO
ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[ConsignmentDTL] CHECK CONSTRAINT [FK_ConsignmentDTL_Location]
GO
ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentDTL] CHECK CONSTRAINT [FK_ConsignmentDTL_ProjNo]
GO
ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[ConsignmentDTL] CHECK CONSTRAINT [FK_ConsignmentDTL_TaxType]
GO
ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturn] CHECK CONSTRAINT [FK_ConsignmentReturn_BranchCode]
GO
ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ConsignmentReturn] CHECK CONSTRAINT [FK_ConsignmentReturn_CreatedUserID]
GO
ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturn] CHECK CONSTRAINT [FK_ConsignmentReturn_CurrencyCode]
GO
ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturn] CHECK CONSTRAINT [FK_ConsignmentReturn_DebtorCode]
GO
ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturn] CHECK CONSTRAINT [FK_ConsignmentReturn_DisplayTerm]
GO
ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ConsignmentReturn] CHECK CONSTRAINT [FK_ConsignmentReturn_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturn] CHECK CONSTRAINT [FK_ConsignmentReturn_SalesAgent]
GO
ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[ConsignmentReturn] CHECK CONSTRAINT [FK_ConsignmentReturn_SalesLocation]
GO
ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturn] CHECK CONSTRAINT [FK_ConsignmentReturn_ShipVia]
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL] CHECK CONSTRAINT [FK_ConsignmentReturnDTL_DeptNo]
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL] CHECK CONSTRAINT [FK_ConsignmentReturnDTL_FontStyle]
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL] CHECK CONSTRAINT [FK_ConsignmentReturnDTL_ItemBatch]
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL] CHECK CONSTRAINT [FK_ConsignmentReturnDTL_ItemUOM]
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL] CHECK CONSTRAINT [FK_ConsignmentReturnDTL_Location]
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL] CHECK CONSTRAINT [FK_ConsignmentReturnDTL_ProjNo]
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[ConsignmentReturnDTL] CHECK CONSTRAINT [FK_ConsignmentReturnDTL_TaxType]
GO
ALTER TABLE [dbo].[CSGNItemBalQty]  WITH CHECK ADD  CONSTRAINT [FK_CSGNItemBalQty_Branch] FOREIGN KEY([AccNo], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[CSGNItemBalQty] CHECK CONSTRAINT [FK_CSGNItemBalQty_Branch]
GO
ALTER TABLE [dbo].[CSGNItemBalQty]  WITH CHECK ADD  CONSTRAINT [FK_CSGNItemBalQty_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSGNItemBalQty] CHECK CONSTRAINT [FK_CSGNItemBalQty_DeptNo]
GO
ALTER TABLE [dbo].[CSGNItemBalQty]  WITH CHECK ADD  CONSTRAINT [FK_CSGNItemBalQty_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
GO
ALTER TABLE [dbo].[CSGNItemBalQty] CHECK CONSTRAINT [FK_CSGNItemBalQty_ItemBatch]
GO
ALTER TABLE [dbo].[CSGNItemBalQty]  WITH CHECK ADD  CONSTRAINT [FK_CSGNItemBalQty_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[CSGNItemBalQty] CHECK CONSTRAINT [FK_CSGNItemBalQty_ItemUOM]
GO
ALTER TABLE [dbo].[CSGNItemBalQty]  WITH CHECK ADD  CONSTRAINT [FK_CSGNItemBalQty_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[CSGNItemBalQty] CHECK CONSTRAINT [FK_CSGNItemBalQty_Location]
GO
ALTER TABLE [dbo].[CSGNItemBalQty]  WITH CHECK ADD  CONSTRAINT [FK_CSGNItemBalQty_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSGNItemBalQty] CHECK CONSTRAINT [FK_CSGNItemBalQty_ProjNo]
GO
ALTER TABLE [dbo].[CSGNXFER]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFER_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CSGNXFER] CHECK CONSTRAINT [FK_CSGNXFER_CreatedUserID]
GO
ALTER TABLE [dbo].[CSGNXFER]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFER_FromBranchCode] FOREIGN KEY([FromDebtorCode], [FromBranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[CSGNXFER] CHECK CONSTRAINT [FK_CSGNXFER_FromBranchCode]
GO
ALTER TABLE [dbo].[CSGNXFER]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFER_FromDebtorCode] FOREIGN KEY([FromDebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[CSGNXFER] CHECK CONSTRAINT [FK_CSGNXFER_FromDebtorCode]
GO
ALTER TABLE [dbo].[CSGNXFER]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFER_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[CSGNXFER] CHECK CONSTRAINT [FK_CSGNXFER_LastModifiedUserID]
GO
ALTER TABLE [dbo].[CSGNXFER]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFER_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSGNXFER] CHECK CONSTRAINT [FK_CSGNXFER_SalesAgent]
GO
ALTER TABLE [dbo].[CSGNXFER]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFER_ToBranchCode] FOREIGN KEY([ToDebtorCode], [ToBranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[CSGNXFER] CHECK CONSTRAINT [FK_CSGNXFER_ToBranchCode]
GO
ALTER TABLE [dbo].[CSGNXFER]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFER_ToDebtorCode] FOREIGN KEY([ToDebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[CSGNXFER] CHECK CONSTRAINT [FK_CSGNXFER_ToDebtorCode]
GO
ALTER TABLE [dbo].[CSGNXFERDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFERDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSGNXFERDTL] CHECK CONSTRAINT [FK_CSGNXFERDTL_DeptNo]
GO
ALTER TABLE [dbo].[CSGNXFERDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFERDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSGNXFERDTL] CHECK CONSTRAINT [FK_CSGNXFERDTL_ItemBatch]
GO
ALTER TABLE [dbo].[CSGNXFERDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFERDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSGNXFERDTL] CHECK CONSTRAINT [FK_CSGNXFERDTL_ItemUOM]
GO
ALTER TABLE [dbo].[CSGNXFERDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFERDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSGNXFERDTL] CHECK CONSTRAINT [FK_CSGNXFERDTL_Location]
GO
ALTER TABLE [dbo].[CSGNXFERDTL]  WITH CHECK ADD  CONSTRAINT [FK_CSGNXFERDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CSGNXFERDTL] CHECK CONSTRAINT [FK_CSGNXFERDTL_ProjNo]
GO
ALTER TABLE [dbo].[CURRENCY]  WITH CHECK ADD  CONSTRAINT [FK_Currency_FCGainAccount] FOREIGN KEY([FCGainAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[CURRENCY] CHECK CONSTRAINT [FK_Currency_FCGainAccount]
GO
ALTER TABLE [dbo].[CURRENCY]  WITH CHECK ADD  CONSTRAINT [FK_Currency_FCLossAccount] FOREIGN KEY([FCLossAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[CURRENCY] CHECK CONSTRAINT [FK_Currency_FCLossAccount]
GO
ALTER TABLE [dbo].[CURRENCY]  WITH CHECK ADD  CONSTRAINT [FK_Currency_GainLossJournalType] FOREIGN KEY([GainLossJournalType])
REFERENCES [dbo].[Journal] ([JournalType])
GO
ALTER TABLE [dbo].[CURRENCY] CHECK CONSTRAINT [FK_Currency_GainLossJournalType]
GO
ALTER TABLE [dbo].[CurrRate]  WITH NOCHECK ADD  CONSTRAINT [FK_CurrRate_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[CurrRate] CHECK CONSTRAINT [FK_CurrRate_CurrencyCode]
GO
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Debtor] CHECK CONSTRAINT [FK_Debtor_AccNo]
GO
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_AreaCode] FOREIGN KEY([AreaCode])
REFERENCES [dbo].[Area] ([AreaCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Debtor] CHECK CONSTRAINT [FK_Debtor_AreaCode]
GO
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Debtor] CHECK CONSTRAINT [FK_Debtor_CreatedUserID]
GO
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Debtor] CHECK CONSTRAINT [FK_Debtor_CurrencyCode]
GO
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_DebtorType] FOREIGN KEY([DebtorType])
REFERENCES [dbo].[DebtorType] ([DebtorType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Debtor] CHECK CONSTRAINT [FK_Debtor_DebtorType]
GO
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Debtor] CHECK CONSTRAINT [FK_Debtor_DisplayTerm]
GO
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Debtor] CHECK CONSTRAINT [FK_Debtor_LastModifiedUserID]
GO
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_PriceCategory] FOREIGN KEY([PriceCategory])
REFERENCES [dbo].[PriceCategory] ([PriceCategory])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Debtor] CHECK CONSTRAINT [FK_Debtor_PriceCategory]
GO
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Debtor] CHECK CONSTRAINT [FK_Debtor_SalesAgent]
GO
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[Debtor] CHECK CONSTRAINT [FK_Debtor_TaxType]
GO
ALTER TABLE [dbo].[Dept]  WITH CHECK ADD  CONSTRAINT [FK_Dept_ParentDeptNo] FOREIGN KEY([ParentDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[Dept] CHECK CONSTRAINT [FK_Dept_ParentDeptNo]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_BranchCode]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_CreatedUserID]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_CurrencyCode]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_DebtorCode]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_DisplayTerm]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_DNType] FOREIGN KEY([DNType])
REFERENCES [dbo].[DNType] ([DNType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_DNType]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_Footer1TaxType]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_Footer2TaxType]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_Footer3TaxType]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_LastModifiedUserID]
GO
ALTER TABLE [dbo].[DN]  WITH NOCHECK ADD  CONSTRAINT [FK_DN_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_MemberNo]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_ReallocatePurchaseByProjectNo] FOREIGN KEY([ReallocatePurchaseByProjectNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_ReallocatePurchaseByProjectNo]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_SalesAgent]
GO
ALTER TABLE [dbo].[DN]  WITH CHECK ADD  CONSTRAINT [FK_DN_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[DN] CHECK CONSTRAINT [FK_DN_SalesLocation]
GO
ALTER TABLE [dbo].[DNDTL]  WITH CHECK ADD  CONSTRAINT [FK_DNDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[DNDTL] CHECK CONSTRAINT [FK_DNDTL_AccNo]
GO
ALTER TABLE [dbo].[DNDTL]  WITH CHECK ADD  CONSTRAINT [FK_DNDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DNDTL] CHECK CONSTRAINT [FK_DNDTL_DeptNo]
GO
ALTER TABLE [dbo].[DNDTL]  WITH CHECK ADD  CONSTRAINT [FK_DNDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DNDTL] CHECK CONSTRAINT [FK_DNDTL_FontStyle]
GO
ALTER TABLE [dbo].[DNDTL]  WITH CHECK ADD  CONSTRAINT [FK_DNDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DNDTL] CHECK CONSTRAINT [FK_DNDTL_ItemBatch]
GO
ALTER TABLE [dbo].[DNDTL]  WITH CHECK ADD  CONSTRAINT [FK_DNDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DNDTL] CHECK CONSTRAINT [FK_DNDTL_ItemUOM]
GO
ALTER TABLE [dbo].[DNDTL]  WITH CHECK ADD  CONSTRAINT [FK_DNDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[DNDTL] CHECK CONSTRAINT [FK_DNDTL_Location]
GO
ALTER TABLE [dbo].[DNDTL]  WITH CHECK ADD  CONSTRAINT [FK_DNDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DNDTL] CHECK CONSTRAINT [FK_DNDTL_ProjNo]
GO
ALTER TABLE [dbo].[DNDTL]  WITH CHECK ADD  CONSTRAINT [FK_DNDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DNDTL] CHECK CONSTRAINT [FK_DNDTL_TaxType]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_BranchCode]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_CreatedUserID]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_CurrencyCode]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_DebtorCode]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_DisplayTerm]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_Footer1TaxType]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_Footer2TaxType]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_Footer3TaxType]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_LastModifiedUserID]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_SalesAgent]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_SalesLocation]
GO
ALTER TABLE [dbo].[DO]  WITH CHECK ADD  CONSTRAINT [FK_DO_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DO] CHECK CONSTRAINT [FK_DO_ShipVia]
GO
ALTER TABLE [dbo].[DocNoFormatAccNo]  WITH NOCHECK ADD  CONSTRAINT [FK_DocNoFormatAccNo_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DocNoFormatAccNo] CHECK CONSTRAINT [FK_DocNoFormatAccNo_AccNo]
GO
ALTER TABLE [dbo].[DocNoFormatAccNo]  WITH NOCHECK ADD  CONSTRAINT [FK_DocNoFormatAccNo_Name] FOREIGN KEY([Name])
REFERENCES [dbo].[DocNoFormat] ([Name])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DocNoFormatAccNo] CHECK CONSTRAINT [FK_DocNoFormatAccNo_Name]
GO
ALTER TABLE [dbo].[DocNoFormatUsers]  WITH NOCHECK ADD  CONSTRAINT [FK_DocNoFormatUsers_Name] FOREIGN KEY([Name])
REFERENCES [dbo].[DocNoFormat] ([Name])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DocNoFormatUsers] CHECK CONSTRAINT [FK_DocNoFormatUsers_Name]
GO
ALTER TABLE [dbo].[DocNoFormatUsers]  WITH NOCHECK ADD  CONSTRAINT [FK_DocNoFormatUsers_UserID] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DocNoFormatUsers] CHECK CONSTRAINT [FK_DocNoFormatUsers_UserID]
GO
ALTER TABLE [dbo].[DODTL]  WITH CHECK ADD  CONSTRAINT [FK_DODTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[DODTL] CHECK CONSTRAINT [FK_DODTL_AccNo]
GO
ALTER TABLE [dbo].[DODTL]  WITH CHECK ADD  CONSTRAINT [FK_DODTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DODTL] CHECK CONSTRAINT [FK_DODTL_DeptNo]
GO
ALTER TABLE [dbo].[DODTL]  WITH CHECK ADD  CONSTRAINT [FK_DODTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DODTL] CHECK CONSTRAINT [FK_DODTL_FontStyle]
GO
ALTER TABLE [dbo].[DODTL]  WITH CHECK ADD  CONSTRAINT [FK_DODTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DODTL] CHECK CONSTRAINT [FK_DODTL_ItemBatch]
GO
ALTER TABLE [dbo].[DODTL]  WITH CHECK ADD  CONSTRAINT [FK_DODTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DODTL] CHECK CONSTRAINT [FK_DODTL_ItemUOM]
GO
ALTER TABLE [dbo].[DODTL]  WITH CHECK ADD  CONSTRAINT [FK_DODTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[DODTL] CHECK CONSTRAINT [FK_DODTL_Location]
GO
ALTER TABLE [dbo].[DODTL]  WITH CHECK ADD  CONSTRAINT [FK_DODTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DODTL] CHECK CONSTRAINT [FK_DODTL_ProjNo]
GO
ALTER TABLE [dbo].[DODTL]  WITH CHECK ADD  CONSTRAINT [FK_DODTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DODTL] CHECK CONSTRAINT [FK_DODTL_TaxType]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_BranchCode]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_CreatedUserID]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_CurrencyCode]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_DebtorCode]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_DisplayTerm]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_Footer1TaxType]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_Footer2TaxType]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_Footer3TaxType]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_LastModifiedUserID]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_SalesAgent]
GO
ALTER TABLE [dbo].[DR]  WITH CHECK ADD  CONSTRAINT [FK_DR_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[DR] CHECK CONSTRAINT [FK_DR_SalesLocation]
GO
ALTER TABLE [dbo].[DRDTL]  WITH CHECK ADD  CONSTRAINT [FK_DRDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DRDTL] CHECK CONSTRAINT [FK_DRDTL_DeptNo]
GO
ALTER TABLE [dbo].[DRDTL]  WITH CHECK ADD  CONSTRAINT [FK_DRDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DRDTL] CHECK CONSTRAINT [FK_DRDTL_FontStyle]
GO
ALTER TABLE [dbo].[DRDTL]  WITH CHECK ADD  CONSTRAINT [FK_DRDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DRDTL] CHECK CONSTRAINT [FK_DRDTL_ItemBatch]
GO
ALTER TABLE [dbo].[DRDTL]  WITH CHECK ADD  CONSTRAINT [FK_DRDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DRDTL] CHECK CONSTRAINT [FK_DRDTL_ItemUOM]
GO
ALTER TABLE [dbo].[DRDTL]  WITH CHECK ADD  CONSTRAINT [FK_DRDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[DRDTL] CHECK CONSTRAINT [FK_DRDTL_Location]
GO
ALTER TABLE [dbo].[DRDTL]  WITH CHECK ADD  CONSTRAINT [FK_DRDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DRDTL] CHECK CONSTRAINT [FK_DRDTL_ProjNo]
GO
ALTER TABLE [dbo].[DRDTL]  WITH CHECK ADD  CONSTRAINT [FK_DRDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[DRDTL] CHECK CONSTRAINT [FK_DRDTL_TaxType]
GO
ALTER TABLE [dbo].[DRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessing_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DRProcessing] CHECK CONSTRAINT [FK_DRProcessing_CreatedUserID]
GO
ALTER TABLE [dbo].[DRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessing_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DRProcessing] CHECK CONSTRAINT [FK_DRProcessing_DebtorCode]
GO
ALTER TABLE [dbo].[DRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessing_DeliveryUOM] FOREIGN KEY([ItemCode], [DeliveryUOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[DRProcessing] CHECK CONSTRAINT [FK_DRProcessing_DeliveryUOM]
GO
ALTER TABLE [dbo].[DRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessing_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DRProcessing] CHECK CONSTRAINT [FK_DRProcessing_DeptNo]
GO
ALTER TABLE [dbo].[DRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessing_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DRProcessing] CHECK CONSTRAINT [FK_DRProcessing_LastModifiedUserID]
GO
ALTER TABLE [dbo].[DRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessing_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DRProcessing] CHECK CONSTRAINT [FK_DRProcessing_Location]
GO
ALTER TABLE [dbo].[DRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessing_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DRProcessing] CHECK CONSTRAINT [FK_DRProcessing_ProjNo]
GO
ALTER TABLE [dbo].[DRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessing_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[DRProcessing] CHECK CONSTRAINT [FK_DRProcessing_TaxType]
GO
ALTER TABLE [dbo].[DRProcessingDO]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessingDO_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DRProcessingDO] CHECK CONSTRAINT [FK_DRProcessingDO_CreatedUserID]
GO
ALTER TABLE [dbo].[DRProcessingDO]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessingDO_ItemUOM] FOREIGN KEY([ItemCode], [DeliveryUOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[DRProcessingDO] CHECK CONSTRAINT [FK_DRProcessingDO_ItemUOM]
GO
ALTER TABLE [dbo].[DRProcessingDO]  WITH CHECK ADD  CONSTRAINT [FK_DRProcessingDO_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DRProcessingDO] CHECK CONSTRAINT [FK_DRProcessingDO_LastModifiedUserID]
GO
ALTER TABLE [dbo].[EventLog]  WITH CHECK ADD  CONSTRAINT [FK_EventLog_UserID] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[EventLog] CHECK CONSTRAINT [FK_EventLog_UserID]
GO
ALTER TABLE [dbo].[Expenses]  WITH CHECK ADD  CONSTRAINT [FK_Expenses_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Expenses] CHECK CONSTRAINT [FK_Expenses_AccNo]
GO
ALTER TABLE [dbo].[FCRevalue]  WITH CHECK ADD  CONSTRAINT [FK_FCRevalue_GainLossJournalType] FOREIGN KEY([GainLossJournalType])
REFERENCES [dbo].[Journal] ([JournalType])
GO
ALTER TABLE [dbo].[FCRevalue] CHECK CONSTRAINT [FK_FCRevalue_GainLossJournalType]
GO
ALTER TABLE [dbo].[FCRevalue]  WITH CHECK ADD  CONSTRAINT [FK_FCRevalue_UnrealizedGainAccount] FOREIGN KEY([UnrealizedGainAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[FCRevalue] CHECK CONSTRAINT [FK_FCRevalue_UnrealizedGainAccount]
GO
ALTER TABLE [dbo].[FCRevalue]  WITH CHECK ADD  CONSTRAINT [FK_FCRevalue_UnrealizedLossAccount] FOREIGN KEY([UnrealizedLossAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[FCRevalue] CHECK CONSTRAINT [FK_FCRevalue_UnrealizedLossAccount]
GO
ALTER TABLE [dbo].[FCRevalueDocument]  WITH CHECK ADD  CONSTRAINT [FK_FCRevalueDocument_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[FCRevalueDocument] CHECK CONSTRAINT [FK_FCRevalueDocument_AccNo]
GO
ALTER TABLE [dbo].[FCRevalueDocument]  WITH CHECK ADD  CONSTRAINT [FK_FCRevalueDocument_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[FCRevalueDocument] CHECK CONSTRAINT [FK_FCRevalueDocument_CurrencyCode]
GO
ALTER TABLE [dbo].[FCRevalueDocument]  WITH CHECK ADD  CONSTRAINT [FK_FCRevalueDocument_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[FCRevalueDocument] CHECK CONSTRAINT [FK_FCRevalueDocument_DeptNo]
GO
ALTER TABLE [dbo].[FCRevalueDocument]  WITH CHECK ADD  CONSTRAINT [FK_FCRevalueDocument_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[FCRevalueDocument] CHECK CONSTRAINT [FK_FCRevalueDocument_ProjNo]
GO
ALTER TABLE [dbo].[FCRevalueGLAccount]  WITH CHECK ADD  CONSTRAINT [FK_FCRevalueGLAccount_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[FCRevalueGLAccount] CHECK CONSTRAINT [FK_FCRevalueGLAccount_AccNo]
GO
ALTER TABLE [dbo].[FCRevalueRate]  WITH CHECK ADD  CONSTRAINT [FK_FCRevalueRate_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[FCRevalueRate] CHECK CONSTRAINT [FK_FCRevalueRate_CurrencyCode]
GO
ALTER TABLE [dbo].[Footer]  WITH CHECK ADD  CONSTRAINT [FK_Footer_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Footer] CHECK CONSTRAINT [FK_Footer_AccNo]
GO
ALTER TABLE [dbo].[Footer]  WITH CHECK ADD  CONSTRAINT [FK_Footer_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[Footer] CHECK CONSTRAINT [FK_Footer_TaxType]
GO
ALTER TABLE [dbo].[GLDTL]  WITH CHECK ADD  CONSTRAINT [FK_GLDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GLDTL] CHECK CONSTRAINT [FK_GLDTL_AccNo]
GO
ALTER TABLE [dbo].[GLDTL]  WITH CHECK ADD  CONSTRAINT [FK_GLDTL_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GLDTL] CHECK CONSTRAINT [FK_GLDTL_CurrencyCode]
GO
ALTER TABLE [dbo].[GLDTL]  WITH CHECK ADD  CONSTRAINT [FK_GLDTL_DEAccNo] FOREIGN KEY([DEAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[GLDTL] CHECK CONSTRAINT [FK_GLDTL_DEAccNo]
GO
ALTER TABLE [dbo].[GLDTL]  WITH CHECK ADD  CONSTRAINT [FK_GLDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GLDTL] CHECK CONSTRAINT [FK_GLDTL_DeptNo]
GO
ALTER TABLE [dbo].[GLDTL]  WITH CHECK ADD  CONSTRAINT [FK_GLDTL_JournalType] FOREIGN KEY([JournalType])
REFERENCES [dbo].[Journal] ([JournalType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GLDTL] CHECK CONSTRAINT [FK_GLDTL_JournalType]
GO
ALTER TABLE [dbo].[GLDTL]  WITH CHECK ADD  CONSTRAINT [FK_GLDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GLDTL] CHECK CONSTRAINT [FK_GLDTL_ProjNo]
GO
ALTER TABLE [dbo].[GLDTL]  WITH CHECK ADD  CONSTRAINT [FK_GLDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[GLDTL] CHECK CONSTRAINT [FK_GLDTL_TaxType]
GO
ALTER TABLE [dbo].[GLMast]  WITH CHECK ADD  CONSTRAINT [FK_GLMAST_AccType] FOREIGN KEY([AccType])
REFERENCES [dbo].[AccType] ([AccType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GLMast] CHECK CONSTRAINT [FK_GLMAST_AccType]
GO
ALTER TABLE [dbo].[GLMast]  WITH CHECK ADD  CONSTRAINT [FK_GLMast_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
GO
ALTER TABLE [dbo].[GLMast] CHECK CONSTRAINT [FK_GLMast_CurrencyCode]
GO
ALTER TABLE [dbo].[GLMast]  WITH CHECK ADD  CONSTRAINT [FK_GLMAST_TariffCode] FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO
ALTER TABLE [dbo].[GLMast] CHECK CONSTRAINT [FK_GLMAST_TariffCode]
GO
ALTER TABLE [dbo].[GLTrxIDTrash]  WITH CHECK ADD  CONSTRAINT [FK_GLTrxIDTrash_UserID] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GLTrxIDTrash] CHECK CONSTRAINT [FK_GLTrxIDTrash_UserID]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_BranchCode]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_CreatedUserID]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_CreditorCode]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_CurrencyCode]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_DisplayTerm]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_Footer1TaxType]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_Footer2TaxType]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_Footer3TaxType]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_LastModifiedUserID]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_PurchaseAgent]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_PurchaseLocation]
GO
ALTER TABLE [dbo].[GR]  WITH CHECK ADD  CONSTRAINT [FK_GR_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GR] CHECK CONSTRAINT [FK_GR_ShipVia]
GO
ALTER TABLE [dbo].[GRDTL]  WITH CHECK ADD  CONSTRAINT [FK_GRDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GRDTL] CHECK CONSTRAINT [FK_GRDTL_DeptNo]
GO
ALTER TABLE [dbo].[GRDTL]  WITH CHECK ADD  CONSTRAINT [FK_GRDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GRDTL] CHECK CONSTRAINT [FK_GRDTL_FontStyle]
GO
ALTER TABLE [dbo].[GRDTL]  WITH CHECK ADD  CONSTRAINT [FK_GRDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GRDTL] CHECK CONSTRAINT [FK_GRDTL_ItemBatch]
GO
ALTER TABLE [dbo].[GRDTL]  WITH CHECK ADD  CONSTRAINT [FK_GRDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GRDTL] CHECK CONSTRAINT [FK_GRDTL_ItemUOM]
GO
ALTER TABLE [dbo].[GRDTL]  WITH CHECK ADD  CONSTRAINT [FK_GRDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[GRDTL] CHECK CONSTRAINT [FK_GRDTL_Location]
GO
ALTER TABLE [dbo].[GRDTL]  WITH CHECK ADD  CONSTRAINT [FK_GRDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GRDTL] CHECK CONSTRAINT [FK_GRDTL_ProjNo]
GO
ALTER TABLE [dbo].[GRDTL]  WITH CHECK ADD  CONSTRAINT [FK_GRDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[GRDTL] CHECK CONSTRAINT [FK_GRDTL_TaxType]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GSTCapitalGoodsDTL] WITH CHECK ADD CONSTRAINT [FK_GSTCapitalGoodsDTL_DocKey] FOREIGN KEY([DocKey])
REFERENCES [dbo].[GSTCapitalGoods] ([DocKey])
GO
ALTER TABLE [dbo].[GSTCapitalGoodsDTL] CHECK CONSTRAINT [FK_GSTCapitalGoodsDTL_DocKey]
GO
ALTER TABLE [dbo].[GSTCapitalGoodsSchedule] WITH CHECK ADD CONSTRAINT [FK_GSTCapitalGoodsSchedule_DocKey] FOREIGN KEY([DocKey])
REFERENCES [dbo].[GSTCapitalGoods] ([DocKey])
GO
ALTER TABLE [dbo].[GSTCapitalGoodsSchedule] CHECK CONSTRAINT [FK_GSTCapitalGoodsSchedule_DocKey]
GO
ALTER TABLE [dbo].[GSTCapitalGoodsScheduleAdj] WITH CHECK ADD CONSTRAINT [FK_GSTCapitalGoodsScheduleAdj_DocKey] FOREIGN KEY([DocKey])
REFERENCES [dbo].[GSTCapitalGoods] ([DocKey])
GO
ALTER TABLE [dbo].[GSTCapitalGoodsScheduleAdj] CHECK CONSTRAINT [FK_GSTCapitalGoodsScheduleAdj_DocKey]
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_BranchCode]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_CreatedUserID]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_CreditorCode]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_CurrencyCode]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_DisplayTerm]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_Footer1TaxType]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_Footer2TaxType]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_Footer3TaxType]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_LastModifiedUserID]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_PurchaseAgent]
GO
ALTER TABLE [dbo].[GT]  WITH CHECK ADD  CONSTRAINT [FK_GT_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[GT] CHECK CONSTRAINT [FK_GT_PurchaseLocation]
GO
ALTER TABLE [dbo].[GTDTL]  WITH CHECK ADD  CONSTRAINT [FK_GTDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GTDTL] CHECK CONSTRAINT [FK_GTDTL_DeptNo]
GO
ALTER TABLE [dbo].[GTDTL]  WITH CHECK ADD  CONSTRAINT [FK_GTDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GTDTL] CHECK CONSTRAINT [FK_GTDTL_FontStyle]
GO
ALTER TABLE [dbo].[GTDTL]  WITH CHECK ADD  CONSTRAINT [FK_GTDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GTDTL] CHECK CONSTRAINT [FK_GTDTL_ItemBatch]
GO
ALTER TABLE [dbo].[GTDTL]  WITH CHECK ADD  CONSTRAINT [FK_GTDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GTDTL] CHECK CONSTRAINT [FK_GTDTL_ItemUOM]
GO
ALTER TABLE [dbo].[GTDTL]  WITH CHECK ADD  CONSTRAINT [FK_GTDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[GTDTL] CHECK CONSTRAINT [FK_GTDTL_Location]
GO
ALTER TABLE [dbo].[GTDTL]  WITH CHECK ADD  CONSTRAINT [FK_GTDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[GTDTL] CHECK CONSTRAINT [FK_GTDTL_ProjNo]
GO
ALTER TABLE [dbo].[GTDTL]  WITH CHECK ADD  CONSTRAINT [FK_GTDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[GTDTL] CHECK CONSTRAINT [FK_GTDTL_TaxType]
GO
ALTER TABLE [dbo].[IPHIST]  WITH CHECK ADD  CONSTRAINT [FK_IPHIST_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[IPHIST] CHECK CONSTRAINT [FK_IPHIST_AccNo]
GO
ALTER TABLE [dbo].[IPHIST]  WITH CHECK ADD  CONSTRAINT [FK_IPHIST_Branch] FOREIGN KEY([AccNo], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO
ALTER TABLE [dbo].[IPHIST] CHECK CONSTRAINT [FK_IPHIST_Branch]
GO
ALTER TABLE [dbo].[IPHIST]  WITH CHECK ADD  CONSTRAINT [FK_IPHIST_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IPHIST] CHECK CONSTRAINT [FK_IPHIST_DeptNo]
GO
ALTER TABLE [dbo].[IPHIST]  WITH CHECK ADD  CONSTRAINT [FK_IPHIST_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
GO
ALTER TABLE [dbo].[IPHIST] CHECK CONSTRAINT [FK_IPHIST_ItemBatch]
GO
ALTER TABLE [dbo].[IPHIST]  WITH CHECK ADD  CONSTRAINT [FK_IPHIST_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[IPHIST] CHECK CONSTRAINT [FK_IPHIST_ItemUOM]
GO
ALTER TABLE [dbo].[IPHIST]  WITH CHECK ADD  CONSTRAINT [FK_IPHIST_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[IPHIST] CHECK CONSTRAINT [FK_IPHIST_Location]
GO
ALTER TABLE [dbo].[IPHIST]  WITH CHECK ADD  CONSTRAINT [FK_IPHIST_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IPHIST] CHECK CONSTRAINT [FK_IPHIST_ProjNo]
GO
ALTER TABLE [dbo].[ISS]  WITH CHECK ADD  CONSTRAINT [FK_ISS_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ISS] CHECK CONSTRAINT [FK_ISS_CreatedUserID]
GO
ALTER TABLE [dbo].[ISS]  WITH CHECK ADD  CONSTRAINT [FK_ISS_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[ISS] CHECK CONSTRAINT [FK_ISS_LastModifiedUserID]
GO
ALTER TABLE [dbo].[ISS]  WITH CHECK ADD  CONSTRAINT [FK_ISS_ReallocatePurchaseByProjectNo] FOREIGN KEY([ReallocatePurchaseByProjectNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ISS] CHECK CONSTRAINT [FK_ISS_ReallocatePurchaseByProjectNo]
GO
ALTER TABLE [dbo].[ISSDTL]  WITH CHECK ADD  CONSTRAINT [FK_ISSDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ISSDTL] CHECK CONSTRAINT [FK_ISSDTL_DeptNo]
GO
ALTER TABLE [dbo].[ISSDTL]  WITH CHECK ADD  CONSTRAINT [FK_ISSDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ISSDTL] CHECK CONSTRAINT [FK_ISSDTL_ItemBatch]
GO
ALTER TABLE [dbo].[ISSDTL]  WITH CHECK ADD  CONSTRAINT [FK_ISSDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ISSDTL] CHECK CONSTRAINT [FK_ISSDTL_ItemUOM]
GO
ALTER TABLE [dbo].[ISSDTL]  WITH CHECK ADD  CONSTRAINT [FK_ISSDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[ISSDTL] CHECK CONSTRAINT [FK_ISSDTL_Location]
GO
ALTER TABLE [dbo].[ISSDTL]  WITH CHECK ADD  CONSTRAINT [FK_ISSDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ISSDTL] CHECK CONSTRAINT [FK_ISSDTL_ProjNo]
GO
ALTER TABLE [dbo].[Item]  WITH NOCHECK ADD  CONSTRAINT [FK_Item_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Item] CHECK CONSTRAINT [FK_Item_CreatedUserID]
GO
ALTER TABLE [dbo].[Item]  WITH CHECK ADD  CONSTRAINT [FK_Item_ItemBrand] FOREIGN KEY([ItemBrand])
REFERENCES [dbo].[ItemBrand] ([ItemBrand])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Item] CHECK CONSTRAINT [FK_Item_ItemBrand]
GO
ALTER TABLE [dbo].[Item]  WITH CHECK ADD  CONSTRAINT [FK_Item_ItemClass] FOREIGN KEY([ItemClass])
REFERENCES [dbo].[ItemClass] ([ItemClass])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Item] CHECK CONSTRAINT [FK_Item_ItemClass]
GO
ALTER TABLE [dbo].[Item]  WITH CHECK ADD  CONSTRAINT [FK_Item_ItemCategory] FOREIGN KEY([ItemCategory])
REFERENCES [dbo].[ItemCategory] ([ItemCategory])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Item] CHECK CONSTRAINT [FK_Item_ItemCategory]
GO
ALTER TABLE [dbo].[Item]  WITH NOCHECK ADD  CONSTRAINT [FK_Item_ItemGroup] FOREIGN KEY([ItemGroup])
REFERENCES [dbo].[ItemGroup] ([ItemGroup])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Item] CHECK CONSTRAINT [FK_Item_ItemGroup]
GO
ALTER TABLE [dbo].[Item]  WITH NOCHECK ADD  CONSTRAINT [FK_Item_ItemType] FOREIGN KEY([ItemType])
REFERENCES [dbo].[ItemType] ([ItemType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Item] CHECK CONSTRAINT [FK_Item_ItemType]
GO
ALTER TABLE [dbo].[Item]  WITH NOCHECK ADD  CONSTRAINT [FK_Item_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Item] CHECK CONSTRAINT [FK_Item_LastModifiedUserID]
GO
ALTER TABLE [dbo].[Item]  WITH CHECK ADD  CONSTRAINT [FK_Item_PurchaseTaxType] FOREIGN KEY([PurchaseTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[Item] CHECK CONSTRAINT [FK_Item_PurchaseTaxType]
GO
ALTER TABLE [dbo].[Item]  WITH CHECK ADD  CONSTRAINT [FK_Item_TaxType] FOREIGN KEY([Taxtype])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[Item] CHECK CONSTRAINT [FK_Item_TaxType]
GO
ALTER TABLE [dbo].[Item]  WITH CHECK ADD  CONSTRAINT [FK_Item_TariffCode] FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO
ALTER TABLE [dbo].[Item] CHECK CONSTRAINT [FK_Item_TariffCode]
GO
ALTER TABLE [dbo].[ItemBatchBalQty]  WITH CHECK ADD  CONSTRAINT [FK_ItemBatchBalQty_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[ItemBatchBalQty] CHECK CONSTRAINT [FK_ItemBatchBalQty_ItemUOM]
GO
ALTER TABLE [dbo].[ItemBatchBalQty]  WITH CHECK ADD  CONSTRAINT [FK_ItemBatchBalQty_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[ItemBatchBalQty] CHECK CONSTRAINT [FK_ItemBatchBalQty_Location]
GO
ALTER TABLE [dbo].[ItemBOM]  WITH CHECK ADD  CONSTRAINT [FK_ItemBOM_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[ItemBOM] CHECK CONSTRAINT [FK_ItemBOM_ItemCode]
GO
ALTER TABLE [dbo].[ItemBOM]  WITH CHECK ADD  CONSTRAINT [FK_ItemBOM_SubItemCode] FOREIGN KEY([SubItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[ItemBOM] CHECK CONSTRAINT [FK_ItemBOM_SubItemCode]
GO
ALTER TABLE [dbo].[ItemCostChangeHistory]  WITH CHECK ADD  CONSTRAINT [FK_ItemCostChangeHistory_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[ItemCostChangeHistory] CHECK CONSTRAINT [FK_ItemCostChangeHistory_ItemCode]
GO
ALTER TABLE [dbo].[ItemCostChangeHistory]  WITH CHECK ADD  CONSTRAINT [FK_ItemCostChangeHistory_ItemCode_UOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[ItemCostChangeHistory] CHECK CONSTRAINT [FK_ItemCostChangeHistory_ItemCode_UOM]
GO
ALTER TABLE [dbo].[ItemCostHistory]  WITH CHECK ADD  CONSTRAINT [FK_ItemCostHistory_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[ItemCostHistory] CHECK CONSTRAINT [FK_ItemCostHistory_ItemUOM]
GO
ALTER TABLE [dbo].[ItemCurrencyPrice]  WITH CHECK ADD  CONSTRAINT [FK_ItemCurrencyPrice_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ItemCurrencyPrice] CHECK CONSTRAINT [FK_ItemCurrencyPrice_CurrencyCode]
GO
ALTER TABLE [dbo].[ItemCurrencyPrice]  WITH CHECK ADD  CONSTRAINT [FK_ItemCurrencyPrice_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ItemCurrencyPrice] CHECK CONSTRAINT [FK_ItemCurrencyPrice_ItemUOM]
GO
ALTER TABLE [dbo].[ItemGroup]  WITH CHECK ADD  CONSTRAINT [FK_ItemGroup_BalanceStockCode] FOREIGN KEY([BalanceStockCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ItemGroup] CHECK CONSTRAINT [FK_ItemGroup_BalanceStockCode]
GO
ALTER TABLE [dbo].[ItemGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemGroup_CashSalesCode] FOREIGN KEY([CashSalesCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ItemGroup] CHECK CONSTRAINT [FK_ItemGroup_CashSalesCode]
GO
ALTER TABLE [dbo].[ItemGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemGroup_PurchaseCode] FOREIGN KEY([PurchaseCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ItemGroup] CHECK CONSTRAINT [FK_ItemGroup_PurchaseCode]
GO
ALTER TABLE [dbo].[ItemGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemGroup_PurchaseDiscountCode] FOREIGN KEY([PurchaseDiscountCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ItemGroup] CHECK CONSTRAINT [FK_ItemGroup_PurchaseDiscountCode]
GO
ALTER TABLE [dbo].[ItemGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemGroup_PurchaseReturnCode] FOREIGN KEY([PurchaseReturnCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ItemGroup] CHECK CONSTRAINT [FK_ItemGroup_PurchaseReturnCode]
GO
ALTER TABLE [dbo].[ItemGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemGroup_SalesCode] FOREIGN KEY([SalesCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ItemGroup] CHECK CONSTRAINT [FK_ItemGroup_SalesCode]
GO
ALTER TABLE [dbo].[ItemGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemGroup_SalesDiscountCode] FOREIGN KEY([SalesDiscountCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ItemGroup] CHECK CONSTRAINT [FK_ItemGroup_SalesDiscountCode]
GO
ALTER TABLE [dbo].[ItemGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemGroup_SalesReturnCode] FOREIGN KEY([SalesReturnCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ItemGroup] CHECK CONSTRAINT [FK_ItemGroup_SalesReturnCode]
GO
ALTER TABLE [dbo].[ItemLocationPrice]  WITH CHECK ADD  CONSTRAINT [FK_ItemLocationPrice_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ItemLocationPrice] CHECK CONSTRAINT [FK_ItemLocationPrice_ItemUOM]
GO
ALTER TABLE [dbo].[ItemLocationPrice]  WITH CHECK ADD  CONSTRAINT [FK_ItemLocationPrice_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ItemLocationPrice] CHECK CONSTRAINT [FK_ItemLocationPrice_Location]
GO
ALTER TABLE [dbo].[ItemOpening]  WITH CHECK ADD  CONSTRAINT [FK_ItemOpening_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ItemOpening] CHECK CONSTRAINT [FK_ItemOpening_DeptNo]
GO
ALTER TABLE [dbo].[ItemOpening]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemOpening_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
GO
ALTER TABLE [dbo].[ItemOpening] CHECK CONSTRAINT [FK_ItemOpening_ItemBatch]
GO
ALTER TABLE [dbo].[ItemOpening]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemOpening_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[ItemOpening] CHECK CONSTRAINT [FK_ItemOpening_ItemUOM]
GO
ALTER TABLE [dbo].[ItemOpening]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemOpening_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[ItemOpening] CHECK CONSTRAINT [FK_ItemOpening_Location]
GO
ALTER TABLE [dbo].[ItemOpening]  WITH CHECK ADD  CONSTRAINT [FK_ItemOpening_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ItemOpening] CHECK CONSTRAINT [FK_ItemOpening_ProjNo]
GO
ALTER TABLE [dbo].[ItemPrice]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemPrice_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[ItemPrice] CHECK CONSTRAINT [FK_ItemPrice_AccNo]
GO
ALTER TABLE [dbo].[ItemPrice]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemPrice_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[ItemPrice] CHECK CONSTRAINT [FK_ItemPrice_ItemUOM]
GO
ALTER TABLE [dbo].[ItemPrice]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemPrice_PriceCategory] FOREIGN KEY([PriceCategory])
REFERENCES [dbo].[PriceCategory] ([PriceCategory])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ItemPrice] CHECK CONSTRAINT [FK_ItemPrice_PriceCategory]
GO
ALTER TABLE [dbo].[ItemPriceChangeHistory]  WITH CHECK ADD  CONSTRAINT [FK_ItemPriceChangeHistory_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[ItemPriceChangeHistory] CHECK CONSTRAINT [FK_ItemPriceChangeHistory_ItemCode]
GO
ALTER TABLE [dbo].[ItemPriceChangeHistory]  WITH CHECK ADD  CONSTRAINT [FK_ItemPriceChangeHistory_ItemCode_UOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[ItemPriceChangeHistory] CHECK CONSTRAINT [FK_ItemPriceChangeHistory_ItemCode_UOM]
GO
ALTER TABLE [dbo].[ItemReplacement]  WITH CHECK ADD  CONSTRAINT [FK_ItemReplacement_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[ItemReplacement] CHECK CONSTRAINT [FK_ItemReplacement_ItemCode]
GO
ALTER TABLE [dbo].[ItemReplacement]  WITH CHECK ADD  CONSTRAINT [FK_ItemReplacement_ReplacementItemCode] FOREIGN KEY([ReplacementItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[ItemReplacement] CHECK CONSTRAINT [FK_ItemReplacement_ReplacementItemCode]
GO
ALTER TABLE [dbo].[ItemSerialNo]  WITH CHECK ADD  CONSTRAINT [FK_ItemSerialNo_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ItemSerialNo] CHECK CONSTRAINT [FK_ItemSerialNo_ItemBatch]
GO
ALTER TABLE [dbo].[ItemSerialNo]  WITH CHECK ADD  CONSTRAINT [FK_ItemSerialNo_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[ItemSerialNo] CHECK CONSTRAINT [FK_ItemSerialNo_ItemCode]
GO
ALTER TABLE [dbo].[ItemSerialNoDtl]  WITH CHECK ADD  CONSTRAINT [FK_ItemSerialNoDtl_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[ItemSerialNoDtl] CHECK CONSTRAINT [FK_ItemSerialNoDtl_ItemCode]
GO
ALTER TABLE [dbo].[ItemSerialNoDtl]  WITH CHECK ADD  CONSTRAINT [FK_ItemSerialNoDtl_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[ItemSerialNoDtl] CHECK CONSTRAINT [FK_ItemSerialNoDtl_Location]
GO
ALTER TABLE [dbo].[ItemSubCode]  WITH CHECK ADD  CONSTRAINT [FK_ItemSubCode_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[ItemSubCode] CHECK CONSTRAINT [FK_ItemSubCode_ItemCode]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_BranchCode]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_CreatedUserID]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_CurrencyCode]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_DebtorCode]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_DisplayTerm]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_Footer1TaxType]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_Footer2TaxType]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_Footer3TaxType]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_LastModifiedUserID]
GO
ALTER TABLE [dbo].[IV]  WITH NOCHECK ADD  CONSTRAINT [FK_IV_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_MemberNo]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_ReallocatePurchaseByProjectNo] FOREIGN KEY([ReallocatePurchaseByProjectNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_ReallocatePurchaseByProjectNo]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_SalesAgent]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_SalesLocation]
GO
ALTER TABLE [dbo].[IV]  WITH CHECK ADD  CONSTRAINT [FK_IV_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IV] CHECK CONSTRAINT [FK_IV_ShipVia]
GO
ALTER TABLE [dbo].[IVDTL]  WITH CHECK ADD  CONSTRAINT [FK_IVDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[IVDTL] CHECK CONSTRAINT [FK_IVDTL_AccNo]
GO
ALTER TABLE [dbo].[IVDTL]  WITH CHECK ADD  CONSTRAINT [FK_IVDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IVDTL] CHECK CONSTRAINT [FK_IVDTL_DeptNo]
GO
ALTER TABLE [dbo].[IVDTL]  WITH CHECK ADD  CONSTRAINT [FK_IVDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IVDTL] CHECK CONSTRAINT [FK_IVDTL_FontStyle]
GO
ALTER TABLE [dbo].[IVDTL]  WITH CHECK ADD  CONSTRAINT [FK_IVDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IVDTL] CHECK CONSTRAINT [FK_IVDTL_ItemBatch]
GO
ALTER TABLE [dbo].[IVDTL]  WITH CHECK ADD  CONSTRAINT [FK_IVDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IVDTL] CHECK CONSTRAINT [FK_IVDTL_ItemUOM]
GO
ALTER TABLE [dbo].[IVDTL]  WITH CHECK ADD  CONSTRAINT [FK_IVDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[IVDTL] CHECK CONSTRAINT [FK_IVDTL_Location]
GO
ALTER TABLE [dbo].[IVDTL]  WITH CHECK ADD  CONSTRAINT [FK_IVDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[IVDTL] CHECK CONSTRAINT [FK_IVDTL_ProjNo]
GO
ALTER TABLE [dbo].[IVDTL]  WITH CHECK ADD  CONSTRAINT [FK_IVDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[IVDTL] CHECK CONSTRAINT [FK_IVDTL_TaxType]
GO
ALTER TABLE [dbo].[JE]  WITH CHECK ADD  CONSTRAINT [FK_JE_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[JE] CHECK CONSTRAINT [FK_JE_CreatedUserID]
GO
ALTER TABLE [dbo].[JE]  WITH CHECK ADD  CONSTRAINT [FK_JE_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[JE] CHECK CONSTRAINT [FK_JE_CurrencyCode]
GO
ALTER TABLE [dbo].[JE]  WITH CHECK ADD  CONSTRAINT [FK_JE_JournalType] FOREIGN KEY([JournalType])
REFERENCES [dbo].[Journal] ([JournalType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[JE] CHECK CONSTRAINT [FK_JE_JournalType]
GO
ALTER TABLE [dbo].[JE]  WITH CHECK ADD  CONSTRAINT [FK_JE_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[JE] CHECK CONSTRAINT [FK_JE_LastModifiedUserID]
GO
ALTER TABLE [dbo].[JEDTL]  WITH CHECK ADD  CONSTRAINT [FK_JEDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[JEDTL] CHECK CONSTRAINT [FK_JEDTL_AccNo]
GO
ALTER TABLE [dbo].[JEDTL]  WITH CHECK ADD  CONSTRAINT [FK_JEDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[JEDTL] CHECK CONSTRAINT [FK_JEDTL_DeptNo]
GO
ALTER TABLE [dbo].[JEDTL]  WITH CHECK ADD  CONSTRAINT [FK_JEDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[JEDTL] CHECK CONSTRAINT [FK_JEDTL_ProjNo]
GO
ALTER TABLE [dbo].[JEDTL]  WITH CHECK ADD  CONSTRAINT [FK_JEDTL_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[JEDTL] CHECK CONSTRAINT [FK_JEDTL_SalesAgent]
GO
ALTER TABLE [dbo].[JEDTL]  WITH CHECK ADD  CONSTRAINT [FK_JEDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[JEDTL] CHECK CONSTRAINT [FK_JEDTL_TaxType]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_AlipayPaymentMethod] FOREIGN KEY([AlipayPaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_AlipayPaymentMethod]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_AreaCode] FOREIGN KEY([AreaCode])
REFERENCES [dbo].[Area] ([AreaCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_AreaCode]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_CashPaymentMethod] FOREIGN KEY([CashPaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_CashPaymentMethod]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_ChequePaymentMethod] FOREIGN KEY([ChequePaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_ChequePaymentMethod]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_CreditCardChargesAccNo] FOREIGN KEY([CreditCardChargesAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_CreditCardChargesAccNo]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_DebitCardPaymentMethod] FOREIGN KEY([DebitCardPaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_DebitCardPaymentMethod]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_DepositAccNo] FOREIGN KEY([DepositAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_DepositAccNo]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_ForfeitedAccNo] FOREIGN KEY([ForfeitedAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_ForfeitedAccNo]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_PointPaymentAccNo] FOREIGN KEY([PointPaymentAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_PointPaymentAccNo]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_PointPaymentMethod] FOREIGN KEY([PointPaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_PointPaymentMethod]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_RoundingAccNo] FOREIGN KEY([RoundingAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_RoundingAccNo]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_ServiceChargeAccNo] FOREIGN KEY([ServiceChargeAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_ServiceChargeAccNo]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_VoucherForfeitedAccNo] FOREIGN KEY([VoucherForfeitedAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_VoucherForfeitedAccNo]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FK_Location_VoucherPaymentMethod] FOREIGN KEY([VoucherPaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_VoucherPaymentMethod]
GO
ALTER TABLE [dbo].[Member]  WITH CHECK ADD  CONSTRAINT [FK_Member_AccNo] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[Member] CHECK CONSTRAINT [FK_Member_AccNo]
GO
ALTER TABLE [dbo].[Member]  WITH CHECK ADD  CONSTRAINT [FK_Member_AreaCode] FOREIGN KEY([AreaCode])
REFERENCES [dbo].[Area] ([AreaCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Member] CHECK CONSTRAINT [FK_Member_AreaCode]
GO
ALTER TABLE [dbo].[Member]  WITH CHECK ADD  CONSTRAINT [FK_Member_MemberType] FOREIGN KEY([MemberType])
REFERENCES [dbo].[MemberType] ([MemberType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Member] CHECK CONSTRAINT [FK_Member_MemberType]
GO
ALTER TABLE [dbo].[Member]  WITH CHECK ADD  CONSTRAINT [FK_Member_Race] FOREIGN KEY([Race])
REFERENCES [dbo].[Race] ([Race])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Member] CHECK CONSTRAINT [FK_Member_Race]
GO
ALTER TABLE [dbo].[OBalance]  WITH NOCHECK ADD  CONSTRAINT [FK_OBalance_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[OBalance] CHECK CONSTRAINT [FK_OBalance_AccNo]
GO
ALTER TABLE [dbo].[OBalance]  WITH NOCHECK ADD  CONSTRAINT [FK_OBalance_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[OBalance] CHECK CONSTRAINT [FK_OBalance_DeptNo]
GO
ALTER TABLE [dbo].[OBalance]  WITH NOCHECK ADD  CONSTRAINT [FK_OBalance_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[OBalance] CHECK CONSTRAINT [FK_OBalance_ProjNo]
GO
ALTER TABLE [dbo].[OBDTL]  WITH CHECK ADD  CONSTRAINT [FK_OBDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[OBDTL] CHECK CONSTRAINT [FK_OBDTL_AccNo]
GO
ALTER TABLE [dbo].[OBDTL]  WITH CHECK ADD  CONSTRAINT [FK_OBDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[OBDTL] CHECK CONSTRAINT [FK_OBDTL_DeptNo]
GO
ALTER TABLE [dbo].[OBDTL]  WITH CHECK ADD  CONSTRAINT [FK_OBDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[OBDTL] CHECK CONSTRAINT [FK_OBDTL_ProjNo]
GO
ALTER TABLE [dbo].[PackageDTL]  WITH CHECK ADD  CONSTRAINT [FK_PackageDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PackageDTL] CHECK CONSTRAINT [FK_PackageDTL_ItemUOM]
GO
ALTER TABLE [dbo].[PackageDTL]  WITH CHECK ADD  CONSTRAINT [FK_PackageDTL_Package] FOREIGN KEY([DocKey])
REFERENCES [dbo].[Package] ([DocKey])
GO
ALTER TABLE [dbo].[PackageDTL] CHECK CONSTRAINT [FK_PackageDTL_Package]
GO
ALTER TABLE [dbo].[PaymentMethod]  WITH CHECK ADD  CONSTRAINT [FK_PaymentMethod_BankAccount] FOREIGN KEY([BankAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PaymentMethod] CHECK CONSTRAINT [FK_PaymentMethod_BankAccount]
GO
ALTER TABLE [dbo].[PaymentMethod]  WITH CHECK ADD  CONSTRAINT [FK_PaymentMethod_BankChargeAccount] FOREIGN KEY([BankChargeAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[PaymentMethod] CHECK CONSTRAINT [FK_PaymentMethod_BankChargeAccount]
GO
ALTER TABLE [dbo].[PaymentMethod]  WITH CHECK ADD  CONSTRAINT [FK_PaymentMethod_BankChargeTaxType] FOREIGN KEY([BankChargeTaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PaymentMethod] CHECK CONSTRAINT [FK_PaymentMethod_BankChargeTaxType]
GO
ALTER TABLE [dbo].[PaymentMethod]  WITH CHECK ADD  CONSTRAINT [FK_PaymentMethod_JournalType] FOREIGN KEY([JournalType])
REFERENCES [dbo].[Journal] ([JournalType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PaymentMethod] CHECK CONSTRAINT [FK_PaymentMethod_JournalType]
GO
ALTER TABLE [dbo].[PaymentMethod]  WITH CHECK ADD  CONSTRAINT [FK_PaymentMethod_PaymentFormatName] FOREIGN KEY([PaymentFormatName])
REFERENCES [dbo].[DocNoFormat] ([Name])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PaymentMethod] CHECK CONSTRAINT [FK_PaymentMethod_PaymentFormatName]
GO
ALTER TABLE [dbo].[PaymentMethod]  WITH CHECK ADD  CONSTRAINT [FK_PaymentMethod_ReceiptFormatName] FOREIGN KEY([ReceiptFormatName])
REFERENCES [dbo].[DocNoFormat] ([Name])
GO
ALTER TABLE [dbo].[PaymentMethod] CHECK CONSTRAINT [FK_PaymentMethod_ReceiptFormatName]
GO
ALTER TABLE [dbo].[PBalance]  WITH NOCHECK ADD  CONSTRAINT [FK_PBalance_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[PBalance] CHECK CONSTRAINT [FK_PBalance_AccNo]
GO
ALTER TABLE [dbo].[PBalance]  WITH NOCHECK ADD  CONSTRAINT [FK_PBalance_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[PBalance] CHECK CONSTRAINT [FK_PBalance_DeptNo]
GO
ALTER TABLE [dbo].[PBalance]  WITH NOCHECK ADD  CONSTRAINT [FK_PBalance_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[PBalance] CHECK CONSTRAINT [FK_PBalance_ProjNo]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_BranchCode]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_CreatedUserID]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_CreditorCode]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_CurrencyCode]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_DisplayTerm]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_Footer1TaxType]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_Footer2TaxType]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_Footer3TaxType]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_LastModifiedUserID]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_PurchaseAgent]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_PurchaseLocation]
GO
ALTER TABLE [dbo].[PI]  WITH CHECK ADD  CONSTRAINT [FK_PI_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PI] CHECK CONSTRAINT [FK_PI_ShipVia]
GO
ALTER TABLE [dbo].[PIDTL]  WITH CHECK ADD  CONSTRAINT [FK_PIDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[PIDTL] CHECK CONSTRAINT [FK_PIDTL_AccNo]
GO
ALTER TABLE [dbo].[PIDTL]  WITH CHECK ADD  CONSTRAINT [FK_PIDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PIDTL] CHECK CONSTRAINT [FK_PIDTL_DeptNo]
GO
ALTER TABLE [dbo].[PIDTL]  WITH CHECK ADD  CONSTRAINT [FK_PIDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PIDTL] CHECK CONSTRAINT [FK_PIDTL_FontStyle]
GO
ALTER TABLE [dbo].[PIDTL]  WITH CHECK ADD  CONSTRAINT [FK_PIDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PIDTL] CHECK CONSTRAINT [FK_PIDTL_ItemBatch]
GO
ALTER TABLE [dbo].[PIDTL]  WITH CHECK ADD  CONSTRAINT [FK_PIDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PIDTL] CHECK CONSTRAINT [FK_PIDTL_ItemUOM]
GO
ALTER TABLE [dbo].[PIDTL]  WITH CHECK ADD  CONSTRAINT [FK_PIDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PIDTL] CHECK CONSTRAINT [FK_PIDTL_Location]
GO
ALTER TABLE [dbo].[PIDTL]  WITH CHECK ADD  CONSTRAINT [FK_PIDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PIDTL] CHECK CONSTRAINT [FK_PIDTL_ProjNo]
GO
ALTER TABLE [dbo].[PIDTL]  WITH CHECK ADD  CONSTRAINT [FK_PIDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PIDTL] CHECK CONSTRAINT [FK_PIDTL_TaxType]
GO
ALTER TABLE [dbo].[PLFormat]  WITH NOCHECK ADD  CONSTRAINT [FK_PLFormat_AccType] FOREIGN KEY([AccType])
REFERENCES [dbo].[AccType] ([AccType])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PLFormat] CHECK CONSTRAINT [FK_PLFormat_AccType]
GO
ALTER TABLE [dbo].[PlugInFiles]  WITH CHECK ADD  CONSTRAINT [FK_PlugInFiles_Guid] FOREIGN KEY([Guid])
REFERENCES [dbo].[PlugIn] ([Guid])
GO
ALTER TABLE [dbo].[PlugInFiles] CHECK CONSTRAINT [FK_PlugInFiles_Guid]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_BranchCode]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_CreatedUserID]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_CreditorCode]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_CurrencyCode]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_DisplayTerm]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_Footer1TaxType]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_Footer2TaxType]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_Footer3TaxType]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_LastModifiedUserID]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_PurchaseAgent]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_PurchaseLocation]
GO
ALTER TABLE [dbo].[PO]  WITH CHECK ADD  CONSTRAINT [FK_PO_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PO] CHECK CONSTRAINT [FK_PO_ShipVia]
GO
ALTER TABLE [dbo].[PocketSyncProfile]  WITH CHECK ADD  CONSTRAINT [FK_PocketSyncProfile_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PocketSyncProfile] CHECK CONSTRAINT [FK_PocketSyncProfile_LastModifiedUserID]
GO
ALTER TABLE [dbo].[PODTL]  WITH CHECK ADD  CONSTRAINT [FK_PODTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PODTL] CHECK CONSTRAINT [FK_PODTL_DeptNo]
GO
ALTER TABLE [dbo].[PODTL]  WITH CHECK ADD  CONSTRAINT [FK_PODTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PODTL] CHECK CONSTRAINT [FK_PODTL_FontStyle]
GO
ALTER TABLE [dbo].[PODTL]  WITH CHECK ADD  CONSTRAINT [FK_PODTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PODTL] CHECK CONSTRAINT [FK_PODTL_ItemUOM]
GO
ALTER TABLE [dbo].[PODTL]  WITH CHECK ADD  CONSTRAINT [FK_PODTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PODTL] CHECK CONSTRAINT [FK_PODTL_Location]
GO
ALTER TABLE [dbo].[PODTL]  WITH CHECK ADD  CONSTRAINT [FK_PODTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PODTL] CHECK CONSTRAINT [FK_PODTL_ProjNo]
GO
ALTER TABLE [dbo].[PODTL]  WITH CHECK ADD  CONSTRAINT [FK_PODTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PODTL] CHECK CONSTRAINT [FK_PODTL_TaxType]
GO
ALTER TABLE [dbo].[PointTrans]  WITH CHECK ADD  CONSTRAINT [FK_PointTrans_MemberNo] FOREIGN KEY([MemberNo])
REFERENCES [dbo].[Member] ([MemberNo])
GO
ALTER TABLE [dbo].[PointTrans] CHECK CONSTRAINT [FK_PointTrans_MemberNo]
GO

ALTER TABLE [dbo].[PostingAccountGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_PostingAccountGroup_CashSalesCode] FOREIGN KEY([CashSalesCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[PostingAccountGroup] CHECK CONSTRAINT [FK_PostingAccountGroup_CashSalesCode]
GO
ALTER TABLE [dbo].[PostingAccountGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_PostingAccountGroup_PurchaseCode] FOREIGN KEY([PurchaseCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[PostingAccountGroup] CHECK CONSTRAINT [FK_PostingAccountGroup_PurchaseCode]
GO
ALTER TABLE [dbo].[PostingAccountGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_PostingAccountGroup_PurchaseDiscountCode] FOREIGN KEY([PurchaseDiscountCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[PostingAccountGroup] CHECK CONSTRAINT [FK_PostingAccountGroup_PurchaseDiscountCode]
GO
ALTER TABLE [dbo].[PostingAccountGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_PostingAccountGroup_PurchaseReturnCode] FOREIGN KEY([PurchaseReturnCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[PostingAccountGroup] CHECK CONSTRAINT [FK_PostingAccountGroup_PurchaseReturnCode]
GO
ALTER TABLE [dbo].[PostingAccountGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_PostingAccountGroup_SalesCode] FOREIGN KEY([SalesCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[PostingAccountGroup] CHECK CONSTRAINT [FK_PostingAccountGroup_SalesCode]
GO
ALTER TABLE [dbo].[PostingAccountGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_PostingAccountGroup_SalesDiscountCode] FOREIGN KEY([SalesDiscountCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[PostingAccountGroup] CHECK CONSTRAINT [FK_PostingAccountGroup_SalesDiscountCode]
GO
ALTER TABLE [dbo].[PostingAccountGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_PostingAccountGroup_SalesReturnCode] FOREIGN KEY([SalesReturnCode])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[PostingAccountGroup] CHECK CONSTRAINT [FK_PostingAccountGroup_SalesReturnCode]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_BranchCode]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_CreatedUserID]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_CreditorCode]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_CurrencyCode]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_DisplayTerm]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_Footer1TaxType]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_Footer2TaxType]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_Footer3TaxType]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_LastModifiedUserID]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_PurchaseAgent]
GO
ALTER TABLE [dbo].[PR]  WITH CHECK ADD  CONSTRAINT [FK_PR_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PR] CHECK CONSTRAINT [FK_PR_PurchaseLocation]
GO
ALTER TABLE [dbo].[PRDTL]  WITH CHECK ADD  CONSTRAINT [FK_PRDTL_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[PRDTL] CHECK CONSTRAINT [FK_PRDTL_AccNo]
GO
ALTER TABLE [dbo].[PRDTL]  WITH CHECK ADD  CONSTRAINT [FK_PRDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PRDTL] CHECK CONSTRAINT [FK_PRDTL_DeptNo]
GO
ALTER TABLE [dbo].[PRDTL]  WITH CHECK ADD  CONSTRAINT [FK_PRDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PRDTL] CHECK CONSTRAINT [FK_PRDTL_FontStyle]
GO
ALTER TABLE [dbo].[PRDTL]  WITH CHECK ADD  CONSTRAINT [FK_PRDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PRDTL] CHECK CONSTRAINT [FK_PRDTL_ItemBatch]
GO
ALTER TABLE [dbo].[PRDTL]  WITH CHECK ADD  CONSTRAINT [FK_PRDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PRDTL] CHECK CONSTRAINT [FK_PRDTL_ItemUOM]
GO
ALTER TABLE [dbo].[PRDTL]  WITH CHECK ADD  CONSTRAINT [FK_PRDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PRDTL] CHECK CONSTRAINT [FK_PRDTL_Location]
GO
ALTER TABLE [dbo].[PRDTL]  WITH CHECK ADD  CONSTRAINT [FK_PRDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PRDTL] CHECK CONSTRAINT [FK_PRDTL_ProjNo]
GO
ALTER TABLE [dbo].[PRDTL]  WITH CHECK ADD  CONSTRAINT [FK_PRDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PRDTL] CHECK CONSTRAINT [FK_PRDTL_TaxType]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_CurrencyCode]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_DisplayTerm]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromAreaCode] FOREIGN KEY([FromAreaCode])
REFERENCES [dbo].[Area] ([AreaCode])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromAreaCode]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromDebtorCode] FOREIGN KEY([FromDebtorCode])
REFERENCES [dbo].[Debtor] ([AccNo])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromDebtorCode]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromDebtorType] FOREIGN KEY([FromDebtorType])
REFERENCES [dbo].[DebtorType] ([DebtorType])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromDebtorType]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromDeptNo] FOREIGN KEY([FromDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromDeptNo]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromItemCode] FOREIGN KEY([FromItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromItemCode]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromItemGroup] FOREIGN KEY([FromItemGroup])
REFERENCES [dbo].[ItemGroup] ([ItemGroup])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromItemGroup]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromItemType] FOREIGN KEY([FromItemType])
REFERENCES [dbo].[ItemType] ([ItemType])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromItemType]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromItemBrand] FOREIGN KEY([FromItemBrand])
REFERENCES [dbo].[ItemBrand] ([ItemBrand])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromItemBrand]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromItemClass] FOREIGN KEY([FromItemClass])
REFERENCES [dbo].[ItemClass] ([ItemClass])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromItemClass]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromItemCategory] FOREIGN KEY([FromItemCategory])
REFERENCES [dbo].[ItemCategory] ([ItemCategory])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromItemCategory]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromLocation] FOREIGN KEY([FromLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromLocation]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromPriceCategory] FOREIGN KEY([FromPriceCategory])
REFERENCES [dbo].[PriceCategory] ([PriceCategory])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromPriceCategory]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromProjNo] FOREIGN KEY([FromProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromProjNo]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromSalesAgent] FOREIGN KEY([FromSalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_FromSalesAgent]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_MatrixKey] FOREIGN KEY([MatrixKey])
REFERENCES [dbo].[PriceBookMatrix] ([MatrixKey])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_MatrixKey]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToAreaCode] FOREIGN KEY([ToAreaCode])
REFERENCES [dbo].[Area] ([AreaCode])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToAreaCode]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToDebtorCode] FOREIGN KEY([ToDebtorCode])
REFERENCES [dbo].[Debtor] ([AccNo])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToDebtorCode]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToDebtorType] FOREIGN KEY([ToDebtorType])
REFERENCES [dbo].[DebtorType] ([DebtorType])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToDebtorType]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToDeptNo] FOREIGN KEY([ToDeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToDeptNo]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToItemCode] FOREIGN KEY([ToItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToItemCode]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToItemGroup] FOREIGN KEY([ToItemGroup])
REFERENCES [dbo].[ItemGroup] ([ItemGroup])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToItemGroup]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToItemType] FOREIGN KEY([ToItemType])
REFERENCES [dbo].[ItemType] ([ItemType])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToItemType]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToItemBrand] FOREIGN KEY([ToItemBrand])
REFERENCES [dbo].[ItemBrand] ([ItemBrand])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToItemBrand]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToItemClass] FOREIGN KEY([ToItemClass])
REFERENCES [dbo].[ItemClass] ([ItemClass])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToItemClass]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToItemCategory] FOREIGN KEY([ToItemCategory])
REFERENCES [dbo].[ItemCategory] ([ItemCategory])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToItemCategory]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToLocation] FOREIGN KEY([ToLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToLocation]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToPriceCategory] FOREIGN KEY([ToPriceCategory])
REFERENCES [dbo].[PriceCategory] ([PriceCategory])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToPriceCategory]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToProjNo] FOREIGN KEY([ToProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToProjNo]
GO
ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToSalesAgent] FOREIGN KEY([ToSalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
GO
ALTER TABLE [dbo].[PriceBookRule] CHECK CONSTRAINT [FK_PriceBookRule_ToSalesAgent]
GO
ALTER TABLE [dbo].[Project]  WITH CHECK ADD  CONSTRAINT [FK_Project_ParentProjNo] FOREIGN KEY([ParentProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[Project] CHECK CONSTRAINT [FK_Project_ParentProjNo]
GO
ALTER TABLE [dbo].[PRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessing_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PRProcessing] CHECK CONSTRAINT [FK_PRProcessing_CreatedUserID]
GO
ALTER TABLE [dbo].[PRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessing_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PRProcessing] CHECK CONSTRAINT [FK_PRProcessing_CreditorCode]
GO
ALTER TABLE [dbo].[PRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessing_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PRProcessing] CHECK CONSTRAINT [FK_PRProcessing_DeptNo]
GO
ALTER TABLE [dbo].[PRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessing_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PRProcessing] CHECK CONSTRAINT [FK_PRProcessing_LastModifiedUserID]
GO
ALTER TABLE [dbo].[PRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessing_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PRProcessing] CHECK CONSTRAINT [FK_PRProcessing_Location]
GO
ALTER TABLE [dbo].[PRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessing_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PRProcessing] CHECK CONSTRAINT [FK_PRProcessing_ProjNo]
GO
ALTER TABLE [dbo].[PRProcessing]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessing_RequestUOM] FOREIGN KEY([ItemCode], [RequestUOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[PRProcessing] CHECK CONSTRAINT [FK_PRProcessing_RequestUOM]
GO
ALTER TABLE [dbo].[PRProcessingPO]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessingPO_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PRProcessingPO] CHECK CONSTRAINT [FK_PRProcessingPO_CreatedUserID]
GO
ALTER TABLE [dbo].[PRProcessingPO]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessingPO_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PRProcessingPO] CHECK CONSTRAINT [FK_PRProcessingPO_CreditorCode]
GO
ALTER TABLE [dbo].[PRProcessingPO]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessingPO_ItemUOM] FOREIGN KEY([ItemCode], [OrderUOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[PRProcessingPO] CHECK CONSTRAINT [FK_PRProcessingPO_ItemUOM]
GO
ALTER TABLE [dbo].[PRProcessingPO]  WITH CHECK ADD  CONSTRAINT [FK_PRProcessingPO_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PRProcessingPO] CHECK CONSTRAINT [FK_PRProcessingPO_LastModifiedUserID]
GO
ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignment] CHECK CONSTRAINT [FK_PurchaseConsignment_BranchCode]
GO
ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PurchaseConsignment] CHECK CONSTRAINT [FK_PurchaseConsignment_CreatedUserID]
GO
ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignment] CHECK CONSTRAINT [FK_PurchaseConsignment_CreditorCode]
GO
ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignment] CHECK CONSTRAINT [FK_PurchaseConsignment_CurrencyCode]
GO
ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignment] CHECK CONSTRAINT [FK_PurchaseConsignment_DisplayTerm]
GO
ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PurchaseConsignment] CHECK CONSTRAINT [FK_PurchaseConsignment_LastModifiedUserID]
GO
ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignment] CHECK CONSTRAINT [FK_PurchaseConsignment_PurchaseAgent]
GO
ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PurchaseConsignment] CHECK CONSTRAINT [FK_PurchaseConsignment_PurchaseLocation]
GO
ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignment] CHECK CONSTRAINT [FK_PurchaseConsignment_ShipVia]
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentDTL_DeptNo]
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentDTL_FontStyle]
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentDTL_ItemBatch]
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentDTL_ItemUOM]
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentDTL_Location]
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentDTL_ProjNo]
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PurchaseConsignmentDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentDTL_TaxType]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] CHECK CONSTRAINT [FK_PurchaseConsignmentReturn_BranchCode]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] CHECK CONSTRAINT [FK_PurchaseConsignmentReturn_CreatedUserID]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] CHECK CONSTRAINT [FK_PurchaseConsignmentReturn_CreditorCode]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] CHECK CONSTRAINT [FK_PurchaseConsignmentReturn_CurrencyCode]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] CHECK CONSTRAINT [FK_PurchaseConsignmentReturn_DisplayTerm]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] CHECK CONSTRAINT [FK_PurchaseConsignmentReturn_LastModifiedUserID]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] CHECK CONSTRAINT [FK_PurchaseConsignmentReturn_PurchaseAgent]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] CHECK CONSTRAINT [FK_PurchaseConsignmentReturn_PurchaseLocation]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturn] CHECK CONSTRAINT [FK_PurchaseConsignmentReturn_ShipVia]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentReturnDTL_DeptNo]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentReturnDTL_FontStyle]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentReturnDTL_ItemBatch]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentReturnDTL_ItemUOM]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentReturnDTL_Location]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentReturnDTL_ProjNo]
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL] CHECK CONSTRAINT [FK_PurchaseConsignmentReturnDTL_TaxType]
GO
ALTER TABLE [dbo].[PQ]  WITH CHECK ADD  CONSTRAINT [FK_PQ_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PQ] CHECK CONSTRAINT [FK_PQ_LastModifiedUserID]
GO
ALTER TABLE [dbo].[PQ]  WITH CHECK ADD  CONSTRAINT [FK_PQ_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PQ] CHECK CONSTRAINT [FK_PQ_CreatedUserID]
GO
ALTER TABLE [dbo].[PQ]  WITH CHECK ADD  CONSTRAINT [FK_PQ_ApprovalUserID] FOREIGN KEY([ApprovalUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[PQ] CHECK CONSTRAINT [FK_PQ_ApprovalUserID]
GO
ALTER TABLE [dbo].[PQ]  WITH CHECK ADD  CONSTRAINT [FK_PQ_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PQ] CHECK CONSTRAINT [FK_PQ_PurchaseLocation]
GO
ALTER TABLE [dbo].[PQDTL]  WITH CHECK ADD  CONSTRAINT [FK_PQDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PQDTL] CHECK CONSTRAINT [FK_PQDTL_ItemUOM]
GO
ALTER TABLE [dbo].[PQDTL]  WITH CHECK ADD  CONSTRAINT [FK_PQDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[PQDTL] CHECK CONSTRAINT [FK_PQDTL_Location]
GO
ALTER TABLE [dbo].[PQDTL]  WITH CHECK ADD  CONSTRAINT [FK_PQDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PQDTL] CHECK CONSTRAINT [FK_PQDTL_ProjNo]
GO
ALTER TABLE [dbo].[PQDTL]  WITH CHECK ADD  CONSTRAINT [FK_PQDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PQDTL] CHECK CONSTRAINT [FK_PQDTL_DeptNo]
GO
ALTER TABLE [dbo].[PQDTL]  WITH CHECK ADD  CONSTRAINT [FK_PQDTL_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[PQDTL] CHECK CONSTRAINT [FK_PQDTL_CreditorCode]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_ApprovalUserID] FOREIGN KEY([ApprovalUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_ApprovalUserID]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_BranchCode]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_CreatedUserID]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_CurrencyCode]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_DebtorCode]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_DisplayTerm]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_Footer1TaxType]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_Footer2TaxType]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_Footer3TaxType]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_LastModifiedUserID]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_SalesAgent]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_SalesLocation]
GO
ALTER TABLE [dbo].[QT]  WITH CHECK ADD  CONSTRAINT [FK_QT_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[QT] CHECK CONSTRAINT [FK_QT_ShipVia]
GO
ALTER TABLE [dbo].[QTDTL]  WITH CHECK ADD  CONSTRAINT [FK_QTDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[QTDTL] CHECK CONSTRAINT [FK_QTDTL_DeptNo]
GO
ALTER TABLE [dbo].[QTDTL]  WITH CHECK ADD  CONSTRAINT [FK_QTDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[QTDTL] CHECK CONSTRAINT [FK_QTDTL_FontStyle]
GO
ALTER TABLE [dbo].[QTDTL]  WITH CHECK ADD  CONSTRAINT [FK_QTDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[QTDTL] CHECK CONSTRAINT [FK_QTDTL_ItemUOM]
GO
ALTER TABLE [dbo].[QTDTL]  WITH CHECK ADD  CONSTRAINT [FK_QTDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[QTDTL] CHECK CONSTRAINT [FK_QTDTL_Location]
GO
ALTER TABLE [dbo].[QTDTL]  WITH CHECK ADD  CONSTRAINT [FK_QTDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[QTDTL] CHECK CONSTRAINT [FK_QTDTL_ProjNo]
GO
ALTER TABLE [dbo].[QTDTL]  WITH CHECK ADD  CONSTRAINT [FK_QTDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[QTDTL] CHECK CONSTRAINT [FK_QTDTL_TaxType]
GO
ALTER TABLE [dbo].[RCV]  WITH CHECK ADD  CONSTRAINT [FK_RCV_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[RCV] CHECK CONSTRAINT [FK_RCV_CreatedUserID]
GO
ALTER TABLE [dbo].[RCV]  WITH CHECK ADD  CONSTRAINT [FK_RCV_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[RCV] CHECK CONSTRAINT [FK_RCV_LastModifiedUserID]
GO
ALTER TABLE [dbo].[RCVDTL]  WITH CHECK ADD  CONSTRAINT [FK_RCVDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RCVDTL] CHECK CONSTRAINT [FK_RCVDTL_DeptNo]
GO
ALTER TABLE [dbo].[RCVDTL]  WITH CHECK ADD  CONSTRAINT [FK_RCVDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RCVDTL] CHECK CONSTRAINT [FK_RCVDTL_ItemBatch]
GO
ALTER TABLE [dbo].[RCVDTL]  WITH CHECK ADD  CONSTRAINT [FK_RCVDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RCVDTL] CHECK CONSTRAINT [FK_RCVDTL_ItemUOM]
GO
ALTER TABLE [dbo].[RCVDTL]  WITH CHECK ADD  CONSTRAINT [FK_RCVDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[RCVDTL] CHECK CONSTRAINT [FK_RCVDTL_Location]
GO
ALTER TABLE [dbo].[RCVDTL]  WITH CHECK ADD  CONSTRAINT [FK_RCVDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RCVDTL] CHECK CONSTRAINT [FK_RCVDTL_ProjNo]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_BranchCode]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_CreatedUserID]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_CreditorCode]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_CurrencyCode]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_DisplayTerm]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_Footer1TaxType]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_Footer2TaxType]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_Footer3TaxType]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_LastModifiedUserID]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_PurchaseAgent]
GO
ALTER TABLE [dbo].[RQ]  WITH CHECK ADD  CONSTRAINT [FK_RQ_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[RQ] CHECK CONSTRAINT [FK_RQ_PurchaseLocation]
GO
ALTER TABLE [dbo].[RQDTL]  WITH CHECK ADD  CONSTRAINT [FK_RQDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RQDTL] CHECK CONSTRAINT [FK_RQDTL_DeptNo]
GO
ALTER TABLE [dbo].[RQDTL]  WITH CHECK ADD  CONSTRAINT [FK_RQDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RQDTL] CHECK CONSTRAINT [FK_RQDTL_FontStyle]
GO
ALTER TABLE [dbo].[RQDTL]  WITH CHECK ADD  CONSTRAINT [FK_RQDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RQDTL] CHECK CONSTRAINT [FK_RQDTL_ItemUOM]
GO
ALTER TABLE [dbo].[RQDTL]  WITH CHECK ADD  CONSTRAINT [FK_RQDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[RQDTL] CHECK CONSTRAINT [FK_RQDTL_Location]
GO
ALTER TABLE [dbo].[RQDTL]  WITH CHECK ADD  CONSTRAINT [FK_RQDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RQDTL] CHECK CONSTRAINT [FK_RQDTL_ProjNo]
GO
ALTER TABLE [dbo].[RQDTL]  WITH CHECK ADD  CONSTRAINT [FK_RQDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[RQDTL] CHECK CONSTRAINT [FK_RQDTL_TaxType]
GO
ALTER TABLE [dbo].[SerialNoTrans]  WITH CHECK ADD  CONSTRAINT [FK_SerialNoTrans_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[SerialNoTrans] CHECK CONSTRAINT [FK_SerialNoTrans_ItemCode]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_BranchCode]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_CreatedUserID]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_CurrencyCode]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_DebtorCode]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_DisplayTerm]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_Footer1TaxType]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_Footer2TaxType]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_Footer3TaxType]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_LastModifiedUserID]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_SalesAgent]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_SalesLocation]
GO
ALTER TABLE [dbo].[SO]  WITH CHECK ADD  CONSTRAINT [FK_SO_ShipVia] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[SO] CHECK CONSTRAINT [FK_SO_ShipVia]
GO
ALTER TABLE [dbo].[SODTL]  WITH CHECK ADD  CONSTRAINT [FK_SODTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[SODTL] CHECK CONSTRAINT [FK_SODTL_DeptNo]
GO
ALTER TABLE [dbo].[SODTL]  WITH CHECK ADD  CONSTRAINT [FK_SODTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[SODTL] CHECK CONSTRAINT [FK_SODTL_FontStyle]
GO
ALTER TABLE [dbo].[SODTL]  WITH CHECK ADD  CONSTRAINT [FK_SODTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[SODTL] CHECK CONSTRAINT [FK_SODTL_ItemUOM]
GO
ALTER TABLE [dbo].[SODTL]  WITH CHECK ADD  CONSTRAINT [FK_SODTL_LastAORPModifiedUserID] FOREIGN KEY([LastAORPModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[SODTL] CHECK CONSTRAINT [FK_SODTL_LastAORPModifiedUserID]
GO
ALTER TABLE [dbo].[SODTL]  WITH CHECK ADD  CONSTRAINT [FK_SODTL_LastDRPModifiedUserID] FOREIGN KEY([LastDRPModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[SODTL] CHECK CONSTRAINT [FK_SODTL_LastDRPModifiedUserID]
GO
ALTER TABLE [dbo].[SODTL]  WITH CHECK ADD  CONSTRAINT [FK_SODTL_LastOPModifiedUserID] FOREIGN KEY([LastOPModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[SODTL] CHECK CONSTRAINT [FK_SODTL_LastOPModifiedUserID]
GO
ALTER TABLE [dbo].[SODTL]  WITH CHECK ADD  CONSTRAINT [FK_SODTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[SODTL] CHECK CONSTRAINT [FK_SODTL_Location]
GO
ALTER TABLE [dbo].[SODTL]  WITH CHECK ADD  CONSTRAINT [FK_SODTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[SODTL] CHECK CONSTRAINT [FK_SODTL_ProjNo]
GO
ALTER TABLE [dbo].[SODTL]  WITH CHECK ADD  CONSTRAINT [FK_SODTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[SODTL] CHECK CONSTRAINT [FK_SODTL_TaxType]
GO
ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[StockDisassembly] CHECK CONSTRAINT [FK_StockDisassembly_CreatedUserID]
GO
ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDisassembly] CHECK CONSTRAINT [FK_StockDisassembly_DeptNo]
GO
ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDisassembly] CHECK CONSTRAINT [FK_StockDisassembly_ItemBatch]
GO
ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[StockDisassembly] CHECK CONSTRAINT [FK_StockDisassembly_LastModifiedUserID]
GO
ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[StockDisassembly] CHECK CONSTRAINT [FK_StockDisassembly_Location]
GO
ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDisassembly] CHECK CONSTRAINT [FK_StockDisassembly_ProjNo]
GO
ALTER TABLE [dbo].[StockDisassemblyDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassemblyDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDisassemblyDTL] CHECK CONSTRAINT [FK_StockDisassemblyDTL_DeptNo]
GO
ALTER TABLE [dbo].[StockDisassemblyDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassemblyDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDisassemblyDTL] CHECK CONSTRAINT [FK_StockDisassemblyDTL_ItemBatch]
GO
ALTER TABLE [dbo].[StockDisassemblyDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassemblyDTL_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDisassemblyDTL] CHECK CONSTRAINT [FK_StockDisassemblyDTL_ItemCode]
GO
ALTER TABLE [dbo].[StockDisassemblyDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassemblyDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDisassemblyDTL] CHECK CONSTRAINT [FK_StockDisassemblyDTL_Location]
GO
ALTER TABLE [dbo].[StockDisassemblyDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassemblyDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDisassemblyDTL] CHECK CONSTRAINT [FK_StockDisassemblyDTL_ProjNo]
GO
ALTER TABLE [dbo].[StockDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDTL] CHECK CONSTRAINT [FK_StockDTL_DeptNo]
GO
ALTER TABLE [dbo].[StockDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDTL] CHECK CONSTRAINT [FK_StockDTL_ItemUOM]
GO
ALTER TABLE [dbo].[StockDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[StockDTL] CHECK CONSTRAINT [FK_StockDTL_Location]
GO
ALTER TABLE [dbo].[StockDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockDTL] CHECK CONSTRAINT [FK_StockDTL_ProjNo]
GO
ALTER TABLE [dbo].[StockDTLChangeQ]  WITH CHECK ADD  CONSTRAINT [FK_StockDTLChangeQ_ItemCode] FOREIGN KEY([ItemCode])
REFERENCES [dbo].[Item] ([ItemCode])
GO
ALTER TABLE [dbo].[StockDTLChangeQ] CHECK CONSTRAINT [FK_StockDTLChangeQ_ItemCode]
GO
ALTER TABLE [dbo].[StockPBalance]  WITH CHECK ADD  CONSTRAINT [FK_StockPBalance_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[StockPBalance] CHECK CONSTRAINT [FK_StockPBalance_DeptNo]
GO
ALTER TABLE [dbo].[StockPBalance]  WITH CHECK ADD  CONSTRAINT [FK_StockPBalance_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[StockPBalance] CHECK CONSTRAINT [FK_StockPBalance_ProjNo]
GO
ALTER TABLE [dbo].[StockSet]  WITH CHECK ADD  CONSTRAINT [FK_StockSet_BalanceStock] FOREIGN KEY([BalanceStock])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[StockSet] CHECK CONSTRAINT [FK_StockSet_BalanceStock]
GO
ALTER TABLE [dbo].[StockSet]  WITH CHECK ADD  CONSTRAINT [FK_StockSet_CloseStock] FOREIGN KEY([CloseStock])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[StockSet] CHECK CONSTRAINT [FK_StockSet_CloseStock]
GO
ALTER TABLE [dbo].[StockSet]  WITH CHECK ADD  CONSTRAINT [FK_StockSet_OpenStock] FOREIGN KEY([OpenStock])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[StockSet] CHECK CONSTRAINT [FK_StockSet_OpenStock]
GO
ALTER TABLE [dbo].[StockTake]  WITH CHECK ADD  CONSTRAINT [FK_StockTake_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[StockTake] CHECK CONSTRAINT [FK_StockTake_CreatedUserID]
GO
ALTER TABLE [dbo].[StockTake]  WITH CHECK ADD  CONSTRAINT [FK_StockTake_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[StockTake] CHECK CONSTRAINT [FK_StockTake_LastModifiedUserID]
GO
ALTER TABLE [dbo].[StockTake]  WITH CHECK ADD  CONSTRAINT [FK_StockTake_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[StockTake] CHECK CONSTRAINT [FK_StockTake_Location]
GO
ALTER TABLE [dbo].[StockTakeDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockTakeDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockTakeDTL] CHECK CONSTRAINT [FK_StockTakeDTL_ItemBatch]
GO
ALTER TABLE [dbo].[StockTakeDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockTakeDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[StockTakeDTL] CHECK CONSTRAINT [FK_StockTakeDTL_ItemUOM]
GO
ALTER TABLE [dbo].[TaxTrans]  WITH CHECK ADD  CONSTRAINT [FK_TaxTrans_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
GO
ALTER TABLE [dbo].[TaxTrans] CHECK CONSTRAINT [FK_TaxTrans_CurrencyCode]
GO
ALTER TABLE [dbo].[TaxTrans]  WITH CHECK ADD  CONSTRAINT [FK_TaxTrans_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[TaxTrans] CHECK CONSTRAINT [FK_TaxTrans_DeptNo]
GO
ALTER TABLE [dbo].[TaxTrans]  WITH CHECK ADD  CONSTRAINT [FK_TaxTrans_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[TaxTrans] CHECK CONSTRAINT [FK_TaxTrans_ProjNo]
GO
ALTER TABLE [dbo].[TaxTrans]  WITH CHECK ADD  CONSTRAINT [FK_TaxTrans_TaxableAccNo] FOREIGN KEY([TaxableAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[TaxTrans] CHECK CONSTRAINT [FK_TaxTrans_TaxableAccNo]
GO
ALTER TABLE [dbo].[TaxTrans]  WITH CHECK ADD  CONSTRAINT [FK_TaxTrans_TaxAccNo] FOREIGN KEY([TaxAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[TaxTrans] CHECK CONSTRAINT [FK_TaxTrans_TaxAccNo]
GO
ALTER TABLE [dbo].[TaxTrans]  WITH CHECK ADD  CONSTRAINT [FK_TaxTrans_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[TaxTrans] CHECK CONSTRAINT [FK_TaxTrans_TaxType]
GO
ALTER TABLE [dbo].[TaxTransAudit]  WITH CHECK ADD  CONSTRAINT [FK_TaxTransAudit_UserID] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[TaxTransAudit] CHECK CONSTRAINT [FK_TaxTransAudit_UserID]
GO
ALTER TABLE [dbo].[TaxTransAuditDTL]  WITH CHECK ADD  CONSTRAINT [FK_TaxTransAuditDTL_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
GO
ALTER TABLE [dbo].[TaxTransAuditDTL] CHECK CONSTRAINT [FK_TaxTransAuditDTL_CurrencyCode]
GO
ALTER TABLE [dbo].[TaxTransAuditDTL]  WITH CHECK ADD  CONSTRAINT [FK_TaxTransAuditDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[TaxTransAuditDTL] CHECK CONSTRAINT [FK_TaxTransAuditDTL_DeptNo]
GO
ALTER TABLE [dbo].[TaxTransAuditDTL]  WITH CHECK ADD  CONSTRAINT [FK_TaxTransAuditDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[TaxTransAuditDTL] CHECK CONSTRAINT [FK_TaxTransAuditDTL_ProjNo]
GO
ALTER TABLE [dbo].[TaxTransAuditDTL]  WITH CHECK ADD  CONSTRAINT [FK_TaxTransAuditDTL_TaxableAccNo] FOREIGN KEY([TaxableAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[TaxTransAuditDTL] CHECK CONSTRAINT [FK_TaxTransAuditDTL_TaxableAccNo]
GO
ALTER TABLE [dbo].[TaxTransAuditDTL]  WITH CHECK ADD  CONSTRAINT [FK_TaxTransAuditDTL_TaxAccNo] FOREIGN KEY([TaxAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[TaxTransAuditDTL] CHECK CONSTRAINT [FK_TaxTransAuditDTL_TaxAccNo]
GO
ALTER TABLE [dbo].[TaxTransAuditDTL]  WITH CHECK ADD  CONSTRAINT [FK_TaxTransAuditDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[TaxTransAuditDTL] CHECK CONSTRAINT [FK_TaxTransAuditDTL_TaxType]
GO
ALTER TABLE [dbo].[TaxType]  WITH CHECK ADD  CONSTRAINT [FK_TaxType_TaxAccNo] FOREIGN KEY([TaxAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[TaxType] CHECK CONSTRAINT [FK_TaxType_TaxAccNo]
GO
ALTER TABLE [dbo].[TemporaryCredit]  WITH CHECK ADD  CONSTRAINT [FK_TemporaryCredit_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[TemporaryCredit] CHECK CONSTRAINT [FK_TemporaryCredit_AccNo]
GO
ALTER TABLE [dbo].[UnapprovedDocument]  WITH CHECK ADD  CONSTRAINT [FK_UnapprovedDocument_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[UnapprovedDocument] CHECK CONSTRAINT [FK_UnapprovedDocument_AccNo]
GO
ALTER TABLE [dbo].[UnapprovedDocument]  WITH CHECK ADD  CONSTRAINT [FK_UnapprovedDocument_UserID] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[UnapprovedDocument] CHECK CONSTRAINT [FK_UnapprovedDocument_UserID]
GO
ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_GainLossJournalType] FOREIGN KEY([GainLossJournalType])
REFERENCES [dbo].[Journal] ([JournalType])
GO
ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_GainLossJournalType]
GO
ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_GLGainAccount] FOREIGN KEY([GLGainAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_GLGainAccount]
GO
ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_GLLossAccount] FOREIGN KEY([GLLossAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_GLLossAccount]
GO
ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedGainAccount] FOREIGN KEY([UnrealizedGainAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedGainAccount]
GO
ALTER TABLE [dbo].[UnrealizedGainLoss]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedLossAccount] FOREIGN KEY([UnrealizedLossAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[UnrealizedGainLoss] CHECK CONSTRAINT [FK_UnrealizedGainLoss_UnrealizedLossAccount]
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossDocument_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument] CHECK CONSTRAINT [FK_UnrealizedGainLossDocument_AccNo]
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossDocument_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument] CHECK CONSTRAINT [FK_UnrealizedGainLossDocument_CurrencyCode]
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossDocument_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument] CHECK CONSTRAINT [FK_UnrealizedGainLossDocument_DeptNo]
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossDocument_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
GO
ALTER TABLE [dbo].[UnrealizedGainLossDocument] CHECK CONSTRAINT [FK_UnrealizedGainLossDocument_ProjNo]
GO
ALTER TABLE [dbo].[UnrealizedGainLossGLAccount]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossGLAccount_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UnrealizedGainLossGLAccount] CHECK CONSTRAINT [FK_UnrealizedGainLossGLAccount_AccNo]
GO
ALTER TABLE [dbo].[UnrealizedGainLossRate]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossRate_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UnrealizedGainLossRate] CHECK CONSTRAINT [FK_UnrealizedGainLossRate_CurrencyCode]
GO
ALTER TABLE [dbo].[UnrealizedGainLossRate]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossRate_GLGainAccount] FOREIGN KEY([GLGainAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[UnrealizedGainLossRate] CHECK CONSTRAINT [FK_UnrealizedGainLossRate_GLGainAccount]
GO
ALTER TABLE [dbo].[UnrealizedGainLossRate]  WITH CHECK ADD  CONSTRAINT [FK_UnrealizedGainLossRate_GLLossAccount] FOREIGN KEY([GLLossAccount])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[UnrealizedGainLossRate] CHECK CONSTRAINT [FK_UnrealizedGainLossRate_GLLossAccount]
GO
ALTER TABLE [dbo].[UOMConv]  WITH CHECK ADD  CONSTRAINT [FK_UOMConv_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[UOMConv] CHECK CONSTRAINT [FK_UOMConv_CreatedUserID]
GO
ALTER TABLE [dbo].[UOMConv]  WITH CHECK ADD  CONSTRAINT [FK_UOMConv_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[UOMConv] CHECK CONSTRAINT [FK_UOMConv_LastModifiedUserID]
GO
ALTER TABLE [dbo].[UOMConvDTL]  WITH CHECK ADD  CONSTRAINT [FK_UOMConvDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UOMConvDTL] CHECK CONSTRAINT [FK_UOMConvDTL_DeptNo]
GO
ALTER TABLE [dbo].[UOMConvDTL]  WITH CHECK ADD  CONSTRAINT [FK_UOMConvDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UOMConvDTL] CHECK CONSTRAINT [FK_UOMConvDTL_ItemBatch]
GO
ALTER TABLE [dbo].[UOMConvDTL]  WITH CHECK ADD  CONSTRAINT [FK_UOMConvDTL_ItemFromUOM] FOREIGN KEY([ItemCode], [FromUOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[UOMConvDTL] CHECK CONSTRAINT [FK_UOMConvDTL_ItemFromUOM]
GO
ALTER TABLE [dbo].[UOMConvDTL]  WITH CHECK ADD  CONSTRAINT [FK_UOMConvDTL_ItemToUOM] FOREIGN KEY([ItemCode], [ToUOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[UOMConvDTL] CHECK CONSTRAINT [FK_UOMConvDTL_ItemToUOM]
GO
ALTER TABLE [dbo].[UOMConvDTL]  WITH CHECK ADD  CONSTRAINT [FK_UOMConvDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[UOMConvDTL] CHECK CONSTRAINT [FK_UOMConvDTL_Location]
GO
ALTER TABLE [dbo].[UOMConvDTL]  WITH CHECK ADD  CONSTRAINT [FK_UOMConvDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UOMConvDTL] CHECK CONSTRAINT [FK_UOMConvDTL_ProjNo]
GO
ALTER TABLE [dbo].[UpdateCost]  WITH CHECK ADD  CONSTRAINT [FK_UpdateCost_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[UpdateCost] CHECK CONSTRAINT [FK_UpdateCost_CreatedUserID]
GO
ALTER TABLE [dbo].[UpdateCost]  WITH CHECK ADD  CONSTRAINT [FK_UpdateCost_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[UpdateCost] CHECK CONSTRAINT [FK_UpdateCost_LastModifiedUserID]
GO
ALTER TABLE [dbo].[UpdateCostDTL]  WITH CHECK ADD  CONSTRAINT [FK_UpdateCostDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UpdateCostDTL] CHECK CONSTRAINT [FK_UpdateCostDTL_ItemUOM]
GO
ALTER TABLE [dbo].[Users]  WITH CHECK ADD  CONSTRAINT [FK_Users_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Users] CHECK CONSTRAINT [FK_Users_DeptNo]
GO
ALTER TABLE [dbo].[Users]  WITH CHECK ADD  CONSTRAINT [FK_Users_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Users] CHECK CONSTRAINT [FK_Users_Location]
GO
ALTER TABLE [dbo].[Users]  WITH CHECK ADD  CONSTRAINT [FK_Users_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[Users] CHECK CONSTRAINT [FK_Users_ProjNo]
GO
ALTER TABLE [dbo].[UsersGroup]  WITH CHECK ADD  CONSTRAINT [FK_UsersGroup_UserGroupID] FOREIGN KEY([UserGroupID])
REFERENCES [dbo].[UserGroup] ([UserGroupID])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[UsersGroup] CHECK CONSTRAINT [FK_UsersGroup_UserGroupID]
GO
ALTER TABLE [dbo].[UTDStockCost]  WITH CHECK ADD  CONSTRAINT [FK_UTDStockCost_BatchNo] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
GO
ALTER TABLE [dbo].[UTDStockCost] CHECK CONSTRAINT [FK_UTDStockCost_BatchNo]
GO
ALTER TABLE [dbo].[UTDStockCost]  WITH CHECK ADD  CONSTRAINT [FK_UTDStockCost_ItemCode] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO
ALTER TABLE [dbo].[UTDStockCost] CHECK CONSTRAINT [FK_UTDStockCost_ItemCode]
GO
ALTER TABLE [dbo].[UTDStockCost]  WITH CHECK ADD  CONSTRAINT [FK_UTDStockCost_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[UTDStockCost] CHECK CONSTRAINT [FK_UTDStockCost_Location]
GO
ALTER TABLE [dbo].[WithholdingTax]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTax_TaxAccNo] FOREIGN KEY([WithholdingTaxAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[WithholdingTax] CHECK CONSTRAINT [FK_WithholdingTax_TaxAccNo]
GO
ALTER TABLE [dbo].[WithholdingTaxDocDTL]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTaxDocDTL_WithholdingTaxCode] FOREIGN KEY([WithholdingTaxCode])
REFERENCES [dbo].[WithholdingTax] ([WithholdingTaxCode])
GO
ALTER TABLE [dbo].[WithholdingTaxDocDTL] CHECK CONSTRAINT [FK_WithholdingTaxDocDTL_WithholdingTaxCode]
GO
ALTER TABLE [dbo].[WithholdingTaxTrans]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTaxTrans_TaxableAccNo] FOREIGN KEY([TaxableAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO
ALTER TABLE [dbo].[WithholdingTaxTrans] CHECK CONSTRAINT [FK_WithholdingTaxTrans_TaxableAccNo]
GO
ALTER TABLE [dbo].[WOFF]  WITH CHECK ADD  CONSTRAINT [FK_WOFF_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[WOFF] CHECK CONSTRAINT [FK_WOFF_CreatedUserID]
GO
ALTER TABLE [dbo].[WOFF]  WITH CHECK ADD  CONSTRAINT [FK_WOFF_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[WOFF] CHECK CONSTRAINT [FK_WOFF_LastModifiedUserID]
GO
ALTER TABLE [dbo].[WOFFDTL]  WITH CHECK ADD  CONSTRAINT [FK_WOFFDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[WOFFDTL] CHECK CONSTRAINT [FK_WOFFDTL_DeptNo]
GO
ALTER TABLE [dbo].[WOFFDTL]  WITH CHECK ADD  CONSTRAINT [FK_WOFFDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[WOFFDTL] CHECK CONSTRAINT [FK_WOFFDTL_ItemBatch]
GO
ALTER TABLE [dbo].[WOFFDTL]  WITH CHECK ADD  CONSTRAINT [FK_WOFFDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[WOFFDTL] CHECK CONSTRAINT [FK_WOFFDTL_ItemUOM]
GO
ALTER TABLE [dbo].[WOFFDTL]  WITH CHECK ADD  CONSTRAINT [FK_WOFFDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[WOFFDTL] CHECK CONSTRAINT [FK_WOFFDTL_Location]
GO
ALTER TABLE [dbo].[WOFFDTL]  WITH CHECK ADD  CONSTRAINT [FK_WOFFDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[WOFFDTL] CHECK CONSTRAINT [FK_WOFFDTL_ProjNo]
GO
ALTER TABLE [dbo].[XFER]  WITH CHECK ADD  CONSTRAINT [FK_XFER_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[XFER] CHECK CONSTRAINT [FK_XFER_CreatedUserID]
GO
ALTER TABLE [dbo].[XFER]  WITH CHECK ADD  CONSTRAINT [FK_XFER_FromLocation] FOREIGN KEY([FromLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[XFER] CHECK CONSTRAINT [FK_XFER_FromLocation]
GO
ALTER TABLE [dbo].[XFER]  WITH CHECK ADD  CONSTRAINT [FK_XFER_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[XFER] CHECK CONSTRAINT [FK_XFER_LastModifiedUserID]
GO
ALTER TABLE [dbo].[XFER]  WITH CHECK ADD  CONSTRAINT [FK_XFER_ToLocation] FOREIGN KEY([ToLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[XFER] CHECK CONSTRAINT [FK_XFER_ToLocation]
GO
ALTER TABLE [dbo].[XFERDTL]  WITH CHECK ADD  CONSTRAINT [FK_XFERDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XFERDTL] CHECK CONSTRAINT [FK_XFERDTL_DeptNo]
GO
ALTER TABLE [dbo].[XFERDTL]  WITH CHECK ADD  CONSTRAINT [FK_XFERDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XFERDTL] CHECK CONSTRAINT [FK_XFERDTL_ItemBatch]
GO
ALTER TABLE [dbo].[XFERDTL]  WITH CHECK ADD  CONSTRAINT [FK_XFERDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XFERDTL] CHECK CONSTRAINT [FK_XFERDTL_ItemUOM]
GO
ALTER TABLE [dbo].[XFERDTL]  WITH CHECK ADD  CONSTRAINT [FK_XFERDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XFERDTL] CHECK CONSTRAINT [FK_XFERDTL_ProjNo]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_BranchCode]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_CreatedUserID]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_CreditorCode] FOREIGN KEY([CreditorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_CreditorCode]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_CurrencyCode]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_DisplayTerm]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_Footer1TaxType]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_Footer2TaxType]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_Footer3TaxType]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_LastModifiedUserID]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_PurchaseAgent]
GO
ALTER TABLE [dbo].[XP]  WITH CHECK ADD  CONSTRAINT [FK_XP_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[XP] CHECK CONSTRAINT [FK_XP_PurchaseLocation]
GO
ALTER TABLE [dbo].[XPDTL]  WITH CHECK ADD  CONSTRAINT [FK_XPDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XPDTL] CHECK CONSTRAINT [FK_XPDTL_DeptNo]
GO
ALTER TABLE [dbo].[XPDTL]  WITH CHECK ADD  CONSTRAINT [FK_XPDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XPDTL] CHECK CONSTRAINT [FK_XPDTL_FontStyle]
GO
ALTER TABLE [dbo].[XPDTL]  WITH CHECK ADD  CONSTRAINT [FK_XPDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XPDTL] CHECK CONSTRAINT [FK_XPDTL_ItemUOM]
GO
ALTER TABLE [dbo].[XPDTL]  WITH CHECK ADD  CONSTRAINT [FK_XPDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[XPDTL] CHECK CONSTRAINT [FK_XPDTL_Location]
GO
ALTER TABLE [dbo].[XPDTL]  WITH CHECK ADD  CONSTRAINT [FK_XPDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XPDTL] CHECK CONSTRAINT [FK_XPDTL_ProjNo]
GO
ALTER TABLE [dbo].[XPDTL]  WITH CHECK ADD  CONSTRAINT [FK_XPDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[XPDTL] CHECK CONSTRAINT [FK_XPDTL_TaxType]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_BranchCode]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_CreatedUserID]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_CurrencyCode] FOREIGN KEY([CurrencyCode])
REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_CurrencyCode]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_DebtorCode] FOREIGN KEY([DebtorCode])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_DebtorCode]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_DisplayTerm] FOREIGN KEY([DisplayTerm])
REFERENCES [dbo].[Terms] ([DisplayTerm])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_DisplayTerm]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_Footer1TaxType]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_Footer2TaxType]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_Footer3TaxType]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_LastModifiedUserID]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_SalesAgent] FOREIGN KEY([SalesAgent])
REFERENCES [dbo].[SalesAgent] ([SalesAgent])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_SalesAgent]
GO
ALTER TABLE [dbo].[XS]  WITH CHECK ADD  CONSTRAINT [FK_XS_SalesLocation] FOREIGN KEY([SalesLocation])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[XS] CHECK CONSTRAINT [FK_XS_SalesLocation]
GO
ALTER TABLE [dbo].[XSDTL]  WITH CHECK ADD  CONSTRAINT [FK_XSDTL_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XSDTL] CHECK CONSTRAINT [FK_XSDTL_DeptNo]
GO
ALTER TABLE [dbo].[XSDTL]  WITH CHECK ADD  CONSTRAINT [FK_XSDTL_FontStyle] FOREIGN KEY([FontStyle])
REFERENCES [dbo].[FontStyle] ([FontStyle])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XSDTL] CHECK CONSTRAINT [FK_XSDTL_FontStyle]
GO
ALTER TABLE [dbo].[XSDTL]  WITH CHECK ADD  CONSTRAINT [FK_XSDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XSDTL] CHECK CONSTRAINT [FK_XSDTL_ItemUOM]
GO
ALTER TABLE [dbo].[XSDTL]  WITH CHECK ADD  CONSTRAINT [FK_XSDTL_Location] FOREIGN KEY([Location])
REFERENCES [dbo].[Location] ([Location])
GO
ALTER TABLE [dbo].[XSDTL] CHECK CONSTRAINT [FK_XSDTL_Location]
GO
ALTER TABLE [dbo].[XSDTL]  WITH CHECK ADD  CONSTRAINT [FK_XSDTL_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[XSDTL] CHECK CONSTRAINT [FK_XSDTL_ProjNo]
GO
ALTER TABLE [dbo].[XSDTL]  WITH CHECK ADD  CONSTRAINT [FK_XSDTL_TaxType] FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO
ALTER TABLE [dbo].[XSDTL] CHECK CONSTRAINT [FK_XSDTL_TaxType]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_DocTemplate_CreatedUserID')))
ALTER TABLE [dbo].[DocTemplate]  WITH CHECK ADD  CONSTRAINT [FK_DocTemplate_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[DocTemplate] CHECK CONSTRAINT [FK_DocTemplate_CreatedUserID]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_DocTemplateUsers_TemplateName')))
ALTER TABLE [dbo].[DocTemplateUsers]  WITH CHECK ADD  CONSTRAINT [FK_DocTemplateUsers_TemplateName] FOREIGN KEY([TemplateName])
REFERENCES [dbo].[DocTemplate] ([TemplateName])
GO
ALTER TABLE [dbo].[DocTemplateUsers] CHECK CONSTRAINT [FK_DocTemplateUsers_TemplateName]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_Recurrence_AlertUserID')))
ALTER TABLE [dbo].[Recurrence]  WITH CHECK ADD  CONSTRAINT [FK_Recurrence_AlertUserID] FOREIGN KEY([AlertUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Recurrence] CHECK CONSTRAINT [FK_Recurrence_AlertUserID]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_Recurrence_CreatedUserID')))
ALTER TABLE [dbo].[Recurrence]  WITH CHECK ADD  CONSTRAINT [FK_Recurrence_CreatedUserID] FOREIGN KEY([CreatedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Recurrence] CHECK CONSTRAINT [FK_Recurrence_CreatedUserID]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_Recurrence_LastModifiedUserID')))
ALTER TABLE [dbo].[Recurrence]  WITH CHECK ADD  CONSTRAINT [FK_Recurrence_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
REFERENCES [dbo].[Users] ([UserID])
GO
ALTER TABLE [dbo].[Recurrence] CHECK CONSTRAINT [FK_Recurrence_LastModifiedUserID]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_RecurrenceDtl_AccNo')))
ALTER TABLE [dbo].[RecurrenceDtl]  WITH CHECK ADD  CONSTRAINT [FK_RecurrenceDtl_AccNo] FOREIGN KEY([AccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[RecurrenceDtl] CHECK CONSTRAINT [FK_RecurrenceDtl_AccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vUsers]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [dbo].[vUsers]
GO

CREATE VIEW [dbo].[vUsers] AS
SELECT UserID, UserName, Department, Signature, EmailAddress, IsActive FROM Users
GO

CREATE VIEW [dbo].[vItemUOMBalQty] AS 
SELECT A.ItemCode, A.UOM, A.Rate, SUM(B.BalQty) AS BalQty 
FROM ItemUOM A
LEFT OUTER JOIN ItemBatchBalQty B 
ON A.ItemCode = B.ItemCode AND A.UOM = B.UOM
GROUP BY A.ItemCode, A.UOM, A.Rate
GO
 
CREATE VIEW [dbo].[vItemBatchBalQty] AS 
SELECT A.ItemCode, B.BatchNo, SUM(A.Rate * B.BalQty) AS BalQty 
FROM ItemUOM A
LEFT OUTER JOIN ItemBatchBalQty B 
ON A.ItemCode = B.ItemCode AND A.UOM = B.UOM
GROUP BY A.ItemCode, B.BatchNo
GO

CREATE VIEW [dbo].[vItemBalQty] AS 
SELECT A.ItemCode, A.UOM, A.Location, SUM(A.BalQty) AS BalQty 
FROM ItemBatchBalQty A 
GROUP BY A.ItemCode, A.UOM, A.Location
GO

CREATE TRIGGER UpdateAccountChangeCount ON GLMast
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Account'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePaymentMethodChangeCount ON PaymentMethod
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PaymentMethod'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDocNoFormatChangeCount ON DocNoFormat
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DocNoFormat'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAccTypeChangeCount ON AccType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='AccType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAddressChangeCount ON Address
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Address'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateSalesAgentChangeCount ON SalesAgent
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='SalesAgent'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePurchaseAgentChangeCount ON PurchaseAgent
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PurchaseAgent'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDebtorTypeChangeCount ON DebtorType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DebtorType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCreditorTypeChangeCount ON CreditorType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CreditorType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCNTypeChangeCount ON CNType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CNType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDNTypeChangeCount ON DNType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DNType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateTariffChangeCount ON Tariff
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Tariff'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAreaChangeCount ON Area
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Area'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateBranchChangeCount ON Branch
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Branch'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCreditorChangeCount ON Creditor
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Creditor'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCurrencyChangeCount ON Currency
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Currency'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCurrRateChangeCount ON CurrRate
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CurrRate'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDebtorChangeCount ON Debtor
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Debtor'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDepartmentChangeCount ON Dept
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Department'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePriceCategoryChangeCount ON PriceCategory
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PriceCategory'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemChangeCount ON Item
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Item'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemTypeChangeCount ON ItemType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemBrandChangeCount ON ItemBrand
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemBrand'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemClassChangeCount ON ItemClass
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemClass'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemCategoryChangeCount ON ItemCategory
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemCategory'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemBOMChangeCount ON ItemBOM
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemBOM'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemUOMChangeCount ON ItemUOM
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemUOM'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemBatchChangeCount ON ItemBatch
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemBatch'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemGroupChangeCount ON ItemGroup
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemGroup'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateJournalTypeChangeCount ON Journal
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='JournalType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateLocationChangeCount ON Location
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Location'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateProjectChangeCount ON Project
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Project'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateTaxTypeChangeCount ON TaxType
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='TaxType'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateTermsChangeCount ON Terms
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Terms'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateUsersChangeCount ON Users
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Users'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCBChangeCount ON CB
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CB'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateJEChangeCount ON JE
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='JE'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateQTChangeCount ON QT
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='QT'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateSOChangeCount ON SO
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='SO'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDOChangeCount ON DO
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DO'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateIVChangeCount ON IV
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='IV'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCSChangeCount ON CS
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CS'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDNChangeCount ON DN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCNChangeCount ON CN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateXSChangeCount ON XS
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='XS'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateDRChangeCount ON DR
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='DR'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateConsignmentChangeCount ON Consignment
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Consignment'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateConsignmentReturnChangeCount ON ConsignmentReturn
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ConsignmentReturn'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePQChangeCount ON PQ
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PQ'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateRQChangeCount ON RQ
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='RQ'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePOChangeCount ON PO
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PO'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateGRChangeCount ON GR
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='GR'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateGSTCapitalGoodsChangeCount ON GSTCapitalGoods
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='GSTCapitalGoods'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePIChangeCount ON [PI]
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PI'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateCPChangeCount ON CP
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='CP'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePRChangeCount ON PR
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PR'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateXPChangeCount ON XP
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='XP'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateGTChangeCount ON GT
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='GT'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePurchaseConsignmentChangeCount ON PurchaseConsignment
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PurchaseConsignment'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePurchaseConsignmentReturnChangeCount ON PurchaseConsignmentReturn
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PurchaseConsignmentReturn'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateXFERChangeCount ON XFER
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='XFER'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateADJChangeCount ON ADJ
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ADJ'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateISSChangeCount ON ISS
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ISS'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateRCVChangeCount ON RCV
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='RCV'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateWithholdingTaxChangeCount ON WithholdingTax
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='WithholdingTax'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateWOFFChangeCount ON WOFF
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='WOFF'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateUOMConvertChangeCount ON UOMCONV
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='UOMConv'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateUpdateCostChangeCount ON UpdateCost
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='UpdateCost'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateASMChangeCount ON ASM
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ASM'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARInvoiceChangeCount ON ARInvoice
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARInvoice'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARDNChangeCount ON ARDN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARDN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARCNChangeCount ON ARCN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARCN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARPaymentChangeCount ON ARPayment
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARPayment'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARRefundChangeCount ON ARRefund
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARRefund'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARDepositChangeCount ON ARDeposit
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARDeposit'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateARAPContraChangeCount ON ARAPContra
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ARAPContra'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPInvoiceChangeCount ON APInvoice
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APInvoice'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPDNChangeCount ON APDN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APDN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPCNChangeCount ON APCN
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APCN'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPPaymentChangeCount ON APPayment
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APPayment'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPRefundChangeCount ON APRefund
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APRefund'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateAPDepositChangeCount ON APDeposit
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='APDeposit'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateShippingMethodChangeCount ON ShippingMethod
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ShippingMethod'
SET NOCOUNT OFF
GO
CREATE TRIGGER UpdateASMOrderChangeCount ON ASM
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ASMOrder'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateBonusPointRedemptionChangeCount ON BonusPointRedemption
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='BonusPointRedemption'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateBOMOptionalChangeCount ON BOMOptional
AFTER Insert, Update, Delete 
AS 
SET NOCOUNT ON 
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='BOMOptional' 
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateProfileChangeCount ON Profile
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Profile'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdatePostingAccountGroupChangeCount ON PostingAccountGroup
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PostingAccountGroup'
SET NOCOUNT OFF
GO

CREATE TRIGGER Update_MemberType ON MemberType
AFTER Insert, Update, Delete 
AS 
SET NOCOUNT ON 
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='MemberType' 
SET NOCOUNT OFF
GO

CREATE TRIGGER Update_Member ON Member
AFTER Insert, Update, Delete 
AS 
SET NOCOUNT ON 
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Member' 
SET NOCOUNT OFF
GO

CREATE TRIGGER Update_Race ON Member
AFTER Insert, Update, Delete 
AS 
SET NOCOUNT ON 
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Race' 
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateStockTakeChangeCount ON StockTake
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='StockTake'
SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateItemPackageChangeCount ON Package AFTER Insert, Update, Delete 
AS
  SET NOCOUNT ON 
  UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemPackage' 
  SET NOCOUNT OFF
GO

CREATE TRIGGER UpdateStockDisassemblyChangeCount ON StockDisassembly
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='StockDisassembly'
SET NOCOUNT OFF
GO

CREATE TRIGGER TAXDOCNODTL_TRIGGER_AFTER_COUNT ON TaxDocNoDTL
AFTER UPDATE
AS

DECLARE InsertRow CURSOR FAST_FORWARD
FOR SELECT TaxDocNoDtlKey, TaxDocNoKey, UseInDocKey, Void FROM INSERTED
DECLARE DeleteRow CURSOR FAST_FORWARD
FOR SELECT Void, UseInDocKey FROM DELETED

DECLARE @NewVoid VARCHAR(1), @NewUseInDocKey VARCHAR(30), @NewTaxDocNoDtlKey VARCHAR(30), @NewTaxDocNoKey VARCHAR(30),
@OldVoid VARCHAR(1), @OldUseInDocKey VARCHAR(30)

OPEN InsertRow
FETCH NEXT FROM InsertRow INTO @NewTaxDocNoDtlKey, @NewTaxDocNoKey, @NewUseInDocKey, @NewVoid
OPEN DeleteRow
FETCH NEXT FROM DeleteRow INTO @OldVoid, @OldUseInDocKey

WHILE (@@fetch_status = 0)
BEGIN
       IF UPDATE (UseInDocKey) OR UPDATE (Void)
       BEGIN
              IF @NewUseInDocKey IS NOT NULL AND @OldUseInDocKey IS NULL AND @NewVoid = 'F' AND @OldVoid = 'F'
                     UPDATE TaxDocNo SET UseCount = UseCount + 1 WHERE TaxDocNoKey = @NewTaxDocNoKey
              ELSE IF @NewUseInDocKey IS NOT NULL AND @NewVoid = 'F' AND @OldVoid = 'T'
                     UPDATE TaxDocNo SET UseCount = UseCount + 1 WHERE TaxDocNoKey = @NewTaxDocNoKey
       
              ELSE IF @NewUseInDocKey IS NULL AND @OldUseInDocKey IS NOT NULL AND @NewVoid = 'F' AND @OldVoid = 'F'
                     UPDATE TaxDocNo SET UseCount = UseCount - 1 WHERE TaxDocNoKey = @NewTaxDocNoKey
              ELSE IF @OldUseInDocKey IS NOT NULL AND @NewVoid = 'T' AND @OldVoid = 'F'
                     UPDATE TaxDocNo SET UseCount = UseCount - 1 WHERE TaxDocNoKey = @NewTaxDocNoKey

              IF @NewVoid = 'F' AND @OldVoid = 'T'
                     UPDATE TaxDocNo SET VoidCount = VoidCount - 1 WHERE TaxDocNoKey = @NewTaxDocNoKey
              ELSE IF @NewVoid = 'T' AND @OldVoid = 'F'       
                     UPDATE TaxDocNo SET VoidCount = VoidCount + 1 WHERE TaxDocNoKey = @NewTaxDocNoKey
       END

       FETCH NEXT FROM InsertRow INTO @NewTaxDocNoDtlKey, @NewTaxDocNoKey, @NewUseInDocKey, @NewVoid
       FETCH NEXT FROM DeleteRow INTO @OldVoid, @OldUseInDocKey
END

CLOSE InsertRow
DEALLOCATE InsertRow
CLOSE DeleteRow
DEALLOCATE DeleteRow
GO

CREATE TRIGGER [dbo].[UpdateBonusPointADJChangeCount] ON [dbo].[BonusPointADJ]
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='BonusPointADJ'
SET NOCOUNT OFF
GO

CREATE TRIGGER [dbo].[AreaChangeLog] ON [dbo].[Area]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Area', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Area'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Area', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Area')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Area')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Area/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Area/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Area'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Area', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Area', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[CurrencyChangeLog] ON [dbo].[Currency]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Currency', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Currency'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Currency', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Currency')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Currency')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Currency/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Currency/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Currency'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Currency', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Currency', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [dbo].[CurrRateChangeLog] ON [dbo].[CurrRate]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'CurrRate', Guid, REPLACE((SELECT inserted.* FOR XML RAW('CurrRate'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'CurrRate', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('CurrRate')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('CurrRate')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/CurrRate/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/CurrRate/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('CurrRate'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('CurrRate', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('CurrRate', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [dbo].[DebtorChangeLog] ON [dbo].[Debtor]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Debtor', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Debtor'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Debtor', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Debtor')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Debtor')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Debtor/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Debtor/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Debtor'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Debtor', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Debtor', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[DebtorTypeChangeLog] ON [dbo].[DebtorType]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'DebtorType', Guid, REPLACE((SELECT inserted.* FOR XML RAW('DebtorType'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'DebtorType', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('DebtorType')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('DebtorType')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/DebtorType/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/DebtorType/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('DebtorType'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('DebtorType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('DebtorType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemGroupChangeLog] ON [dbo].[ItemGroup]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemGroup', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemGroup'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemGroup', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemGroup')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemGroup')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemGroup/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemGroup/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemGroup'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemGroup', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemGroup', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemTypeChangeLog] ON [dbo].[ItemType]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemType', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemType'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemType', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemType')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemType')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemType/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemType/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemType'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemBrandChangeLog] ON [dbo].[ItemBrand]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBrand', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemBrand'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBrand', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemBrand')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemBrand')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemBrand/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemBrand/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemBrand'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBrand', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBrand', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemClassChangeLog] ON [dbo].[ItemClass]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemClass', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemClass'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemClass', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemClass')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemClass')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemClass/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemClass/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemClass'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemClass', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemClass', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemCategoryChangeLog] ON [dbo].[ItemCategory]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemCategory', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemCategory'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemCategory', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemCategory')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemCategory')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemCategory/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemCategory/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemCategory'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemCategory', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemCategory', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemChangeLog] ON [dbo].[Item]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Item', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Item'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Item', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Item')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Item')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Item/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Item/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Item'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
      BEGIN
		 --Ignore only BalQty column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
		 DECLARE @balQtyPosition int, @columnCount int, @hasChanged bit, @intFlag int, @minus int, @tempPower int
		 SELECT @balQtyPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Item' AND COLUMN_NAME = 'OutletImageFileName'
		 SELECT @columnCount = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Item'
		 SET @hasChanged = 0
		 SET @intFlag = 1
		 WHILE (@intFlag <= CEILING(@columnCount / 8.0))
		 BEGIN
			IF (CEILING(@balQtyPosition / 8.0) = @intFlag)
			BEGIN
			   SET @tempPower = @balQtyPosition % 8
			   IF (@tempPower = 0)
			      SET @tempPower = 8
			   SET @minus = POWER(2, (@tempPower - 1))
			END			
			ELSE
			   SET @minus = 0
			IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag, 1) & (255 - @minus)) > 0)
			BEGIN
			   SET @hasChanged = 1
			   BREAK
			END
			SET @intFlag = @intFlag + 1
		 END
		 IF @hasChanged = 1
			INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Item', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END   
      ELSE
      BEGIN
		 --Ignore only BalQty column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
		 DECLARE @balQtyPosition1 int, @columnCount1 int, @hasChanged1 bit, @intFlag1 int, @minus1 int, @tempPower1 int
		 SELECT @balQtyPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Item' AND COLUMN_NAME = 'OutletImageFileName'
		 SELECT @columnCount1 = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Item'
		 SET @hasChanged1 = 0
		 SET @intFlag1 = 1
		 WHILE (@intFlag1 <= CEILING(@columnCount1 / 8.0))
		 BEGIN
			IF (CEILING(@balQtyPosition1 / 8.0) = @intFlag1)
			BEGIN
			   SET @tempPower1 = @balQtyPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			   SET @minus1 = POWER(2, (@tempPower1 - 1))
			END
			ELSE
			   SET @minus1 = 0   
			IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag1, 1) & (255 - @minus1)) > 0)
			BEGIN
			   SET @hasChanged1 = 1
			   BREAK
			END
			SET @intFlag1 = @intFlag1 + 1
		 END
		 IF @hasChanged1 = 1
			INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Item', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  END
      FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemUOMChangeLog] ON [dbo].[ItemUOM]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemUOM', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemUOM'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemUOM', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemUOM')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemUOM')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemUOM/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemUOM/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemUOM'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
	  BEGIN
	     --Ignore only BalQty, CSGNQty, RealCost & RowVer column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
		 --If any columns others then this few columns changed, it mean it need to insert an update ChangeLog.
		 DECLARE @balQtyPosition int, @csgnQtyPosition int, @realCostPosition int, @rowVerPosition int, @columnCount int, @hasChanged bit, @intFlag int, @minus int, @tempPower int
		 SELECT @balQtyPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'BalQty'
		 SELECT @csgnQtyPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'CSGNQty'
		 SELECT @realCostPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'RealCost'
		 SELECT @rowVerPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'RowVer'
		 --SELECT @columnCount = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM'
		 SELECT @columnCount = MAX(COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID')) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM'
		 SET @hasChanged = 0
		 SET @intFlag = 1
		 WHILE (@intFlag <= CEILING(@columnCount / 8.0))
		 BEGIN
			SET @minus = 0
			IF (CEILING(@balQtyPosition / 8.0) = @intFlag)
			BEGIN
			   SET @tempPower = @balQtyPosition % 8
			   IF (@tempPower = 0)
			      SET @tempPower = 8
			   SET @minus = @minus + POWER(2, (@tempPower - 1))
			END
			IF (CEILING(@csgnQtyPosition / 8.0) = @intFlag)
			BEGIN
			   SET @tempPower = @csgnQtyPosition % 8
			   IF (@tempPower = 0)
			      SET @tempPower = 8
			   SET @minus = @minus + POWER(2, (@tempPower - 1))
			END
			IF (CEILING(@realCostPosition / 8.0) = @intFlag)
			BEGIN
			   SET @tempPower = @realCostPosition % 8
			   IF (@tempPower = 0)
			      SET @tempPower = 8
			   SET @minus = @minus + POWER(2, (@tempPower - 1))
			END
			IF (CEILING(@rowVerPosition / 8.0) = @intFlag)
			BEGIN
				SET @tempPower = @rowVerPosition % 8
				IF (@tempPower = 0)
					SET @tempPower = 8
				SET @minus = @minus + POWER(2, (@tempPower - 1))
			END
			IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag, 1) & (255 - @minus)) > 0)
			BEGIN
			   SET @hasChanged = 1
			   BREAK
			END
			SET @intFlag = @intFlag + 1
		 END
		 IF @hasChanged = 1
		    INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemUOM', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
      ELSE
      BEGIN
	     --Ignore only BalQty, CSGNQty, RealCost & RowVer column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
		 --If any columns others then this few columns changed, it mean it need to insert an update ChangeLog.
		 DECLARE @balQtyPosition1 int, @csgnQtyPosition1 int, @realCostPosition1 int, @rowVerPosition1 int, @columnCount1 int, @hasChanged1 bit, @intFlag1 int, @minus1 int, @tempPower1 int
		 SELECT @balQtyPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'BalQty'
		 SELECT @csgnQtyPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'CSGNQty'
		 SELECT @realCostPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'RealCost'
		 SELECT @rowVerPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'RowVer'
		 --SELECT @columnCount1 = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM'
		 SELECT @columnCount1 = MAX(COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID')) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM'
		 SET @hasChanged1 = 0
		 SET @intFlag1 = 1
		 WHILE (@intFlag1 <= CEILING(@columnCount1 / 8.0))
		 BEGIN
			SET @minus1 = 0
			IF (CEILING(@balQtyPosition1 / 8.0) = @intFlag1)
			BEGIN
			   SET @tempPower1 = @balQtyPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			   SET @minus1 = @minus1 + POWER(2, (@tempPower1 - 1))
			END
			IF (CEILING(@csgnQtyPosition1 / 8.0) = @intFlag1)
			BEGIN
			   SET @tempPower1 = @csgnQtyPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			   SET @minus1 = @minus1 + POWER(2, (@tempPower1 - 1))
			END
			IF (CEILING(@realCostPosition1 / 8.0) = @intFlag1)
			BEGIN
			   SET @tempPower1 = @realCostPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			   SET @minus1 = @minus1 + POWER(2, (@tempPower1 - 1))
			END
			IF (CEILING(@rowVerPosition1 / 8.0) = @intFlag1)
			BEGIN
				SET @tempPower1 = @rowVerPosition1 % 8
				IF (@tempPower1 = 0)
					SET @tempPower1 = 8
				SET @minus1 = @minus1 + POWER(2, (@tempPower1 - 1))
			END
			IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag1, 1) & (255 - @minus1)) > 0)
			BEGIN
			   SET @hasChanged1 = 1
			   BREAK
			END
			SET @intFlag1 = @intFlag1 + 1
		 END
		 IF @hasChanged1 = 1
            INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemUOM', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  END
      FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemSubCodeChangeLog] ON [dbo].[ItemSubCode]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSubCode', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemSubCode'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSubCode', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemSubCode')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemSubCode')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemSubCode/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemSubCode/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemSubCode'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSubCode', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSubCode', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemBatchChangeLog] ON [dbo].[ItemBatch]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBatch', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemBatch'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBatch', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemBatch')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemBatch')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemBatch/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemBatch/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemBatch'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBatch', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBatch', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemBatchBalQtyChangeLog] ON [dbo].[ItemBatchBalQty]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBatchBalQty', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemBatchBalQty'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBatchBalQty', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemBatchBalQty')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemBatchBalQty')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemBatchBalQty/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemBatchBalQty/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemBatchBalQty'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBatchBalQty', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBatchBalQty', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemPriceChangeLog] ON [dbo].[ItemPrice]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemPrice', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemPrice'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemPrice', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemPrice')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemPrice')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemPrice/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemPrice/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemPrice'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemPrice', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemPrice', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemLocationPriceChangeLog] ON [dbo].[ItemLocationPrice]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemLocationPrice', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemLocationPrice'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemLocationPrice', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemLocationPrice')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemLocationPrice')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemLocationPrice/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemLocationPrice/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemLocationPrice'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemLocationPrice', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemLocationPrice', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemSerialNoChangeLog] ON [dbo].[ItemSerialNo]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSerialNo', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemSerialNo'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSerialNo', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemSerialNo')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemSerialNo')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemSerialNo/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemSerialNo/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemSerialNo'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
      BEGIN
	      --Ignore only Qty column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
		  DECLARE @qtyPosition int, @csgnQtyPosition int, @columnCount int, @hasChanged bit, @intFlag int, @minus int, @tempMinus int, @tempPower int
		  SELECT @qtyPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo' AND COLUMN_NAME = 'Qty'
		  SELECT @csgnQtyPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo' AND COLUMN_NAME = 'CSGNQty'
		  SELECT @columnCount = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo'
		  SET @hasChanged = 0
		  SET @intFlag = 1
		  WHILE (@intFlag <= CEILING(@columnCount / 8.0))
		  BEGIN
		     IF (CEILING(@qtyPosition / 8.0) = @intFlag)
		 	 BEGIN
			    SET @tempPower = @qtyPosition % 8
			    IF (@tempPower = 0)
			       SET @tempPower = 8
			 END
			 ELSE IF (CEILING(@csgnQtyPosition / 8.0) = @intFlag)
			 BEGIN
			    SET @tempPower = @csgnQtyPosition % 8
			    IF (@tempPower = 0)
			       SET @tempPower = 8
			 END
			 ELSE
			    SET @tempPower = 0
			 SET @minus = POWER(2, (@tempPower - 1))
			 IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag, 1) & (255 - @minus)) > 0)
			 BEGIN
			    SET @hasChanged = 1
			    BREAK
			 END
			 SET @intFlag = @intFlag + 1
		  END
		  IF @hasChanged = 1
		     INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSerialNo', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
         --INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSerialNo', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
      BEGIN
         --Ignore only Qty column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
	     DECLARE @qtyPosition1 int, @csgnQtyPosition1 int, @columnCount1 int, @hasChanged1 bit, @intFlag1 int, @minus1 int, @tempPower1 int
	     SELECT @qtyPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo' AND COLUMN_NAME = 'Qty'
	     SELECT @csgnQtyPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo' AND COLUMN_NAME = 'CSGNQty'
	     SELECT @columnCount1 = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo'
	     SET @hasChanged1 = 0
         SET @intFlag1 = 1
         WHILE (@intFlag1 <= CEILING(@columnCount1 / 8.0))
		 BEGIN
		 	IF (CEILING(@qtyPosition1 / 8.0) = @intFlag1)
		 	BEGIN
			   SET @tempPower1 = @qtyPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			END
			ELSE IF (CEILING(@csgnQtyPosition1 / 8.0) = @intFlag1)
			BEGIN
			   SET @tempPower1 = @csgnQtyPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			END
			ELSE
			   SET @tempPower1 = 0
			SET @minus1 = POWER(2, (@tempPower1 - 1))
			IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag1, 1) & (255 - @minus1)) > 0)
			BEGIN
			   SET @hasChanged1 = 1
			   BREAK
			END
			SET @intFlag1 = @intFlag1 + 1
		 END
	     IF @hasChanged1 = 1
            INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSerialNo', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  END
      FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[ItemSerialNoDtlChangeLog] ON [dbo].[ItemSerialNoDtl]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSerialNoDtl', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemSerialNoDtl'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSerialNoDtl', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemSerialNoDtl')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemSerialNoDtl')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemSerialNoDtl/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemSerialNoDtl/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemSerialNoDtl'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSerialNoDtl', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSerialNoDtl', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[SerialNoTransChangeLog] ON [dbo].[SerialNoTrans]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'SerialNoTrans', Guid, REPLACE((SELECT inserted.* FOR XML RAW('SerialNoTrans'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'SerialNoTrans', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('SerialNoTrans')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('SerialNoTrans')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/SerialNoTrans/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/SerialNoTrans/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('SerialNoTrans'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('SerialNoTrans', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('SerialNoTrans', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[MemberChangeLog] ON [dbo].[Member]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Member', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Member'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Member', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Member')), '&#x00;','') FROM deleted
   OPEN deleted_cur1
   DECLARE inserted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Member')), '&#x00;','') FROM inserted
   OPEN inserted_cur1
   FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur1 INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Member/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Member/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Member'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Member', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Member', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur1
   DEALLOCATE deleted_cur1
   CLOSE inserted_cur1
   DEALLOCATE inserted_cur1
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[MemberBalPointChangeLog] ON [dbo].[MemberBalPoint]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'MemberBalPoint', Guid, REPLACE((SELECT inserted.* FOR XML RAW('MemberBalPoint'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'MemberBalPoint', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('MemberBalPoint')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('MemberBalPoint')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/MemberBalPoint/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/MemberBalPoint/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('MemberBalPoint'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('MemberBalPoint', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('MemberBalPoint', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[MemberTypeChangeLog] ON [dbo].[MemberType]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'MemberType', Guid, REPLACE((SELECT inserted.* FOR XML RAW('MemberType'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'MemberType', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('MemberType')), '&#x00;','') FROM deleted
   OPEN deleted_cur1
   DECLARE inserted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('MemberType')), '&#x00;','') FROM inserted
   OPEN inserted_cur1
   FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur1 INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/MemberType/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/MemberType/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('MemberType'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('MemberType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('MemberType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur1
   DEALLOCATE deleted_cur1
   CLOSE inserted_cur1
   DEALLOCATE inserted_cur1
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[PackageChangeLog] ON [dbo].[Package]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Package', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Package'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Package', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Package')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Package')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Package/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Package/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Package'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Package', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Package', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[PackageDtlChangeLog] ON [dbo].[PackageDTL]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION

IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'PackageDtl', A.Guid, (SELECT A.*, B.Guid AS DocKeyGuid FOR XML RAW('PackageDtl'), BINARY BASE64), 'X', 'I', GETDATE(), @transactionid FROM inserted A INNER JOIN Package B ON A.DocKey = B.DocKey
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'PackageDtl', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('PackageDtl')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('PackageDtl')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/PackageDtl/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/PackageDtl/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('PackageDtl'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('PackageDtl', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('PackageDtl', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[PaymentMethodChangeLog] ON [dbo].[PaymentMethod]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'PaymentMethod', Guid, REPLACE((SELECT inserted.* FOR XML RAW('PaymentMethod'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'PaymentMethod', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('PaymentMethod')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('PaymentMethod')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/PaymentMethod/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/PaymentMethod/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('PaymentMethod'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('PaymentMethod', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('PaymentMethod', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[LocationChangeLog] ON [dbo].[Location]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Location', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Location'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Location', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Location')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Location')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Location/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Location/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) AND 
	  --Ignore only LastStartSyncTime, LastFinishSyncTime & LastTransFinishSyncTime column change.
	  (coalesce(XML1.NodeName, XML2.NodeName) <> 'LastStartSyncTime' and coalesce(XML1.NodeName, XML2.NodeName) <> 'LastFinishSyncTime' and coalesce(XML1.NodeName, XML2.NodeName) <> 'LastTransFinishSyncTime')
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Location'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Location', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Location', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[RaceChangeLog] ON [dbo].[Race]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Race', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Race'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Race', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Race')), '&#x00;','') FROM deleted
   OPEN deleted_cur1
   DECLARE inserted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Race')), '&#x00;','') FROM inserted
   OPEN inserted_cur1
   FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur1 INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Race/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Race/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Race'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Race', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Race', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur1
   DEALLOCATE deleted_cur1
   CLOSE inserted_cur1
   DEALLOCATE inserted_cur1
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[SalesAgentChangeLog] ON [dbo].[SalesAgent]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'SalesAgent', Guid, REPLACE((SELECT inserted.* FOR XML RAW('SalesAgent'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'SalesAgent', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('SalesAgent')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('SalesAgent')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/SalesAgent/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/SalesAgent/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('SalesAgent'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('SalesAgent', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('SalesAgent', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[TariffChangeLog] ON [dbo].[Tariff]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Tariff', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Tariff'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Tariff', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Tariff')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Tariff')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Tariff/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Tariff/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Tariff'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Tariff', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Tariff', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[TaxTypeChangeLog] ON [dbo].[TaxType]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'TaxType', Guid, REPLACE((SELECT inserted.* FOR XML RAW('TaxType'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'TaxType', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('TaxType')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('TaxType')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/TaxType/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/TaxType/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('TaxType'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('TaxType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('TaxType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[UDFChangeLog] ON [dbo].[UDF]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'UDF', Guid, REPLACE((SELECT inserted.* FOR XML RAW('UDF'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'UDF', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('UDF')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('UDF')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/UDF/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/UDF/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('UDF'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDF', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDF', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[UDFLayoutChangeLog] ON [dbo].[UDFLayout]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'UDFLayout', Guid, REPLACE((SELECT inserted.* FOR XML RAW('UDFLayout'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'UDFLayout', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('UDFLayout')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('UDFLayout')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/UDFLayout/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/UDFLayout/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('UDFLayout'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDFLayout', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDFLayout', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[UDFListChangeLog] ON [dbo].[UDFList]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'UDFList', Guid, REPLACE((SELECT inserted.* FOR XML RAW('UDFList'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'UDFList', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('UDFList')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('UDFList')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/UDFList/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/UDFList/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('UDFList'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDFList', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDFList', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

CREATE TRIGGER [dbo].[UserScriptChangeLog] ON [dbo].[UserScript]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'UserScript', Guid, REPLACE((SELECT inserted.* FOR XML RAW('UserScript'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'UserScript', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('UserScript')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('UserScript')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/UserScript/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/UserScript/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('UserScript'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UserScript', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UserScript', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/****** Object:  Table [dbo].[UserFormula]    Script Date: 07/26/2016 15:28:17 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[UserFormula]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[UserFormula](
	[FormulaName] [nvarchar](60) NOT NULL,
	[ColumnName] [nvarchar](60) NOT NULL,
	[FormulaType] [nvarchar](20) NOT NULL,
	[Formula] [nvarchar](max) NULL,
	[LastUpdate] [bigint] NULL,
 CONSTRAINT [PK_UserFormula] PRIMARY KEY CLUSTERED 
(
	[FormulaName] ASC,
	[ColumnName] ASC,
	[FormulaType] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO

�--A2006.SQL
INSERT INTO [UserGroup] VALUES ('ADMINS', 'Administrators of the system', 0);
INSERT INTO [UserGroup] VALUES ('FINANCEMGR', 'Finance Manager Group', 0);
INSERT INTO [UserGroup] VALUES ('ACCOUNTS', 'Account Clerks Group', 0);
INSERT INTO [UserGroup] VALUES ('SALES', 'Salesman Group', 0);
INSERT INTO [UserGroup] VALUES ('PURCHASES', 'Purchasing Group', 0);
INSERT INTO [UserGroup] VALUES ('INVMGR', 'Sales/Purchase/Stock Manager Group', 0);
INSERT INTO [UserGroup] VALUES ('STOCKS', 'Stock Clerk Group', 0);
INSERT INTO [Users] (UserID, UserName, Department, Passwd, FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate) VALUES ('ADMIN', 'Administrator', 'Admin', 'SUErIlpvbDtocWdEZXZ6dw==YOS3vbd6aQ8SswMUTto7fYmVYYhSyfOxtAisSMLHvfAMzvnlr62HlTTjUS1X/NLdEBk2S7IxU3Xho9IkU1oCdA==', 'F', 'F', 'T', 0);
INSERT INTO [Users] (UserID, UserName, Department, Passwd, FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate) VALUES ('AOTG', 'AOTG Client', '', '', 'F', 'F', 'T', 0);
INSERT INTO [UsersGroup] VALUES ('ADMIN', 'ADMINS');
INSERT INTO [UsersGroup] VALUES ('AOTG', 'ADMINS');

INSERT INTO [Registry] VALUES (1, 256, 'AutoCount 2006 Database');
INSERT INTO [Registry] VALUES (2, 256, '2.1.0');

INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('CP', 'CAPITAL', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('RE', 'RETAINED EARNING', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('FA', 'FIXED ASSETS', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('OA', 'OTHER ASSETS', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('CA', 'CURRENT ASSETS', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('CL', 'CURRENT LIABILITIES', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('LL', 'LONG TERM LIABILITIES', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('OL', 'OTHER LIABILITIES', '', 'T', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('SL', 'SALES', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('SA', 'SALES ADJUSTMENTS', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('CO', 'COST OF GOODS SOLD', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('OI', 'OTHER INCOMES', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('EI', 'EXTRA-ORDINARY INCOME', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('EP', 'EXPENSES', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('TX', 'TAXATION', '', 'F', 'T');
INSERT INTO [AccType] (AccType, Description, Desc2, IsBSType, IsSystemType) VALUES ('AP', 'APPROPRIATION A/C', '', 'F', 'T');

INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('BANK', '0', 'Bank Journal');
INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('CASH', '0', 'Petty Cash Journal');
INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('GENERAL', '1', 'General Journal');
INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('SALES', '2', 'Sales Journal');
INSERT INTO [Journal] (JournalType, EntryType, Description) VALUES ('PURCHASE', '3', 'Purchase Journal');

--INSERT INTO [Registry] VALUES (400, 256, 'SALES');
--INSERT INTO [Registry] VALUES (402, 256, 'SALES');
--INSERT INTO [Registry] VALUES (403, 256, 'SALES');
--INSERT INTO [Registry] VALUES (404, 256, 'SALES');
--INSERT INTO [Registry] VALUES (405, 256, 'PURCHASE');
--INSERT INTO [Registry] VALUES (408, 256, 'PURCHASE');
--INSERT INTO [Registry] VALUES (409, 256, 'PURCHASE');
--INSERT INTO [Registry] VALUES (410, 256, 'GENERAL');

INSERT INTO [Terms] (DisplayTerm, Terms,LastUpdate) VALUES ('C.O.D.', 'C.O.D.', 0);
INSERT INTO [Terms] (DisplayTerm, Terms,LastUpdate) VALUES ('Net 30 days', 'Net 30 days', 0);
INSERT INTO [Terms] (DisplayTerm, Terms,LastUpdate) VALUES ('Net 45 days', 'Net 45 days', 0);
INSERT INTO [Terms] (DisplayTerm, Terms,LastUpdate) VALUES ('Net 60 days', 'Net 60 days', 0);
INSERT INTO [Terms] (DisplayTerm, Terms,LastUpdate) VALUES ('Net 90 days', 'Net 90 days', 0);

INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (1, 'A', 'SL', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (2, 'A', 'SA', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (3, 'A', 'CO', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (4, 'S', NULL, 'GROSS PROFIT/(LOSS)', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (5, 'A', 'OI', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (6, 'A', 'EP', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (7, 'N', NULL, 'NET PROFIT/(LOSS)', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (8, 'A', 'TX', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (9, 'S', NULL, 'NET PROFIT/(LOSS) AFTER TAXATION', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (10, 'A', 'EI', '', 'T');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (11, 'A', 'AP', '', 'F');
INSERT INTO [PLFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (12, 'S', NULL, 'NET PROFIT/(LOSS) AFTER APPROPRIATION', 'T');

INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (1, 'A', 'FA', '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (2, 'A', 'OA', '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (3, 'A', 'CA', '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (4, 'A', 'CL', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (5, 'N', NULL, 'NET CURRENT ASSETS', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (6, 'S', NULL, '', 'F');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (7, 'F', NULL, 'FINANCED BY', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (8, 'A', 'CP', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (9, 'A', 'RE', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (10, 'A', 'LL', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (11, 'A', 'OL', '', 'T');
INSERT INTO [BSFormat] (Seq, RowType, AccType, Description, CreditAsPositive) VALUES (12, 'S', NULL, '', 'T');

INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (1, 'SL', 'C', 'GP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (2, 'SA', 'D', 'GP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (3, 'CO', 'D', 'GP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (4, 'OI', 'C', 'NP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (5, 'EP', 'D', 'NP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (6, 'TX', 'D', 'TX');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (7, 'EI', 'C', 'AP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (8, 'AP', 'D', 'AP');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (1, 'FA', 'D', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (2, 'OA', 'D', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (3, 'CA', 'D', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (4, 'CL', 'C', 'AS');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (5, 'CP', 'C', 'FN');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (6, 'RE', 'C', 'FN');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (7, 'LL', 'C', 'FN');
INSERT INTO [AccGroup] (Seq, AccType, NormalBalance, [Group]) VALUES (8, 'OL', 'C', 'FN');

INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Sales Footer 1', 'T', 'T', 'T', 'F', 'F', 2, 'F');
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Sales Footer 2', 'T', 'T', 'T', 'F', 'F', 2, 'F');
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Sales Footer 3', 'T', 'T', 'T', 'F', 'F', 2, 'F');
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Purchase Footer 1', 'T', 'T', 'T', 'F', 'F', 2, 'F');
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Purchase Footer 2', 'T', 'T', 'T', 'F', 'F', 2, 'F');
INSERT INTO [Footer] ([FooterName], [AddToNetTotal], [AddToAnalysisNetTotal], [PostToGL], [Enable], [ParamVisible], [ParamDecimal], [ParamFromPercent]) VALUES ('Purchase Footer 3', 'T', 'T', 'T', 'F', 'F', 2, 'F');

INSERT INTO [DocNoFormat] VALUES ('QT Default', 'QT', 1, 'QT-<000000>', 'QT-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('SO Default', 'SO', 1, 'SO-<000000>', 'SO-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('DO Default', 'DO', 1, 'DO-<000000>', 'DO-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('IV Default', 'IV', 1, 'I-<000000>', 'I-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('CS Default', 'CS', 1, 'CS-<000000>', 'CS-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('CN Default', 'CN', 1, 'CN-<000000>', 'CN-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('DN Default', 'DN', 1, 'DN-<000000>', 'DN-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('XS Default', 'XS', 1, 'XS-<000000>', 'XS-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('DR Default', 'DR', 1, 'DR-<000000>', 'DR-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('CG Default', 'CG', 1, 'CG-<000000>', 'CG-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('CR Default', 'CR', 1, 'CR-<000000>', 'CR-000001', 'T', 'F', Null);

INSERT INTO [DocNoFormat] VALUES ('PQ Default', 'PQ', 1, 'PQ-<000000>', 'PQ-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('RQ Default', 'RQ', 1, 'RQ-<000000>', 'RQ-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('PO Default', 'PO', 1, 'PO-<000000>', 'PO-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('GR Default', 'GR', 1, 'GR-<000000>', 'GR-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('PI Default', 'PI', 1, 'PI-<000000>', 'PI-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('CP Default', 'CP', 1, 'CP-<000000>', 'CP-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('PD Default', 'PD', 1, 'DN-<000000>', 'DN-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('PR Default', 'PR', 1, 'PR-<000000>', 'PR-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('XP Default', 'XP', 1, 'XP-<000000>', 'XP-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('GT Default', 'GT', 1, 'GT-<000000>', 'GT-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('PG Default', 'PG', 1, 'PG-<000000>', 'PG-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('NR Default', 'NR', 1, 'NR-<000000>', 'NR-000001', 'T', 'F', Null);

INSERT INTO [DocNoFormat] VALUES ('UOM Default', 'UC', 1, 'UOM-<000000>', 'UOM-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('XFER Default', 'ST', 1, 'XFER-<000000>', 'XFER-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('ADJ Default', 'SA', 1, 'ADJ-<000000>', 'ADJ-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('SR Default', 'SR', 1, 'SR-<000000>', 'SR-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('SI Default', 'SI', 1, 'SI-<000000>', 'SI-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('WOFF Default', 'WO', 1, 'WOFF-<000000>', 'WOFF-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('ASM Default', 'AS', 1, 'ASM-<000000>', 'ASM-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('UCost Default', 'UT', 1, 'UT-<000000>', 'UT-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('SK Default', 'SK', 1, 'SK-<000000>', 'SK-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('DA Default', 'DA', 1, 'DA-<000000>', 'DA-000001', 'T', 'F', Null);

INSERT INTO [DocNoFormat] VALUES ('PV Default', 'PV', 1, 'PV-<000000>', 'PV-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('RV Default', 'OR', 1, 'OR-<000000>', 'OR-000001', 'T', 'F', Null);
INSERT INTO [DocNoFormat] VALUES ('JV Default', 'JE', 1, 'JV-<000000>', 'JV-000001', 'T', 'F', Null);

INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (1, 'MultiPrice', 'Use Multi Pricing', 'T', 'T');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (2, 'LastIV', 'Use Last Invoice/Cash Sale Price', 'T', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (3, 'LastSO', 'Use Last Sales Order Price', 'T', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (4, 'LastQT', 'Use Last Quotation Price', 'T', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (5, 'PriceBook', 'Use Price Book', 'T', 'T');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (1, 'LastPI', 'Use Last Purchase Invoice/Cash Purchase Price', 'F', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (2, 'LastPO', 'Use Last Purchase Order Price', 'F', 'F');
INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (3, 'PriceBook', 'Use Price Book', 'F', 'F');

INSERT INTO [Currency] VALUES ('MYR', 'RINGGIT MALAYSIA', N'??', 'RM', 1, 1, NULL, NULL, NULL, 0, NEWID());

INSERT INTO [Location] (Location, Description, IsActive, LastUpdate, Guid) VALUES ('HQ', 'Headquarter', 'T', 0, NEWID());

INSERT INTO [CNType] (CNType, Description, IsActive, LastUpdate) VALUES ('RETURN', 'GOODS RETURN', 'T', 0);
INSERT INTO [CNType] (CNType, Description, IsActive, LastUpdate) VALUES ('DISCOUNT', 'DISCOUNT', 'T', 0);

INSERT INTO [ChangeCount] VALUES ('Account', 0);
INSERT INTO [ChangeCount] VALUES ('PaymentMethod', 0);
INSERT INTO [ChangeCount] VALUES ('DocNoFormat', 0);
INSERT INTO [ChangeCount] VALUES ('AccType', 0);
INSERT INTO [ChangeCount] VALUES ('Address', 0);
INSERT INTO [ChangeCount] VALUES ('SalesAgent', 0);
INSERT INTO [ChangeCount] VALUES ('PurchaseAgent', 0);
INSERT INTO [ChangeCount] VALUES ('DebtorType', 0);
INSERT INTO [ChangeCount] VALUES ('CreditorType', 0);
INSERT INTO [ChangeCount] VALUES ('CNType', 0);
INSERT INTO [ChangeCount] VALUES ('DNType', 0);
INSERT INTO [ChangeCount] VALUES ('Tariff', 0)
INSERT INTO [ChangeCount] VALUES ('Area', 0);
INSERT INTO [ChangeCount] VALUES ('Branch', 0);
INSERT INTO [ChangeCount] VALUES ('Creditor', 0);
INSERT INTO [ChangeCount] VALUES ('Currency', 0);
INSERT INTO [ChangeCount] VALUES ('CurrRate', 0);
INSERT INTO [ChangeCount] VALUES ('Debtor', 0);
INSERT INTO [ChangeCount] VALUES ('Department', 0);
INSERT INTO [ChangeCount] VALUES ('PriceCategory', 0);
INSERT INTO [ChangeCount] VALUES ('Item', 0);
INSERT INTO [ChangeCount] VALUES ('ItemType', 0);
INSERT INTO [ChangeCount] VALUES ('ItemBrand', 0);
INSERT INTO [ChangeCount] VALUES ('ItemClass', 0);
INSERT INTO [ChangeCount] VALUES ('ItemCategory', 0);
INSERT INTO [ChangeCount] VALUES ('ItemBOM', 0);
INSERT INTO [ChangeCount] VALUES ('ItemUOM', 0);
INSERT INTO [ChangeCount] VALUES ('ItemBatch', 0);
INSERT INTO [ChangeCount] VALUES ('ItemGroup', 0);
INSERT INTO [ChangeCount] VALUES ('JournalType', 0);
INSERT INTO [ChangeCount] VALUES ('Location', 0);
INSERT INTO [ChangeCount] VALUES ('Project', 0);
INSERT INTO [ChangeCount] VALUES ('TaxType', 0);
INSERT INTO [ChangeCount] VALUES ('Terms', 0);
INSERT INTO [ChangeCount] VALUES ('Users', 0);
INSERT INTO [ChangeCount] VALUES ('UserGroup', 0);
INSERT INTO [ChangeCount] VALUES ('CB', 0);
INSERT INTO [ChangeCount] VALUES ('JE', 0);
INSERT INTO [ChangeCount] VALUES ('QT', 0);
INSERT INTO [ChangeCount] VALUES ('SO', 0);
INSERT INTO [ChangeCount] VALUES ('DO', 0);
INSERT INTO [ChangeCount] VALUES ('IV', 0);
INSERT INTO [ChangeCount] VALUES ('CS', 0);
INSERT INTO [ChangeCount] VALUES ('DN', 0);
INSERT INTO [ChangeCount] VALUES ('CN', 0);
INSERT INTO [ChangeCount] VALUES ('XS', 0);
INSERT INTO [ChangeCount] VALUES ('DR', 0);
INSERT INTO [ChangeCount] VALUES ('PQ', 0);
INSERT INTO [ChangeCount] VALUES ('RQ', 0);
INSERT INTO [ChangeCount] VALUES ('PO', 0);
INSERT INTO [ChangeCount] VALUES ('GR', 0);
INSERT INTO [ChangeCount] VALUES ('PI', 0);
INSERT INTO [ChangeCount] VALUES ('CP', 0);
INSERT INTO [ChangeCount] VALUES ('PR', 0);
INSERT INTO [ChangeCount] VALUES ('XP', 0);
INSERT INTO [ChangeCount] VALUES ('GT', 0);
INSERT INTO [ChangeCount] VALUES ('XFER', 0);
INSERT INTO [ChangeCount] VALUES ('ADJ', 0);
INSERT INTO [ChangeCount] VALUES ('ISS', 0);
INSERT INTO [ChangeCount] VALUES ('RCV', 0);
INSERT INTO [ChangeCount] VALUES ('WOFF', 0);
INSERT INTO [ChangeCount] VALUES ('UOMConv', 0);
INSERT INTO [ChangeCount] VALUES ('UpdateCost', 0);
INSERT INTO [ChangeCount] VALUES ('ASM', 0);
INSERT INTO [ChangeCount] VALUES ('Consignment', 0);
INSERT INTO [ChangeCount] VALUES ('ConsignmentReturn', 0);
INSERT INTO [ChangeCount] VALUES ('PurchaseConsignment', 0);
INSERT INTO [ChangeCount] VALUES ('PurchaseConsignmentReturn', 0);
INSERT INTO [ChangeCount] VALUES ('ARInvoice', 0);
INSERT INTO [ChangeCount] VALUES ('ARDN', 0);
INSERT INTO [ChangeCount] VALUES ('ARCN', 0);
INSERT INTO [ChangeCount] VALUES ('ARPayment', 0);
INSERT INTO [ChangeCount] VALUES ('ARRefund', 0);
INSERT INTO [ChangeCount] VALUES ('ARDeposit', 0);
INSERT INTO [ChangeCount] VALUES ('ARAPContra', 0);
INSERT INTO [ChangeCount] VALUES ('APInvoice', 0);
INSERT INTO [ChangeCount] VALUES ('APDN', 0);
INSERT INTO [ChangeCount] VALUES ('APCN', 0);
INSERT INTO [ChangeCount] VALUES ('APPayment', 0);
INSERT INTO [ChangeCount] VALUES ('APRefund', 0);
INSERT INTO [ChangeCount] VALUES ('APDeposit', 0);
INSERT INTO [ChangeCount] VALUES ('StockTake', 0);
INSERT INTO [ChangeCount] VALUES ('StockDisassembly', 0);
INSERT INTO [ChangeCount] VALUES ('PostingAccountGroup', 0);
GO

INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('QT', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('SO', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('SO', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('SO', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('SO', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('SO', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('DO', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('DO', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('DO', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('DO', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('DO', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('IV', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('IV', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('IV', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('IV', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('IV', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('IV', '5', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'T', 'T', 'T', 'T', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CS', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CS', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CS', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CS', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CS', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CN', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CN', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CN', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CN', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CN', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('DN', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('XS', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('XS', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('XS', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('XS', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('DR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('DR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('DR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('DR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CG', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');

INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('RQ', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PO', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PO', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PO', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PO', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PO', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('GR', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('GR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('GR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('GR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('GR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PI', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PI', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PI', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PI', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PI', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CP', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CP', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CP', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CP', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CP', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PR', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('XP', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('XP', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('XP', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('XP', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('GT', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('GT', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('GT', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('GT', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PG', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('NR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('NR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('NR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('NR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

INSERT INTO [RemarkName] VALUES ('QT', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('DO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('IV', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CS', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('DN', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CN', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('XS', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('DR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('RQ', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PQ', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('GR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PI', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CP', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('XP', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('GT', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CG', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('CR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('PG', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('NR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('ST', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SA', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SI', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('WO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('AS', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('AO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('SK', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
INSERT INTO [RemarkName] VALUES ('DA', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
GO

--A2006-1.0.8.0.SQL
INSERT INTO [ChangeCount] VALUES ('Profile', 0);
GO

--A2006-1.0.8.3.SQL
INSERT INTO [ChangeCount] VALUES ('ShippingMethod', 0);
GO

--A2006-1.0.8.5.SQL
if not exists (select * from ChangeCount where TableName = 'BonusPointAccount')
INSERT INTO [ChangeCount] VALUES ('BonusPointAccount', 0);
GO

--A2006-1.0.8.20.SQL
if not exists (select * from DocNoFormat where Name = 'ASM Order Default')
INSERT INTO [DocNoFormat] VALUES ('ASM Order Default', 'AO', 1, 'AO-<000000>', 'AO-000001', 'T', 'F', Null);
GO

if not exists (select * from ChangeCount where TableName = 'ASMOrder')
INSERT INTO [ChangeCount] VALUES ('ASMOrder', 0);
GO

--A2006-1.0.8.25.SQL
INSERT INTO [DocNoFormat] VALUES ('BP Redeem Default', 'BR', 1, 'BR-<000000>', 'BR-000001', 'T', 'F', Null);
GO
INSERT INTO [ChangeCount] VALUES ('BonusPointRedemption', 0);
GO

--A2006-1.0.9.7.SQL
if not exists (select * from [ChangeCount] where TableName = 'Race') 
  INSERT INTO [ChangeCount] VALUES('Race',0);
GO

if not exists (select * from [ChangeCount] where TableName = 'MemberType') 
  INSERT INTO [ChangeCount] VALUES('MemberType',0);
GO

if not exists (select * from [ChangeCount] where TableName = 'Member') 
  INSERT INTO [ChangeCount] VALUES('Member',0);
GO

if not exists (select * from [ChangeCount] where TableName = 'ItemPackage') 
  INSERT INTO [ChangeCount] VALUES ('ItemPackage', 0)
GO

--A2006-1.0.9.29.SQL
if not exists (select * from MemberType where MemberType = 'Default')
INSERT INTO [MemberType] VALUES ('Default', 'Default', 1, NEWID());
GO

if not exists (select * from Race where Race = 'Malay')
INSERT INTO [Race] VALUES ('Malay', 'Malay', NEWID());
GO

if not exists (select * from Race where Race = 'Chinese')
INSERT INTO [Race] VALUES ('Chinese', 'Chinese', NEWID());
GO

if not exists (select * from Race where Race = 'Indian')
INSERT INTO [Race] VALUES ('Indian', 'Indian', NEWID());
GO

--A2006-1.0.9.41
if not exists (SELECT * FROM RemarkName WHERE DocType='PA')
INSERT INTO RemarkName VALUES ('PA','Remark 1','Remark 2','Remark 3','Remark 4','T','T','T','T')
GO

if not exists (SELECT * FROM ChangeCount WHERE TableName='BonusPointADJ')
INSERT INTO ChangeCount VALUES ('BonusPointADJ',0)
GO

if not exists (select * from [DocNoFormat] where Name='PA Default')
INSERT INTO [DocNoFormat] (Name, DocType, NextNumber, [Format], [Sample], IsDefault, OneMonthOneSet) VALUES ('PA Default', 'PA', 1, 'PA-<000000>', 'PA-000001', 'T', 'F')
GO

--A2006-1.0.9.47.SQL
if NOT EXISTS (SELECT * FROM [DocNoFormat] WHERE Name='GI Default')
INSERT INTO [DocNoFormat] (Name, DocType, NextNumber, [Format], [Sample], IsDefault, OneMonthOneSet) VALUES ('GI Default', 'GI', 1, 'GI-<000000>', 'GI-000001', 'T', 'F')

--AddBankSlip.SQL
if not exists (select * from [dbo].[DocNoFormat] where DocType = 'KS')
  INSERT INTO [dbo].[DocNoFormat] (Name, DocType, NextNumber, Format, Sample, IsDefault, OneMonthOneSet) VALUES ('Bank Slip Default', 'KS', 1, 'KS-<000000>', 'KS-000001', 'T', 'F')
GO

--A2006-1.0.9.62.SQL
if not exists (SELECT * FROM ChangeCount WHERE TableName='GSTCapitalGoods')
INSERT INTO ChangeCount VALUES ('GSTCapitalGoods',0)
GO

--A2006-1.0.9.63.SQL
if not exists (SELECT * FROM ChangeCount WHERE TableName='WithholdingTax')
INSERT INTO ChangeCount VALUES ('WithholdingTax',0)
GO

/* Change SQL Column Type (text, ntext, image -> varchar(max), nvarchar(max), varbinary(max)) */
DECLARE @ColTypeTable TABLE(TableName nvarchar(max), ColumnName nvarchar(max), Nullable nvarchar(10), TypeName nvarchar(100))

insert into @ColTypeTable Select tab.name, col.name, CASE WHEN col.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, CASE WHEN typ.name = 'text' THEN '[varchar](max)' WHEN typ.name = 'ntext' THEN '[nvarchar](max)' ELSE '[varbinary](max)' END AS TypeName
From sys.tables tab INNER JOIN sys.columns col ON col.object_id = tab.object_id
INNER JOIN sys.types typ ON col.user_type_id = typ.user_type_id 
WHERE typ.name IN ('text', 'ntext', 'image') 

DECLARE @tableName NVARCHAR(max)
DECLARE @colName NVARCHAR(max)
DECLARE @null NVARCHAR(10)
DECLARE @typeName NVARCHAR(100)
DECLARE @sql NVARCHAR(max)
DECLARE @cur_item cursor

SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, Nullable, TypeName From @ColTypeTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null, @typeName

WHILE @@FETCH_STATUS = 0
BEGIN
	-- change to new type
	set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @typeName + ' ' + @null
	Exec sp_executesql @sql
	IF @@ERROR <> 0
	BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	END

FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null, @typeName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GOH;-- Check and Create Accountant Table
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Accountant]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[Accountant](
		[AccountantID] [dbo].[d_EmailAddress] NOT NULL,
		[UserID] [dbo].[d_UserID] NOT NULL,
		[SchedulerData] [varbinary](max) NULL,
		[IsActive] [dbo].[d_Boolean] NULL,
	 CONSTRAINT [PK_Accountant_AccountantID] PRIMARY KEY CLUSTERED 
	(
		[AccountantID] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

-- Check and Drop Supplier CSGN View
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vSupplierConsignment]') and OBJECTPROPERTY(id, N'IsView') = 1) 
  drop view [dbo].[vSupplierConsignment]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vSupplierConsignmentDetail]') and objectproperty(id, N'IsView') = 1) 
  drop view [dbo].[vSupplierConsignmentDetail]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Accountant_UserID]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[Accountant]  WITH CHECK ADD CONSTRAINT [FK_Accountant_UserID] FOREIGN KEY([UserID])
  REFERENCES [dbo].[Users] ([UserID])
  ON UPDATE CASCADE
GO

-- Remove terminal and credit card(for pos use only)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Pos_CCType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Pos] DROP CONSTRAINT [FK_Pos_CCType]
GO

if exists (select * from dbo.sysobjects WHERE id = object_id(N'[dbo].[Terminal]') AND objectproperty(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[Terminal]
GO

if exists (select * from dbo.sysobjects WHERE id = object_id(N'[dbo].[CreditCard]') AND objectproperty(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[CreditCard]
GO

-- Check and Create DocTemplate Table
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DocTemplate]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[DocTemplate](
		[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
		[TemplateName] [nvarchar](100) NOT NULL,
		[DocType] [dbo].[d_DocType] NOT NULL,	
		[Data] [varbinary](max) NULL,
		[IsDefault] [dbo].[d_Boolean] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [d_UserID] NOT NULL,
	 CONSTRAINT [PK_DocTemplate] PRIMARY KEY CLUSTERED 
	(
		[AutoKey] ASC
	),
	 CONSTRAINT [UIX_DocTemplate_TemplateName] UNIQUE NONCLUSTERED 
	(
		[TemplateName] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DocTemplate_CreatedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DocTemplate] WITH CHECK ADD CONSTRAINT [FK_DocTemplate_CreatedUserID] FOREIGN KEY([CreatedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects WHERE id = object_id(N'[dbo].[DocTemplateUsers]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[DocTemplateUsers](
		[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
		[TemplateName] [nvarchar](100) NOT NULL,
		[UserID] [dbo].[d_UserID] NOT NULL,
	 CONSTRAINT [PK_DocTemplateUsers_AutoKey] PRIMARY KEY CLUSTERED 
	(
		[AutoKey] ASC
	),
	 CONSTRAINT [UIX_DocTemplateUsers_ItemCode_UOM] UNIQUE NONCLUSTERED
	(
		[TemplateName] ASC,
		[UserID] ASC
	)ON [PRIMARY]
	)ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DocTemplateUsers_TemplateName]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DocTemplateUsers]  WITH CHECK ADD CONSTRAINT [FK_DocTemplateUsers_TemplateName] FOREIGN KEY([TemplateName])
  REFERENCES [dbo].[DocTemplate] ([TemplateName])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Recurrence]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[Recurrence](
		[RecurrenceKey] [bigint] NOT NULL,
		[RecurrenceName] [nvarchar] (100) NULL,
		[StartDate] [datetime] NOT NULL,
		[EndType] [char] (1) NOT NULL,
		[NoOfOccurs] [int] NULL,
		[EndDate] [datetime] NULL,
		[RecurrenceDateType] [char] (1) NULL,
		[RecurrenceDay1] [dbo].[d_Boolean] NULL,
		[RecurrenceDay2] [dbo].[d_Boolean] NULL,
		[RecurrenceDay3] [dbo].[d_Boolean] NULL,
		[RecurrenceDay4] [dbo].[d_Boolean] NULL,
		[RecurrenceDay5] [dbo].[d_Boolean] NULL,
		[RecurrenceDay6] [dbo].[d_Boolean] NULL,
		[RecurrenceDay7] [dbo].[d_Boolean] NULL,
		[RecurrenceParam1] [int] NULL,
		[RecurrenceParam2] [int] NULL,
		[IsParam2FromBack] [d_Boolean] NULL,
		[IsActive] [d_Boolean] NULL,
		[AutoExecute] [d_Boolean] NOT NULL,
		[AlertUserID] [d_UserID] NULL,
		[DocType] [d_DocType] NOT NULL,
		[DocNoFormatName] [d_DocNoFormatName] NULL,
		[Data] [varbinary](max) NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [d_UserID] NOT NULL,
	CONSTRAINT [PK_Recurrence_AutoKey] PRIMARY KEY CLUSTERED 
	(
		[RecurrenceKey] ASC
	),
	CONSTRAINT [UIX_Recurrence_RecurrenceName] UNIQUE NONCLUSTERED 
	(
		[RecurrenceName] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Recurrence_AlertUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Recurrence]  WITH CHECK ADD CONSTRAINT [FK_Recurrence_AlertUserID] FOREIGN KEY([AlertUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Recurrence_CreatedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Recurrence]  WITH CHECK ADD CONSTRAINT [FK_Recurrence_CreatedUserID] FOREIGN KEY([CreatedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Recurrence_LastModifiedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Recurrence]  WITH CHECK ADD  CONSTRAINT [FK_Recurrence_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[RecurrenceDtl]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[RecurrenceDtl](
		[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
		[RecurrenceKey] [bigint] NOT NULL,
		[RecurrenceDate] [datetime] NOT NULL,
		[AccNo] [dbo].[d_AccNo] NULL,
		[Status] [nvarchar](20) NULL,
		[SourceDocKey] [bigint] NULL,
		[SourceDocNo] [dbo].[d_DocNo] NULL,
	 CONSTRAINT [PK_RecurrenceDtl_AutoKey] PRIMARY KEY CLUSTERED 
	(
		[AutoKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_RecurrenceDtl_AccNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[RecurrenceDtl]  WITH CHECK ADD  CONSTRAINT [FK_RecurrenceDtl_AccNo] FOREIGN KEY([AccNo])
  REFERENCES [dbo].[GLMast] ([AccNo])
  ON UPDATE CASCADE
GO

if not exists (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[StockTake]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[StockTake](
		[DocKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [DateTime] NOT NULL,
		[Description] [nvarchar] (100) NULL,
		[Total] [dbo].[d_Money] NULL,
		[Note] [nvarchar](max) NULL,
		[Remark1] [dbo].[d_Remark] NULL,
		[Remark2] [dbo].[d_Remark] NULL,
		[Remark3] [dbo].[d_Remark] NULL,
		[Remark4] [dbo].[d_Remark] NULL,
		[Location] [dbo].[d_Location] NULL,
		[PrintCount] [smallint] NOT NULL,
		[Cancelled] [dbo].[d_Boolean] NOT NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
		[ExternalLink] [nvarchar](max) NULL,
		[RefDocNo] [dbo].[d_DocNo] NULL,
		[LastPostedTimeStamp] [datetime] NULL,
		[ToAdjDocKey] [bigint] NULL,
		[LastUpdate] [int] NOT NULL,
		[CanSync] [dbo].[d_Boolean] NOT NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
	CONSTRAINT [PK_StockTake_DocKey] PRIMARY KEY CLUSTERED 
	(
		[DocKey] ASC
	) ON [PRIMARY],
	 CONSTRAINT [UIX_StockTake_DocNo] UNIQUE NONCLUSTERED 
	(
		[DocNo] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockTake_CreatedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockTake]  WITH CHECK ADD  CONSTRAINT [FK_StockTake_CreatedUserID] FOREIGN KEY([CreatedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockTake_LastModifiedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockTake]  WITH CHECK ADD  CONSTRAINT [FK_StockTake_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockTake_Location]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockTake]  WITH CHECK ADD  CONSTRAINT [FK_StockTake_Location] FOREIGN KEY([Location])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[StockTakeDTL]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[StockTakeDTL](
		[DtlKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL ,
		[Seq] [int] NOT NULL, 
		[Numbering] [dbo].[d_Numbering] NULL,
		[ItemCode] [dbo].[d_ItemCode] NULL,
		[BatchNo] [dbo].[d_BatchNo] NULL,
		[Description] [dbo].[d_ItemDescription] NULL,
		[FurtherDescription] [nvarchar](max) NULL,
		[UOM] [dbo].[d_UOM] NULL,
		[Shelf] [nvarchar](20) NULL,
		[BalQty] [dbo].[d_Qty] NULL,
		[PhysicalQty] [dbo].[d_Qty] NULL,
		[DiffQty] [dbo].[d_Qty] NULL,
		[UnitCost] [dbo].[d_Cost] NULL,
		[SubTotal] [dbo].[d_money] NULL,
		[Remarks] [dbo].[d_Remark] NULL,
		[PrintOut] [dbo].[d_Boolean] NOT NULL,
		[SerialNoList] [nvarchar](max) NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
	CONSTRAINT [PK_StockTakeDTL_DtlKey] PRIMARY KEY CLUSTERED 
	(
		[DtlKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * FROM sys.indexes where Name = 'IX_StockTakeDTL_DocKey')
	CREATE NONCLUSTERED INDEX [IX_StockTakeDTL_DocKey] ON [dbo].[StockTakeDTL]
	(
		[DocKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockTakeDTL_ItemBatch]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockTakeDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockTakeDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
  REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockTakeDTL_ItemUOM]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockTakeDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockTakeDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
  REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserFormula]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[UserFormula](
		[FormulaName] [nvarchar](60) NOT NULL,
		[ColumnName] [nvarchar](60) NOT NULL,
		[FormulaType] [nvarchar](20) NOT NULL,
		[Formula] [nvarchar](max) NULL,
		[LastUpdate] [bigint] NULL,
	 CONSTRAINT [PK_UserFormula] PRIMARY KEY CLUSTERED 
	(
		[FormulaName] ASC,
		[ColumnName] ASC,
		[FormulaType] ASC
	)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
	) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

/* Add Column StartScreenData in Users table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'StartScreenData')
  ALTER TABLE [dbo].[Users] ADD [StartScreenData] [varbinary](max) NULL
GO

/* Support new Stock Disassembly table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[StockDisassembly]') and objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[StockDisassembly](
		[DocKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[Description] [nvarchar](100) NULL,
		[ItemCode] [dbo].[d_ItemCode] NOT NULL,
		[Location] [dbo].[d_Location] NOT NULL,
		[BatchNo] [dbo].[d_BatchNo] NULL,
		[ProjNo] [dbo].[d_Project] NULL,
		[DeptNo] [dbo].[d_Dept] NULL,
		[Qty] [dbo].[d_Qty] NULL,
		[ItemCost] [dbo].[d_Cost] NULL,
		[Total] [dbo].[d_Money] NULL,
		[DtlTotal] [dbo].[d_Money] NULL,
		[DisassemblyCost] [dbo].[d_Money] NULL,
		[NetTotal] [dbo].[d_Money] NULL,
		[Note] [nvarchar](max) NULL,
		[Remark1] [dbo].[d_Remark] NULL,
		[Remark2] [dbo].[d_Remark] NULL,
		[Remark3] [dbo].[d_Remark] NULL,
		[Remark4] [dbo].[d_Remark] NULL,
		[PrintCount] [smallint] NULL,
		[Cancelled] [dbo].[d_Boolean] NOT NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
		[ExternalLink] [nvarchar](max) NULL,
		[RefDocNo] [dbo].[d_DocNo] NULL,
		[LastUpdate] [int] NOT NULL,
		[CanSync] [dbo].[d_Boolean] NULL,
		[SerialNoList] [nvarchar](max) NULL,
		[IsMultilevel] [dbo].[d_Boolean] NULL,
		[CostOptions] [int] NOT NULL,
		[Guid] [uniqueidentifier] NOT NULL,
	 CONSTRAINT [PK_StockDisassembly_DocKey] PRIMARY KEY CLUSTERED 
	(
		[DocKey] ASC
	)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF),
	 CONSTRAINT [UIX_StockDisassembly_DocNo] UNIQUE NONCLUSTERED 
	(
		[DocNo] ASC
	)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF),
	 CONSTRAINT [UIX_StockDisassembly_Guid] UNIQUE NONCLUSTERED 
	(
		[Guid] ASC
	)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
	)
GO

/* Create Index and Foreign Key for StockDisassembly */
if not exists (
    select *
      from sys.all_columns c
      join sys.tables t on t.object_id = c.object_id
      join sys.schemas s on s.schema_id = t.schema_id
      join sys.default_constraints d on c.default_object_id = d.object_id
    where t.name = 'StockDisassembly'
      and c.name = 'Guid'
      and s.name = 'dbo')
    ALTER TABLE [dbo].[StockDisassembly] ADD  DEFAULT (newid()) FOR [Guid]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassembly_CreatedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_CreatedUserID] FOREIGN KEY([CreatedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassembly_DeptNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_DeptNo] FOREIGN KEY([DeptNo])
  REFERENCES [dbo].[Dept] ([DeptNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassembly_ItemBatch]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
  REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassembly_LastModifiedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassembly_Location]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_Location] FOREIGN KEY([Location])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassembly_ProjNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassembly]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassembly_ProjNo] FOREIGN KEY([ProjNo])
  REFERENCES [dbo].[Project] ([ProjNo])
  ON UPDATE CASCADE
GO

/* Support new Stock Disassembly DTL table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[StockDisassemblyDTL]') and objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[StockDisassemblyDTL](
		[DtlKey] [bigint] NOT NULL,
		[DocKey] [bigint] NULL,
		[Seq] [int] NOT NULL,
		[Numbering] [dbo].[d_Numbering] NULL,
		[ItemCode] [dbo].[d_ItemCode] NULL,
		[Location] [dbo].[d_Location] NULL,
		[BatchNo] [dbo].[d_BatchNo] NULL,
		[Description] [dbo].[d_ItemDescription] NULL,
		[CostFraction] [dbo].[d_Money] NULL,
		[FurtherDescription] [nvarchar](max) NULL,
		[ProjNo] [dbo].[d_Project] NULL,
		[DeptNo] [dbo].[d_Dept] NULL,
		[Rate] [dbo].[d_Qty] NULL,
		[Qty] [dbo].[d_Qty] NULL,
		[ItemCost] [dbo].[d_Cost] NULL,
		[OverHeadCost] [money] NULL,
		[SubTotalCost] [money] NULL,
		[Remark] [dbo].[d_Remark] NULL,
		[PrintOut] [dbo].[d_Boolean] NOT NULL,
		[SerialNoList] [nvarchar](max) NULL,
		[ParentDtlKey] [bigint] NULL,
		[IsBOMItem] [dbo].[d_Boolean] NULL,
		[Guid] [uniqueidentifier] NOT NULL,
	 CONSTRAINT [PK_StockDisassemblyDTL_DtlKey] PRIMARY KEY CLUSTERED 
	(
		[DtlKey] ASC
	)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF),
	 CONSTRAINT [UIX_StockDisassemblyDTL_Guid] UNIQUE NONCLUSTERED 
	(
		[Guid] ASC
	)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
	)
GO

/* Create Index and Foreign Key for StockDisassemblyDTL */
if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[StockDisassemblyDTL]') and name = N'IX_StockDisassemblyDTL_DocKey')
	CREATE NONCLUSTERED INDEX [IX_StockDisassemblyDTL_DocKey] ON [dbo].[StockDisassemblyDTL]
	(
		[DocKey] ASC
	)WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF)
GO

if not exists (
    select *
      from sys.all_columns c
      join sys.tables t on t.object_id = c.object_id
      join sys.schemas s on s.schema_id = t.schema_id
      join sys.default_constraints d on c.default_object_id = d.object_id
    where t.name = 'StockDisassemblyDTL'
      and c.name = 'Guid'
      and s.name = 'dbo')
    ALTER TABLE [dbo].[StockDisassemblyDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassemblyDTL_DeptNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassemblyDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassemblyDTL_DeptNo] FOREIGN KEY([DeptNo])
  REFERENCES [dbo].[Dept] ([DeptNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassemblyDTL_ItemBatch]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassemblyDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassemblyDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
  REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassemblyDTL_ItemCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassemblyDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassemblyDTL_ItemCode] FOREIGN KEY([ItemCode])
  REFERENCES [dbo].[Item] ([ItemCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassemblyDTL_Location]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassemblyDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassemblyDTL_Location] FOREIGN KEY([Location])
  REFERENCES [dbo].[Location] ([Location])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StockDisassemblyDTL_ProjNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[StockDisassemblyDTL]  WITH CHECK ADD  CONSTRAINT [FK_StockDisassemblyDTL_ProjNo] FOREIGN KEY([ProjNo])
  REFERENCES [dbo].[Project] ([ProjNo])
  ON UPDATE CASCADE
GO

if not exists (select * from [RemarkName] where DocType='DA')
  INSERT INTO [RemarkName] VALUES ('DA', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
GO

if not exists (select * from [DocNoFormat] where DocType='DA')
  INSERT INTO [DocNoFormat] (Name, DocType, NextNumber, [Format], [Sample], IsDefault, OneMonthOneSet) VALUES ('DA Default', 'DA', 1, 'DA-<000000>', 'DA-000001', 'T', 'F');
GO

/* Support UpdateStockDisassemblyChangeCount trigger */
if not exists (select * from ChangeCount where TableName = 'StockDisassembly')
   INSERT INTO [ChangeCount] VALUES ('StockDisassembly', 0);
GO
  
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateStockDisassemblyChangeCount]') and objectproperty(id, N'IsTrigger') = 1)
	drop trigger [dbo].[UpdateStockDisassemblyChangeCount]
GO

CREATE TRIGGER [dbo].[UpdateStockDisassemblyChangeCount] ON [dbo].[StockDisassembly]
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='StockDisassembly'
SET NOCOUNT OFF
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemBOM]') and name = N'CostFraction') 
  ALTER TABLE [dbo].[ItemBOM] ADD [CostFraction] [d_Money] NULL
GO

/*Update ARAP Deposit database structure*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDepositDTL_BankChargeProjNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDepositDTL] DROP CONSTRAINT [FK_ARDepositDTL_BankChargeProjNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDepositDTL_BankChargeDeptNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDepositDTL] DROP CONSTRAINT [FK_ARDepositDTL_BankChargeDeptNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDepositDTL_BankChargeTaxType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDepositDTL] DROP CONSTRAINT [FK_ARDepositDTL_BankChargeTaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDepositDTL_PaymentMethod]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDepositDTL] DROP CONSTRAINT [FK_ARDepositDTL_PaymentMethod]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APDepositDTL_BankChargeProjNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDepositDTL] DROP CONSTRAINT [FK_APDepositDTL_BankChargeProjNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APDepositDTL_BankChargeDeptNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDepositDTL] DROP CONSTRAINT [FK_APDepositDTL_BankChargeDeptNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APDepositDTL_BankChargeTaxType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDepositDTL] DROP CONSTRAINT [FK_APDepositDTL_BankChargeTaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APDepositDTL_PaymentMethod]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDepositDTL] DROP CONSTRAINT [FK_APDepositDTL_PaymentMethod]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ARDepositPaymentDTL]') AND objectproperty(id, N'IsUserTable') = 1)
begin
	CREATE TABLE [dbo].[ARDepositPaymentDTL](
		[DtlKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
		[PaymentBy] [dbo].[d_PaymentBy] NULL,
		[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
		[ChequeNo] [dbo].[d_ChequeNo] NULL,
		[FloatDay] [smallint] NULL,
		[BankCharge] [dbo].[d_Money] NULL,
		[PaymentAmt] [dbo].[d_Money] NULL,
		[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
		[RCHQDate] [datetime] NULL,
		[BankChargeDtlKey] [bigint] NULL,
		[BankChargeProjNo] [dbo].[d_Project] NULL,
		[BankChargeDeptNo] [dbo].[d_Dept] NULL,
		[BankChargeTaxType] [dbo].[d_TaxType] NULL,
		[BankChargeTaxRate] [dbo].[d_Percent] NULL,
		[BankChargeTax] [dbo].[d_Money] NULL,
		[BankChargeTaxRefNo] [nvarchar](30) NULL,
	CONSTRAINT [PK_ARDepositPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED 
	(
		[DtlKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
	
	INSERT INTO ARDepositPaymentDTL (DtlKey, DocKey, Seq, PaymentMethod, PaymentBy, ToBankRate, ChequeNo, FloatDay, BankCharge,
	PaymentAmt, IsRCHQ, RCHQDate, BankChargeDtlKey, BankChargeProjNo, BankChargeDeptNo, BankChargeTaxType, BankChargeTaxRate, BankChargeTax, BankChargeTaxRefNo) 
	SELECT DtlKey, DocKey, Seq, PaymentMethod, PaymentBy, ToBankRate, ChequeNo, FloatDay, BankCharge,
	PaymentAmt, IsRCHQ, RCHQDate, BankChargeDtlKey, BankChargeProjNo, BankChargeDeptNo, BankChargeTaxType, BankChargeTaxRate, BankChargeTax, BankChargeTaxRefNo FROM ARDepositDTL
	
	DROP TABLE ARDepositDTL
end
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ARDepositForfeit]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ARDepositForfeit](
		[ForfeitKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[Description] [nvarchar](40) NULL,
		[ForfeitedAmt] [dbo].[d_Money] NULL,
		[ForfeitedAccNo] [dbo].[d_AccNo] NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	 CONSTRAINT [PK_ARDepositForfeit_ForfeitKey] PRIMARY KEY CLUSTERED 
	(
		[ForfeitKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ARDepositRefund]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ARDepositRefund](
		[RefundKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[Name] [dbo].[d_AccDescription] NULL,
		[Description] [nvarchar](40) NULL,
		[Note] [nvarchar](max) NULL,
		[RefundAmt] [dbo].[d_Money] NULL,
		[CBKey] [bigint] NULL,
		[PrintCount] [smallint] NOT NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	 CONSTRAINT [PK_ARDepositRefund_RefundKey] PRIMARY KEY CLUSTERED 
	(
		[RefundKey] ASC
	) ON [PRIMARY],
	 CONSTRAINT [IX_ARDepositRefund_DocNo] UNIQUE NONCLUSTERED  
	(
		[DocNo] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ARDepositRefundPaymentDTL]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ARDepositRefundPaymentDTL](
		[DtlKey] [bigint] NOT NULL,
		[RefundKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
		[PaymentBy] [dbo].[d_PaymentBy] NULL,
		[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
		[ChequeNo] [dbo].[d_ChequeNo] NULL,
		[FloatDay] [smallint] NULL,
		[BankCharge] [dbo].[d_Money] NULL,
		[PaymentAmt] [dbo].[d_Money] NULL,
		[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
		[RCHQDate] [datetime] NULL,
		[BankChargeDtlKey] [bigint] NULL,
		[BankChargeProjNo] [dbo].[d_Project] NULL,
		[BankChargeDeptNo] [dbo].[d_Dept] NULL,
		[BankChargeTaxType] [dbo].[d_TaxType] NULL,
		[BankChargeTaxRate] [dbo].[d_Percent] NULL,
		[BankChargeTax] [dbo].[d_Money] NULL,
		[BankChargeTaxRefNo] [nvarchar](30) NULL,
	 CONSTRAINT [PK_ARDepositRefundPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED  
	(
		[DtlKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[APDepositPaymentDTL]') AND objectproperty(id, N'IsUserTable') = 1)
begin
	CREATE TABLE [dbo].[APDepositPaymentDTL](
		[DtlKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
		[PaymentBy] [dbo].[d_PaymentBy] NULL,
		[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
		[ChequeNo] [dbo].[d_ChequeNo] NULL,
		[FloatDay] [smallint] NULL,
		[BankCharge] [dbo].[d_Money] NULL,
		[PaymentAmt] [dbo].[d_Money] NULL,
		[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
		[RCHQDate] [datetime] NULL,
		[BankChargeDtlKey] [bigint] NULL,
		[BankChargeProjNo] [dbo].[d_Project] NULL,
		[BankChargeDeptNo] [dbo].[d_Dept] NULL,
		[BankChargeTaxType] [dbo].[d_TaxType] NULL,
		[BankChargeTaxRate] [dbo].[d_Percent] NULL,
		[BankChargeTax] [dbo].[d_Money] NULL,
		[BankChargeTaxRefNo] [nvarchar](30) NULL,
	 CONSTRAINT [PK_APDepositPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED 
	(
		[DtlKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
	
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[APDepositDTL]') AND objectproperty(id, N'IsUserTable') = 1)
	begin
		INSERT INTO APDepositPaymentDTL (DtlKey, DocKey, Seq, PaymentMethod, PaymentBy, ToBankRate, ChequeNo, FloatDay, BankCharge,
		PaymentAmt, IsRCHQ, RCHQDate, BankChargeDtlKey, BankChargeProjNo, BankChargeDeptNo, BankChargeTaxType, BankChargeTaxRate, BankChargeTax, BankChargeTaxRefNo) 
		SELECT DtlKey, DocKey, Seq, PaymentMethod, PaymentBy, ToBankRate, ChequeNo, FloatDay, BankCharge,
		PaymentAmt, IsRCHQ, RCHQDate, BankChargeDtlKey, BankChargeProjNo, BankChargeDeptNo, BankChargeTaxType, BankChargeTaxRate, BankChargeTax, BankChargeTaxRefNo FROM APDepositDTL
	
		DROP TABLE APDepositDTL
	end
end
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[APDepositForfeit]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[APDepositForfeit](
		[ForfeitKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[Description] [nvarchar](40) NULL,
		[ForfeitedAmt] [dbo].[d_Money] NULL,
		[ForfeitedAccNo] [dbo].[d_AccNo] NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	 CONSTRAINT [PK_APDepositForfeit_ForfeitKey] PRIMARY KEY CLUSTERED  
	(
		[ForfeitKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[APDepositRefund]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[APDepositRefund](
		[RefundKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[Name] [dbo].[d_AccDescription] NULL,
		[Description] [nvarchar](40) NULL,
		[Note] [nvarchar](max) NULL,
		[RefundAmt] [dbo].[d_Money] NULL,
		[CBKey] [bigint] NULL,
		[PrintCount] [smallint] NOT NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	 CONSTRAINT [PK_APDepositRefund_RefundKey] PRIMARY KEY CLUSTERED 
	(
		[RefundKey] ASC
	) ON [PRIMARY],
	 CONSTRAINT [IX_APDepositRefund_DocNo] UNIQUE NONCLUSTERED  
	(
		[DocNo] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[APDepositRefundPaymentDTL]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[APDepositRefundPaymentDTL](
		[DtlKey] [bigint] NOT NULL,
		[RefundKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL,
		[PaymentBy] [dbo].[d_PaymentBy] NULL,
		[ToBankRate] [dbo].[d_CurrencyRate] NOT NULL,
		[ChequeNo] [dbo].[d_ChequeNo] NULL,
		[FloatDay] [smallint] NULL,
		[BankCharge] [dbo].[d_Money] NULL,
		[PaymentAmt] [dbo].[d_Money] NULL,
		[IsRCHQ] [dbo].[d_Boolean] NOT NULL,
		[RCHQDate] [datetime] NULL,
		[BankChargeDtlKey] [bigint] NULL,
		[BankChargeProjNo] [dbo].[d_Project] NULL,
		[BankChargeDeptNo] [dbo].[d_Dept] NULL,
		[BankChargeTaxType] [dbo].[d_TaxType] NULL,
		[BankChargeTaxRate] [dbo].[d_Percent] NULL,
		[BankChargeTax] [dbo].[d_Money] NULL,
		[BankChargeTaxRefNo] [nvarchar](30) NULL,
	 CONSTRAINT [PK_APDepositRefundPaymentDTL_DtlKey] PRIMARY KEY CLUSTERED  
	(
		[DtlKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PQ]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PQ](
		[DocKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[RequestedBy] [nvarchar](40) NULL,
		[Ref] [nvarchar](40) NULL,
		[Description] [nvarchar](80) NULL,
		[Note] [ntext] NULL,
		[Remark1] [dbo].[d_Remark] NULL,
		[Remark2] [dbo].[d_Remark] NULL,
		[Remark3] [dbo].[d_Remark] NULL,
		[Remark4] [dbo].[d_Remark] NULL,
		[PrintCount] [smallint] NOT NULL,
		[Cancelled] [dbo].[d_Boolean] NOT NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
		[ApprovalUserID] [dbo].[d_UserID] NULL,
		[ExternalLink] [ntext] NULL,
		[RefDocNo] [dbo].[d_DocNo] NULL,
		[LastUpdate] [int] NOT NULL,
		[PurchaseLocation] [dbo].[d_Location] NULL,
		[CanSync] [dbo].[d_Boolean] NOT NULL,
		[Guid] [uniqueidentifier] NOT NULL,
	 CONSTRAINT [PK_PQ_DocKey] PRIMARY KEY CLUSTERED 
	(
		[DocKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PQ_LastModifiedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PQ]  WITH CHECK ADD  CONSTRAINT [FK_PQ_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PQ_CreatedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PQ]  WITH CHECK ADD  CONSTRAINT [FK_PQ_CreatedUserID] FOREIGN KEY([CreatedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PQ_ApprovalUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PQ]  WITH CHECK ADD  CONSTRAINT [FK_PQ_ApprovalUserID] FOREIGN KEY([ApprovalUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PQ_PurchaseLocation]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PQ]  WITH CHECK ADD  CONSTRAINT [FK_PQ_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PQDTL]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PQDTL](
		[DtlKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[Indent] [tinyint] NULL,
		[FontStyle] [dbo].[d_FontStyle] NULL,
		[MainItem] [dbo].[d_Boolean] NOT NULL,
		[Numbering] [dbo].[d_Numbering] NULL,
		[ItemCode] [dbo].[d_ItemCode] NULL,
		[Location] [dbo].[d_Location] NULL,
		[Description] [dbo].[d_ItemDescription] NULL,
		[FurtherDescription] [ntext] NULL,
		[ProjNo] [dbo].[d_Project] NULL,
		[DeptNo] [dbo].[d_Dept] NULL,
		[UOM] [dbo].[d_UOM] NULL,
		[UserUOM] [dbo].[d_UOM] NULL,
		[Qty] [dbo].[d_Qty] NULL,
		[Rate] [dbo].[d_Qty] NULL,
		[SmallestQty] [dbo].[d_Qty] NULL,
		[TransferedQty] [dbo].[d_Qty] NOT NULL,
		[DtlType] [dbo].[d_DtlType] NULL,
		[PackageDocKey] [bigint] NULL,
		[ParentDtlKey] [bigint] NULL,
		[SubQty] [dbo].[d_Qty] NULL,
		[CreditorCode] [dbo].[d_AccNo] NULL,
		[CreditorName] [dbo].[d_AccDescription] NULL,
		[RequiredDate] [datetime] NULL,
		[Transferable] [dbo].[d_Boolean] NOT NULL,
		[PrintOut] [dbo].[d_Boolean] NOT NULL,
		[Guid] [uniqueidentifier] NOT NULL,
	CONSTRAINT [PK_PQDTL] PRIMARY KEY CLUSTERED 
	(
		[DtlKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PQDTL_ItemUOM]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PQDTL]  WITH CHECK ADD  CONSTRAINT [FK_PQDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
  REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PQDTL_Location]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PQDTL]  WITH CHECK ADD  CONSTRAINT [FK_PQDTL_Location] FOREIGN KEY([Location])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PQDTL_ProjNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PQDTL]  WITH CHECK ADD  CONSTRAINT [FK_PQDTL_ProjNo] FOREIGN KEY([ProjNo])
  REFERENCES [dbo].[Project] ([ProjNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PQDTL_DeptNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PQDTL]  WITH CHECK ADD  CONSTRAINT [FK_PQDTL_DeptNo] FOREIGN KEY([DeptNo])
  REFERENCES [dbo].[Dept] ([DeptNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PQDTL_CreditorCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PQDTL]  WITH CHECK ADD  CONSTRAINT [FK_PQDTL_CreditorCode] FOREIGN KEY([CreditorCode])
  REFERENCES [dbo].[GLMast] ([AccNo])
  ON UPDATE CASCADE
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateStockTakeChangeCount]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UpdateStockTakeChangeCount]
GO

CREATE TRIGGER UpdateStockTakeChangeCount ON StockTake
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='StockTake'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdatePQChangeCount]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UpdatePQChangeCount]
GO

CREATE TRIGGER UpdatePQChangeCount ON PQ
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PQ'
SET NOCOUNT OFF
GO

/* Support new Consignment table structure */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Consignment]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[Consignment](
		[DocKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[DebtorCode] [dbo].[d_AccNo] NOT NULL,
		[DebtorName] [dbo].[d_AccDescription] NULL,
		[Ref] [nvarchar](40) NULL,
		[Description] [nvarchar](80) NULL,
		[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
		[SalesAgent] [dbo].[d_Agent] NULL,
		[InvAddr1] [dbo].[d_Address] NULL,
		[InvAddr2] [dbo].[d_Address] NULL,
		[InvAddr3] [dbo].[d_Address] NULL,
		[InvAddr4] [dbo].[d_Address] NULL,
		[Phone1] [dbo].[d_Phone] NULL,
		[Fax1] [dbo].[d_Phone] NULL,
		[Attention] [dbo].[d_Contact] NULL,
		[BranchCode] [dbo].[d_BranchCode] NULL,
		[DeliverAddr1] [dbo].[d_Address] NULL,
		[DeliverAddr2] [dbo].[d_Address] NULL,
		[DeliverAddr3] [dbo].[d_Address] NULL,
		[DeliverAddr4] [dbo].[d_Address] NULL,
		[DeliverPhone1] [dbo].[d_Phone] NULL,
		[DeliverFax1] [dbo].[d_Phone] NULL,
		[DeliverContact] [dbo].[d_Contact] NULL,
		[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
		[SalesExemptionExpiryDate] [datetime] NULL,
		[Total] [dbo].[d_Money] NULL,
		[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
		[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
		[NetTotal] [dbo].[d_Money] NULL,
		[LocalNetTotal] [dbo].[d_Money] NULL,
		[AnalysisNetTotal] [dbo].[d_Money] NULL,
		[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[ToDocType] [dbo].[d_DocType] NULL,
		[ToDocKey] [bigint] NULL,
		[Note] [nvarchar](max) NULL,
		[Remark1] [dbo].[d_Remark] NULL,
		[Remark2] [dbo].[d_Remark] NULL,
		[Remark3] [dbo].[d_Remark] NULL,
		[Remark4] [dbo].[d_Remark] NULL,
		[PrintCount] [smallint] NOT NULL,
		[Cancelled] [dbo].[d_Boolean] NOT NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
		[ExternalLink] [nvarchar](max) NULL,
		[RefDocNo] [dbo].[d_DocNo] NULL,
		[CanSync] [dbo].[d_Boolean] NOT NULL,
		[LastUpdate] [int] NOT NULL,
		[ToDtlKey] [bigint] NULL,
		[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
		[ShipVia] [dbo].[d_ShippingMethod] NULL,
		[ShipInfo] [nvarchar](40) NULL,
		[RefNo2] [nvarchar](20) NULL,
		[SalesLocation] [dbo].[d_Location] NULL,
		[ExTax] [dbo].[d_Money] NULL,
		[LocalExTax] [dbo].[d_Money] NULL,
		[YourPONo] [dbo].[d_YourPONo] NULL,
		[YourPODate] [datetime] NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
		[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
		[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
		[TotalExTax] [dbo].[d_Money] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[InclusiveTax] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
		[RoundingMethod] [int] NOT NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[TaxCurrencyTax] [dbo].[d_Money] NULL,
		[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	 CONSTRAINT [PK_Consignment_DocKey] PRIMARY KEY CLUSTERED 
	(
		[DocKey] ASC
	) ON [PRIMARY],
	 CONSTRAINT [IX_Consignment_DocNo] UNIQUE NONCLUSTERED 
	(
		[DocNo] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ConsignmentDTL]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ConsignmentDTL](
		[DtlKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[Indent] [tinyint] NULL,
		[FontStyle] [dbo].[d_FontStyle] NULL,
		[MainItem] [dbo].[d_Boolean] NOT NULL,
		[Numbering] [dbo].[d_Numbering] NULL,
		[ItemCode] [dbo].[d_ItemCode] NULL,
		[Location] [dbo].[d_Location] NULL,
		[BatchNo] [dbo].[d_BatchNo] NULL,
		[Description] [dbo].[d_ItemDescription] NULL,
		[FurtherDescription] [nvarchar](max) NULL,
		[YourPONo] [dbo].[d_YourPONo] NULL,
		[YourPODate] [datetime] NULL,
		[ProjNo] [dbo].[d_Project] NULL,
		[DeptNo] [dbo].[d_Dept] NULL,
		[UOM] [dbo].[d_UOM] NULL,
		[UserUOM] [dbo].[d_UOM] NULL,
		[Qty] [dbo].[d_Qty] NULL,
		[Rate] [dbo].[d_Qty] NULL,
		[SmallestQty] [dbo].[d_Qty] NULL,
		[TransferedQty] [dbo].[d_Qty] NOT NULL,
		[SmallestUnitPrice] [dbo].[d_Price] NULL,
		[UnitPrice] [dbo].[d_Price] NULL,
		[Discount] [nvarchar](20) NULL,
		[DiscountAmt] [dbo].[d_Money] NULL,
		[TaxType] [dbo].[d_TaxType] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[SubTotal] [dbo].[d_Money] NULL,
		[LocalSubTotal] [dbo].[d_Money] NULL,
		[PrintOut] [dbo].[d_Boolean] NOT NULL,
		[DtlType] [dbo].[d_DtlType] NULL,
		[CalcByPercent] [dbo].[d_Percent] NULL,
		[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
		[FromDocType] [dbo].[d_DocType] NULL,
		[FromDocNo] [dbo].[d_DocNo] NULL,
		[FromDocDtlKey] [bigint] NULL,
		[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
		[FullTransferFromDocList] [nvarchar](max) NULL,
		[SerialNoList] [nvarchar](max) NULL,
		[EstimatedDeliveryDate] [nvarchar](20) NULL,
		[PackageDocKey] [bigint] NULL,
		[ParentDtlKey] [bigint] NULL,
		[SubQty] [dbo].[d_Qty] NULL,
		[SubTotalExTax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
		[RuleNo] [bigint] NULL,
		[DeliveryDate] [datetime] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[TaxAdjustment] [dbo].[d_Money] NULL,
		[TaxExportCountry] [nvarchar](50) NULL,
		[LocalSubTotalExTax] [dbo].[d_Money] NULL,
		[ExtraDiscountAmt] [dbo].[d_Money] NULL,
		[TaxRate] [dbo].[d_Percent] NULL,
		[LocalTaxAdjustment] [dbo].[d_Money] NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[TaxCurrencyTax] [dbo].[d_Money] NULL,
		[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
		[Remark] [d_ItemDescription] NULL,
	 CONSTRAINT [PK_ConsignmentDTL_DtlKey] PRIMARY KEY CLUSTERED 
	(
		[DtlKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ConsignmentReturn]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ConsignmentReturn](
		[DocKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[DebtorCode] [dbo].[d_AccNo] NOT NULL,
		[DebtorName] [dbo].[d_AccDescription] NULL,
		[Ref] [nvarchar](40) NULL,
		[Description] [nvarchar](80) NULL,
		[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
		[SalesAgent] [dbo].[d_Agent] NULL,
		[InvAddr1] [dbo].[d_Address] NULL,
		[InvAddr2] [dbo].[d_Address] NULL,
		[InvAddr3] [dbo].[d_Address] NULL,
		[InvAddr4] [dbo].[d_Address] NULL,
		[Phone1] [dbo].[d_Phone] NULL,
		[Fax1] [dbo].[d_Phone] NULL,
		[Attention] [dbo].[d_Contact] NULL,
		[BranchCode] [dbo].[d_BranchCode] NULL,
		[DeliverAddr1] [dbo].[d_Address] NULL,
		[DeliverAddr2] [dbo].[d_Address] NULL,
		[DeliverAddr3] [dbo].[d_Address] NULL,
		[DeliverAddr4] [dbo].[d_Address] NULL,
		[DeliverPhone1] [dbo].[d_Phone] NULL,
		[DeliverFax1] [dbo].[d_Phone] NULL,
		[DeliverContact] [dbo].[d_Contact] NULL,
		[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
		[SalesExemptionExpiryDate] [datetime] NULL,
		[Total] [dbo].[d_Money] NULL,
		[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
		[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
		[NetTotal] [dbo].[d_Money] NULL,
		[LocalNetTotal] [dbo].[d_Money] NULL,
		[AnalysisNetTotal] [dbo].[d_Money] NULL,
		[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[Note] [nvarchar](max) NULL,
		[Remark1] [dbo].[d_Remark] NULL,
		[Remark2] [dbo].[d_Remark] NULL,
		[Remark3] [dbo].[d_Remark] NULL,
		[Remark4] [dbo].[d_Remark] NULL,
		[PrintCount] [smallint] NOT NULL,
		[Cancelled] [dbo].[d_Boolean] NOT NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
		[ExternalLink] [nvarchar](max) NULL,
		[RefDocNo] [dbo].[d_DocNo] NULL,
		[CanSync] [dbo].[d_Boolean] NOT NULL,
		[LastUpdate] [int] NOT NULL,
		[ShipVia] [dbo].[d_ShippingMethod] NULL,
		[ShipInfo] [nvarchar](40) NULL,
		[SalesLocation] [dbo].[d_Location] NULL,
		[ExTax] [dbo].[d_Money] NULL,
		[LocalExTax] [dbo].[d_Money] NULL,
		[YourPONo] [dbo].[d_YourPONo] NULL,
		[YourPODate] [datetime] NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
		[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
		[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
		[ReferAdjDocKey] [bigint] NULL,
		[TotalExTax] [dbo].[d_Money] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[InclusiveTax] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
		[RoundingMethod] [int] NOT NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[TaxCurrencyTax] [dbo].[d_Money] NULL,
		[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	 CONSTRAINT [PK_ConsignmentReturn_DocKey] PRIMARY KEY CLUSTERED 
	(
		[DocKey] ASC
	) ON [PRIMARY],
	 CONSTRAINT [IX_ConsignmentReturn_DocNo] UNIQUE NONCLUSTERED 
	(
		[DocNo] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ConsignmentReturnDTL]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ConsignmentReturnDTL](
		[DtlKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[Indent] [tinyint] NULL,
		[FontStyle] [dbo].[d_FontStyle] NULL,
		[MainItem] [dbo].[d_Boolean] NOT NULL,
		[Numbering] [dbo].[d_Numbering] NULL,
		[ItemCode] [dbo].[d_ItemCode] NULL,
		[Location] [dbo].[d_Location] NULL,
		[BatchNo] [dbo].[d_BatchNo] NULL,
		[Description] [dbo].[d_ItemDescription] NULL,
		[FurtherDescription] [nvarchar](max) NULL,
		[YourPONo] [dbo].[d_YourPONo] NULL,
		[YourPODate] [datetime] NULL,
		[ProjNo] [dbo].[d_Project] NULL,
		[DeptNo] [dbo].[d_Dept] NULL,
		[UOM] [dbo].[d_UOM] NULL,
		[UserUOM] [dbo].[d_UOM] NULL,
		[Lost] [dbo].[d_Boolean] NULL,
		[Qty] [dbo].[d_Qty] NULL,
		[Rate] [dbo].[d_Qty] NULL,
		[SmallestQty] [dbo].[d_Qty] NULL,
		[SmallestUnitPrice] [dbo].[d_Price] NULL,
		[UnitPrice] [dbo].[d_Price] NULL,
		[Discount] [nvarchar](20) NULL,
		[DiscountAmt] [dbo].[d_Money] NULL,
		[TaxType] [dbo].[d_TaxType] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[SubTotal] [dbo].[d_Money] NULL,
		[LocalSubTotal] [dbo].[d_Money] NULL,
		[PrintOut] [dbo].[d_Boolean] NOT NULL,
		[DtlType] [dbo].[d_DtlType] NULL,
		[CalcByPercent] [dbo].[d_Percent] NULL,
		[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
		[FromDocType] [dbo].[d_DocType] NULL,
		[FromDocNo] [dbo].[d_DocNo] NULL,
		[FromDocDtlKey] [bigint] NULL,
		[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
		[FullTransferFromDocList] [nvarchar](max) NULL,
		[SerialNoList] [nvarchar](max) NULL,
		[EstimatedDeliveryDate] [nvarchar](20) NULL,
		[PackageDocKey] [bigint] NULL,
		[ParentDtlKey] [bigint] NULL,
		[SubQty] [dbo].[d_Qty] NULL,
		[SubTotalExTax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
		[RuleNo] [bigint] NULL,
		[DeliveryDate] [datetime] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[TaxAdjustment] [dbo].[d_Money] NULL,
		[LocalSubTotalExTax] [dbo].[d_Money] NULL,
		[ExtraDiscountAmt] [dbo].[d_Money] NULL,
		[TaxRate] [dbo].[d_Percent] NULL,
		[LocalTaxAdjustment] [dbo].[d_Money] NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[TaxCurrencyTax] [dbo].[d_Money] NULL,
		[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
		[Remark] [d_ItemDescription] NULL,
	 CONSTRAINT [PK_ConsignmentReturnDTL_DtlKey] PRIMARY KEY CLUSTERED 
	(
		[DtlKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PurchaseConsignment]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PurchaseConsignment](
		[DocKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[CreditorCode] [dbo].[d_AccNo] NOT NULL,
		[CreditorName] [dbo].[d_AccDescription] NULL,
		[SupplierDONo] [dbo].[d_DocNo] NULL,
		[Ref] [nvarchar](40) NULL,
		[Description] [nvarchar](80) NULL,
		[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
		[PurchaseAgent] [dbo].[d_Agent] NULL,
		[InvAddr1] [dbo].[d_Address] NULL,
		[InvAddr2] [dbo].[d_Address] NULL,
		[InvAddr3] [dbo].[d_Address] NULL,
		[InvAddr4] [dbo].[d_Address] NULL,
		[Phone1] [dbo].[d_Phone] NULL,
		[Fax1] [dbo].[d_Phone] NULL,
		[Attention] [dbo].[d_Contact] NULL,
		[BranchCode] [dbo].[d_BranchCode] NULL,
		[DeliverAddr1] [dbo].[d_Address] NULL,
		[DeliverAddr2] [dbo].[d_Address] NULL,
		[DeliverAddr3] [dbo].[d_Address] NULL,
		[DeliverAddr4] [dbo].[d_Address] NULL,
		[DeliverPhone1] [dbo].[d_Phone] NULL,
		[DeliverFax1] [dbo].[d_Phone] NULL,
		[DeliverContact] [dbo].[d_Contact] NULL,
		[Total] [dbo].[d_Money] NULL,
		[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
		[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
		[NetTotal] [dbo].[d_Money] NULL,
		[LocalNetTotal] [dbo].[d_Money] NULL,
		[AnalysisNetTotal] [dbo].[d_Money] NULL,
		[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[ToDocType] [dbo].[d_DocType] NULL,
		[ToDocKey] [bigint] NULL,
		[Note] [nvarchar](max) NULL,
		[Remark1] [dbo].[d_Remark] NULL,
		[Remark2] [dbo].[d_Remark] NULL,
		[Remark3] [dbo].[d_Remark] NULL,
		[Remark4] [dbo].[d_Remark] NULL,
		[PrintCount] [smallint] NOT NULL,
		[Cancelled] [dbo].[d_Boolean] NOT NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
		[ExternalLink] [nvarchar](max) NULL,
		[RefDocNo] [dbo].[d_DocNo] NULL,
		[CanSync] [dbo].[d_Boolean] NOT NULL,
		[LastUpdate] [int] NOT NULL,
		[ToDtlKey] [bigint] NULL,
		[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
		[ShipVia] [dbo].[d_ShippingMethod] NULL,
		[ShipInfo] [nvarchar](40) NULL,
		[RefNo2] [nvarchar](20) NULL,
		[PurchaseLocation] [dbo].[d_Location] NULL,
		[ExTax] [dbo].[d_Money] NULL,
		[LocalExTax] [dbo].[d_Money] NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
		[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
		[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
		[TotalExTax] [dbo].[d_Money] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[InclusiveTax] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
		[RoundingMethod] [int] NOT NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[TaxCurrencyTax] [dbo].[d_Money] NULL,
		[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	CONSTRAINT [PK_PurchaseConsignment_DocKey] PRIMARY KEY CLUSTERED 
	(
		[DocKey] ASC
	) ON [PRIMARY],
	CONSTRAINT [IX_PurchaseConsignment_DocNo] UNIQUE NONCLUSTERED 
	(
		[DocNo] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PurchaseConsignmentDTL]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PurchaseConsignmentDTL](
		[DtlKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[Indent] [tinyint] NULL,
		[FontStyle] [dbo].[d_FontStyle] NULL,
		[MainItem] [dbo].[d_Boolean] NOT NULL,
		[Numbering] [dbo].[d_Numbering] NULL,
		[ItemCode] [dbo].[d_ItemCode] NULL,
		[Location] [dbo].[d_Location] NULL,
		[BatchNo] [dbo].[d_BatchNo] NULL,
		[Description] [dbo].[d_ItemDescription] NULL,
		[FurtherDescription] [nvarchar](max) NULL,
		[ProjNo] [dbo].[d_Project] NULL,
		[DeptNo] [dbo].[d_Dept] NULL,
		[UOM] [dbo].[d_UOM] NULL,
		[UserUOM] [dbo].[d_UOM] NULL,
		[Qty] [dbo].[d_Qty] NULL,
		[Rate] [dbo].[d_Qty] NULL,
		[SmallestQty] [dbo].[d_Qty] NULL,
		[TransferedQty] [dbo].[d_Qty] NOT NULL,
		[SmallestUnitPrice] [dbo].[d_Price] NULL,
		[UnitPrice] [dbo].[d_Price] NULL,
		[Discount] [nvarchar](20) NULL,
		[DiscountAmt] [dbo].[d_Money] NULL,
		[TaxType] [dbo].[d_TaxType] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[SubTotal] [dbo].[d_Money] NULL,
		[LocalSubTotal] [dbo].[d_Money] NULL,
		[PrintOut] [dbo].[d_Boolean] NOT NULL,
		[DtlType] [dbo].[d_DtlType] NULL,
		[CalcByPercent] [dbo].[d_Percent] NULL,
		[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
		[FromDocType] [dbo].[d_DocType] NULL,
		[FromDocNo] [dbo].[d_DocNo] NULL,
		[FromDocDtlKey] [bigint] NULL,
		[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
		[FullTransferFromDocList] [nvarchar](max) NULL,
		[SerialNoList] [nvarchar](max) NULL,
		[EstimatedDeliveryDate] [nvarchar](20) NULL,
		[PackageDocKey] [bigint] NULL,
		[ParentDtlKey] [bigint] NULL,
		[SubQty] [dbo].[d_Qty] NULL,
		[SubTotalExTax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
		[RuleNo] [bigint] NULL,
		[DeliveryDate] [datetime] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[TaxAdjustment] [dbo].[d_Money] NULL,
		[TaxExportCountry] [nvarchar](50) NULL,
		[LocalSubTotalExTax] [dbo].[d_Money] NULL,
		[ExtraDiscountAmt] [dbo].[d_Money] NULL,
		[TaxRate] [dbo].[d_Percent] NULL,
		[LocalTaxAdjustment] [dbo].[d_Money] NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[TaxCurrencyTax] [dbo].[d_Money] NULL,
		[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
		[Remark] [d_ItemDescription] NULL,
	 CONSTRAINT [PK_PurchaseConsignmentDTL_DtlKey] PRIMARY KEY CLUSTERED 
	(
		[DtlKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PurchaseConsignmentReturn]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PurchaseConsignmentReturn](
		[DocKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[CreditorCode] [dbo].[d_AccNo] NOT NULL,
		[CreditorName] [dbo].[d_AccDescription] NULL,
		[SupplierDONo] [dbo].[d_DocNo] NULL,
		[Ref] [nvarchar](40) NULL,
		[Description] [nvarchar](80) NULL,
		[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
		[PurchaseAgent] [dbo].[d_Agent] NULL,
		[InvAddr1] [dbo].[d_Address] NULL,
		[InvAddr2] [dbo].[d_Address] NULL,
		[InvAddr3] [dbo].[d_Address] NULL,
		[InvAddr4] [dbo].[d_Address] NULL,
		[Phone1] [dbo].[d_Phone] NULL,
		[Fax1] [dbo].[d_Phone] NULL,
		[Attention] [dbo].[d_Contact] NULL,
		[BranchCode] [dbo].[d_BranchCode] NULL,
		[DeliverAddr1] [dbo].[d_Address] NULL,
		[DeliverAddr2] [dbo].[d_Address] NULL,
		[DeliverAddr3] [dbo].[d_Address] NULL,
		[DeliverAddr4] [dbo].[d_Address] NULL,
		[DeliverPhone1] [dbo].[d_Phone] NULL,
		[DeliverFax1] [dbo].[d_Phone] NULL,
		[DeliverContact] [dbo].[d_Contact] NULL,
		[Total] [dbo].[d_Money] NULL,
		[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
		[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
		[NetTotal] [dbo].[d_Money] NULL,
		[LocalNetTotal] [dbo].[d_Money] NULL,
		[AnalysisNetTotal] [dbo].[d_Money] NULL,
		[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[Note] [nvarchar](max) NULL,
		[Remark1] [dbo].[d_Remark] NULL,
		[Remark2] [dbo].[d_Remark] NULL,
		[Remark3] [dbo].[d_Remark] NULL,
		[Remark4] [dbo].[d_Remark] NULL,
		[PrintCount] [smallint] NOT NULL,
		[Cancelled] [dbo].[d_Boolean] NOT NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
		[ExternalLink] [nvarchar](max) NULL,
		[RefDocNo] [dbo].[d_DocNo] NULL,
		[CanSync] [dbo].[d_Boolean] NOT NULL,
		[LastUpdate] [int] NOT NULL,
		[ShipVia] [dbo].[d_ShippingMethod] NULL,
		[ShipInfo] [nvarchar](40) NULL,
		[PurchaseLocation] [dbo].[d_Location] NULL,
		[ExTax] [dbo].[d_Money] NULL,
		[LocalExTax] [dbo].[d_Money] NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
		[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
		[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
		[ReferAdjDocKey] [bigint] NULL,
		[TotalExTax] [dbo].[d_Money] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[InclusiveTax] [dbo].[d_Boolean] NOT NULL DEFAULT ('F'),
		[RoundingMethod] [int] NOT NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[TaxCurrencyTax] [dbo].[d_Money] NULL,
		[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
	CONSTRAINT [PK_PurchaseConsignmentReturn_DocKey] PRIMARY KEY CLUSTERED 
	(
		[DocKey] ASC
	) ON [PRIMARY],
	CONSTRAINT [IX_PurchaseConsignmentReturn_DocNo] UNIQUE NONCLUSTERED 
	(
		[DocNo] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PurchaseConsignmentReturnDTL]') AND objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PurchaseConsignmentReturnDTL](
		[DtlKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[Indent] [tinyint] NULL,
		[FontStyle] [dbo].[d_FontStyle] NULL,
		[MainItem] [dbo].[d_Boolean] NOT NULL,
		[Numbering] [dbo].[d_Numbering] NULL,
		[ItemCode] [dbo].[d_ItemCode] NULL,
		[Location] [dbo].[d_Location] NULL,
		[BatchNo] [dbo].[d_BatchNo] NULL,
		[Description] [dbo].[d_ItemDescription] NULL,
		[FurtherDescription] [nvarchar](max) NULL,
		[ProjNo] [dbo].[d_Project] NULL,
		[DeptNo] [dbo].[d_Dept] NULL,
		[UOM] [dbo].[d_UOM] NULL,
		[UserUOM] [dbo].[d_UOM] NULL,
		[Lost] [dbo].[d_Boolean] NULL,
		[Qty] [dbo].[d_Qty] NULL,
		[Rate] [dbo].[d_Qty] NULL,
		[SmallestQty] [dbo].[d_Qty] NULL,
		[SmallestUnitPrice] [dbo].[d_Price] NULL,
		[UnitPrice] [dbo].[d_Price] NULL,
		[Discount] [nvarchar](20) NULL,
		[DiscountAmt] [dbo].[d_Money] NULL,
		[TaxType] [dbo].[d_TaxType] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[SubTotal] [dbo].[d_Money] NULL,
		[LocalSubTotal] [dbo].[d_Money] NULL,
		[PrintOut] [dbo].[d_Boolean] NOT NULL,
		[DtlType] [dbo].[d_DtlType] NULL,
		[CalcByPercent] [dbo].[d_Percent] NULL,
		[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
		[FromDocType] [dbo].[d_DocType] NULL,
		[FromDocNo] [dbo].[d_DocNo] NULL,
		[FromDocDtlKey] [bigint] NULL,
		[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
		[FullTransferFromDocList] [nvarchar](max) NULL,
		[SerialNoList] [nvarchar](max) NULL,
		[EstimatedDeliveryDate] [nvarchar](20) NULL,
		[PackageDocKey] [bigint] NULL,
		[ParentDtlKey] [bigint] NULL,
		[SubQty] [dbo].[d_Qty] NULL,
		[SubTotalExTax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
		[RuleNo] [bigint] NULL,
		[DeliveryDate] [datetime] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[TaxAdjustment] [dbo].[d_Money] NULL,
		[LocalSubTotalExTax] [dbo].[d_Money] NULL,
		[ExtraDiscountAmt] [dbo].[d_Money] NULL,
		[TaxRate] [dbo].[d_Percent] NULL,
		[LocalTaxAdjustment] [dbo].[d_Money] NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[TaxCurrencyTax] [dbo].[d_Money] NULL,
		[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
		[Remark] [d_ItemDescription] NULL,
	 CONSTRAINT [PK_PurchaseConsignmentReturnDTL_DtlKey] PRIMARY KEY CLUSTERED 
	(
		[DtlKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

/* General Add Remove Columns */
DECLARE @CSGNListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40))
/* Remove fields for Consignment */
INSERT @CSGNListTable VALUES('ColumnLock', 'ForConsignment')
INSERT @CSGNListTable VALUES('CP', 'CSGNDocKey')
INSERT @CSGNListTable VALUES('CPDTL', 'ForConsignment')
INSERT @CSGNListTable VALUES('CS', 'CSGNDocKey')
INSERT @CSGNListTable VALUES('CSDTL', 'ForConsignment')
INSERT @CSGNListTable VALUES('IV', 'CSGNDocKey')
INSERT @CSGNListTable VALUES('IVDTL', 'ForConsignment')
INSERT @CSGNListTable VALUES('PI', 'CSGNDocKey')
INSERT @CSGNListTable VALUES('PIDTL', 'ForConsignment')

DECLARE @csgnSQL NVARCHAR(300)
DECLARE @csgnTableName  NVARCHAR(40)
DECLARE @csgnColName  NVARCHAR(40)

DECLARE @csgnCur_item cursor
SET @csgnCur_item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @CSGNListTable
OPEN @csgnCur_item
FETCH NEXT FROM @csgnCur_item INTO @csgnTableName, @csgnColName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @csgnSQL = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @csgnTableName + ']'') and name = N''' + @csgnColName + ''') ALTER TABLE [dbo].[' + @csgnTableName + '] DROP COLUMN [' + @csgnColName + ']'
    
  Exec sp_executesql @csgnSQL
  IF @@ERROR <> 0
  BEGIN
    CLOSE @csgnCur_item
    DEALLOCATE @csgnCur_item
    RETURN
  END
  
  FETCH NEXT FROM @csgnCur_item INTO @csgnTableName, @csgnColName
END
GO

/* Create Index, Foreign Key and Trigger for Consignment */
if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[Consignment]') and name = N'IX_Consignment_ToDocTypeKey')
	CREATE NONCLUSTERED INDEX [IX_Consignment_ToDocTypeKey] ON [dbo].[Consignment]
	(
		[ToDocType] ASC,
		[ToDocKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[ConsignmentDTL]') and name = N'IX_ConsignmentDTL_DocKey')
	CREATE NONCLUSTERED INDEX [IX_ConsignmentDTL_DocKey] ON [dbo].[ConsignmentDTL]
	(
		[DocKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[ConsignmentDTL]') and name = N'IX_ConsignmentDTL_FromDocDtlKey')
	CREATE NONCLUSTERED INDEX [IX_ConsignmentDTL_FromDocDtlKey] ON [dbo].[ConsignmentDTL]
	(
		[FromDocDtlKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[ConsignmentReturnDTL]') and name = N'IX_ConsignmentReturnDTL_DocKey')
	CREATE NONCLUSTERED INDEX [IX_ConsignmentReturnDTL_DocKey] ON [dbo].[ConsignmentReturnDTL]
	(
		[DocKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[ConsignmentReturnDTL]') and name = N'IX_ConsignmentReturnDTL_FromDocDtlKey')
	CREATE NONCLUSTERED INDEX [IX_ConsignmentReturnDTL_FromDocDtlKey] ON [dbo].[ConsignmentReturnDTL]
	(
		[FromDocDtlKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[PurchaseConsignment]') and name = N'IX_PurchaseConsignment_ToDocTypeKey')
	CREATE NONCLUSTERED INDEX [IX_PurchaseConsignment_ToDocTypeKey] ON [dbo].[PurchaseConsignment]
	(
		[ToDocType] ASC,
		[ToDocKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[PurchaseConsignmentDTL]') and name = N'IX_PurchaseConsignmentDTL_DocKey')
	CREATE NONCLUSTERED INDEX [IX_PurchaseConsignmentDTL_DocKey] ON [dbo].[PurchaseConsignmentDTL]
	(
		[DocKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[PurchaseConsignmentDTL]') and name = N'IX_PurchaseConsignmentDTL_FromDocDtlKey')
	CREATE NONCLUSTERED INDEX [IX_PurchaseConsignmentDTL_FromDocDtlKey] ON [dbo].[PurchaseConsignmentDTL]
	(
		[FromDocDtlKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[PurchaseConsignmentReturnDTL]') and name = N'IX_PurchaseConsignmentReturnDTL_DocKey')
	CREATE NONCLUSTERED INDEX [IX_PurchaseConsignmentReturnDTL_DocKey] ON [dbo].[PurchaseConsignmentReturnDTL]
	(
		[DocKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from sys.indexes where object_id = object_id(N'[dbo].[PurchaseConsignmentReturnDTL]') and name = N'IX_PurchaseConsignmentReturnDTL_FromDocDtlKey')
	CREATE NONCLUSTERED INDEX [IX_PurchaseConsignmentReturnDTL_FromDocDtlKey] ON [dbo].[PurchaseConsignmentReturnDTL]
	(
		[FromDocDtlKey] ASC
	)ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Consignment_BranchCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
  REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Consignment_CreatedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_CreatedUserID] FOREIGN KEY([CreatedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Consignment_CurrencyCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_CurrencyCode] FOREIGN KEY([CurrencyCode])
  REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Consignment_DebtorCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_DebtorCode] FOREIGN KEY([DebtorCode])
  REFERENCES [dbo].[GLMast] ([AccNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Consignment_DisplayTerm]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_DisplayTerm] FOREIGN KEY([DisplayTerm])
  REFERENCES [dbo].[Terms] ([DisplayTerm])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Consignment_LastModifiedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Consignment_SalesAgent]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_SalesAgent] FOREIGN KEY([SalesAgent])
  REFERENCES [dbo].[SalesAgent] ([SalesAgent])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Consignment_SalesLocation]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_SalesLocation] FOREIGN KEY([SalesLocation])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Consignment_ShipVia]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Consignment]  WITH CHECK ADD  CONSTRAINT [FK_Consignment_ShipVia] FOREIGN KEY([ShipVia])
  REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentDTL_DeptNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_DeptNo] FOREIGN KEY([DeptNo])
  REFERENCES [dbo].[Dept] ([DeptNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentDTL_FontStyle]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_FontStyle] FOREIGN KEY([FontStyle])
  REFERENCES [dbo].[FontStyle] ([FontStyle])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentDTL_ItemBatch]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
  REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentDTL_ItemUOM]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
  REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentDTL_Location]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_Location] FOREIGN KEY([Location])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentDTL_ProjNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_ProjNo] FOREIGN KEY([ProjNo])
  REFERENCES [dbo].[Project] ([ProjNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentDTL_TaxType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentDTL_TaxType] FOREIGN KEY([TaxType])
  REFERENCES [dbo].[TaxType] ([TaxType])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturn_BranchCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
  REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturn_CreatedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_CreatedUserID] FOREIGN KEY([CreatedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturn_CurrencyCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_CurrencyCode] FOREIGN KEY([CurrencyCode])
  REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturn_DebtorCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_DebtorCode] FOREIGN KEY([DebtorCode])
  REFERENCES [dbo].[GLMast] ([AccNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturn_DisplayTerm]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_DisplayTerm] FOREIGN KEY([DisplayTerm])
  REFERENCES [dbo].[Terms] ([DisplayTerm])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturn_LastModifiedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturn_SalesAgent]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_SalesAgent] FOREIGN KEY([SalesAgent])
  REFERENCES [dbo].[SalesAgent] ([SalesAgent])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturn_SalesLocation]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_SalesLocation] FOREIGN KEY([SalesLocation])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturn_ShipVia]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturn_ShipVia] FOREIGN KEY([ShipVia])
  REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturnDTL_DeptNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_DeptNo] FOREIGN KEY([DeptNo])
  REFERENCES [dbo].[Dept] ([DeptNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturnDTL_FontStyle]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_FontStyle] FOREIGN KEY([FontStyle])
  REFERENCES [dbo].[FontStyle] ([FontStyle])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturnDTL_ItemBatch]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
  REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturnDTL_ItemUOM]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
  REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturnDTL_Location]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_Location] FOREIGN KEY([Location])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturnDTL_ProjNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_ProjNo] FOREIGN KEY([ProjNo])
  REFERENCES [dbo].[Project] ([ProjNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ConsignmentReturnDTL_TaxType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_ConsignmentReturnDTL_TaxType] FOREIGN KEY([TaxType])
  REFERENCES [dbo].[TaxType] ([TaxType])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignment_BranchCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
  REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignment_CreatedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_CreatedUserID] FOREIGN KEY([CreatedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignment_CreditorCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_CreditorCode] FOREIGN KEY([CreditorCode])
  REFERENCES [dbo].[GLMast] ([AccNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignment_CurrencyCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_CurrencyCode] FOREIGN KEY([CurrencyCode])
  REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignment_DisplayTerm]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_DisplayTerm] FOREIGN KEY([DisplayTerm])
  REFERENCES [dbo].[Terms] ([DisplayTerm])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignment_LastModifiedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignment_PurchaseAgent]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
  REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignment_PurchaseLocation]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignment_ShipVia]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignment]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignment_ShipVia] FOREIGN KEY([ShipVia])
  REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentDTL_DeptNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_DeptNo] FOREIGN KEY([DeptNo])
  REFERENCES [dbo].[Dept] ([DeptNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentDTL_FontStyle]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_FontStyle] FOREIGN KEY([FontStyle])
  REFERENCES [dbo].[FontStyle] ([FontStyle])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentDTL_ItemBatch]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
  REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentDTL_ItemUOM]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
  REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentDTL_Location]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_Location] FOREIGN KEY([Location])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentDTL_ProjNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_ProjNo] FOREIGN KEY([ProjNo])
  REFERENCES [dbo].[Project] ([ProjNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentDTL_TaxType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentDTL_TaxType] FOREIGN KEY([TaxType])
  REFERENCES [dbo].[TaxType] ([TaxType])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturn_BranchCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_BranchCode] FOREIGN KEY([CreditorCode], [BranchCode])
  REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturn_CreatedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_CreatedUserID] FOREIGN KEY([CreatedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturn_CreditorCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_CreditorCode] FOREIGN KEY([CreditorCode])
  REFERENCES [dbo].[GLMast] ([AccNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturn_CurrencyCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_CurrencyCode] FOREIGN KEY([CurrencyCode])
  REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturn_DisplayTerm]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_DisplayTerm] FOREIGN KEY([DisplayTerm])
  REFERENCES [dbo].[Terms] ([DisplayTerm])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturn_LastModifiedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturn_PurchaseAgent]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_PurchaseAgent] FOREIGN KEY([PurchaseAgent])
  REFERENCES [dbo].[PurchaseAgent] ([PurchaseAgent])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturn_PurchaseLocation]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_PurchaseLocation] FOREIGN KEY([PurchaseLocation])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturn_ShipVia]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturn]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturn_ShipVia] FOREIGN KEY([ShipVia])
  REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturnDTL_DeptNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_DeptNo] FOREIGN KEY([DeptNo])
  REFERENCES [dbo].[Dept] ([DeptNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturnDTL_FontStyle]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_FontStyle] FOREIGN KEY([FontStyle])
  REFERENCES [dbo].[FontStyle] ([FontStyle])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturnDTL_ItemBatch]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
  REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturnDTL_ItemUOM]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
  REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturnDTL_Location]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_Location] FOREIGN KEY([Location])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturnDTL_ProjNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_ProjNo] FOREIGN KEY([ProjNo])
  REFERENCES [dbo].[Project] ([ProjNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PurchaseConsignmentReturnDTL_TaxType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL]  WITH CHECK ADD  CONSTRAINT [FK_PurchaseConsignmentReturnDTL_TaxType] FOREIGN KEY([TaxType])
  REFERENCES [dbo].[TaxType] ([TaxType])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateConsignmentChangeCount]') and objectproperty(id, N'IsTrigger') = 1)
	drop trigger [dbo].[UpdateConsignmentChangeCount]
GO

CREATE TRIGGER UpdateConsignmentChangeCount ON Consignment
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Consignment'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateConsignmentReturnChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
	drop trigger [dbo].[UpdateConsignmentReturnChangeCount]
GO

CREATE TRIGGER UpdateConsignmentReturnChangeCount ON ConsignmentReturn
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ConsignmentReturn'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdatePurchaseConsignmentChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
	drop trigger [dbo].[UpdatePurchaseConsignmentChangeCount]
GO

CREATE TRIGGER UpdatePurchaseConsignmentChangeCount ON PurchaseConsignment
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PurchaseConsignment'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdatePurchaseConsignmentReturnChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
	drop trigger [dbo].[UpdatePurchaseConsignmentReturnChangeCount]
GO

CREATE TRIGGER UpdatePurchaseConsignmentReturnChangeCount ON PurchaseConsignmentReturn
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='PurchaseConsignmentReturn'
SET NOCOUNT OFF
GO

/* Add DocNoFormat, ChangeCount and ColumnLock for Consignment */
UPDATE DocNoFormat SET DocType='PG' WHERE DocType='SG'
GO

if not exists (select * from [DocNoFormat] where DocType='CR')
  INSERT INTO [DocNoFormat] VALUES ('CR Default', 'CR', 1, 'CR-<000000>', 'CR-000001', 'T', 'F', Null);
GO

if not exists (select * from [DocNoFormat] where DocType='NR')
  INSERT INTO [DocNoFormat] VALUES ('NR Default', 'NR', 1, 'NR-<000000>', 'NR-000001', 'T', 'F', Null);
GO

DELETE FROM ChangeCount WHERE TableName='CSGN'
GO

DELETE FROM ChangeCount WHERE TableName='SupplierCSGN'
GO

if not exists (select * from ChangeCount where TableName = 'Consignment')
  INSERT INTO [ChangeCount] VALUES ('Consignment', 0);
GO

if not exists (select * from ChangeCount where TableName = 'ConsignmentReturn')
  INSERT INTO [ChangeCount] VALUES ('ConsignmentReturn', 0);
GO

if not exists (select * from ChangeCount where TableName = 'PurchaseConsignment')
  INSERT INTO [ChangeCount] VALUES ('PurchaseConsignment', 0);
GO

if not exists (select * from ChangeCount where TableName = 'PurchaseConsignmentReturn')
  INSERT INTO [ChangeCount] VALUES ('PurchaseConsignmentReturn', 0);
GO

if not exists (select * from [ColumnLock] where DocType='CG' AND DtlType='0')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CG', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='CR' AND DtlType='1')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='CR' AND DtlType='2')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='CR' AND DtlType='3')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='CR' AND DtlType='4')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='PG' AND DtlType='0')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PG', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='NR' AND DtlType='1')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('NR', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='NR' AND DtlType='2')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('NR', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='NR' AND DtlType='3')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('NR', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='NR' AND DtlType='4')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('NR', '4', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

UPDATE RemarkName SET DocType='PG' WHERE DocType='SG'
GO

if not exists (select * from [RemarkName] where DocType='CR')
  INSERT INTO [RemarkName] VALUES ('CR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
GO

if not exists (select * from [RemarkName] where DocType='NR')
  INSERT INTO [RemarkName] VALUES ('NR', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
GO

UPDATE TempDocument SET DocType='PG' WHERE DocType='SG'
GO

UPDATE SerialNoTrans SET DocType='PG' WHERE DocType='SG'
GO

UPDATE EventLog SET DocType='PG' WHERE DocType='SG'
GO

UPDATE Activity SET DocType='PG' WHERE DocType='SG'
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[AccessRight]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[AccessRight] ADD [AutoKey] [bigint] IDENTITY(1,1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[AccGroup]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[AccGroup] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[AccType]') and name = N'AutoKey') 
begin
	ALTER INDEX ALL ON [dbo].[AccType] DISABLE
	ALTER TABLE [dbo].[AccType] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
	ALTER INDEX ALL ON [dbo].[AccType] REBUILD

	-- After rebuild primary key index, Add back foreign key check constraint
	if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_AccGroup_AccType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
		ALTER TABLE [dbo].[AccGroup] WITH CHECK CHECK CONSTRAINT [FK_AccGroup_AccType]

	if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_BSFormat_AccType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
		ALTER TABLE [dbo].[BSFormat] CHECK CONSTRAINT [FK_BSFormat_AccType]

	if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_GLMAST_AccType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
		ALTER TABLE [dbo].[GLMast] WITH CHECK CHECK CONSTRAINT [FK_GLMAST_AccType]

	if exists (SELECT * FROM dbo.sysobjects where id = object_id(N'[dbo].[FK_PLFormat_AccType]') and OBJECTPROPERTY(id,N'IsForeignKey') = 1)
		ALTER TABLE [dbo].[PLFormat] CHECK CONSTRAINT [FK_PLFormat_AccType]
end
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Address]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[Address] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCNKnockOffDetail]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[APCNKnockOffDetail] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APContraKnockOffDetail]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[APContraKnockOffDetail] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APPaymentKnockOffDetail]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[APPaymentKnockOffDetail] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APRefundKnockOffDetail]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[APRefundKnockOffDetail] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCNKnockOffDetail]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[ARCNKnockOffDetail] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARContraKnockOffDetail]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[ARContraKnockOffDetail] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Area]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[Area] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Area]') and name = N'Guid') 
  ALTER TABLE [dbo].[Area] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[Area] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[Area] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Area_Guid]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Area] ADD CONSTRAINT[UIX_Area_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARPaymentKnockOffDetail]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[ARPaymentKnockOffDetail] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARRefundKnockOffDetail]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[ARRefundKnockOffDetail] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[AssetLink]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[AssetLink] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BankRecon]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[BankRecon] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Branch]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[Branch] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BudgetPBalance]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[BudgetPBalance] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ChangeCount]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[ChangeCount] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNType]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[CNType] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Commission]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[Commission] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Contact]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[Contact] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Creditor] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CreditorType]') and name = N'AutoKey')
  ALTER TABLE [dbo].[CreditorType] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Criteria]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Criteria] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSGNItemBalQty]') and name = N'AutoKey')
  ALTER TABLE [dbo].[CSGNItemBalQty] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Currency]') and name = N'Guid')
  ALTER TABLE [dbo].[Currency] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[Currency] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[Currency] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_CURRENCY_Guid]'))
  ALTER TABLE [dbo].[Currency] ADD CONSTRAINT[UIX_CURRENCY_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CurrRate]') and name = N'AutoKey')
  ALTER TABLE [dbo].[CurrRate] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CurrRate]') and name = N'Guid')
  ALTER TABLE [dbo].[CurrRate] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[CurrRate] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[CurrRate] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_CurrRate_Guid]'))
  ALTER TABLE [dbo].[CurrRate] ADD CONSTRAINT[UIX_CurrRate_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Debtor] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'Guid')
  ALTER TABLE [dbo].[Debtor] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[Debtor] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[Debtor] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Debtor_Guid]'))
  ALTER TABLE [dbo].[Debtor] ADD CONSTRAINT[UIX_Debtor_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DebtorType]') and name = N'AutoKey')
  ALTER TABLE [dbo].[DebtorType] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DebtorType]') and name = N'Guid')
  ALTER TABLE [dbo].[DebtorType] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[DebtorType] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[DebtorType] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_DebtorType_Guid]'))
  ALTER TABLE [dbo].[DebtorType] ADD CONSTRAINT[UIX_DebtorType_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DefaultReport]') and name = N'AutoKey')
  ALTER TABLE [dbo].[DefaultReport] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNType]') and name = N'AutoKey')
  ALTER TABLE [dbo].[DNType] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormat]') and name = N'AutoKey')
  ALTER TABLE [dbo].[DocNoFormat] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormatAccNo]') and name = N'AutoKey')
  ALTER TABLE [dbo].[DocNoFormatAccNo] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormatUsers]') and name = N'AutoKey')
  ALTER TABLE [dbo].[DocNoFormatUsers] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DocNoFormatYearlyNumber]') and name = N'AutoKey')
  ALTER TABLE [dbo].[DocNoFormatYearlyNumber] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[FiscalYear]') and name = N'AutoKey')
  ALTER TABLE [dbo].[FiscalYear] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[FontStyle]') and name = N'AutoKey')
  ALTER TABLE [dbo].[FontStyle] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Footer]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Footer] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[FRCustomText]') and name = N'AutoKey')
  ALTER TABLE [dbo].[FRCustomText] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GridListingFilter]') and name = N'AutoKey')
  ALTER TABLE [dbo].[GridListingFilter] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GridListingFilterUsers]') and name = N'AutoKey')
  ALTER TABLE [dbo].[GridListingFilterUsers] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IPHist]') and name = N'Guid')
  ALTER TABLE [dbo].[IPHist] ADD [Guid] [uniqueidentifier] null
else
  ALTER TABLE [dbo].[IPHist] ALTER Column [Guid] [uniqueidentifier] null
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XPDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[XPDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from XPDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CPDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[CPDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from CPDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GRDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[GRDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from GRDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GTDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[GTDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from GTDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PIDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[PIDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from PIDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[PODTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from PODTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[PRDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from PRDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[RQDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from RQDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XSDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[XSDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from XSDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[CSDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from CSDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[CNDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from CNDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[DNDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from DNDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DODTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[DODTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from DODTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DRDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[DRDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from DRDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[IVDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from IVDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QTDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[QTDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from QTDTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[SODTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from SODTL Group By Guid Having Count(Guid)>1)')
END
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[POSDTL]') and name = N'Guid')
BEGIN
  Exec ('UPDATE [dbo].[POSDTL] SET Guid = NEWID() WHERE Guid Is Null OR Guid IN (Select Guid from POSDTL Group By Guid Having Count(Guid)>1)')
END
GO

UPDATE [dbo].[IPHist] SET Guid = NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XPDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From XPDTL WHERE XPDTL.DtlKey = IPHist.DtlKey) WHERE DocType='XP' AND DtlKey IN (SELECT DtlKey FROM XPDTL WHERE XPDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CPDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From CPDTL WHERE CPDTL.DtlKey = IPHist.DtlKey) WHERE DocType='CP' AND DtlKey IN (SELECT DtlKey FROM CPDTL WHERE CPDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GRDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From GRDTL WHERE GRDTL.DtlKey = IPHist.DtlKey) WHERE DocType='GR' AND DtlKey IN (SELECT DtlKey FROM GRDTL WHERE GRDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GTDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From GTDTL WHERE GTDTL.DtlKey = IPHist.DtlKey) WHERE DocType='GT' AND DtlKey IN (SELECT DtlKey FROM GTDTL WHERE GTDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PIDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From PIDTL WHERE PIDTL.DtlKey = IPHist.DtlKey) WHERE DocType='PI' AND DtlKey IN (SELECT DtlKey FROM PIDTL WHERE PIDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From PODTL WHERE PODTL.DtlKey = IPHist.DtlKey) WHERE DocType='PO' AND DtlKey IN (SELECT DtlKey FROM PODTL WHERE PODTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From PRDTL WHERE PRDTL.DtlKey = IPHist.DtlKey) WHERE DocType='PR' AND DtlKey IN (SELECT DtlKey FROM PRDTL WHERE PRDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From RQDTL WHERE RQDTL.DtlKey = IPHist.DtlKey) WHERE DocType='RQ' AND DtlKey IN (SELECT DtlKey FROM RQDTL WHERE RQDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XSDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From XSDTL WHERE XSDTL.DtlKey = IPHist.DtlKey) WHERE DocType='XS' AND DtlKey IN (SELECT DtlKey FROM XSDTL WHERE XSDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From CSDTL WHERE CSDTL.DtlKey = IPHist.DtlKey) WHERE DocType='CS' AND DtlKey IN (SELECT DtlKey FROM CSDTL WHERE CSDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From CNDTL WHERE CNDTL.DtlKey = IPHist.DtlKey) WHERE DocType='CN' AND DtlKey IN (SELECT DtlKey FROM CNDTL WHERE CNDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From DNDTL WHERE DNDTL.DtlKey = IPHist.DtlKey) WHERE DocType='DN' AND DtlKey IN (SELECT DtlKey FROM DNDTL WHERE DNDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DODTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From DODTL WHERE DODTL.DtlKey = IPHist.DtlKey) WHERE DocType='DO' AND DtlKey IN (SELECT DtlKey FROM DODTL WHERE DODTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DRDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From DRDTL WHERE DRDTL.DtlKey = IPHist.DtlKey) WHERE DocType='DR' AND DtlKey IN (SELECT DtlKey FROM DRDTL WHERE DRDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From IVDTL WHERE IVDTL.DtlKey = IPHist.DtlKey) WHERE DocType='IV' AND DtlKey IN (SELECT DtlKey FROM IVDTL WHERE IVDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QTDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From QTDTL WHERE QTDTL.DtlKey = IPHist.DtlKey) WHERE DocType='QT' AND DtlKey IN (SELECT DtlKey FROM QTDTL WHERE QTDTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From SODTL WHERE SODTL.DtlKey = IPHist.DtlKey) WHERE DocType='SO' AND DtlKey IN (SELECT DtlKey FROM SODTL WHERE SODTL.DocKey = IPHIST.DocKey)
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[POSDTL]') and name = N'Guid')
  UPDATE [dbo].[IPHist] SET Guid = (Select Guid From POSDTL WHERE POSDTL.DtlKey = IPHist.DtlKey) WHERE DocType='OS' AND DtlKey IN (SELECT DtlKey FROM POSDTL WHERE POSDTL.DocKey = IPHIST.DocKey)
GO

UPDATE [dbo].[IPHist] SET Guid = NEWID() WHERE Guid Is Null
GO

ALTER TABLE [dbo].[IPHist] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_IPHIST_Guid]'))
  ALTER TABLE [dbo].[IPHist] ADD CONSTRAINT[UIX_IPHIST_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Item] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'Guid')
  ALTER TABLE [dbo].[Item] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[Item] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[Item] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Item_Guid]'))
  ALTER TABLE [dbo].[Item] ADD CONSTRAINT[UIX_Item_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemBatch]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ItemBatch] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemBatch]') and name = N'Guid')
  ALTER TABLE [dbo].[ItemBatch] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[ItemBatch] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[ItemBatch] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemBatch_Guid]'))
  ALTER TABLE [dbo].[ItemBatch] ADD CONSTRAINT[UIX_ItemBatch_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemBatchBalQty]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ItemBatchBalQty] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemBatchBalQty]') and name = N'Guid')
  ALTER TABLE [dbo].[ItemBatchBalQty] ADD [Guid][uniqueidentifier] null
GO

UPDATE [dbo].[ItemBatchBalQty] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[ItemBatchBalQty] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemBatchBalQty_Guid]'))
  ALTER TABLE [dbo].[ItemBatchBalQty] ADD CONSTRAINT[UIX_ItemBatchBalQty_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemCurrencyPrice]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ItemCurrencyPrice] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemGroup]') and name = N'Guid')
  ALTER TABLE [dbo].[ItemGroup] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[ItemGroup] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[ItemGroup] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemGroup_Guid]'))
  ALTER TABLE [dbo].[ItemGroup] ADD CONSTRAINT[UIX_ItemGroup_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemLocationPrice]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ItemLocationPrice] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemLocationPrice]') and name = N'Guid')
  ALTER TABLE [dbo].[ItemLocationPrice] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[ItemLocationPrice] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[ItemLocationPrice] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemLocationPrice_Guid]'))
  ALTER TABLE [dbo].[ItemLocationPrice] ADD CONSTRAINT[UIX_ItemLocationPrice_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemPrice]') and name = N'Guid') 
  ALTER TABLE [dbo].[ItemPrice] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[ItemPrice] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[ItemPrice] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemPrice_Guid]'))
  ALTER TABLE [dbo].[ItemPrice] ADD CONSTRAINT[UIX_ItemPrice_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemReplacement]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ItemReplacement] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemSerialNo]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ItemSerialNo] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemSerialNo]') and name = N'Guid')
  ALTER TABLE [dbo].[ItemSerialNo] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[ItemSerialNo] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[ItemSerialNo] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemSerialNo_Guid]'))
  ALTER TABLE [dbo].[ItemSerialNo] ADD CONSTRAINT[UIX_ItemSerialNo_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemSerialNoDtl]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ItemSerialNoDtl] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemSerialNoDtl]') and name = N'Guid')
  ALTER TABLE [dbo].[ItemSerialNoDtl] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[ItemSerialNoDtl] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[ItemSerialNoDtl] ALTER Column Guid[uniqueidentifier] not null
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemSerialNoDtl_Guid]'))
  ALTER TABLE [dbo].[ItemSerialNoDtl] ADD CONSTRAINT[UIX_ItemSerialNoDtl_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemSubCode]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ItemSubCode] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemSubCode]') and name = N'Guid')
  ALTER TABLE [dbo].[ItemSubCode] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[ItemSubCode] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[ItemSubCode] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemSubCode_Guid]'))
  ALTER TABLE [dbo].[ItemSubCode] ADD CONSTRAINT[UIX_ItemSubCode_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemType]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ItemType] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemType]') and name = N'Guid')
  ALTER TABLE [dbo].[ItemType] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[ItemType] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[ItemType] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemType_Guid]'))
  ALTER TABLE [dbo].[ItemType] ADD CONSTRAINT[UIX_ItemType_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemUOM]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ItemUOM] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemUOM]') and name = N'Guid')
  ALTER TABLE [dbo].[ItemUOM] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[ItemUOM] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[ItemUOM] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ITEMUOM_Guid]'))
  ALTER TABLE [dbo].[ItemUOM] ADD CONSTRAINT[UIX_ITEMUOM_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Journal]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Journal] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Layout]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Layout] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[LayoutUsers]') and name = N'AutoKey')
  ALTER TABLE [dbo].[LayoutUsers] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Location] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Location]') and name = N'Guid') 
  ALTER TABLE [dbo].[Location] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[Location] SET Guid = NEWID() WHERE Guid is null 
GO

ALTER TABLE [dbo].[Location] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Location_Guid]'))
  ALTER TABLE [dbo].[Location] ADD CONSTRAINT[UIX_Location_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Member] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Member]') and name = N'Guid')
  ALTER TABLE [dbo].[Member] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[Member] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[Member] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Member_Guid]'))
  ALTER TABLE [dbo].[Member] ADD CONSTRAINT[UIX_Member_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[MemberType]') and name = N'AutoKey')
  ALTER TABLE [dbo].[MemberType] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[MemberType]') and name = N'Guid')
  ALTER TABLE [dbo].[MemberType] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[MemberType] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[MemberType] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_MemberType_Guid]'))
  ALTER TABLE [dbo].[MemberType] ADD CONSTRAINT[UIX_MemberType_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[OBalance]') and name = N'AutoKey')
  ALTER TABLE [dbo].[OBalance] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Package]') and name = N'Guid') 
  ALTER TABLE [dbo].[Package] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[Package] SET Guid = NEWID() WHERE Guid is null 
GO

ALTER TABLE [dbo].[Package] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Package_Guid]'))
  ALTER TABLE [dbo].[Package] ADD CONSTRAINT[UIX_Package_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PackageDtl]') and name = N'Guid') 
  ALTER TABLE [dbo].[PackageDtl] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[PackageDtl] SET Guid = NEWID() WHERE Guid is null 
GO

ALTER TABLE [dbo].[PackageDtl] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_PackageDtl_Guid]'))
  ALTER TABLE [dbo].[PackageDtl] ADD CONSTRAINT[UIX_PackageDtl_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PaymentMethod]') and name = N'AutoKey')
  ALTER TABLE [dbo].[PaymentMethod] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PaymentMethod]') and name = N'Guid') 
  ALTER TABLE [dbo].[PaymentMethod] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[PaymentMethod] SET Guid = NEWID() WHERE Guid is null 
GO

ALTER TABLE [dbo].[PaymentMethod] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_PaymentMethod_Guid]'))
  ALTER TABLE [dbo].[PaymentMethod] ADD CONSTRAINT[UIX_PaymentMethod_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PBalance]') and name = N'AutoKey')
  ALTER TABLE [dbo].[PBalance] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PeriodLockException]') and name = N'AutoKey')
  ALTER TABLE [dbo].[PeriodLockException] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PointTrans]') and name = N'Guid')
  ALTER TABLE [dbo].[PointTrans] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[PointTrans] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[PointTrans] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_PointTrans_Guid]'))
  ALTER TABLE [dbo].[PointTrans] ADD CONSTRAINT[UIX_PointTrans_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PostingAccountGroup]') and name = N'AutoKey')
  ALTER TABLE [dbo].[PostingAccountGroup] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PriceCategory]') and name = N'AutoKey')
  ALTER TABLE [dbo].[PriceCategory] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Profile] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Project]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Project] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseAgent]') and name = N'AutoKey')
  ALTER TABLE [dbo].[PurchaseAgent] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Race]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Race] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Race]') and name = N'Guid')
  ALTER TABLE [dbo].[Race] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[Race] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[Race] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Race_Guid]'))
  ALTER TABLE [dbo].[Race] ADD CONSTRAINT[UIX_Race_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Report]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Report] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SalesAgent]') and name = N'AutoKey')
  ALTER TABLE [dbo].[SalesAgent] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SalesAgent]') and name = N'Guid')
  ALTER TABLE [dbo].[SalesAgent] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[SalesAgent] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[SalesAgent] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_SalesAgent_Guid]'))
  ALTER TABLE [dbo].[SalesAgent] ADD CONSTRAINT[UIX_SalesAgent_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SerialNoTrans]') and name = N'Guid')
  ALTER TABLE [dbo].[SerialNoTrans] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[SerialNoTrans] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[SerialNoTrans] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_SerialNoTrans_Guid]'))
  ALTER TABLE [dbo].[SerialNoTrans] ADD CONSTRAINT[UIX_SerialNoTrans_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ShippingMethod]') and name = N'AutoKey')
  ALTER TABLE [dbo].[ShippingMethod] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockPBalance]') and name = N'AutoKey')
  ALTER TABLE [dbo].[StockPBalance] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'AutoKey')
  ALTER TABLE [dbo].[TaxType] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'Guid')
  ALTER TABLE [dbo].[TaxType] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[TaxType] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[TaxType] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_TaxType_Guid]'))
  ALTER TABLE [dbo].[TaxType] ADD CONSTRAINT[UIX_TaxType_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TemporaryCredit]') and name = N'AutoKey')
  ALTER TABLE [dbo].[TemporaryCredit] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Terms]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Terms] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UDF]') and name = N'AutoKey')
  ALTER TABLE [dbo].[UDF] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UDF]') and name = N'Guid') 
  ALTER TABLE [dbo].[UDF] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[UDF] SET Guid = NEWID() WHERE Guid is null 
GO

ALTER TABLE [dbo].[UDF] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_UDF_Guid]'))
  ALTER TABLE [dbo].[UDF] ADD CONSTRAINT[UIX_UDF_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UDFLayout]') and name = N'AutoKey')
  ALTER TABLE [dbo].[UDFLayout] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UDFLayout]') and name = N'Guid') 
  ALTER TABLE [dbo].[UDFLayout] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[UDFLayout] SET Guid = NEWID() WHERE Guid is null 
GO

ALTER TABLE [dbo].[UDFLayout] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_UDFLayout_Guid]'))
  ALTER TABLE [dbo].[UDFLayout] ADD CONSTRAINT[UIX_UDFLayout_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UDFList]') and name = N'AutoKey')
  ALTER TABLE [dbo].[UDFList] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UDFList]') and name = N'Guid') 
  ALTER TABLE [dbo].[UDFList] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[UDFList] SET Guid = NEWID() WHERE Guid is null 
GO

ALTER TABLE [dbo].[UDFList] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_UDFList_Guid]'))
  ALTER TABLE [dbo].[UDFList] ADD CONSTRAINT[UIX_UDFList_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UserGroup]') and name = N'AutoKey')
  ALTER TABLE [dbo].[UserGroup] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Users] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UserScript]') and name = N'Guid') 
  ALTER TABLE [dbo].[UserScript] ADD [Guid][uniqueidentifier] null 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'FromDocType') 
  ALTER TABLE [dbo].[RQDTL] ADD [FromDocType] [dbo].[d_DocType] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'FromDocNo') 
  ALTER TABLE [dbo].[RQDTL] ADD [FromDocNo] [dbo].[d_DocNo] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'FromDocDtlKey') 
  ALTER TABLE [dbo].[RQDTL] ADD [FromDocDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'FullTransferOption') 
  ALTER TABLE [dbo].[RQDTL] ADD [FullTransferOption] [dbo].[d_FullTransferOption] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'FullTransferFromDocList') 
  ALTER TABLE [dbo].[RQDTL] ADD [FullTransferFromDocList] [nvarchar](max) NULL
GO

UPDATE [dbo].[UserScript] SET Guid = NEWID() WHERE Guid is null 
GO

ALTER TABLE [dbo].[UserScript] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_UserScript_Guid]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[UserScript] ADD CONSTRAINT[UIX_UserScript_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_AccGroup_AccType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[AccGroup] ADD CONSTRAINT [UIX_AccGroup_AccType] UNIQUE NONCLUSTERED ([AccType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_AccType_AccType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[AccType] ADD CONSTRAINT [UIX_AccType_AccType] UNIQUE NONCLUSTERED ([AccType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Address_Name]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Address] ADD CONSTRAINT [UIX_Address_Name] UNIQUE NONCLUSTERED ([Name] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_APCNKnockOffDetail_KnockOffKey_KnockOffDtlKey]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[APCNKnockOffDetail] ADD CONSTRAINT [UIX_APCNKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED ([KnockOffKey] ASC, [KnockOffDtlKey] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_APContraKnockOffDetail_KnockOffKey_KnockOffDtlKey]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[APContraKnockOffDetail] ADD CONSTRAINT [UIX_APContraKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED ([KnockOffKey] ASC, [KnockOffDtlKey] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_APPaymentKnockOffDetail_KnockOffKey_KnockOffDtlKey]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[APPaymentKnockOffDetail] ADD CONSTRAINT [UIX_APPaymentKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED ([KnockOffKey] ASC, [KnockOffDtlKey] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_APRefundKnockOffDetail_KnockOffKey_KnockOffDtlKey]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[APRefundKnockOffDetail] ADD CONSTRAINT [UIX_APRefundKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED ([KnockOffKey] ASC, [KnockOffDtlKey] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ARCNKnockOffDetail_KnockOffKey_KnockOffDtlKey]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ARCNKnockOffDetail] ADD CONSTRAINT [UIX_ARCNKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED ([KnockOffKey] ASC, [KnockOffDtlKey] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ARContraKnockOffDetail_KnockOffKey_KnockOffDtlKey]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ARContraKnockOffDetail] ADD CONSTRAINT [UIX_ARContraKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED ([KnockOffKey] ASC, [KnockOffDtlKey] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Area_AreaCode]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Area] ADD CONSTRAINT [UIX_Area_AreaCode] UNIQUE NONCLUSTERED ([AreaCode] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ARPaymentKnockOffDetail_KnockOffKey_KnockOffDtlKey]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ARPaymentKnockOffDetail] ADD CONSTRAINT [UIX_ARPaymentKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED ([KnockOffKey] ASC, [KnockOffDtlKey] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ARRefundKnockOffDetail_KnockOffKey_KnockOffDtlKey]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ARRefundKnockOffDetail] ADD CONSTRAINT [UIX_ARRefundKnockOffDetail_KnockOffKey_KnockOffDtlKey] UNIQUE NONCLUSTERED ([KnockOffKey] ASC, [KnockOffDtlKey] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_AssetLink_AssetAccNo_AssetDeprnAccNo]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[AssetLink] ADD CONSTRAINT [UIX_AssetLink_AssetAccNo_AssetDeprnAccNo] UNIQUE NONCLUSTERED ([AssetAccNo] ASC, [AssetDeprnAccNo] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_BankRecon_AccNo_BankStatementDate]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[BankRecon] ADD CONSTRAINT [UIX_BankRecon_AccNo_BankStatementDate] UNIQUE NONCLUSTERED ([AccNo] ASC, [BankStatementDate] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Branch_AccNo_BranchCode]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Branch] ADD CONSTRAINT [UIX_Branch_AccNo_BranchCode] UNIQUE NONCLUSTERED ([AccNo] ASC, [BranchCode] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_BudgetPBalance_BudgetKey_PeriodNo_AccNo_ProjNo_DeptNo]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[BudgetPBalance] ADD CONSTRAINT [UIX_BudgetPBalance_BudgetKey_PeriodNo_AccNo_ProjNo_DeptNo] UNIQUE NONCLUSTERED ([BudgetKey] ASC, [PeriodNo] ASC, [AccNo] ASC, [ProjNo] ASC, [DeptNo] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ChangeCount_TableName]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ChangeCount] ADD CONSTRAINT [UIX_ChangeCount_TableName] UNIQUE NONCLUSTERED ([TableName] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_CNType_CNType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[CNType] ADD CONSTRAINT [UIX_CNType_CNType] UNIQUE NONCLUSTERED ([CNType] ASC)
GO

--if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ColumnLock_DocType_DtlType]'))
--ALTER TABLE [dbo].[ColumnLock] ADD CONSTRAINT [UIX_ColumnLock_DocType_DtlType] UNIQUE NONCLUSTERED ([DocType] ASC, [DtlType] ASC)
--GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Commission_SalesAgent_WithinDay]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Commission] ADD CONSTRAINT [UIX_Commission_SalesAgent_WithinDay] UNIQUE NONCLUSTERED ([SalesAgent] ASC, [WithinDay] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Contact_AccNo_Name]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Contact] ADD CONSTRAINT [UIX_Contact_AccNo_Name] UNIQUE NONCLUSTERED ([AccNo] ASC, [Name] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Creditor_AccNo]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Creditor] ADD CONSTRAINT [UIX_Creditor_AccNo] UNIQUE NONCLUSTERED ([AccNo] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_CreditorType_CreditorType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[CreditorType] ADD CONSTRAINT [UIX_CreditorType_CreditorType] UNIQUE NONCLUSTERED ([CreditorType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Criteria_CriteriaName]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Criteria] ADD CONSTRAINT [UIX_Criteria_CriteriaName] UNIQUE NONCLUSTERED ([CriteriaName] ASC, [CriteriaType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_CurrRate_CurrencyCode_FromDate_ToDate]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[CurrRate] ADD CONSTRAINT [UIX_CurrRate_CurrencyCode_FromDate_ToDate] UNIQUE NONCLUSTERED ([CurrencyCode] ASC, [FromDate] ASC, [ToDate] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Debtor_AccNo]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Debtor] ADD CONSTRAINT [UIX_Debtor_AccNo] UNIQUE NONCLUSTERED ([AccNo] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_DebtorType_DebtorType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[DebtorType] ADD CONSTRAINT [UIX_DebtorType_DebtorType] UNIQUE NONCLUSTERED ([DebtorType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_DefaultReport_ReportType_ReportType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[DefaultReport] ADD CONSTRAINT [UIX_DefaultReport_ReportType_ReportType] UNIQUE NONCLUSTERED ([ReportType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_DNType_DNType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[DNType] ADD CONSTRAINT [UIX_DNType_DNType] UNIQUE NONCLUSTERED ([DNType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_DocNoFormat_Name]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[DocNoFormat] ADD CONSTRAINT [UIX_DocNoFormat_Name] UNIQUE NONCLUSTERED ([Name] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_DocNoFormatAccNo_Name_AccNo]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[DocNoFormatAccNo] ADD CONSTRAINT [UIX_DocNoFormatAccNo_Name_AccNo] UNIQUE NONCLUSTERED ([Name] ASC, [AccNo] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_DocNoFormatUsers_Name_UserID]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[DocNoFormatUsers] ADD CONSTRAINT [UIX_DocNoFormatUsers_Name_UserID] UNIQUE NONCLUSTERED ([Name] ASC, [UserID] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_DocNoFormatYearlyNumber_Name_Year]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[DocNoFormatYearlyNumber] ADD CONSTRAINT [UIX_DocNoFormatYearlyNumber_Name_Year] UNIQUE NONCLUSTERED ([Name] ASC, [Year] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_FiscalYear_FiscalYearName]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[FiscalYear] ADD CONSTRAINT [UIX_FiscalYear_FiscalYearName] UNIQUE NONCLUSTERED ([FiscalYearName] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_FontStyle_FontStyle]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[FontStyle] ADD CONSTRAINT [UIX_FontStyle_FontStyle] UNIQUE NONCLUSTERED ([FontStyle] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Footer_FooterName]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Footer] ADD CONSTRAINT [UIX_Footer_FooterName] UNIQUE NONCLUSTERED ([FooterName] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_FRCustomText_ID]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[FRCustomText] ADD CONSTRAINT [UIX_FRCustomText_ID] UNIQUE NONCLUSTERED ([ID] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_GridListingFilter_FilterName]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[GridListingFilter] ADD CONSTRAINT [UIX_GridListingFilter_FilterName] UNIQUE NONCLUSTERED ([FilterName] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_GridListingFilterUsers_FilterName_UserID]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[GridListingFilterUsers] ADD CONSTRAINT [UIX_GridListingFilterUsers_FilterName_UserID] UNIQUE NONCLUSTERED ([FilterName] ASC, [UserID] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Item_ItemCode]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Item] ADD CONSTRAINT [UIX_Item_ItemCode] UNIQUE NONCLUSTERED ([ItemCode] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemBatch_ItemCode_BatchNo]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ItemBatch] ADD CONSTRAINT [UIX_ItemBatch_ItemCode_BatchNo] UNIQUE NONCLUSTERED ([ItemCode] ASC, [BatchNo] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemBatchBalQty_ItemCode_UOM_Location_BatchNo]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ItemBatchBalQty] ADD CONSTRAINT [UIX_ItemBatchBalQty_ItemCode_UOM_Location_BatchNo] UNIQUE NONCLUSTERED ([ItemCode] ASC, [UOM] ASC, [Location] ASC, [BatchNo] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemCurrencyPrice_ItemCode_UOM_CurrencyCode]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ItemCurrencyPrice] ADD CONSTRAINT [UIX_ItemCurrencyPrice_ItemCode_UOM_CurrencyCode] UNIQUE NONCLUSTERED ([ItemCode] ASC, [UOM] ASC, [CurrencyCode] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemLocationPrice_ItemCode_UOM_Location]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ItemLocationPrice] ADD CONSTRAINT [UIX_ItemLocationPrice_ItemCode_UOM_Location] UNIQUE NONCLUSTERED ([ItemCode] ASC, [UOM] ASC, [Location] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemReplacement_ItemCode_ReplacementItemCode]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ItemReplacement] ADD CONSTRAINT [UIX_ItemReplacement_ItemCode_ReplacementItemCode] UNIQUE NONCLUSTERED ([ItemCode] ASC, [ReplacementItemCode] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemSerialNo_ItemCode_SerialNumber]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ItemSerialNo] ADD CONSTRAINT [UIX_ItemSerialNo_ItemCode_SerialNumber] UNIQUE NONCLUSTERED ([ItemCode] ASC, [SerialNumber] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemSerialNoDtl_ItemCode_SerialNumber_Location]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ItemSerialNoDtl] ADD CONSTRAINT [UIX_ItemSerialNoDtl_ItemCode_SerialNumber_Location] UNIQUE NONCLUSTERED ([ItemCode] ASC, [SerialNumber] ASC, [Location] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemSubCode_ItemCode_SubCode]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ItemSubCode] ADD CONSTRAINT [UIX_ItemSubCode_ItemCode_SubCode] UNIQUE NONCLUSTERED ([ItemCode] ASC, [SubCode] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ItemType_ItemType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ItemType] ADD CONSTRAINT [UIX_ItemType_ItemType] UNIQUE NONCLUSTERED ([ItemType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ITEMUOM_ItemCode_UOM]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ItemUOM] ADD CONSTRAINT [UIX_ITEMUOM_ItemCode_UOM] UNIQUE NONCLUSTERED ([ItemCode] ASC, [UOM] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Journal_JournalType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Journal] ADD CONSTRAINT [UIX_Journal_JournalType] UNIQUE NONCLUSTERED ([JournalType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Layout_Title]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Layout] ADD CONSTRAINT [UIX_Layout_Title] UNIQUE NONCLUSTERED ([Title] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_LayoutUsers_Title_UserID]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[LayoutUsers] ADD CONSTRAINT [UIX_LayoutUsers_Title_UserID] UNIQUE NONCLUSTERED ([Title] ASC, [UserID] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Location_Location]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Location] ADD CONSTRAINT [UIX_Location_Location] UNIQUE NONCLUSTERED ([Location] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Member_MemberNo]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Member] ADD CONSTRAINT [UIX_Member_MemberNo] UNIQUE NONCLUSTERED ([MemberNo] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_MemberType_MemberType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[MemberType] ADD CONSTRAINT [UIX_MemberType_MemberType] UNIQUE NONCLUSTERED ([MemberType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_PaymentMethod_PaymentMethod]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[PaymentMethod] ADD CONSTRAINT [UIX_PaymentMethod_PaymentMethod] UNIQUE NONCLUSTERED ([PaymentMethod] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_PeriodLockException_PeriodNo_FunctionName_UserID]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[PeriodLockException] ADD CONSTRAINT [UIX_PeriodLockException_PeriodNo_FunctionName_UserID] UNIQUE NONCLUSTERED ([PeriodNo] ASC, [FunctionName] ASC, [UserID] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_PostingAccountGroup_AccountGroup]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[PostingAccountGroup] ADD CONSTRAINT [UIX_PostingAccountGroup_AccountGroup] UNIQUE NONCLUSTERED ([AccountGroup] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_PriceCategory_PriceCategory]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[PriceCategory] ADD CONSTRAINT [UIX_PriceCategory_PriceCategory] UNIQUE NONCLUSTERED ([PriceCategory] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Profile_CompanyName]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Profile] ADD CONSTRAINT [UIX_Profile_CompanyName] UNIQUE NONCLUSTERED ([CompanyName] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_PurchaseAgent_PurchaseAgent]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[PurchaseAgent] ADD CONSTRAINT [UIX_PurchaseAgent_PurchaseAgent] UNIQUE NONCLUSTERED ([PurchaseAgent] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Race_Race]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Race] ADD CONSTRAINT [UIX_Race_Race] UNIQUE NONCLUSTERED ([Race] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Report_ReportName]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Report] ADD CONSTRAINT [UIX_Report_ReportName] UNIQUE NONCLUSTERED ([ReportName] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_SalesAgent_SalesAgent]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[SalesAgent] ADD CONSTRAINT [UIX_SalesAgent_SalesAgent] UNIQUE NONCLUSTERED ([SalesAgent] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_ShippingMethod_ShippingMethod]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[ShippingMethod] ADD CONSTRAINT [UIX_ShippingMethod_ShippingMethod] UNIQUE NONCLUSTERED ([ShippingMethod] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_TaxType_TaxType]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[TaxType] ADD CONSTRAINT [UIX_TaxType_TaxType] UNIQUE NONCLUSTERED ([TaxType] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_TemporaryCredit_AccNo_FormDate_ToDate]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[TemporaryCredit] ADD CONSTRAINT [UIX_TemporaryCredit_AccNo_FormDate_ToDate] UNIQUE NONCLUSTERED ([AccNo] ASC, [FromDate] ASC, [ToDate] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Terms_DisplayTerm]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Terms] ADD CONSTRAINT [UIX_Terms_DisplayTerm] UNIQUE NONCLUSTERED ([DisplayTerm] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_UDFLayout_TableName_LayoutName]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[UDFLayout] ADD CONSTRAINT [UIX_UDFLayout_TableName_LayoutName] UNIQUE NONCLUSTERED ([TableName] ASC, [LayoutName] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_UDFList_Name]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[UDFList] ADD CONSTRAINT [UIX_UDFList_Name] UNIQUE NONCLUSTERED ([Name] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_UserGroup]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[UserGroup] ADD CONSTRAINT [UIX_UserGroup] UNIQUE NONCLUSTERED ([UserGroupID] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Users_UserID]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Users] ADD CONSTRAINT [UIX_Users_UserID] UNIQUE NONCLUSTERED ([UserID] ASC)
GO


-- Drop ItemBalQty table
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemBalQty]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[ItemBalQty]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MemberBalPoint]') and OBJECTPROPERTY(id, N'IsTable') = 1)
	CREATE TABLE [dbo].[MemberBalPoint](
		[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
		[MemberNo] [d_MemberNo] NOT NULL,
		[Point] [d_MemberPoint] NULL,
		[Guid] [uniqueidentifier] NOT NULL,
		CONSTRAINT [PK_MemberBalPoint_AutoKey] PRIMARY KEY CLUSTERED
		(
			[AutoKey] ASC
		),
		CONSTRAINT [UK_MemberBalPoint_MemberNo] UNIQUE NONCLUSTERED
		(
			[MemberNo] ASC
		),
		CONSTRAINT [UK_MemberBalPoint_Guid] UNIQUE NONCLUSTERED
		(
			[Guid] ASC
		)
	) ON [PRIMARY]
GO


-- Remove Column with default constraints
DECLARE @DefaultName sysname
DECLARE @DefaultTableName sysname
DECLARE @DefaultTable TABLE(DefaultName sysname, DefaultTableName sysname)
DECLARE @cur_default cursor
DECLARE @cmd_default NVARCHAR(1000) 

-- Find Default constraints index
Insert Into @DefaultTable SELECT sys.default_constraints.name, sys.tables.name
FROM sys.all_columns INNER JOIN sys.tables ON sys.all_columns.object_id = sys.tables.object_id INNER JOIN sys.schemas ON sys.tables.schema_id = sys.schemas.schema_id 
INNER JOIN sys.default_constraints ON sys.all_columns.default_object_id = sys.default_constraints.object_id
WHERE sys.schemas.name = 'dbo' AND sys.tables.name IN ('ItemBatch', 'ItemUOM') AND sys.all_columns.name = 'BalQty'

BEGIN TRANSACTION
SET @cur_default = CURSOR FAST_FORWARD FOR SELECT DefaultName, DefaultTableName From @DefaultTable
OPEN @cur_default
FETCH NEXT FROM @cur_default INTO @DefaultName, @DefaultTableName

WHILE @@FETCH_STATUS = 0
BEGIN
	SET @cmd_default = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @DefaultName + ']'') and OBJECTPROPERTY(id, N''IsDefaultCnst'') = 1) ALTER TABLE [dbo].[' + @DefaultTableName + '] DROP CONSTRAINT [' + @DefaultName + ']'
	Exec sp_executesql @cmd_default
	--PRINT @cmd_default

	IF @@ERROR <> 0
	BEGIN
		CLOSE @cur_default
		DEALLOCATE @cur_default
		RETURN
	END

	FETCH NEXT FROM @cur_default INTO @DefaultName, @DefaultTableName
END

CLOSE @cur_default
DEALLOCATE @cur_default

COMMIT TRANSACTION
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemBatch]') and name = N'BalQty')
  ALTER TABLE [dbo].[ItemBatch] DROP COLUMN [BalQty]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemUOM]') and name = N'BalQty')
  ALTER TABLE [dbo].[ItemUOM] DROP COLUMN [BalQty]
GO

-- Rename and change Primary Key
DECLARE @schemaName sysname
DECLARE @TableName sysname
DECLARE @PrimaryName sysname
DECLARE @PrimaryDesc sysname
DECLARE @ListTable TABLE(TableName sysname, PrimaryName sysname, PrimaryDesc sysname)
DECLARE @cur_item cursor
DECLARE @cur_index cursor

SET @schemaName = 'dbo'
INSERT @ListTable VALUES('AccessRight', 'PK_AccessRight_CmdID_UserID', '[CmdID] ASC, [UserID] ASC')
INSERT @ListTable VALUES('AccGroup', 'PK_AccGroup_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Accountant', 'PK_Accountant_AccountantID', '[AccountantID] ASC')
INSERT @ListTable VALUES('AccPeriod', 'PK_AccPeriod_PeriodNo', '[PeriodNo] ASC')
INSERT @ListTable VALUES('AccType', 'PK_AccType_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Activity', 'PK_Activity_ActivityKey', '[ActivityKey] ASC')
INSERT @ListTable VALUES('Address', 'PK_Address_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ADJ', 'PK_ADJ_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ADJDTL', 'PK_ADJDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('AORProcessing', 'PK_AORProcessing_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('APCN', 'PK_APCN_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('APCNDTL', 'PK_APCNDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('APCNKnockOff', 'PK_APCNKnockOff_KnockOffKey', '[KnockOffKey] ASC')
INSERT @ListTable VALUES('APCNKnockOffDetail', 'PK_APCNKnockOffDetail_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('APContraKnockOff', 'PK_APContraKnockOff_KnockOffKey', '[KnockOffKey] ASC')
INSERT @ListTable VALUES('APContraKnockOffDetail', 'PK_APContraKnockOffDetail_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('APDeposit', 'PK_APDeposit_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('APDepositPaymentDTL', 'PK_APDepositPaymentDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('APDN', 'PK_APDN_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('APDNDTL', 'PK_APDNDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('APInvoice', 'PK_APInvoice_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('APInvoiceDTL', 'PK_APInvoiceDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('APPayment', 'PK_APPayment_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('APPaymentDTL', 'PK_APPaymentDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('APPaymentKnockOff', 'PK_APPaymentKnockOff_KnockOffKey', '[KnockOffKey] ASC')
INSERT @ListTable VALUES('APPaymentKnockOffDetail', 'PK_APPaymentKnockOffDetail_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('APRefund', 'PK_APRefund_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('APDepositRefundPaymentDTL', 'PK_APDepositRefundPaymentDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('APRefundDTL', 'PK_APRefundDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('APRefundKnockOff', 'PK_APRefundKnockOff_KnockOffKey', '[KnockOffKey] ASC')
INSERT @ListTable VALUES('APRefundKnockOffDetail', 'PK_APRefundKnockOffDetail_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ARAPBadDebt', 'PK_ARAPBadDebt_DocType_DocKey', '[DocType] ASC, [DocKey] ASC')
INSERT @ListTable VALUES('ARAPBadDebtRecovery', 'PK_ARAPBadDebtRecovery_DocType_DocKey_PaymentDocType_PaymentDocKey', '[DocType] ASC, [DocKey] ASC, [PaymentDocType] ASC, [PaymentDocKey] ASC')
INSERT @ListTable VALUES('ARAPContra', 'PK_ARAPContra_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ARCN', 'PK_ARCN_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ARCNDTL', 'PK_ARCNDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('ARCNKnockOff', 'PK_ARCNKnockOff_KnockOffKey', '[KnockOffKey] ASC')
INSERT @ListTable VALUES('ARCNKnockOffDetail', 'PK_ARCNKnockOffDetail_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ARContraKnockOff', 'PK_ARContraKnockOff_KnockOffKey', '[KnockOffKey] ASC')
INSERT @ListTable VALUES('ARContraKnockOffDetail', 'PK_ARContraKnockOffDetail_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ARDeposit', 'PK_ARDeposit_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ARDepositPaymentDTL', 'PK_ARDepositPaymentDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('ARDN', 'PK_ARDN_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ARDNDTL', 'PK_ARDNDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('Area', 'PK_Area_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ARInvoice', 'PK_ARInvoice_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ARInvoiceDTL', 'PK_ARInvoiceDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('ARPayment', 'PK_ARPayment_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ARPaymentDTL', 'PK_ARPaymentDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('ARPaymentKnockOff', 'PK_ARPaymentKnockOff_KnockOffKey', '[KnockOffKey] ASC')
INSERT @ListTable VALUES('ARPaymentKnockOffDetail', 'PK_ARPaymentKnockOffDetail_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ARRefund', 'PK_ARRefund_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ARDepositRefundPaymentDTL', 'PK_ARDepositRefundPaymentDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('ARRefundDTL', 'PK_ARRefundDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('ARRefundKnockOff', 'PK_ARRefundKnockOff_KnockOffKey', '[KnockOffKey] ASC')
INSERT @ListTable VALUES('ARRefundKnockOffDetail', 'PK_ARRefundKnockOffDetail_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ASM', 'PK_ASM_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ASMBOMOptional', 'PK_ASMBOMOptional_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('ASMDTL', 'PK_ASMDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('ASMOrder', 'PK_ASMOrder_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ASMOrderDTL', 'PK_ASMOrderDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('AsmRProcessing', 'PK_AsmRProcessing_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('AssetDisposal', 'PK_AssetDisposal_DisposalKey', '[DisposalKey] ASC')
INSERT @ListTable VALUES('AssetLink', 'PK_AssetLink_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('AutoPrice', 'PK_AutoPrice_AutoPriceKey', '[AutoPriceKey] ASC')
INSERT @ListTable VALUES('BankRecon', 'PK_BankRecon_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('BankSlip', 'PK_BankSlip_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('BankTrans', 'PK_BankTrans_BankTransKey', '[BankTransKey] ASC')
INSERT @ListTable VALUES('BOMOptional', 'PK_BOMOptional_BOMOptionalKey', '[BOMOptionalKey] ASC')
INSERT @ListTable VALUES('BOMOptionalDTL', 'PK_BOMOptionalDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('BOMOptionalLink', 'PK_BOMOptionalLink_BOMOptionalLinkKey', '[BOMOptionalLinkKey] ASC')
INSERT @ListTable VALUES('BonusPointADJ', 'PK_BonusPointADJ_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('BonusPointADJDTL', 'PK_BonusPointADJDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('BonusPointRedemption', 'PK_BonusPointRedemption_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('BonusPointRedemptionDTL', 'PK_BonusPointRedemptionDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('Branch', 'PK_Branch_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('BSFormat', 'PK_BSFormat_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Budget', 'PK_Budget_BudgetKey', '[BudgetKey] ASC')
INSERT @ListTable VALUES('BudgetPBalance', 'PK_BudgetPBalance_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('CashFlowForecast', 'PK_CashFlowForecast_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('CB', 'PK_CB_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('CBDTL', 'PK_CBDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('CBIGDTL', 'PK_CBIGDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('CBPaymentDTL', 'PK_CBPaymentDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('ChangeCount', 'PK_ChangeCount_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('CN', 'PK_CN_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('CNDTL', 'PK_CNDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('CNType', 'PK_CNType_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ColumnLock', 'PK_ColumnLock_DocType_DtlType', '[DocType] ASC, [DtlType] ASC')
INSERT @ListTable VALUES('Comment', 'PK_Comment_CommentKey', '[CommentKey] ASC')
INSERT @ListTable VALUES('Commission', 'PK_Commission_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Contact', 'PK_Contact_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('CP', 'PK_CP_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('CPDTL', 'PK_CPDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('CreditControlSync', 'PK_CreditControlSync_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('Creditor', 'PK_Creditor_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('CreditorType', 'PK_CreditorType_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Criteria', 'PK_Criteria_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('CS', 'PK_CS_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('CSDTL', 'PK_CSDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('CSGN', 'PK_CSGN_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('CSGNDTL', 'PK_CSGNDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('CSGNItemBalQty', 'PK_CSGNItemBalQty_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('CSGNXFER', 'PK_CSGNXFER_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('CSGNXFERDTL', 'PK_CSGNXFERDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('CURRENCY', 'PK_CURRENCY_CurrencyCode', '[CurrencyCode] ASC')
INSERT @ListTable VALUES('CurrRate', 'PK_CurrRate_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Debtor', 'PK_Debtor_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('DebtorType', 'PK_DebtorType_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('DefaultReport', 'PK_DefaultReport_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Dept', 'PK_Dept_DeptNo', '[DeptNo] ASC')
INSERT @ListTable VALUES('DN', 'PK_DN_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('DNDTL', 'PK_DNDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('DNType', 'PK_DNType_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('DO', 'PK_DO_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('DocNoFormat', 'PK_DocNoFormat_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('DocNoFormatAccNo', 'PK_DocNoFormatAccNo_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('DocNoFormatUsers', 'PK_DocNoFormatUsers_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('DocNoFormatYearlyNumber', 'PK_DocNoFormatYearlyNumber_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('DocReportSetting', 'PK_DocReportSetting_DocType', '[DocType] ASC')
INSERT @ListTable VALUES('DODTL', 'PK_DODTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('DR', 'PK_DR_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('DRDTL', 'PK_DRDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('DRProcessing', 'PK_DRProcessing_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('DRProcessingDO', 'PK_DRProcessingDO_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('EventLog', 'PK_EventLog_EventKey', '[EventKey] ASC')
INSERT @ListTable VALUES('Expenses', 'PK_Expenses_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('FCRevalue', 'PK_FCRevalue_FCRevalueKey', '[FCRevalueKey] ASC')
INSERT @ListTable VALUES('FCRevalueDocument', 'PK_FCRevalueDocument_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('FCRevalueGLAccount', 'PK_FCRevalueGLAccount_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('FCRevalueLock', 'PK_FCRevalueLock_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('FCRevalueRate', 'PK_FCRevalueRate_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('FIFOCost', 'PK_FIFOCost_FIFOCostKey', '[FIFOCostKey] ASC')
INSERT @ListTable VALUES('FiscalYear', 'PK_FiscalYear_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('FontStyle', 'PK_FontStyle_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Footer', 'PK_Footer_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('FRCustomText', 'PK_FRCustomText_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('GiftRule', 'PK_GiftRule_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('GLDTL', 'PK_GLDTL_GLDTLKey', '[GLDtlKey] ASC')
INSERT @ListTable VALUES('GLMast', 'PK_GLMast_AccNo', '[AccNo] ASC')
INSERT @ListTable VALUES('GLTrxIDTrash', 'PK_GLTrxIDTrash_GLTrxID', '[GLTrxID] ASC')
INSERT @ListTable VALUES('GR', 'PK_GR_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('GRDTL', 'PK_GRDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('GridListingFilter', 'PK_GridListingFilter_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('GridListingFilterUsers', 'PK_GridListingFilterUsers_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('GSTProcessor', 'PK_GSTProcessor_GSTKey', '[GSTKey] ASC')
INSERT @ListTable VALUES('GSTSetting', 'PK_GSTSetting_GSTName', '[GSTName] ASC')
INSERT @ListTable VALUES('GT', 'PK_GT_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('GTDTL', 'PK_GTDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('IPHIST', 'PK_IPHIST_IPKey', '[IPKey] ASC')
INSERT @ListTable VALUES('ISS', 'PK_ISS_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('ISSDTL', 'PK_ISSDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('Item', 'PK_Item_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ItemBatch', 'PK_ItemBatch_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ItemBatchBalQty', 'PK_ItemBatchBalQty_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ItemBOM', 'PK_ItemBOM_ItemBOMKey', '[ItemBOMKey] ASC')
INSERT @ListTable VALUES('ItemCostChangeHistory', 'PK_ItemCostChangeHistory_HKey', '[HKey] ASC')
INSERT @ListTable VALUES('ItemCostHistory', 'PK_ItemCostHistory_HKey', '[HKey] ASC')
INSERT @ListTable VALUES('ItemCurrencyPrice', 'PK_ItemCurrencyPrice_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ItemGroup', 'PK_ItemGroup_ItemGroup_ItemGroup', '[ItemGroup] ASC')
INSERT @ListTable VALUES('ItemLocationPrice', 'PK_ItemLocationPrice_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ItemOpening', 'PK_ItemOpening_ItemOpeningKey', '[ItemOpeningKey] ASC')
INSERT @ListTable VALUES('ItemPrice', 'PK_ItemPrice_ItemPriceKey', '[ItemPriceKey] ASC')
INSERT @ListTable VALUES('ItemPriceChangeHistory', 'PK_ItemPriceChangeHistory_HKey', '[HKey] ASC')
INSERT @ListTable VALUES('ItemReplacement', 'PK_ItemReplacement_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ItemSerialNo', 'PK_ItemSerialNo_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ItemSerialNoDtl', 'PK_ItemSerialNoDtl_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ItemSubCode', 'PK_ItemSubCode_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ItemType', 'PK_ItemType_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ItemUOM', 'PK_ITEMUOM_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('IV', 'PK_IV_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('IVDTL', 'PK_IVDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('JE', 'PK_JE_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('JEDTL', 'PK_JEDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('Journal', 'PK_Journal_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Layout', 'PK_Layout_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('LayoutUsers', 'PK_LayoutUsers_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Location', 'PK_Location_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Member', 'PK_Member_AutoKey', '[AutoKey] ASC')
--INSERT @ListTable VALUES('MemberBalPoint', 'PK_MemberBalPoint_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('MemberType', 'PK_MemberType_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('MRU', 'PK_MRU_MRUKey_UserID', '[MRUKey] ASC, [UserID] ASC')
INSERT @ListTable VALUES('NetUsers', 'PK_NetUsers_SessionKey', '[SessionKey] ASC')
INSERT @ListTable VALUES('NotifAllowUsers', 'PK_NotifAllowUsers_NotificationKey_UserID', '[NotificationKey] ASC, [UserID] ASC')
INSERT @ListTable VALUES('Notification', 'PK_Notification_NotificationKey', '[NotificationKey] ASC')
INSERT @ListTable VALUES('NotifReadUsers', 'PK_NotifReadUsers_NotificationKey_UserID', '[NotificationKey] ASC, [UserID] ASC')
INSERT @ListTable VALUES('OBalance', 'PK_OBalance_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('OBDTL', 'PK_OBDTL_OBDtlKey', '[OBDtlKey] ASC')
INSERT @ListTable VALUES('ObjectEventLog', 'PK_ObjectEventLog_EventKey', '[EventKey] ASC')
INSERT @ListTable VALUES('Package', 'PK_Package_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('PackageDTL', 'PK_PackageDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('PaymentMethod', 'PK_PaymentMethod_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('PBalance', 'PK_PBalance_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('PeriodLock', 'PK_PeriodLock_PeriodNo', '[PeriodNo] ASC')
INSERT @ListTable VALUES('PeriodLockException', 'PK_PeriodLockException_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('PI', 'PK_PI_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('PIDTL', 'PK_PIDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('PLFormat', 'PK_PLFormat_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('PlugIn', 'PK_PlugIn_Guid', '[Guid] ASC')
INSERT @ListTable VALUES('PlugInFiles', 'PK_PlugInFiles_Guid_FileName', '[Guid] ASC, [FileName] ASC')
INSERT @ListTable VALUES('PO', 'PK_PO_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('PocketSyncProfile', 'PK_PocketSyncProfile_ProfileKey', '[ProfileKey] ASC')
INSERT @ListTable VALUES('PODTL', 'PK_PODTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('PointTrans', 'PK_PointTrans_PointTransKey', '[PointTransKey] ASC')
INSERT @ListTable VALUES('PostingAccountGroup', 'PK_PostingAccountGroup_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('PR', 'PK_PR_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('PRDTL', 'PK_PRDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('PriceBookMatrix', 'PK_PriceBookMatrix_MatrixKey', '[MatrixKey] ASC')
INSERT @ListTable VALUES('PriceBookRule', 'PK_PriceBookRule_RuleNo', '[RuleNo] ASC')
INSERT @ListTable VALUES('PriceCategory', 'PK_PriceCategory_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Profile', 'PK_Profile_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Project', 'PK_Project_ProjNo', '[ProjNo] ASC')
INSERT @ListTable VALUES('PRProcessing', 'PK_PRProcessing_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('PRProcessingPO', 'PK_PRProcessingPO_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('PurchaseAgent', 'PK_PurchaseAgent_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('QT', 'PK_QT_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('QTDTL', 'PK_QTDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('Race', 'PK_Race_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('RCV', 'PK_RCV_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('RCVDTL', 'PK_RCVDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('Registry', 'PK_Registry_RegID', '[RegID] ASC')
INSERT @ListTable VALUES('RemarkName', 'PK_RemarkName_DocType', '[DocType] ASC')
INSERT @ListTable VALUES('Report', 'PK_Report_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('ReportAttributes', 'PK_ReportAttributes_ReportName', '[ReportName] ASC')
INSERT @ListTable VALUES('ReverseGSTDO', 'PK_ReverseGSTDO_DocKey_DocType', '[DocKey] ASC, [DocType] ASC')
INSERT @ListTable VALUES('ReverseGSTPayment', 'PK_ReverseGSTPayment_DocKey_DocType_AppliedDocKey_AppliedDocType', '[DocKey] ASC, [DocType] ASC, [AppliedDocKey] ASC, [AppliedDocType] ASC')
INSERT @ListTable VALUES('RQ', 'PK_RQ_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('RQDTL', 'PK_RQDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('SalesAgent', 'PK_SalesAgent_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('SerialNoTrans', 'PK_SerialNoTrans_TransKey', '[TransKey] ASC')
INSERT @ListTable VALUES('Session', 'PK_Session_SessionKey', '[SessionKey] ASC')
--INSERT @ListTable VALUES('Settings', 'PK_Settings_Name', '[Name] ASC')
INSERT @ListTable VALUES('ShippingMethod', 'PK_ShippingMethod_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('SimpleSyncSetting', 'PK_SimpleSyncSetting_SettingKey', '[SettingKey] ASC')
INSERT @ListTable VALUES('SO', 'PK_SO_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('SODTL', 'PK_SODTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('StockDTL', 'PK_StockDTL_StockDTLKey', '[StockDTLKey] ASC')
INSERT @ListTable VALUES('StockDTLChangeQ', 'PK_StockDTLChangeQ_ChangeQKey', '[ChangeQKey] ASC')
INSERT @ListTable VALUES('StockPBalance', 'PK_StockPBalance_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('StockSet', 'PK_StockSet_StockSetKey', '[StockSetKey] ASC')
INSERT @ListTable VALUES('SupplierCSGN', 'PK_SupplierCSGN_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('SupplierCSGNDTL', 'PK_SupplierCSGNDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('SyncCriteriaProfile', 'PK_SyncCriteriaProfile_CriteriaKey', '[CriteriaKey] ASC')
INSERT @ListTable VALUES('SyncProfile', 'PK_SyncProfile_ProfileKey', '[ProfileKey] ASC')
INSERT @ListTable VALUES('TaxDocNo', 'PK_TaxDocNo_TaxDocNoKey', '[TaxDocNoKey] ASC')
INSERT @ListTable VALUES('TaxDocNoDTL', 'PK_TaxDocNoDTL_TaxDocNoDTLKey', '[TaxDocNoDTLKey] ASC')
INSERT @ListTable VALUES('TaxTrans', 'PK_TaxTrans_TaxTransKey', '[TaxTransKey] ASC')
INSERT @ListTable VALUES('TaxTransAudit', 'PK_TaxTransAudit_TaxTransAuditKey', '[TaxTransAuditKey] ASC')
INSERT @ListTable VALUES('TaxTransAuditDTL', 'PK_TaxTransAuditDTL_TaxTransAuditDtlKey', '[TaxTransAuditDtlKey] ASC')
INSERT @ListTable VALUES('TaxType', 'PK_TaxType_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('TempDocument', 'PK_TempDocument_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('TemporaryCredit', 'PK_TemporaryCredit_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Terms', 'PK_Terms_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('UDF', 'PK_UDF_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('UDFLayout', 'PK_UDFLayout_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('UDFList', 'PK_UDFList_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('UnapprovedDocument', 'PK_UnapprovedDocument_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('UnrealizedGainLoss', 'PK_UnrealizedGainLoss_UnrealizedGainLossKey', '[UnrealizedGainLossKey] ASC')
INSERT @ListTable VALUES('UnrealizedGainLossDocument', 'PK_UnrealizedGainLossDocument_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('UnrealizedGainLossGLAccount', 'PK_UnrealizedGainLossGLAccount_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('UnrealizedGainLossRate', 'PK_UnrealizedGainLossRate_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('UOMConv', 'PK_UOMConv_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('UOMConvDTL', 'PK_UOMConvDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('UpdateCost', 'PK_UpdateCost_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('UpdateCostDTL', 'PK_UpdateCostDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('UserGroup', 'PK_UserGroup_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('Users', 'PK_Users_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('UsersAccNo', 'PK_UsersAccNo_UserID_AccNo', '[UserID] ASC, [AccNo] ASC')
INSERT @ListTable VALUES('UserScript', 'PK_UserScript_ScriptName', '[ScriptName] ASC')
INSERT @ListTable VALUES('UsersGroup', 'PK_UsersGroup_UserID_UserGroupID', '[UserID] ASC, [UserGroupID] ASC')
INSERT @ListTable VALUES('UsersPurchaseAgent', 'PK_UsersPurchaseAgent_UserID_PurchaseAgent', '[UserID] ASC, [PurchaseAgent] ASC')
INSERT @ListTable VALUES('UsersSalesAgent', 'PK_UsersSalesAgent_UserID_SalesAgent', '[UserID] ASC, [SalesAgent] ASC')
INSERT @ListTable VALUES('UTDStockCost', 'PK_UTDStockCost_UTDStockCostKey', '[UTDStockCostKey] ASC')
INSERT @ListTable VALUES('UTDStockCostDTL', 'PK_UTDStockCostDTL_UTDStockCostDTLKey', '[UTDStockCostDTLKey] ASC')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'PK_WithholdingTaxTrans_TaxTransKey', '[TaxTransKey] ASC')
INSERT @ListTable VALUES('WOFF', 'PK_WOFF_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('WOFFDTL', 'PK_WOFFDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('XFER', 'PK_XFER_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('XFERDTL', 'PK_XFERDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('XP', 'PK_XP_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('XPDTL', 'PK_XPDTL_DtlKey', '[DtlKey] ASC')
INSERT @ListTable VALUES('XS', 'PK_XS_DocKey', '[DocKey] ASC')
INSERT @ListTable VALUES('XSDTL', 'PK_XSDTL_DtlKey', '[DtlKey] ASC')

DECLARE @cmd NVARCHAR(1000) 

DECLARE @FK_NAME sysname
DECLARE @FK_OBJECTID INT
DECLARE @FK_DISABLED INT
DECLARE @FK_NOT_TRUSTED INT
DECLARE @FK_NOT_FOR_REPLICATION INT 
DECLARE @DELETE_RULE smallint   
DECLARE @UPDATE_RULE smallint    
DECLARE @FKTABLE_NAME sysname
DECLARE @FKTABLE_OWNER sysname 
DECLARE @PKTABLE_NAME sysname
DECLARE @PKTABLE_OWNER sysname 
DECLARE @FKCOLUMN_NAME sysname 
DECLARE @PKCOLUMN_NAME sysname
DECLARE @indexName sysname
DECLARE @indexTableName sysname

DECLARE @ListTable1 TABLE(TABLE_NAME sysname, FK_NAME sysname, FK_OBJECTID INT, FK_DISABLED INT, FK_NOT_TRUSTED INT, FK_NOT_FOR_REPLICATION INT, DELETE_RULE smallint, UPDATE_RULE smallint, 
FKTABLE_NAME sysname, FKTABLE_OWNER sysname, PKTABLE_NAME sysname, PKTABLE_OWNER sysname)
DECLARE @ListTable2 TABLE(TABLE_NAME sysname, FKCOLUMN_NAME sysname, PKCOLUMN_NAME sysname, FKC_OBJECTID INT, FKC_COLUMNID INT)
DECLARE @IndexTable TABLE(IndexName sysname, TableName sysname)

Insert Into @ListTable1
SELECT TbR.name, Fk.name, Fk.OBJECT_ID, Fk.is_disabled, Fk.is_not_trusted, Fk.is_not_for_replication, Fk.delete_referential_action, Fk.update_referential_action, 
OBJECT_NAME(Fk.parent_object_id) AS Fk_table_name, schema_name(Fk.schema_id) AS Fk_table_schema, TbR.name AS Pk_table_name, schema_name(TbR.schema_id) Pk_table_schema  
FROM sys.foreign_keys Fk LEFT OUTER JOIN sys.tables TbR ON TbR.OBJECT_ID = Fk.referenced_object_id --inner join   
WHERE schema_name(TbR.schema_id) = @schemaName

Insert Into @ListTable2
SELECT TbR.name, COL_NAME(Fk.parent_object_id, Fk_Cl.parent_column_id) AS Fk_col_name, COL_NAME(Fk.referenced_object_id, Fk_Cl.referenced_column_id) AS Pk_col_name, Fk_Cl.constraint_object_id, Fk_Cl.constraint_column_id
FROM sys.foreign_keys Fk LEFT OUTER JOIN sys.tables TbR ON TbR.OBJECT_ID = Fk.referenced_object_id INNER JOIN sys.foreign_key_columns Fk_Cl ON Fk_Cl.constraint_object_id = Fk.OBJECT_ID   
WHERE schema_name(TbR.schema_id) = @schemaName

-- Find Primary Key index
Insert Into @IndexTable select distinct ix.name, tab.name
FROM sys.indexes ix 
inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
inner join sys.types t on col.user_type_id = t.user_type_id 
inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
inner join sys.key_constraints pkc on pkc.parent_object_id = tab.object_id and pkc.parent_object_id = ixCol.object_id
Where ix.type>0 and ix.is_primary_key=1 and OBJECTPROPERTY(pkc.object_id, N'IsPrimaryKey') = 1

BEGIN TRANSACTION
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, PrimaryName, PrimaryDesc From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @TableName, @PrimaryName, @PrimaryDesc

WHILE @@FETCH_STATUS = 0
BEGIN
	-- Drop Foreign Keys --
	DECLARE cursor_fkeys CURSOR FOR SELECT FK_NAME, FK_OBJECTID, FK_DISABLED, FK_NOT_TRUSTED, FK_NOT_FOR_REPLICATION, DELETE_RULE, UPDATE_RULE, FKTABLE_NAME, FKTABLE_OWNER, PKTABLE_NAME, PKTABLE_OWNER From @ListTable1
	WHERE TABLE_NAME = @TableName
	OPEN cursor_fkeys  
	FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER

	WHILE @@FETCH_STATUS = 0   
	BEGIN
		-- create statement for dropping FK and also for recreating FK  
		-- drop statement  
		SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + ']  DROP CONSTRAINT [' + @FK_NAME + ']'
		Exec sp_executesql @cmd
		--PRINT @cmd

		FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER  
	END

	CLOSE cursor_fkeys   
	DEALLOCATE cursor_fkeys


	-- Drop Primary Keys --
	SET @cur_index = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName From @IndexTable Where TableName = @TableName
	OPEN @cur_index
	FETCH NEXT FROM @cur_index INTO @indexName, @indexTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @cmd = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
		Exec sp_executesql @cmd
		--PRINT @cmd

		FETCH NEXT FROM @cur_index INTO @indexName, @indexTableName
	END

	CLOSE @cur_index
	DEALLOCATE @cur_index


	-- Create Primary Keys --
	SET @cmd = 'ALTER TABLE [dbo].[' + @TableName + '] ADD CONSTRAINT [' + @PrimaryName + '] PRIMARY KEY CLUSTERED (' + @PrimaryDesc + ')' 
	Exec sp_executesql @cmd
	--PRINT @cmd


	-- Create Foreign Keys --
	DECLARE cursor_fkeys CURSOR FOR SELECT FK_NAME, FK_OBJECTID, FK_DISABLED, FK_NOT_TRUSTED, FK_NOT_FOR_REPLICATION, DELETE_RULE, UPDATE_RULE, FKTABLE_NAME, FKTABLE_OWNER, PKTABLE_NAME, PKTABLE_OWNER From @ListTable1
	WHERE TABLE_NAME = @TableName
	OPEN cursor_fkeys  
	FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER

	WHILE @@FETCH_STATUS = 0   
	BEGIN
		-- create process
		DECLARE @FKCOLUMNS VARCHAR(1000), @PKCOLUMNS VARCHAR(1000), @COUNTER INT
			
		-- create cursor to get FK columns  
		DECLARE cursor_fkeyCols CURSOR FOR SELECT FKCOLUMN_NAME, PKCOLUMN_NAME FROM @ListTable2 WHERE TABLE_NAME = @TableName AND FKC_OBJECTID = @FK_OBJECTID ORDER BY FKC_COLUMNID 
		OPEN cursor_fkeyCols  
		FETCH NEXT FROM cursor_fkeyCols INTO @FKCOLUMN_NAME, @PKCOLUMN_NAME  

		SET @COUNTER = 1  
		SET @FKCOLUMNS = ''  
		SET @PKCOLUMNS = ''  
         
		WHILE @@FETCH_STATUS = 0   
		BEGIN   

		IF @COUNTER > 1   
		BEGIN  
			SET @FKCOLUMNS = @FKCOLUMNS + ','  
			SET @PKCOLUMNS = @PKCOLUMNS + ','  
		END

		SET @FKCOLUMNS = @FKCOLUMNS + '[' + @FKCOLUMN_NAME + ']'  
		SET @PKCOLUMNS = @PKCOLUMNS + '[' + @PKCOLUMN_NAME + ']'  

		SET @COUNTER = @COUNTER + 1  
             
		FETCH NEXT FROM cursor_fkeyCols INTO @FKCOLUMN_NAME, @PKCOLUMN_NAME  
		END

		CLOSE cursor_fkeyCols   
		DEALLOCATE cursor_fkeyCols   

		-- generate create FK statement  
		SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + ']  WITH ' +   
           CASE @FK_NOT_TRUSTED   
               WHEN 0 THEN ' CHECK '  
               WHEN 1 THEN ' NOCHECK '  
           END +  ' ADD CONSTRAINT [' + @FK_NAME   
           + '] FOREIGN KEY (' + @FKCOLUMNS   
           + ') REFERENCES [' + @PKTABLE_OWNER + '].[' + @PKTABLE_NAME + '] ('   
           + @PKCOLUMNS + ') ON UPDATE ' +   
           CASE @UPDATE_RULE   
               WHEN 0 THEN ' NO ACTION '  
               WHEN 1 THEN ' CASCADE '   
               WHEN 2 THEN ' SET_NULL '   
               END + ' ON DELETE ' +   
           CASE @DELETE_RULE  
               WHEN 0 THEN ' NO ACTION '   
               WHEN 1 THEN ' CASCADE '   
               WHEN 2 THEN ' SET_NULL '   
               END + '' +  
           CASE @FK_NOT_FOR_REPLICATION  
               WHEN 0 THEN ''  
               WHEN 1 THEN ' NOT FOR REPLICATION '  
           END  
		Exec sp_executesql @cmd
		--PRINT @cmd  

		IF @FK_DISABLED = 1
		BEGIN
			SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + '] NOCHECK CONSTRAINT [' + @FK_NAME + ']'
			Exec sp_executesql @cmd
			--PRINT @cmd  
		END

		FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER  
	END

	CLOSE cursor_fkeys   
	DEALLOCATE cursor_fkeys

	IF @@ERROR <> 0
	BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	END

	FETCH NEXT FROM @cur_Item INTO @TableName, @PrimaryName, @PrimaryDesc
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

COMMIT TRANSACTION
GO

-- Recalculate Member Balance Point --
Delete From MemberBalPoint
GO

INSERT INTO MemberBalPoint
SELECT A.MemberNo, (A.OpeningPoints + COALESCE(B.Points, 0)), NEWID()
FROM Member A Left Outer Join (Select MemberNo, SUM(Points) AS Points From PointTrans Group By MemberNo)B ON A.MemberNo = B.MemberNo
GO

/* Change SQL Column Type (text, ntext, image -> varchar(max), nvarchar(max), varbinary(max)) */
DECLARE @ColTypeTable TABLE(TableName nvarchar(max), ColumnName nvarchar(max), Nullable nvarchar(10), TypeName nvarchar(100), DefaultName nvarchar(max), DefaultDefinition nvarchar(max))

insert into @ColTypeTable Select tab.name, col.name, CASE WHEN col.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, CASE WHEN typ.name = 'text' THEN '[varchar](max)' WHEN typ.name = 'ntext' THEN '[nvarchar](max)' ELSE '[varbinary](max)' END AS TypeName, def.name AS DefaultName, def.definition AS DefaultDefinition
From sys.tables tab INNER JOIN sys.columns col ON col.object_id = tab.object_id
INNER JOIN sys.types typ ON col.user_type_id = typ.user_type_id 
LEFT OUTER JOIN sys.default_constraints def ON col.default_object_id = def.object_id
WHERE typ.name IN ('text', 'ntext', 'image') 

DECLARE @tableName NVARCHAR(max)
DECLARE @colName NVARCHAR(max)
DECLARE @null NVARCHAR(10)
DECLARE @typeName NVARCHAR(100)
DECLARE @defaultName NVARCHAR(max)
DECLARE @defaultDefinition NVARCHAR(max)
DECLARE @sql NVARCHAR(max)
DECLARE @cur_item cursor

SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, Nullable, TypeName, DefaultName, DefaultDefinition From @ColTypeTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null, @typeName, @defaultName, @defaultDefinition

WHILE @@FETCH_STATUS = 0
BEGIN
	-- drop default constraint
	IF @defaultName IS NOT NULL
	BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @defaultName + ']'') and OBJECTPROPERTY(id, N''IsDefaultCnst'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @defaultName + ']'
		Exec sp_executesql @sql
	END

	-- change to new type
	set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @typeName + ' ' + @null
	Exec sp_executesql @sql

	-- add default constraint
	IF @defaultName IS NOT NULL
	BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @defaultName + ']'') and OBJECTPROPERTY(id, N''IsDefaultCnst'') = 1) ALTER TABLE [dbo].[' + @tableName + '] ADD CONSTRAINT [' + @defaultName + '] DEFAULT ' + @defaultDefinition + ' FOR [' + @colName + ']'
		Exec sp_executesql @sql
	END
	IF @@ERROR <> 0
	BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	END

FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null, @typeName, @defaultName, @defaultDefinition
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

-- Add Change Log and its Trigger -- 
-- if found ChangeLog table and the table contains Key1 column, then it is old version and we should drop it.
if exists (select * from dbo.sysobjects WHERE id = object_id(N'[dbo].[ChangeLog]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) and
   exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ChangeLog]') and name = N'Key1')
  DROP TABLE [dbo].[ChangeLog]
GO

if not exists (select * from dbo.sysobjects WHERE id = object_id(N'[dbo].[ChangeLog]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ChangeLog](
		[ID] [bigint] IDENTITY(1,1) NOT NULL,
		[TableName] [nvarchar](30) NOT NULL,
		[Guid] [uniqueidentifier] NOT NULL,
		[NewGuid] [uniqueidentifier] NULL,
		[Content] [nvarchar](max) NULL,
		[ContentType] [nchar](1) NULL,
		[ChangeType] [nchar](1) NOT NULL,
		[ChangeTime] [datetime] NOT NULL,
		[TransactionID] [bigint] NULL,
		 CONSTRAINT [PK_ChangeLog_ID] PRIMARY KEY CLUSTERED 
		(
			[ID] ASC
		)
		) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[IX_ChangeLog_TransactionID_ID_Guid]') and objectproperty(id, N'IsUniqueCnst') = 1)
	CREATE UNIQUE NONCLUSTERED INDEX [IX_ChangeLog_TransactionID_ID_Guid] ON [dbo].[ChangeLog] 
	(
		[TransactionID] ASC,
		[ID] ASC,
		[Guid] ASC
	)ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AccessRightChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [AccessRightChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CNTypeChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [CNTypeChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CreditorChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [CreditorChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CreditorTypeChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [CreditorTypeChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DeptChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [DeptChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DNTypeChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [DNTypeChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DocNoFormatChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [DocNoFormatChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FontStyleChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [FontStyleChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemReplacementChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemReplacementChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[JournalChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [JournalChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[LocationChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [LocationChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PaymentMethodChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [PaymentMethodChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PointTransChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [PointTransChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PostingAccountGroupChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [PostingAccountGroupChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PriceCategoryChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [PriceCategoryChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ProjectChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ProjectChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PurchaseAgentChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [PurchaseAgentChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ShippingMethodChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ShippingMethodChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TermsChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [TermsChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserGroupChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UserGroupChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UsersChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UsersChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UsersGroupChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UsersGroupChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UTDStockCostChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UTDStockCostChangeLog]
GO

/******Trigger: AreaChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AreaChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [AreaChangeLog]
GO

CREATE TRIGGER [dbo].[AreaChangeLog] ON [dbo].[Area]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Area', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Area'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Area', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Area')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Area')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Area/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Area/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Area'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Area', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Area', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: CurrencyChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CurrencyChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [CurrencyChangeLog]
GO

CREATE TRIGGER [dbo].[CurrencyChangeLog] ON [dbo].[Currency]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Currency', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Currency'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Currency', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Currency')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Currency')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Currency/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Currency/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Currency'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Currency', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Currency', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/******Trigger: CurrRateChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CurrRateChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [CurrRateChangeLog]
GO

CREATE TRIGGER [dbo].[CurrRateChangeLog] ON [dbo].[CurrRate]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'CurrRate', Guid, REPLACE((SELECT inserted.* FOR XML RAW('CurrRate'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'CurrRate', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('CurrRate')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('CurrRate')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/CurrRate/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/CurrRate/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('CurrRate'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('CurrRate', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('CurrRate', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/******Trigger: DebtorChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DebtorChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [DebtorChangeLog]
GO

CREATE TRIGGER [dbo].[DebtorChangeLog] ON [dbo].[Debtor]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Debtor', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Debtor'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Debtor', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Debtor')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Debtor')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Debtor/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Debtor/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Debtor'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Debtor', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Debtor', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: DebtorTypeChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DebtorTypeChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [DebtorTypeChangeLog]
GO

CREATE TRIGGER [dbo].[DebtorTypeChangeLog] ON [dbo].[DebtorType]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'DebtorType', Guid, REPLACE((SELECT inserted.* FOR XML RAW('DebtorType'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'DebtorType', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('DebtorType')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('DebtorType')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/DebtorType/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/DebtorType/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('DebtorType'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('DebtorType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('DebtorType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemGroupChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemGroupChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemGroupChangeLog]
GO

CREATE TRIGGER [dbo].[ItemGroupChangeLog] ON [dbo].[ItemGroup]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemGroup', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemGroup'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemGroup', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemGroup')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemGroup')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemGroup/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemGroup/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemGroup'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemGroup', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemGroup', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemTypeChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemTypeChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemTypeChangeLog]
GO

CREATE TRIGGER [dbo].[ItemTypeChangeLog] ON [dbo].[ItemType]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemType', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemType'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemType', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemType')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemType')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemType/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemType/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemType'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemChangeLog]
GO

CREATE TRIGGER [dbo].[ItemChangeLog] ON [dbo].[Item]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Item', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Item'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Item', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Item')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Item')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Item/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Item/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Item'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
      BEGIN
		 --Ignore only BalQty column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
		 DECLARE @balQtyPosition int, @columnCount int, @hasChanged bit, @intFlag int, @minus int, @tempPower int
		 SELECT @balQtyPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Item' AND COLUMN_NAME = 'OutletImageFileName'
		 SELECT @columnCount = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Item'
		 SET @hasChanged = 0
		 SET @intFlag = 1
		 WHILE (@intFlag <= CEILING(@columnCount / 8.0))
		 BEGIN
			IF (CEILING(@balQtyPosition / 8.0) = @intFlag)
			BEGIN
			   SET @tempPower = @balQtyPosition % 8
			   IF (@tempPower = 0)
			      SET @tempPower = 8
			   SET @minus = POWER(2, (@tempPower - 1))
			END			
			ELSE
			   SET @minus = 0
			IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag, 1) & (255 - @minus)) > 0)
			BEGIN
			   SET @hasChanged = 1
			   BREAK
			END
			SET @intFlag = @intFlag + 1
		 END
		 IF @hasChanged = 1
			INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Item', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END   
      ELSE
      BEGIN
		 --Ignore only BalQty column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
		 DECLARE @balQtyPosition1 int, @columnCount1 int, @hasChanged1 bit, @intFlag1 int, @minus1 int, @tempPower1 int
		 SELECT @balQtyPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Item' AND COLUMN_NAME = 'OutletImageFileName'
		 SELECT @columnCount1 = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Item'
		 SET @hasChanged1 = 0
		 SET @intFlag1 = 1
		 WHILE (@intFlag1 <= CEILING(@columnCount1 / 8.0))
		 BEGIN
			IF (CEILING(@balQtyPosition1 / 8.0) = @intFlag1)
			BEGIN
			   SET @tempPower1 = @balQtyPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			   SET @minus1 = POWER(2, (@tempPower1 - 1))
			END
			ELSE
			   SET @minus1 = 0   
			IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag1, 1) & (255 - @minus1)) > 0)
			BEGIN
			   SET @hasChanged1 = 1
			   BREAK
			END
			SET @intFlag1 = @intFlag1 + 1
		 END
		 IF @hasChanged1 = 1
			INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Item', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  END
      FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemUOMChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemUOMChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemUOMChangeLog]
GO

CREATE TRIGGER [dbo].[ItemUOMChangeLog] ON [dbo].[ItemUOM]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemUOM', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemUOM'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemUOM', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemUOM')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemUOM')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemUOM/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemUOM/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemUOM'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
	  BEGIN
	     --Ignore only BalQty, CSGNQty, RealCost & RowVer column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
		 --If any columns others then this few columns changed, it mean it need to insert an update ChangeLog.
		 DECLARE @balQtyPosition int, @csgnQtyPosition int, @realCostPosition int, @rowVerPosition int, @columnCount int, @hasChanged bit, @intFlag int, @minus int, @tempPower int
		 SELECT @balQtyPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'BalQty'
		 SELECT @csgnQtyPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'CSGNQty'
		 SELECT @realCostPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'RealCost'
		 SELECT @rowVerPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'RowVer'
		 --SELECT @columnCount = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM'
		 SELECT @columnCount = MAX(COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID')) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM'
		 SET @hasChanged = 0
		 SET @intFlag = 1
		 WHILE (@intFlag <= CEILING(@columnCount / 8.0))
		 BEGIN
			SET @minus = 0
			IF (CEILING(@balQtyPosition / 8.0) = @intFlag)
			BEGIN
			   SET @tempPower = @balQtyPosition % 8
			   IF (@tempPower = 0)
			      SET @tempPower = 8
			   SET @minus = @minus + POWER(2, (@tempPower - 1))
			END
			IF (CEILING(@csgnQtyPosition / 8.0) = @intFlag)
			BEGIN
			   SET @tempPower = @csgnQtyPosition % 8
			   IF (@tempPower = 0)
			      SET @tempPower = 8
			   SET @minus = @minus + POWER(2, (@tempPower - 1))
			END
			IF (CEILING(@realCostPosition / 8.0) = @intFlag)
			BEGIN
			   SET @tempPower = @realCostPosition % 8
			   IF (@tempPower = 0)
			      SET @tempPower = 8
			   SET @minus = @minus + POWER(2, (@tempPower - 1))
			END
			IF (CEILING(@rowVerPosition / 8.0) = @intFlag)
			BEGIN
				SET @tempPower = @rowVerPosition % 8
				IF (@tempPower = 0)
					SET @tempPower = 8
				SET @minus = @minus + POWER(2, (@tempPower - 1))
			END
			IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag, 1) & (255 - @minus)) > 0)
			BEGIN
			   SET @hasChanged = 1
			   BREAK
			END
			SET @intFlag = @intFlag + 1
		 END
		 IF @hasChanged = 1
		    INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemUOM', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
      ELSE
      BEGIN
	     --Ignore only BalQty, CSGNQty, RealCost & RowVer column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
		 --If any columns others then this few columns changed, it mean it need to insert an update ChangeLog.
		 DECLARE @balQtyPosition1 int, @csgnQtyPosition1 int, @realCostPosition1 int, @rowVerPosition1 int, @columnCount1 int, @hasChanged1 bit, @intFlag1 int, @minus1 int, @tempPower1 int
		 SELECT @balQtyPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'BalQty'
		 SELECT @csgnQtyPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'CSGNQty'
		 SELECT @realCostPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'RealCost'
		 SELECT @rowVerPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM' AND COLUMN_NAME = 'RowVer'
		 --SELECT @columnCount1 = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM'
		 SELECT @columnCount1 = MAX(COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID')) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemUOM'
		 SET @hasChanged1 = 0
		 SET @intFlag1 = 1
		 WHILE (@intFlag1 <= CEILING(@columnCount1 / 8.0))
		 BEGIN
			SET @minus1 = 0
			IF (CEILING(@balQtyPosition1 / 8.0) = @intFlag1)
			BEGIN
			   SET @tempPower1 = @balQtyPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			   SET @minus1 = @minus1 + POWER(2, (@tempPower1 - 1))
			END
			IF (CEILING(@csgnQtyPosition1 / 8.0) = @intFlag1)
			BEGIN
			   SET @tempPower1 = @csgnQtyPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			   SET @minus1 = @minus1 + POWER(2, (@tempPower1 - 1))
			END
			IF (CEILING(@realCostPosition1 / 8.0) = @intFlag1)
			BEGIN
			   SET @tempPower1 = @realCostPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			   SET @minus1 = @minus1 + POWER(2, (@tempPower1 - 1))
			END
			IF (CEILING(@rowVerPosition1 / 8.0) = @intFlag1)
			BEGIN
				SET @tempPower1 = @rowVerPosition1 % 8
				IF (@tempPower1 = 0)
					SET @tempPower1 = 8
				SET @minus1 = @minus1 + POWER(2, (@tempPower1 - 1))
			END
			IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag1, 1) & (255 - @minus1)) > 0)
			BEGIN
			   SET @hasChanged1 = 1
			   BREAK
			END
			SET @intFlag1 = @intFlag1 + 1
		 END
		 IF @hasChanged1 = 1
            INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemUOM', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  END
      FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemSubCodeChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemSubCodeChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemSubCodeChangeLog]
GO

CREATE TRIGGER [dbo].[ItemSubCodeChangeLog] ON [dbo].[ItemSubCode]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSubCode', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemSubCode'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSubCode', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemSubCode')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemSubCode')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemSubCode/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemSubCode/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemSubCode'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSubCode', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSubCode', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemBatchChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemBatchChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemBatchChangeLog]
GO

CREATE TRIGGER [dbo].[ItemBatchChangeLog] ON [dbo].[ItemBatch]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBatch', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemBatch'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBatch', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemBatch')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemBatch')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemBatch/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemBatch/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemBatch'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBatch', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBatch', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemBatchBalQtyChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemBatchBalQtyChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemBatchBalQtyChangeLog]
GO

CREATE TRIGGER [dbo].[ItemBatchBalQtyChangeLog] ON [dbo].[ItemBatchBalQty]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBatchBalQty', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemBatchBalQty'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBatchBalQty', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemBatchBalQty')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemBatchBalQty')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemBatchBalQty/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemBatchBalQty/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemBatchBalQty'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBatchBalQty', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBatchBalQty', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemPriceChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemPriceChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemPriceChangeLog]
GO

CREATE TRIGGER [dbo].[ItemPriceChangeLog] ON [dbo].[ItemPrice]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemPrice', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemPrice'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemPrice', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemPrice')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemPrice')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemPrice/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemPrice/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemPrice'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemPrice', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemPrice', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemLocationPriceChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemLocationPriceChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemLocationPriceChangeLog]
GO

CREATE TRIGGER [dbo].[ItemLocationPriceChangeLog] ON [dbo].[ItemLocationPrice]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemLocationPrice', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemLocationPrice'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemLocationPrice', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemLocationPrice')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemLocationPrice')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemLocationPrice/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemLocationPrice/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemLocationPrice'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemLocationPrice', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemLocationPrice', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemSerialNoChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemSerialNoChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemSerialNoChangeLog]
GO

CREATE TRIGGER [dbo].[ItemSerialNoChangeLog] ON [dbo].[ItemSerialNo]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSerialNo', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemSerialNo'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSerialNo', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemSerialNo')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemSerialNo')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemSerialNo/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemSerialNo/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemSerialNo'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
      BEGIN
	      --Ignore only Qty column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
		  DECLARE @qtyPosition int, @csgnQtyPosition int, @columnCount int, @hasChanged bit, @intFlag int, @minus int, @tempMinus int, @tempPower int
		  SELECT @qtyPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo' AND COLUMN_NAME = 'Qty'
		  SELECT @csgnQtyPosition = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo' AND COLUMN_NAME = 'CSGNQty'
		  SELECT @columnCount = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo'
		  SET @hasChanged = 0
		  SET @intFlag = 1
		  WHILE (@intFlag <= CEILING(@columnCount / 8.0))
		  BEGIN
		     IF (CEILING(@qtyPosition / 8.0) = @intFlag)
		 	 BEGIN
			    SET @tempPower = @qtyPosition % 8
			    IF (@tempPower = 0)
			       SET @tempPower = 8
			 END
			 ELSE IF (CEILING(@csgnQtyPosition / 8.0) = @intFlag)
			 BEGIN
			    SET @tempPower = @csgnQtyPosition % 8
			    IF (@tempPower = 0)
			       SET @tempPower = 8
			 END
			 ELSE
			    SET @tempPower = 0
			 SET @minus = POWER(2, (@tempPower - 1))
			 IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag, 1) & (255 - @minus)) > 0)
			 BEGIN
			    SET @hasChanged = 1
			    BREAK
			 END
			 SET @intFlag = @intFlag + 1
		  END
		  IF @hasChanged = 1
		     INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSerialNo', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
         --INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSerialNo', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
      BEGIN
         --Ignore only Qty column change. Refer to Sql Server help for COLUMNS_UPDATED() usage.
	     DECLARE @qtyPosition1 int, @csgnQtyPosition1 int, @columnCount1 int, @hasChanged1 bit, @intFlag1 int, @minus1 int, @tempPower1 int
	     SELECT @qtyPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo' AND COLUMN_NAME = 'Qty'
	     SELECT @csgnQtyPosition1 = COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo' AND COLUMN_NAME = 'CSGNQty'
	     SELECT @columnCount1 = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ItemSerialNo'
	     SET @hasChanged1 = 0
         SET @intFlag1 = 1
         WHILE (@intFlag1 <= CEILING(@columnCount1 / 8.0))
		 BEGIN
		 	IF (CEILING(@qtyPosition1 / 8.0) = @intFlag1)
		 	BEGIN
			   SET @tempPower1 = @qtyPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			END
			ELSE IF (CEILING(@csgnQtyPosition1 / 8.0) = @intFlag1)
			BEGIN
			   SET @tempPower1 = @csgnQtyPosition1 % 8
			   IF (@tempPower1 = 0)
			      SET @tempPower1 = 8
			END
			ELSE
			   SET @tempPower1 = 0
			SET @minus1 = POWER(2, (@tempPower1 - 1))
			IF ((SUBSTRING(COLUMNS_UPDATED(), @intFlag1, 1) & (255 - @minus1)) > 0)
			BEGIN
			   SET @hasChanged1 = 1
			   BREAK
			END
			SET @intFlag1 = @intFlag1 + 1
		 END
	     IF @hasChanged1 = 1
            INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSerialNo', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  END
      FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: ItemSerialNoDtlChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemSerialNoDtlChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemSerialNoDtlChangeLog]
GO

CREATE TRIGGER [dbo].[ItemSerialNoDtlChangeLog] ON [dbo].[ItemSerialNoDtl]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSerialNoDtl', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemSerialNoDtl'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemSerialNoDtl', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemSerialNoDtl')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemSerialNoDtl')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemSerialNoDtl/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemSerialNoDtl/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemSerialNoDtl'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSerialNoDtl', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemSerialNoDtl', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: SerialNoTransChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SerialNoTransChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [SerialNoTransChangeLog]
GO

CREATE TRIGGER [dbo].[SerialNoTransChangeLog] ON [dbo].[SerialNoTrans]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'SerialNoTrans', Guid, REPLACE((SELECT inserted.* FOR XML RAW('SerialNoTrans'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'SerialNoTrans', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('SerialNoTrans')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('SerialNoTrans')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/SerialNoTrans/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/SerialNoTrans/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('SerialNoTrans'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('SerialNoTrans', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('SerialNoTrans', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: MemberChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MemberChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [MemberChangeLog]
GO

CREATE TRIGGER [dbo].[MemberChangeLog] ON [dbo].[Member]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Member', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Member'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Member', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Member')), '&#x00;','') FROM deleted
   OPEN deleted_cur1
   DECLARE inserted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Member')), '&#x00;','') FROM inserted
   OPEN inserted_cur1
   FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur1 INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Member/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Member/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Member'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Member', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Member', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur1
   DEALLOCATE deleted_cur1
   CLOSE inserted_cur1
   DEALLOCATE inserted_cur1
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: MemberBalPointChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MemberBalPointChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [MemberBalPointChangeLog]
GO

CREATE TRIGGER [dbo].[MemberBalPointChangeLog] ON [dbo].[MemberBalPoint]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'MemberBalPoint', Guid, REPLACE((SELECT inserted.* FOR XML RAW('MemberBalPoint'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'MemberBalPoint', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('MemberBalPoint')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('MemberBalPoint')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/MemberBalPoint/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/MemberBalPoint/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('MemberBalPoint'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('MemberBalPoint', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('MemberBalPoint', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: MemberTypeChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MemberTypeChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [MemberTypeChangeLog]
GO

CREATE TRIGGER [dbo].[MemberTypeChangeLog] ON [dbo].[MemberType]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'MemberType', Guid, REPLACE((SELECT inserted.* FOR XML RAW('MemberType'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'MemberType', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('MemberType')), '&#x00;','') FROM deleted
   OPEN deleted_cur1
   DECLARE inserted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('MemberType')), '&#x00;','') FROM inserted
   OPEN inserted_cur1
   FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur1 INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/MemberType/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/MemberType/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('MemberType'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('MemberType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('MemberType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur1
   DEALLOCATE deleted_cur1
   CLOSE inserted_cur1
   DEALLOCATE inserted_cur1
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: PackageChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PackageChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [PackageChangeLog]
GO

CREATE TRIGGER [dbo].[PackageChangeLog] ON [dbo].[Package]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Package', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Package'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Package', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Package')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Package')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Package/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Package/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Package'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Package', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Package', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: PackageDtlChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PackageDtlChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [PackageDtlChangeLog]
GO

CREATE TRIGGER [dbo].[PackageDtlChangeLog] ON [dbo].[PackageDTL]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION

IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'PackageDtl', A.Guid, (SELECT A.*, B.Guid AS DocKeyGuid FOR XML RAW('PackageDtl'), BINARY BASE64), 'X', 'I', GETDATE(), @transactionid FROM inserted A INNER JOIN Package B ON A.DocKey = B.DocKey
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'PackageDtl', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('PackageDtl')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('PackageDtl')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/PackageDtl/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/PackageDtl/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('PackageDtl'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('PackageDtl', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('PackageDtl', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: LocationChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[LocationChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [LocationChangeLog]
GO

CREATE TRIGGER [dbo].[LocationChangeLog] ON [dbo].[Location]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Location', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Location'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Location', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Location')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Location')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Location/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Location/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) AND 
	  --Ignore only LastStartSyncTime, LastFinishSyncTime & LastTransFinishSyncTime column change.
	  (coalesce(XML1.NodeName, XML2.NodeName) <> 'LastStartSyncTime' and coalesce(XML1.NodeName, XML2.NodeName) <> 'LastFinishSyncTime' and coalesce(XML1.NodeName, XML2.NodeName) <> 'LastTransFinishSyncTime')
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Location'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Location', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Location', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: PaymentMethodChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PaymentMethodChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [PaymentMethodChangeLog]
GO

CREATE TRIGGER [dbo].[PaymentMethodChangeLog] ON [dbo].[PaymentMethod]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'PaymentMethod', Guid, REPLACE((SELECT inserted.* FOR XML RAW('PaymentMethod'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'PaymentMethod', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('PaymentMethod')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('PaymentMethod')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/PaymentMethod/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/PaymentMethod/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('PaymentMethod'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('PaymentMethod', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('PaymentMethod', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: RaceChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[RaceChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [RaceChangeLog]
GO

CREATE TRIGGER [dbo].[RaceChangeLog] ON [dbo].[Race]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Race', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Race'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Race', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Race')), '&#x00;','') FROM deleted
   OPEN deleted_cur1
   DECLARE inserted_cur1 CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Race')), '&#x00;','') FROM inserted
   OPEN inserted_cur1
   FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur1 INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Race/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Race/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Race'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Race', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Race', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur1 INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur1
   DEALLOCATE deleted_cur1
   CLOSE inserted_cur1
   DEALLOCATE inserted_cur1
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: SalesAgentChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SalesAgentChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [SalesAgentChangeLog]
GO

CREATE TRIGGER [dbo].[SalesAgentChangeLog] ON [dbo].[SalesAgent]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'SalesAgent', Guid, REPLACE((SELECT inserted.* FOR XML RAW('SalesAgent'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'SalesAgent', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('SalesAgent')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('SalesAgent')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/SalesAgent/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/SalesAgent/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('SalesAgent'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('SalesAgent', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('SalesAgent', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: TaxTypeChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxTypeChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [TaxTypeChangeLog]
GO

CREATE TRIGGER [dbo].[TaxTypeChangeLog] ON [dbo].[TaxType]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'TaxType', Guid, REPLACE((SELECT inserted.* FOR XML RAW('TaxType'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'TaxType', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('TaxType')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('TaxType')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/TaxType/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/TaxType/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('TaxType'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('TaxType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('TaxType', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: UDFChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UDFChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UDFChangeLog]
GO

CREATE TRIGGER [dbo].[UDFChangeLog] ON [dbo].[UDF]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'UDF', Guid, REPLACE((SELECT inserted.* FOR XML RAW('UDF'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'UDF', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('UDF')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('UDF')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/UDF/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/UDF/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('UDF'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDF', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDF', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: UDFLayoutChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UDFLayoutChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UDFLayoutChangeLog]
GO

CREATE TRIGGER [dbo].[UDFLayoutChangeLog] ON [dbo].[UDFLayout]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'UDFLayout', Guid, REPLACE((SELECT inserted.* FOR XML RAW('UDFLayout'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'UDFLayout', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('UDFLayout')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('UDFLayout')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/UDFLayout/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/UDFLayout/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('UDFLayout'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDFLayout', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDFLayout', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: UDFListChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UDFListChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UDFListChangeLog]
GO

CREATE TRIGGER [dbo].[UDFListChangeLog] ON [dbo].[UDFList]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'UDFList', Guid, REPLACE((SELECT inserted.* FOR XML RAW('UDFList'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'UDFList', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('UDFList')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('UDFList')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/UDFList/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/UDFList/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('UDFList'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDFList', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UDFList', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: UserScriptChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserScriptChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UserScriptChangeLog]
GO

CREATE TRIGGER [dbo].[UserScriptChangeLog] ON [dbo].[UserScript]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'UserScript', Guid, REPLACE((SELECT inserted.* FOR XML RAW('UserScript'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'UserScript', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('UserScript')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('UserScript')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/UserScript/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/UserScript/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('UserScript'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UserScript', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('UserScript', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[bsp_GetLastIdentityChangeLog]') AND type in (N'P', N'PC'))
  DROP PROCEDURE [dbo].[bsp_GetLastIdentityChangeLog]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[bsp_GetLastIdentityChangeLogWithKey1]') AND type in (N'P', N'PC'))
  DROP PROCEDURE [dbo].[bsp_GetLastIdentityChangeLogWithKey1]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[bsp_GetLastIdentityReverseChangeLogWithKey1]') AND type in (N'P', N'PC'))
  DROP PROCEDURE [dbo].[bsp_GetLastIdentityReverseChangeLogWithKey1]
GO

if not exists (select * from [DocNoFormat] where DocType='PQ')
  INSERT INTO [DocNoFormat] VALUES ('PQ Default', 'PQ', 1, 'PQ-<000000>', 'PQ-000001', 'T', 'F', Null);
GO

if not exists (select * from [DocNoFormat] where DocType='SK')
  INSERT INTO [DocNoFormat] VALUES ('SK Default', 'SK', 1, 'SK-<000000>', 'SK-000001', 'T', 'F', Null);
GO

if not exists (select * from [RemarkName] where DocType='PQ')
  INSERT INTO [RemarkName] VALUES ('PQ', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
GO

if not exists (select * from [RemarkName] where DocType='SK')
  INSERT INTO [RemarkName] VALUES ('SK', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
GO

/* Support new Stock Analysis Code : ItemBrand, ItemClass, ItemCategory */
/* Remove old ItemBrand and ItemModel */
if exists (select * from sys.foreign_keys where object_id = object_id(N'[dbo].[FK_Item_ItemModel]') AND parent_object_id = object_id(N'[dbo].[Item]'))
  ALTER TABLE [dbo].[Item] DROP CONSTRAINT [FK_Item_ItemModel]
GO

if exists (select * from sys.objects where object_id = object_id(N'[dbo].[ItemModel]') AND type in (N'U'))
  DROP TABLE [dbo].[ItemModel]
GO

if exists (select * from sys.foreign_keys where object_id = object_id(N'[dbo].[FK_Item_ItemBrand]') AND parent_object_id = object_id(N'[dbo].[Item]'))
  ALTER TABLE [dbo].[Item] DROP CONSTRAINT [FK_Item_ItemBrand]
GO

if exists (select * from sys.objects where object_id = object_id(N'[dbo].[ItemBrand]') AND type in (N'U'))
  DROP TABLE [dbo].[ItemBrand]
GO

/* Add new ItemBrand, ItemClass, ItemCategory */
IF NOT EXISTS (SELECT * FROM sys.types WHERE name = N'd_ItemBrand' AND schema_id=SCHEMA_ID(N'dbo'))
CREATE TYPE [dbo].[d_ItemBrand] FROM [nvarchar](20) NULL
GO

IF NOT EXISTS (SELECT * FROM sys.types WHERE name = N'd_ItemClass' AND schema_id=SCHEMA_ID(N'dbo'))
CREATE TYPE [dbo].[d_ItemClass] FROM [nvarchar](20) NULL
GO

IF NOT EXISTS (SELECT * FROM sys.types WHERE name = N'd_ItemCategory' AND schema_id=SCHEMA_ID(N'dbo'))
CREATE TYPE [dbo].[d_ItemCategory] FROM [nvarchar](20) NULL
GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ItemBrand]') AND type in (N'U'))
	CREATE TABLE [dbo].[ItemBrand](
		[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
		[ItemBrand] [dbo].[d_ItemBrand] NOT NULL,
		[Description] [nvarchar](40) NULL,
		[Desc2] [nvarchar](40) NULL,
		[Note] [nvarchar](max) NULL,
		[LastUpdate] [int] NOT NULL,
		[ShortCode] [nvarchar](8) NULL,
		[MarkupRatio] [dbo].[d_Percent] NULL,
		[Guid] [uniqueidentifier] NOT NULL,
	 CONSTRAINT [PK_ItemBrand_AutoKey] PRIMARY KEY CLUSTERED 
	(
		[AutoKey] ASC
	),
	 CONSTRAINT [UIX_ItemBrand_ItemBrand] UNIQUE NONCLUSTERED 
	(
		[ItemBrand] ASC
	),
	CONSTRAINT [UIX_ItemBrand_Guid] UNIQUE NONCLUSTERED 
	(
		[Guid] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ItemClass]') AND type in (N'U'))
	CREATE TABLE [dbo].[ItemClass](
		[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
		[ItemClass] [dbo].[d_ItemClass] NOT NULL,
		[Description] [nvarchar](40) NULL,
		[Desc2] [nvarchar](40) NULL,
		[Note] [nvarchar](max) NULL,
		[LastUpdate] [int] NOT NULL,
		[ShortCode] [nvarchar](8) NULL,
		[MarkupRatio] [dbo].[d_Percent] NULL,
		[Guid] [uniqueidentifier] NOT NULL,
	 CONSTRAINT [PK_ItemClass_AutoKey] PRIMARY KEY CLUSTERED 
	(
		[AutoKey] ASC
	),
	 CONSTRAINT [UIX_ItemClass_ItemClass] UNIQUE NONCLUSTERED 
	(
		[ItemClass] ASC
	),
	CONSTRAINT [UIX_ItemClass_Guid] UNIQUE NONCLUSTERED 
	(
		[Guid] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ItemCategory]') AND type in (N'U'))
	CREATE TABLE [dbo].[ItemCategory](
		[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
		[ItemCategory] [dbo].[d_ItemCategory] NOT NULL,
		[Description] [nvarchar](40) NULL,
		[Desc2] [nvarchar](40) NULL,
		[Note] [nvarchar](max) NULL,
		[LastUpdate] [int] NOT NULL,
		[ShortCode] [nvarchar](8) NULL,
		[MarkupRatio] [dbo].[d_Percent] NULL,
		[Guid] [uniqueidentifier] NOT NULL,
	 CONSTRAINT [PK_ItemCategory_AutoKey] PRIMARY KEY CLUSTERED 
	(
		[AutoKey] ASC
	),
	 CONSTRAINT [UIX_ItemCategory_ItemCategory] UNIQUE NONCLUSTERED 
	(
		[ItemCategory] ASC
	),
	CONSTRAINT [UIX_ItemCategory_Guid] UNIQUE NONCLUSTERED 
	(
		[Guid] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'ItemBrand') 
  ALTER TABLE [dbo].[ITEM] ADD [ItemBrand] [d_ItemBrand] NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'ItemClass') 
  ALTER TABLE [dbo].[ITEM] ADD [ItemClass] [d_ItemClass] NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'ItemCategory') 
  ALTER TABLE [dbo].[ITEM] ADD [ItemCategory] [d_ItemCategory] NULL
GO

IF EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'ItemModel') 
  ALTER TABLE [dbo].[ITEM] DROP COLUMN [ItemModel]
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[PriceBookRule]') and name = N'FromItemBrand') 
  ALTER TABLE [dbo].[PriceBookRule] ADD [FromItemBrand] [d_ItemBrand] NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[PriceBookRule]') and name = N'ToItemBrand') 
  ALTER TABLE [dbo].[PriceBookRule] ADD [ToItemBrand] [d_ItemBrand] NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[PriceBookRule]') and name = N'FromItemClass') 
  ALTER TABLE [dbo].[PriceBookRule] ADD [FromItemClass] [d_ItemClass] NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[PriceBookRule]') and name = N'ToItemClass') 
  ALTER TABLE [dbo].[PriceBookRule] ADD [ToItemClass] [d_ItemClass] NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[PriceBookRule]') and name = N'FromItemCategory') 
  ALTER TABLE [dbo].[PriceBookRule] ADD [FromItemCategory] [d_ItemCategory] NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[PriceBookRule]') and name = N'ToItemCategory') 
  ALTER TABLE [dbo].[PriceBookRule] ADD [ToItemCategory] [d_ItemCategory] NULL
GO

if not exists (select * from sys.foreign_keys where object_id = object_id(N'dbo.FK_Item_ItemBrand') AND parent_object_id = object_id(N'dbo.Item'))
  ALTER TABLE [dbo].[Item]  WITH CHECK ADD  CONSTRAINT [FK_Item_ItemBrand] FOREIGN KEY([ItemBrand])
  REFERENCES [dbo].[ItemBrand] ([ItemBrand])
  ON UPDATE CASCADE
GO

if not exists (select * from sys.foreign_keys where object_id = object_id(N'dbo.FK_Item_ItemClass') AND parent_object_id = object_id(N'dbo.Item'))
  ALTER TABLE [dbo].[Item]  WITH CHECK ADD  CONSTRAINT [FK_Item_ItemClass] FOREIGN KEY([ItemClass])
  REFERENCES [dbo].[ItemClass] ([ItemClass])
  ON UPDATE CASCADE
GO

if not exists (select * from sys.foreign_keys where object_id = object_id(N'dbo.FK_Item_ItemCategory') AND parent_object_id = object_id(N'dbo.Item'))
  ALTER TABLE [dbo].[Item]  WITH CHECK ADD  CONSTRAINT [FK_Item_ItemCategory] FOREIGN KEY([ItemCategory])
  REFERENCES [dbo].[ItemCategory] ([ItemCategory])
  ON UPDATE CASCADE
GO

if not exists (select * from sys.foreign_keys where object_id = object_id(N'dbo.FK_PriceBookRule_FromItemBrand') AND parent_object_id = object_id(N'dbo.PriceBookRule'))
  ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromItemBrand] FOREIGN KEY([FromItemBrand])
  REFERENCES [dbo].[ItemBrand] ([ItemBrand])
GO

if not exists (select * from sys.foreign_keys where object_id = object_id(N'dbo.FK_PriceBookRule_FromItemClass') AND parent_object_id = object_id(N'dbo.PriceBookRule'))
  ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromItemClass] FOREIGN KEY([FromItemClass])
  REFERENCES [dbo].[ItemClass] ([ItemClass])
GO

if not exists (select * from sys.foreign_keys where object_id = object_id(N'dbo.FK_PriceBookRule_FromItemCategory') AND parent_object_id = object_id(N'dbo.PriceBookRule'))
  ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_FromItemCategory] FOREIGN KEY([FromItemCategory])
  REFERENCES [dbo].[ItemCategory] ([ItemCategory])
GO

if not exists (select * from sys.foreign_keys where object_id = object_id(N'dbo.FK_PriceBookRule_ToItemBrand') AND parent_object_id = object_id(N'dbo.PriceBookRule'))
  ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToItemBrand] FOREIGN KEY([ToItemBrand])
  REFERENCES [dbo].[ItemBrand] ([ItemBrand])
GO

if not exists (select * from sys.foreign_keys where object_id = object_id(N'dbo.FK_PriceBookRule_ToItemClass') AND parent_object_id = object_id(N'dbo.PriceBookRule'))
  ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToItemClass] FOREIGN KEY([ToItemClass])
  REFERENCES [dbo].[ItemClass] ([ItemClass])
GO

if not exists (select * from sys.foreign_keys where object_id = object_id(N'dbo.FK_PriceBookRule_ToItemCategory') AND parent_object_id = object_id(N'dbo.PriceBookRule'))
  ALTER TABLE [dbo].[PriceBookRule]  WITH CHECK ADD  CONSTRAINT [FK_PriceBookRule_ToItemCategory] FOREIGN KEY([ToItemCategory])
  REFERENCES [dbo].[ItemCategory] ([ItemCategory])
GO

if NOT EXISTS (SELECT * FROM [ChangeCount] WHERE TableName = 'ItemBrand') 
  INSERT INTO [ChangeCount] VALUES('ItemBrand',0);
GO
if NOT EXISTS (SELECT * FROM [ChangeCount] WHERE TableName = 'ItemClass') 
  INSERT INTO [ChangeCount] VALUES('ItemClass',0);
GO
if NOT EXISTS (SELECT * FROM [ChangeCount] WHERE TableName = 'ItemCategory') 
  INSERT INTO [ChangeCount] VALUES('ItemCategory',0);
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateItemBrandChangeCount]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [dbo].[UpdateItemBrandChangeCount]
GO

CREATE TRIGGER [dbo].[UpdateItemBrandChangeCount] ON [dbo].[ItemBrand]
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemBrand'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateItemClassChangeCount]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [dbo].[UpdateItemClassChangeCount]
GO

CREATE TRIGGER [dbo].[UpdateItemClassChangeCount] ON [dbo].[ItemClass]
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemClass'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateItemCategoryChangeCount]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [dbo].[UpdateItemCategoryChangeCount]
GO

CREATE TRIGGER [dbo].[UpdateItemCategoryChangeCount] ON [dbo].[ItemCategory]
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemCategory'
SET NOCOUNT OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemBrandChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemBrandChangeLog]
GO

CREATE TRIGGER [dbo].[ItemBrandChangeLog] ON [dbo].[ItemBrand]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBrand', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemBrand'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBrand', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemBrand')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemBrand')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemBrand/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemBrand/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemBrand'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBrand', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBrand', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

IF OBJECT_ID ('ItemClassChangeLog','TR') IS NOT NULL
	DROP TRIGGER [ItemClassChangeLog]
GO

CREATE TRIGGER [dbo].[ItemClassChangeLog] ON [dbo].[ItemClass]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemClass', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemClass'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemClass', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemClass')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemClass')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemClass/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemClass/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemClass'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemClass', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemClass', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

IF OBJECT_ID ('ItemCategoryChangeLog','TR') IS NOT NULL
	DROP TRIGGER [ItemCategoryChangeLog]
GO

CREATE TRIGGER [dbo].[ItemCategoryChangeLog] ON [dbo].[ItemCategory]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemCategory', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemCategory'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemCategory', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemCategory')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemCategory')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
      ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemCategory/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemCategory/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemCategory'))

	  IF @content IS NOT NULL
	  BEGIN
	  IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemCategory', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemCategory', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemSubCode]') and name = N'UOM') 
  ALTER TABLE [dbo].[ITEMSubCode] ADD [UOM] [d_UOM] NULL
GO

UPDATE ItemSubCode set ItemSubCode.UOM = Item.BaseUOM from Item where Item.ItemCode = ItemSubCode.ItemCode
GO

/* Extend UDF tablename length for consignment issue */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UDF]') and name = N'TableName')
  ALTER TABLE UDF ALTER COLUMN TableName nvarchar(30) NOT NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_UDF_TableName_FieldName]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[UDF] ADD CONSTRAINT [UIX_UDF_TableName_FieldName] UNIQUE NONCLUSTERED ([TableName] ASC, [FieldName] ASC)
GO

UPDATE REGISTRY SET RegValue = '2.1.0' WHERE RegID = 2
GO�if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Settings]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[Settings]
GO

CREATE TABLE [dbo].[Settings](
	[Name] [nvarchar](100) NOT NULL,
	[Value] [nvarchar](max) NULL,
 CONSTRAINT [PK_Settings_Name] PRIMARY KEY CLUSTERED
(
	[Name] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Users] ALTER Column Passwd [nvarchar](max) NULL
GO

Update Users Set LastPasswordDate=NULL Where LastPasswordDate IS NOT NULL
GO

IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[Activity]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) AND NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Activity]') and name = N'ThirdPartyAppName') 
ALTER TABLE [dbo].[Activity] ADD ThirdPartyAppName nvarchar(20) Null
GO

IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[EventLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) AND NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[EventLog]') and name = N'ThirdPartyAppName') 
ALTER TABLE [dbo].[EventLog] ADD ThirdPartyAppName nvarchar(20) Null
GO�8/*Update ARAP Deposit database structure*/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_ARDeposit_ForfeitedAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDeposit] DROP CONSTRAINT [FK_ARDeposit_ForfeitedAccNo]
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_ARRefundDepositDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundDepositDTL] DROP CONSTRAINT [FK_ARRefundDepositDTL_BankChargeDeptNo]
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_ARRefundDepositDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundDepositDTL] DROP CONSTRAINT [FK_ARRefundDepositDTL_BankChargeProjNo]
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_ARRefundDepositDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundDepositDTL] DROP CONSTRAINT [FK_ARRefundDepositDTL_BankChargeTaxType]
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_ARRefundDepositDTL_PaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARRefundDepositDTL] DROP CONSTRAINT [FK_ARRefundDepositDTL_PaymentMethod]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[ARDeposit]') and name='HasForfeit')
  ALTER TABLE [dbo].[ARDeposit] DROP COLUMN [HasForfeit]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[ARDeposit]') and name='ForfeitedDate')
  ALTER TABLE [dbo].[ARDeposit] DROP COLUMN [ForfeitedDate]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[ARDeposit]') and name='ForfeitedAmt')
  ALTER TABLE [dbo].[ARDeposit] DROP COLUMN [ForfeitedAmt]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[ARDeposit]') and name='ForfeitedAccNo')
  ALTER TABLE [dbo].[ARDeposit] DROP COLUMN [ForfeitedAccNo]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[ARDeposit]') and name='HasRefund')
  ALTER TABLE [dbo].[ARDeposit] DROP COLUMN [HasRefund]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[ARDeposit]') and name='RefundDate')
  ALTER TABLE [dbo].[ARDeposit] DROP COLUMN [RefundDate]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[ARDeposit]') and name='RefundDocNo')
  ALTER TABLE [dbo].[ARDeposit] DROP COLUMN [RefundDocNo]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[ARDeposit]') and name='RefundName')
  ALTER TABLE [dbo].[ARDeposit] DROP COLUMN [RefundName]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[ARDeposit]') and name='RefundAmt')
  ALTER TABLE [dbo].[ARDeposit] DROP COLUMN [RefundAmt]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[ARDeposit]') and name='RefundCBKey')
  ALTER TABLE [dbo].[ARDeposit] DROP COLUMN [RefundCBKey]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id = object_id(N'[dbo].[ARRefundDepositDTL]'))
  DROP TABLE [dbo].[ARRefundDepositDTL] 
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_APDeposit_ForfeitedAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDeposit] DROP CONSTRAINT [FK_APDeposit_ForfeitedAccNo]
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_APRefundDepositDTL_BankChargeDeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundDepositDTL] DROP CONSTRAINT [FK_APRefundDepositDTL_BankChargeDeptNo]
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_APRefundDepositDTL_BankChargeProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundDepositDTL] DROP CONSTRAINT [FK_APRefundDepositDTL_BankChargeProjNo]
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_APRefundDepositDTL_BankChargeTaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundDepositDTL] DROP CONSTRAINT [FK_APRefundDepositDTL_BankChargeTaxType]
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_APRefundDepositDTL_PaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APRefundDepositDTL] DROP CONSTRAINT [FK_APRefundDepositDTL_PaymentMethod]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[APDeposit]') and name='HasForfeit')
  ALTER TABLE [dbo].[APDeposit] DROP COLUMN [HasForfeit]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[APDeposit]') and name='ForfeitedDate')
  ALTER TABLE [dbo].[APDeposit] DROP COLUMN [ForfeitedDate]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[APDeposit]') and name='ForfeitedAmt')
  ALTER TABLE [dbo].[APDeposit] DROP COLUMN [ForfeitedAmt]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[APDeposit]') and name='ForfeitedAccNo')
  ALTER TABLE [dbo].[APDeposit] DROP COLUMN [ForfeitedAccNo]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[APDeposit]') and name='HasRefund')
  ALTER TABLE [dbo].[APDeposit] DROP COLUMN [HasRefund]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[APDeposit]') and name='RefundDate')
  ALTER TABLE [dbo].[APDeposit] DROP COLUMN [RefundDate]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[APDeposit]') and name='RefundDocNo')
  ALTER TABLE [dbo].[APDeposit] DROP COLUMN [RefundDocNo]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[APDeposit]') and name='RefundName')
  ALTER TABLE [dbo].[APDeposit] DROP COLUMN [RefundName]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[APDeposit]') and name='RefundAmt')
  ALTER TABLE [dbo].[APDeposit] DROP COLUMN [RefundAmt]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[APDeposit]') and name='RefundCBKey')
  ALTER TABLE [dbo].[APDeposit] DROP COLUMN [RefundCBKey]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns where id = object_id(N'[dbo].[APRefundDepositDTL]'))
  DROP TABLE [dbo].[APRefundDepositDTL] 
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemSubCode]') and name = N'UOM') 
  ALTER TABLE [dbo].[ITEMSubCode] ADD [UOM] [d_UOM] NULL
GO

UPDATE ItemSubCode set ItemSubCode.UOM = Item.BaseUOM from Item where Item.ItemCode = ItemSubCode.ItemCode
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'IsSalesItem') 
  ALTER TABLE [dbo].[ITEM] ADD IsSalesItem d_boolean NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'IsPurchaseItem') 
  ALTER TABLE [dbo].[ITEM] ADD IsPurchaseItem d_boolean NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'IsPOSItem') 
  ALTER TABLE [dbo].[ITEM] ADD IsPOSItem d_boolean NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'IsRawMaterialItem') 
  ALTER TABLE [dbo].[ITEM] ADD IsRawMaterialItem d_boolean NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'IsFinishGoodsItem') 
  ALTER TABLE [dbo].[ITEM] ADD IsFinishGoodsItem d_boolean NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'MainSupplier') 
  ALTER TABLE [dbo].[ITEM] ADD MainSupplier d_AccNo Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'Price3') 
  ALTER TABLE [dbo].[ITEMUOM] ADD Price3 d_Price Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'Price4') 
  ALTER TABLE [dbo].[ITEMUOM] ADD Price4 d_Price Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'Price5') 
  ALTER TABLE [dbo].[ITEMUOM] ADD Price5 d_Price Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'Price6') 
  ALTER TABLE [dbo].[ITEMUOM] ADD Price6 d_Price Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'MarkupRatio') 
  ALTER TABLE [dbo].[ITEMUOM] ADD MarkupRatio d_Percent Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'MarkdownRatio2') 
  ALTER TABLE [dbo].[ITEMUOM] ADD MarkdownRatio2 d_Percent Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'MarkdownRatio3') 
  ALTER TABLE [dbo].[ITEMUOM] ADD MarkdownRatio3 d_Percent Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'MarkdownRatio4') 
  ALTER TABLE [dbo].[ITEMUOM] ADD MarkdownRatio4 d_Percent Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'MarkdownRatio5') 
  ALTER TABLE [dbo].[ITEMUOM] ADD MarkdownRatio5 d_Percent Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'MarkdownRatio6') 
  ALTER TABLE [dbo].[ITEMUOM] ADD MarkdownRatio6 d_Percent Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'MarkdownRatioMinPrice') 
  ALTER TABLE [dbo].[ITEMUOM] ADD MarkdownRatioMinPrice d_Percent Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemUOM]') and name = N'MarkdownRatioMaxPrice') 
  ALTER TABLE [dbo].[ITEMUOM] ADD MarkdownRatioMaxPrice d_Percent Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemGroup]') and name = N'RoundingMethod') 
  ALTER TABLE [dbo].[ITEMGroup] ADD RoundingMethod varchar(10) Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ItemGroup]') and name = N'RoundingAmount') 
  ALTER TABLE [dbo].[ITEMGroup] ADD RoundingAmount varchar(10) Null
GO

IF OBJECT_ID ('ItemChangeLog','TR') IS NOT NULL
  ALTER TABLE [dbo].[Item] DISABLE TRIGGER [ItemChangeLog]
GO

UPDATE Item SET IsSalesItem = 'T' where IsSalesItem IS NULL
UPDATE Item SET IsPurchaseItem = 'T' where IsPurchaseItem IS NULL
UPDATE Item SET IsPOSItem = 'T' where IsPOSItem IS NULL
UPDATE Item SET IsRawMaterialItem = 'T' where IsRawMaterialItem IS NULL
UPDATE Item SET IsFinishGoodsItem = 'T' where IsFinishGoodsItem IS NULL
GO

IF OBJECT_ID ('ItemChangeLog','TR') IS NOT NULL
  ALTER TABLE [dbo].[Item] ENABLE TRIGGER [ItemChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateItemBatchBalQtyChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  drop trigger [dbo].[UpdateItemBatchBalQtyChangeCount]
GO

CREATE TRIGGER UpdateItemBatchBalQtyChangeCount ON ItemBatchBalQty
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ItemBatchBalQty'
SET NOCOUNT OFF
GO

if not exists (SELECT * FROM ChangeCount WHERE TableName='ItemBatchBalQty')
  INSERT INTO ChangeCount VALUES ('ItemBatchBalQty',0)
GO

IF NOT EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'd_MultiPricing' AND ss.name = N'dbo')
  CREATE TYPE [dbo].[d_MultiPricing] FROM [nvarchar](8) NULL
GO


IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Debtor]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[Debtor] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Debtor]') and name = N'AllowChangeMultiPrice') 
  ALTER TABLE [dbo].[Debtor] ADD AllowChangeMultiPrice d_Boolean Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[IV]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[IV] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[QT]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[QT] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[SO]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[SO] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[DO]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[DO] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[CS]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[CS] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[DN]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[DN] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[CN]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[CN] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Consignment]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[Consignment] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[ConsignmentReturn]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[ConsignmentReturn] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[XS]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[XS] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[DR]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[DR] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Users]') and name = N'StoreEmail') 
  ALTER TABLE [dbo].[Users] ADD [StoreEmail] NVARCHAR(100)
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Users]') and name = N'StorePassword') 
  ALTER TABLE [dbo].[Users] ADD [StorePassword] NVARCHAR(200)
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Member]') and name = N'MultiPrice') 
  ALTER TABLE [dbo].[Member] ADD MultiPrice d_MultiPricing Null
GO

UPDATE REGISTRY SET RegValue = '2.1.1' WHERE RegID = 2
GO*/* The following DDL will update FromDocNo datatype in Sales table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XSDTL]') and name = N'FromDocNo')
	ALTER TABLE XSDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'FromDocNo')
	ALTER TABLE CSDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ConsignmentReturnDTL]') and name = N'FromDocNo')
	ALTER TABLE ConsignmentReturnDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'FromDocNo')
	ALTER TABLE CNDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DODTL]') and name = N'FromDocNo')
	ALTER TABLE DODTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DRDTL]') and name = N'FromDocNo')
	ALTER TABLE DRDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'FromDocNo')
	ALTER TABLE IVDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'FromDocNo')
	ALTER TABLE SODTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

/* The following DDL will update FromDocNo datatype in Purchase table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XPDTL]') and name = N'FromDocNo')
	ALTER TABLE XPDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CPDTL]') and name = N'FromDocNo')
	ALTER TABLE CPDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GRDTL]') and name = N'FromDocNo')
	ALTER TABLE GRDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GTDTL]') and name = N'FromDocNo')
	ALTER TABLE GTDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignmentReturnDTL]') and name = N'FromDocNo')
	ALTER TABLE PurchaseConsignmentReturnDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PIDTL]') and name = N'FromDocNo')
	ALTER TABLE PIDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'FromDocNo')
	ALTER TABLE PODTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRDTL]') and name = N'FromDocNo')
	ALTER TABLE PRDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'FromDocNo')
	ALTER TABLE RQDTL ALTER COLUMN FromDocNo nvarchar(MAX) NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DocTransfer]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[DocTransfer](
		[TransferKey] [bigint] NOT NULL,
		[FromDocType] [dbo].[d_DocType] NULL,
		[FromDocKey] [bigint] NULL,
		[FromDocDtlKey] [bigint] NULL,
		[ToDocType] [dbo].[d_DocType] NULL,
		[ToDocKey] [bigint] NULL,
		[ToDocDtlKey] [bigint] NULL,
		[Qty] [dbo].[d_Qty] NULL,
		[FOCQty] [dbo].[d_Qty] NULL,
		[TransferOption] [smallint] NULL,
		CONSTRAINT [PK_DocTransfer] PRIMARY KEY CLUSTERED 
	(
		[TransferKey] ASC
	)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
	) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE Name = 'IX_DocTransfer_ToDocKey')
	CREATE NONCLUSTERED INDEX [IX_DocTransfer_ToDocKey] ON [dbo].[DocTransfer]([ToDocKey] ASC)ON [PRIMARY]
GO

/* Extend UDF tablename length for consignment issue */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UDF]') and name = N'TableName')
	ALTER TABLE UDF ALTER COLUMN TableName nvarchar(30) NOT NULL
GO

UPDATE REGISTRY SET RegValue = '2.1.2' WHERE RegID = 2
GO;IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[PQ]') and name = N'Transferable') 
	ALTER TABLE [dbo].[PQ] ADD Transferable d_boolean NOT NULL DEFAULT ('T')
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'IX_PQ_DocNo')))
	ALTER TABLE PQ ADD CONSTRAINT IX_PQ_DocNo UNIQUE (DocNo);   
GO 

/* Remove and update full transfer column lock */
Delete from ColumnLock Where DtlType=2
GO

Update ColumnLock Set DtlType = DtlType - 1 Where DtlType > 2
GO

UPDATE REGISTRY SET RegValue = '2.1.3' WHERE RegID = 2
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[NotificationServerURL]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[NotificationServerURL](
	 [URL] [nvarchar](100) NULL,
	 [Port] [int] NULL
	) ON [PRIMARY]
GO

IF OBJECT_ID ('DebtorChangeLog','TR') IS NOT NULL
	ALTER TABLE [dbo].[Debtor] DISABLE TRIGGER [DebtorChangeLog]
GO

Update [dbo].[Debtor] set AllowChangeMultiPrice = 'F' where AllowChangeMultiPrice is null
GO

IF OBJECT_ID ('DebtorChangeLog','TR') IS NOT NULL
	ALTER TABLE [dbo].[Debtor] ENABLE TRIGGER [DebtorChangeLog]
GO

/*Empty means this acct book is upgrade acct book */
IF NOT EXISTS (SELECT * FROM [AutoPrice] where [AutoPriceType] = 'MultiPrice' And [ForSale] = 'T') 
	INSERT INTO [AutoPrice] ([Seq], [AutoPriceType], [Name], [ForSale], [Enable]) VALUES (5, 'MultiPrice', 'Use Multi Pricing', 'T', 'F');
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[QT]') and name = N'MultiPrice') 
	ALTER TABLE [dbo].[QT] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[SO]') and name = N'MultiPrice') 
	ALTER TABLE [dbo].[SO] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[DO]') and name = N'MultiPrice') 
	ALTER TABLE [dbo].[DO] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[CS]') and name = N'MultiPrice') 
	ALTER TABLE [dbo].[CS] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[DN]') and name = N'MultiPrice') 
	ALTER TABLE [dbo].[DN] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[CN]') and name = N'MultiPrice') 
	ALTER TABLE [dbo].[CN] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Consignment]') and name = N'MultiPrice') 
	ALTER TABLE [dbo].[Consignment] ADD MultiPrice d_MultiPricing Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Item]') and name = N'Image') 
	ALTER TABLE [dbo].[Item] ADD [Image] [varbinary](max) NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = object_id(N'[dbo].[Users]') AND name = N'PosStartScreenData') 
	ALTER TABLE [dbo].[Users] ADD [PosStartScreenData] [varbinary](max) NULL
GO

UPDATE REGISTRY SET RegValue = '2.1.4' WHERE RegID = 2
GO�if not exists (select * from [Users] where UserID= 'AOTG') 
	INSERT INTO [Users] (UserID, UserName, Department, Passwd, FilterBySalesAgent, FilterByPurchaseAgent, IsActive, LastUpdate) VALUES ('AOTG', 'AOTG Client', '', '', 'F', 'F', 'T', 0)
GO

if not exists (select * from [UsersGroup] where UserID= 'AOTG') 
	INSERT INTO [UsersGroup] VALUES ('AOTG', 'ADMINS')
GO

UPDATE REGISTRY SET RegValue = '1.0.9.67' WHERE RegID = 2
GO�IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[ItemIngredient]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ItemIngredient](
		[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
		[ItemCode] [dbo].[d_ItemCode] NOT NULL,
		[IngredientItemCode] [dbo].[d_ItemCode] NOT NULL,
		[UOM] [dbo].[d_UOM] NULL,
		[Qty] [int] NULL,
		[Guid] [uniqueidentifier] NOT NULL,
	 CONSTRAINT [PK_ItemIngredient] PRIMARY KEY CLUSTERED 
	(
		[AutoKey] ASC
	),
	 CONSTRAINT [UIX_ItemIngredient_Guid] UNIQUE NONCLUSTERED 
	(
		[Guid] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemIngredient_ItemCode]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[ItemIngredient]  WITH CHECK ADD  CONSTRAINT [FK_ItemIngredient_ItemCode] FOREIGN KEY([ItemCode])
  REFERENCES [dbo].[Item] ([ItemCode])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemIngredient_IngredientItemCode]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[ItemIngredient]  WITH CHECK ADD  CONSTRAINT [FK_ItemIngredient_IngredientItemCode] FOREIGN KEY([IngredientItemCode])
  REFERENCES [dbo].[Item] ([ItemCode])
GO

/******Trigger: ItemIngredientChangeLog******/
IF OBJECT_ID ('ItemIngredientChangeLog','TR') IS NOT NULL
	DROP TRIGGER [ItemIngredientChangeLog]
GO

CREATE TRIGGER [dbo].[ItemIngredientChangeLog] ON [dbo].[ItemIngredient]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemIngredient', Guid, REPLACE((SELECT inserted.* FOR XML RAW('ItemIngredient'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemIngredient', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('ItemIngredient')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('ItemIngredient')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemIngredient/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemIngredient/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemIngredient'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemIngredient', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemIngredient', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

UPDATE REGISTRY SET RegValue = '2.1.5' WHERE RegID = 2
GO�IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = object_id(N'[dbo].[Location]') AND name = N'AlipayPaymentMethod') 
ALTER TABLE [dbo].[Location] ADD AlipayPaymentMethod [dbo].[d_PaymentMethod] NULL 
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'FK_Location_AlipayPaymentMethod')))
ALTER TABLE [dbo].[Location]  WITH CHECK ADD CONSTRAINT [FK_Location_AlipayPaymentMethod] FOREIGN KEY([AlipayPaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
GO

ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FK_Location_AlipayPaymentMethod]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.68' WHERE RegID = 2
GO�Update TaxType Set Description = 'Input Tax 0% - Purchase subject to GST other than standard rate' Where TaxType = 'ZP'
GO

Update TaxType Set IsActive = 'F' Where IRASTaxCode = 'RP'
GO

Update TaxType Set IsActive = 'F' Where IRASTaxCode = 'EP'
GO

Update TaxType Set IsActive = 'F' Where IRASTaxCode = 'GP'
GO

Update TaxType Set IsActive = 'F' Where IRASTaxCode = 'NP'
GO

UPDATE REGISTRY SET RegValue = '1.0.9.69' WHERE RegID = 2
GO!if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferCAJEIsPayment')
ALTER TABLE [dbo].[APInvoice] ADD [ReferCAJEIsPayment] [d_Boolean] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferCAJEDocKey')
ALTER TABLE [dbo].[APInvoice] ADD [ReferCAJEDocKey] [bigint] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferCAJEDocNo')
ALTER TABLE [dbo].[APInvoice] ADD [ReferCAJEDocNo] [d_DocNo] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APPayment') AND name = 'ReferCAJEDocKey')
ALTER TABLE [dbo].[APPayment] ADD [ReferCAJEDocKey] [bigint] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APPayment') AND name = 'ReferCAJEDocNo')
ALTER TABLE [dbo].[APPayment] ADD [ReferCAJEDocNo] [d_DocNo] NULL
GO

UPDATE APInvoice Set ReferCAJEIsPayment = 'T' Where ReferCAJEDocKey IS NULL

UPDATE REGISTRY SET RegValue = '1.0.9.70' WHERE RegID = 2
GOIF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Activity]') and name = N'ThirdPartyAppName') 
  ALTER TABLE [dbo].[Activity] ADD ThirdPartyAppName nvarchar(20) Null
GO

IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[EventLog]') and name = N'ThirdPartyAppName') 
  ALTER TABLE [dbo].[EventLog] ADD ThirdPartyAppName nvarchar(20) Null
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[DocumentLock]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[DocumentLock] (
	[DocLockKey] [bigint] IDENTITY(1,1) NOT NULL,
	[DocType] [varchar] (20) NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[DocNo] [d_DocNo] NOT NULL,
	[ComputerName] [nvarchar] (15) NOT NULL,
	[UserName] [nvarchar] (64) NOT NULL,
	[UserID] [d_UserID] NOT NULL,
	[LastUpdate] [DateTime] NOT NULL,
	 CONSTRAINT [PK_DocumentLock_DocLockKey] PRIMARY KEY CLUSTERED 
	(
		[DocLockKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '2.1.6' WHERE RegID = 2
GO/* re-run 1.0.9.71 query if V2 Account Book miss out */
IF OBJECT_ID ('dbo.GlobalPriceChange', 'U') IS NULL
    CREATE TABLE [dbo].[GlobalPriceChange](
	      [DocKey] [bigint] NOT NULL,
          [Name] [nvarchar] (200) NULL,
	      [ChangeDateTime] [datetime] NULL,
	      [Criteria] [nvarchar] (MAX) NULL,
	      [Data] [nvarchar] (MAX) NULL,
	      [Updated] [dbo].[d_Boolean] NULL,
	      [LastModified] [datetime] NOT NULL,
	      [LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	      [CreatedTimeStamp] [datetime] NOT NULL,
	      [CreatedUserID] [dbo].[d_UserID] NOT NULL
    CONSTRAINT [PK_GlobalPriceChange] PRIMARY KEY CLUSTERED
    (
          [DocKey] ASC
    )
    ) ON [PRIMARY]
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), DefaultValue nvarchar(1))
/* Support SupplyPurchase in DN, CN and PR detail table */
INSERT @ListTable VALUES('DNDTL', 'SupplyPurchase', '[d_SupplyPurchase] NULL', 'S')
INSERT @ListTable VALUES('CNDTL', 'SupplyPurchase', '[d_SupplyPurchase] NULL', 'S')
INSERT @ListTable VALUES('PRDTL', 'SupplyPurchase', '[d_SupplyPurchase] NULL', 'P')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @defaultValue  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, DefaultValue From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @defaultValue

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = ''' + @defaultValue + ''' Where [' + @colName + '] is null and DtlType IN (''N'',''D'',''P'',''V'') AND PackageDocKey IS Null'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @defaultValue
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support TaxBranchID to Branch, Debtor, Creditor, Payment Method and TaxTrans */
INSERT @ListTable VALUES('Branch', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('Creditor', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('Debtor', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('TaxTrans', 'TaxBranchID', 'nvarchar(8) NULL', 'A')

/* Support TaxBranchID in ARAP table */
INSERT @ListTable VALUES('ARInvoice', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('ARCN', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('ARDN', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('APInvoice', 'TaxBranchID', 'nvarchar (8) NULL', 'A')
INSERT @ListTable VALUES('APDN', 'TaxBranchID', 'nvarchar (8) NULL', 'A')
INSERT @ListTable VALUES('APCN', 'TaxBranchID', 'nvarchar (8) NULL', 'A')

/* Support TaxBranchID in GL table */
INSERT @ListTable VALUES('CBDTL', 'TaxBranchID', 'nvarchar (8) NULL', 'A')
INSERT @ListTable VALUES('JEDTL', 'TaxBranchID', 'nvarchar (8) NULL', 'A')

/* Support TaxBranchID in Sales table */
INSERT @ListTable VALUES('QT', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('SO', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('DO', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('IV', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('CS', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('CN', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('DN', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('DR', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('XS', 'TaxBranchID', 'nvarchar(8) NULL', 'A')

/* Support TaxBranchID in Purchase table */
INSERT @ListTable VALUES('RQ', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('PO', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('GR', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('PI', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('CP', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('PR', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('GT', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('XP', 'TaxBranchID', 'nvarchar(8) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.1.7' WHERE RegID = 2
GO�IF OBJECT_ID ('dbo.GlobalPriceChange', 'U') IS NULL
CREATE TABLE [dbo].[GlobalPriceChange](
	  [DocKey] [bigint] NOT NULL,
      [Name] [nvarchar] (200) NULL,
	  [ChangeDateTime] [datetime] NULL,
	  [Criteria] [nvarchar] (MAX) NULL,
	  [Data] [nvarchar] (MAX) NULL,
	  [Updated] [dbo].[d_Boolean] NULL,
	  [LastModified] [datetime] NOT NULL,
	  [LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	  [CreatedTimeStamp] [datetime] NOT NULL,
	  [CreatedUserID] [dbo].[d_UserID] NOT NULL
CONSTRAINT [PK_GlobalPriceChange] PRIMARY KEY CLUSTERED
(
      [DocKey] ASC
)
) ON [PRIMARY]

GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), DefaultValue nvarchar(1))
/* Support SupplyPurchase in DN, CN and PR detail table */
INSERT @ListTable VALUES('DNDTL', 'SupplyPurchase', '[d_SupplyPurchase] NULL', 'S')
INSERT @ListTable VALUES('CNDTL', 'SupplyPurchase', '[d_SupplyPurchase] NULL', 'S')
INSERT @ListTable VALUES('PRDTL', 'SupplyPurchase', '[d_SupplyPurchase] NULL', 'P')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @defaultValue  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, DefaultValue From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @defaultValue

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'Update ' + @tableName + ' Set [' + @colName + '] = ''' + @defaultValue + ''' Where [' + @colName + '] is null and DtlType IN (''N'',''D'',''P'',''V'') AND PackageDocKey IS Null'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @defaultValue
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.71' WHERE RegID = 2
GO/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support TaxBranchID in Sales table */
INSERT @ListTable VALUES('Consignment', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('ConsignmentReturn', 'TaxBranchID', 'nvarchar(8) NULL', 'A')


/* Support TaxBranchID in Purchase table */
INSERT @ListTable VALUES('PurchaseConsignment', 'TaxBranchID', 'nvarchar(8) NULL', 'A')
INSERT @ListTable VALUES('PurchaseConsignmentReturn', 'TaxBranchID', 'nvarchar(8) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.1.8' WHERE RegID = 2
GO/* To support the Sales Tax Registration No in Company Profile Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'SalesTaxRegisterNo')
  ALTER TABLE [dbo].[Profile] 
    ADD [SalesTaxRegisterNo] [nvarchar] (20) NULL
GO

/* To support the Service Tax Registration No in Company Profile Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'ServiceTaxRegisterNo')
  ALTER TABLE [dbo].[Profile] 
    ADD [ServiceTaxRegisterNo] [nvarchar] (20) NULL
GO

/* To support the Accounting Basis in Tax Type Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'AccountingBasis')
  ALTER TABLE [dbo].[TaxType] 
    ADD [AccountingBasis] [int] NULL
GO

UPDATE TaxType SET AccountingBasis = 0 WHERE AccountingBasis IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'AccountingBasis')
ALTER TABLE [TaxType] ALTER COLUMN [AccountingBasis] [int] NOT NULL
GO

/* Create SST AccNo Setting table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SSTSetting]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[SSTSetting] (
       [SSTName] [nvarchar] (100) NOT NULL,
       [SSTValue] [nvarchar] (300) NULL,
       CONSTRAINT [PK_SSTSetting] PRIMARY KEY CLUSTERED
       (
             [SSTName] ASC
       )
) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.72' WHERE RegID = 2
GOc/* re-run 1.0.9.72 query if V2 Account Book miss out */
/* To support the Sales Tax Registration No in Company Profile Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'SalesTaxRegisterNo')
  ALTER TABLE [dbo].[Profile] ADD [SalesTaxRegisterNo] [nvarchar] (20) NULL
GO

/* To support the Service Tax Registration No in Company Profile Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'ServiceTaxRegisterNo')
  ALTER TABLE [dbo].[Profile] ADD [ServiceTaxRegisterNo] [nvarchar] (20) NULL
GO

/* To support the Accounting Basis in Tax Type Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'AccountingBasis')
  ALTER TABLE [dbo].[TaxType] ADD [AccountingBasis] [int] NULL
GO

UPDATE TaxType SET AccountingBasis = 0 WHERE AccountingBasis IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'AccountingBasis')
  ALTER TABLE [TaxType] ALTER COLUMN [AccountingBasis] [int] NOT NULL
GO

/* Create SST AccNo Setting table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SSTSetting]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    CREATE TABLE [dbo].[SSTSetting] (
           [SSTName] [nvarchar] (100) NOT NULL,
           [SSTValue] [nvarchar] (300) NULL,
           CONSTRAINT [PK_SSTSetting] PRIMARY KEY CLUSTERED
           (
                 [SSTName] ASC
           )
    ) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '2.1.9' WHERE RegID = 2
GOL/* Add AccountingBasis column in TaxType table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('TaxType') AND name = 'AccountingBasis')
ALTER TABLE TaxType ADD DEFAULT 0 FOR AccountingBasis
GO

/* Add AddToCost column in TaxType table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('TaxType') AND name = 'AddToCost')
ALTER TABLE [dbo].[TaxType] ADD [AddToCost] [d_Boolean] NOT NULL DEFAULT 'F'
GO

/* Create Sales Exemption table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxExemption]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[TaxExemption] (
		[AccNo] [d_AccNo] NOT NULL, 
		[ItemCode] [d_ItemCode] NOT NULL,
		[SalesExemptionNo] [d_SalesExemptionNo] NOT NULL,
		[TaxType] [d_TaxType] NOT NULL,
		[LastUpdate] [int] NOT NULL,
       CONSTRAINT [PK_TaxExemption] PRIMARY KEY CLUSTERED
       (
		[AccNo] ASC,
		[ItemCode] ASC
       )
) ON [PRIMARY]
GO

/* Create Tariff table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Tariff]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[Tariff] (
		[TariffCode] [nvarchar] (10) NOT NULL, 
		[Description] [nvarchar] (100) NULL,
		[Desc2] [nvarchar] (100) NULL,
		[IsActive] [d_Boolean] NOT NULL,
		[LastUpdate] [int] NOT NULL,
       CONSTRAINT [PK_Tariff] PRIMARY KEY CLUSTERED
       (
		[TariffCode] ASC
       )
) ON [PRIMARY]
GO


/* Add SalesExemptionNo & TariffCode fields in Sales & Purchase, Item table */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

/* Support SalesExemptionNo in Sales table */
INSERT @ListTable VALUES('QTDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('SODTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('DODTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('IVDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('CSDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('CNDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('DNDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('DRDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('XSDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')

/* Support SalesExemptionNo in Purchase table */
INSERT @ListTable VALUES('RQDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('PODTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('GRDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('PIDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('CPDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('PRDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('GTDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')
INSERT @ListTable VALUES('XPDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL')

/* Support TariffCode in Item table */
INSERT @ListTable VALUES('Item', 'TariffCode', '[nvarchar] (10) NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Item_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Item] DROP CONSTRAINT [FK_Item_TariffCode]
GO

ALTER TABLE [dbo].[Item] WITH CHECK ADD CONSTRAINT [FK_Item_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
ON UPDATE CASCADE
GO

/* The following will add Tariff to ChangeCount table */
if not exists (select * from [ChangeCount] where TableName = 'Tariff') 
  INSERT INTO [ChangeCount] VALUES ('Tariff', 0)
GO

/* The following will add UpdateTariffChangeCount Trigger */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateTariffChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER UpdateTariffChangeCount
GO

CREATE TRIGGER UpdateTariffChangeCount ON Tariff AFTER Insert, Update, Delete 
AS
  SET NOCOUNT ON 
  UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='Tariff' 
  SET NOCOUNT OFF
GO

UPDATE REGISTRY SET RegValue = '1.0.9.73' WHERE RegID = 2
GOM%if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Tariff]') and name = N'AutoKey')
  ALTER TABLE [dbo].[Tariff] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxExemption]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[TaxExemption] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Tariff_TariffCode]'))
  ALTER TABLE [dbo].[Tariff] ADD CONSTRAINT [UIX_Tariff_TariffCode] UNIQUE NONCLUSTERED ([TariffCode] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_TaxExemption_AccNo_ItemCode]'))
  ALTER TABLE [dbo].[TaxExemption] ADD CONSTRAINT [UIX_TaxExemption_AccNo_ItemCode] UNIQUE NONCLUSTERED ([AccNo] ASC, [ItemCode] ASC)
GO

-- Rename and change Primary Key
DECLARE @schemaName sysname
DECLARE @TableName sysname
DECLARE @PrimaryName sysname
DECLARE @PrimaryDesc sysname
DECLARE @ListTable TABLE(TableName sysname, PrimaryName sysname, PrimaryDesc sysname)
DECLARE @cur_item cursor
DECLARE @cur_index cursor

SET @schemaName = 'dbo'
INSERT @ListTable VALUES('Tariff', 'PK_Tariff_AutoKey', '[AutoKey] ASC')
INSERT @ListTable VALUES('TaxExemption', 'PK_TaxExemption_AutoKey', '[AutoKey] ASC')

DECLARE @cmd NVARCHAR(1000) 

DECLARE @FK_NAME sysname
DECLARE @FK_OBJECTID INT
DECLARE @FK_DISABLED INT
DECLARE @FK_NOT_TRUSTED INT
DECLARE @FK_NOT_FOR_REPLICATION INT 
DECLARE @DELETE_RULE smallint   
DECLARE @UPDATE_RULE smallint    
DECLARE @FKTABLE_NAME sysname
DECLARE @FKTABLE_OWNER sysname 
DECLARE @PKTABLE_NAME sysname
DECLARE @PKTABLE_OWNER sysname 
DECLARE @FKCOLUMN_NAME sysname 
DECLARE @PKCOLUMN_NAME sysname
DECLARE @indexName sysname
DECLARE @indexTableName sysname

DECLARE @ListTable1 TABLE(TABLE_NAME sysname, FK_NAME sysname, FK_OBJECTID INT, FK_DISABLED INT, FK_NOT_TRUSTED INT, FK_NOT_FOR_REPLICATION INT, DELETE_RULE smallint, UPDATE_RULE smallint, 
FKTABLE_NAME sysname, FKTABLE_OWNER sysname, PKTABLE_NAME sysname, PKTABLE_OWNER sysname)
DECLARE @ListTable2 TABLE(TABLE_NAME sysname, FKCOLUMN_NAME sysname, PKCOLUMN_NAME sysname, FKC_OBJECTID INT, FKC_COLUMNID INT)
DECLARE @IndexTable TABLE(IndexName sysname, TableName sysname)

Insert Into @ListTable1
SELECT TbR.name, Fk.name, Fk.OBJECT_ID, Fk.is_disabled, Fk.is_not_trusted, Fk.is_not_for_replication, Fk.delete_referential_action, Fk.update_referential_action, 
OBJECT_NAME(Fk.parent_object_id) AS Fk_table_name, schema_name(Fk.schema_id) AS Fk_table_schema, TbR.name AS Pk_table_name, schema_name(TbR.schema_id) Pk_table_schema  
FROM sys.foreign_keys Fk LEFT OUTER JOIN sys.tables TbR ON TbR.OBJECT_ID = Fk.referenced_object_id --inner join   
WHERE schema_name(TbR.schema_id) = @schemaName

Insert Into @ListTable2
SELECT TbR.name, COL_NAME(Fk.parent_object_id, Fk_Cl.parent_column_id) AS Fk_col_name, COL_NAME(Fk.referenced_object_id, Fk_Cl.referenced_column_id) AS Pk_col_name, Fk_Cl.constraint_object_id, Fk_Cl.constraint_column_id
FROM sys.foreign_keys Fk LEFT OUTER JOIN sys.tables TbR ON TbR.OBJECT_ID = Fk.referenced_object_id INNER JOIN sys.foreign_key_columns Fk_Cl ON Fk_Cl.constraint_object_id = Fk.OBJECT_ID   
WHERE schema_name(TbR.schema_id) = @schemaName

-- Find Primary Key index
Insert Into @IndexTable select distinct ix.name, tab.name
FROM sys.indexes ix 
inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
inner join sys.types t on col.user_type_id = t.user_type_id 
inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
inner join sys.key_constraints pkc on pkc.parent_object_id = tab.object_id and pkc.parent_object_id = ixCol.object_id
Where ix.type>0 and ix.is_primary_key=1 and OBJECTPROPERTY(pkc.object_id, N'IsPrimaryKey') = 1

BEGIN TRANSACTION
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, PrimaryName, PrimaryDesc From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @TableName, @PrimaryName, @PrimaryDesc

WHILE @@FETCH_STATUS = 0
BEGIN
	-- Drop Foreign Keys --
	DECLARE cursor_fkeys CURSOR FOR SELECT FK_NAME, FK_OBJECTID, FK_DISABLED, FK_NOT_TRUSTED, FK_NOT_FOR_REPLICATION, DELETE_RULE, UPDATE_RULE, FKTABLE_NAME, FKTABLE_OWNER, PKTABLE_NAME, PKTABLE_OWNER From @ListTable1
	WHERE TABLE_NAME = @TableName
	OPEN cursor_fkeys  
	FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER

	WHILE @@FETCH_STATUS = 0   
	BEGIN
		-- create statement for dropping FK and also for recreating FK  
		-- drop statement  
		SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + ']  DROP CONSTRAINT [' + @FK_NAME + ']'
		Exec sp_executesql @cmd
		--PRINT @cmd

		FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER  
	END

	CLOSE cursor_fkeys   
	DEALLOCATE cursor_fkeys


	-- Drop Primary Keys --
	SET @cur_index = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName From @IndexTable Where TableName = @TableName
	OPEN @cur_index
	FETCH NEXT FROM @cur_index INTO @indexName, @indexTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @cmd = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
		Exec sp_executesql @cmd
		--PRINT @cmd

		FETCH NEXT FROM @cur_index INTO @indexName, @indexTableName
	END

	CLOSE @cur_index
	DEALLOCATE @cur_index


	-- Create Primary Keys --
	SET @cmd = 'ALTER TABLE [dbo].[' + @TableName + '] ADD CONSTRAINT [' + @PrimaryName + '] PRIMARY KEY CLUSTERED (' + @PrimaryDesc + ')' 
	Exec sp_executesql @cmd
	--PRINT @cmd


	-- Create Foreign Keys --
	DECLARE cursor_fkeys CURSOR FOR SELECT FK_NAME, FK_OBJECTID, FK_DISABLED, FK_NOT_TRUSTED, FK_NOT_FOR_REPLICATION, DELETE_RULE, UPDATE_RULE, FKTABLE_NAME, FKTABLE_OWNER, PKTABLE_NAME, PKTABLE_OWNER From @ListTable1
	WHERE TABLE_NAME = @TableName
	OPEN cursor_fkeys  
	FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER

	WHILE @@FETCH_STATUS = 0   
	BEGIN
		-- create process
		DECLARE @FKCOLUMNS VARCHAR(1000), @PKCOLUMNS VARCHAR(1000), @COUNTER INT
			
		-- create cursor to get FK columns  
		DECLARE cursor_fkeyCols CURSOR FOR SELECT FKCOLUMN_NAME, PKCOLUMN_NAME FROM @ListTable2 WHERE TABLE_NAME = @TableName AND FKC_OBJECTID = @FK_OBJECTID ORDER BY FKC_COLUMNID 
		OPEN cursor_fkeyCols  
		FETCH NEXT FROM cursor_fkeyCols INTO @FKCOLUMN_NAME, @PKCOLUMN_NAME  

		SET @COUNTER = 1  
		SET @FKCOLUMNS = ''  
		SET @PKCOLUMNS = ''  
         
		WHILE @@FETCH_STATUS = 0   
		BEGIN   

		IF @COUNTER > 1   
		BEGIN  
			SET @FKCOLUMNS = @FKCOLUMNS + ','  
			SET @PKCOLUMNS = @PKCOLUMNS + ','  
		END

		SET @FKCOLUMNS = @FKCOLUMNS + '[' + @FKCOLUMN_NAME + ']'  
		SET @PKCOLUMNS = @PKCOLUMNS + '[' + @PKCOLUMN_NAME + ']'  

		SET @COUNTER = @COUNTER + 1  
             
		FETCH NEXT FROM cursor_fkeyCols INTO @FKCOLUMN_NAME, @PKCOLUMN_NAME  
		END

		CLOSE cursor_fkeyCols   
		DEALLOCATE cursor_fkeyCols   

		-- generate create FK statement  
		SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + ']  WITH ' +   
           CASE @FK_NOT_TRUSTED   
               WHEN 0 THEN ' CHECK '  
               WHEN 1 THEN ' NOCHECK '  
           END +  ' ADD CONSTRAINT [' + @FK_NAME   
           + '] FOREIGN KEY (' + @FKCOLUMNS   
           + ') REFERENCES [' + @PKTABLE_OWNER + '].[' + @PKTABLE_NAME + '] ('   
           + @PKCOLUMNS + ') ON UPDATE ' +   
           CASE @UPDATE_RULE   
               WHEN 0 THEN ' NO ACTION '  
               WHEN 1 THEN ' CASCADE '   
               WHEN 2 THEN ' SET_NULL '   
               END + ' ON DELETE ' +   
           CASE @DELETE_RULE  
               WHEN 0 THEN ' NO ACTION '   
               WHEN 1 THEN ' CASCADE '   
               WHEN 2 THEN ' SET_NULL '   
               END + '' +  
           CASE @FK_NOT_FOR_REPLICATION  
               WHEN 0 THEN ''  
               WHEN 1 THEN ' NOT FOR REPLICATION '  
           END  
		Exec sp_executesql @cmd
		--PRINT @cmd  

		IF @FK_DISABLED = 1
		BEGIN
			SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + '] NOCHECK CONSTRAINT [' + @FK_NAME + ']'
			Exec sp_executesql @cmd
			--PRINT @cmd  
		END

		FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER  
	END

	CLOSE cursor_fkeys   
	DEALLOCATE cursor_fkeys

	IF @@ERROR <> 0
	BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	END

	FETCH NEXT FROM @cur_Item INTO @TableName, @PrimaryName, @PrimaryDesc
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '2.1.10' WHERE RegID = 2
GO8/* SST Processor */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SSTProcessor]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[SSTProcessor](
		[SSTKey] [bigint] IDENTITY(1,1) NOT NULL,
		[FromDate] [datetime] NOT NULL,
		[ToDate] [datetime] NOT NULL,
		[Duration] [tinyint] NOT NULL,
		[Submitted] [dbo].[d_Boolean] NOT NULL,
		[TaxDataReport] [varbinary](max) NULL,
		[JEDocKey] [bigint] NULL,
		[DeclarantName] [nvarchar](200) NULL,
		[ICOrPassportNo] [nvarchar](20) NULL,
		[DeclarantDesignation] [nvarchar](200) NULL,
		[TelephoneNo] [nvarchar](20) NULL,
		[PenaltyRate] [d_Qty] NULL,
		[Compressed] [dbo].[d_Boolean] NOT NULL,
		[ParentSSTKey] [bigint] NULL,
		[Seq] [int] NULL,
		[ProductVersion] [nvarchar](100) NULL,
		[SSTVersion] [int] NOT NULL,
		[DeclarationDate] [datetime] NULL,
		[CreatedTimeStamp] [datetime] NULL,
		[CreatedUserID] [dbo].[d_UserID] NULL,
		CONSTRAINT [PK_SSTProcessor] PRIMARY KEY CLUSTERED
		(
			[SSTKey] ASC
		)
	) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Item_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Item] DROP CONSTRAINT [FK_Item_TariffCode]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Tariff]') and name = N'TariffCode') 
ALTER TABLE Tariff ALTER COLUMN [TariffCode] [nvarchar] (12) NOT NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'TariffCode') 
ALTER TABLE Item ALTER COLUMN [TariffCode] [nvarchar] (12) NULL
GO

ALTER TABLE [dbo].[Item] WITH CHECK ADD CONSTRAINT [FK_Item_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
ON UPDATE CASCADE
GO

UPDATE REGISTRY SET RegValue = '1.0.9.74' WHERE RegID = 2
GO�!-- Rename and change Primary Key
DECLARE @schemaName sysname
DECLARE @TableName sysname
DECLARE @PrimaryName sysname
DECLARE @PrimaryDesc sysname
DECLARE @ListTable TABLE(TableName sysname, PrimaryName sysname, PrimaryDesc sysname)
DECLARE @cur_item cursor
DECLARE @cur_index cursor

SET @schemaName = 'dbo'
INSERT @ListTable VALUES('SSTProcessor', 'PK_SSTProcessorr_SSTKey', '[SSTKey] ASC')

DECLARE @cmd NVARCHAR(1000) 

DECLARE @FK_NAME sysname
DECLARE @FK_OBJECTID INT
DECLARE @FK_DISABLED INT
DECLARE @FK_NOT_TRUSTED INT
DECLARE @FK_NOT_FOR_REPLICATION INT 
DECLARE @DELETE_RULE smallint   
DECLARE @UPDATE_RULE smallint    
DECLARE @FKTABLE_NAME sysname
DECLARE @FKTABLE_OWNER sysname 
DECLARE @PKTABLE_NAME sysname
DECLARE @PKTABLE_OWNER sysname 
DECLARE @FKCOLUMN_NAME sysname 
DECLARE @PKCOLUMN_NAME sysname
DECLARE @indexName sysname
DECLARE @indexTableName sysname

DECLARE @ListTable1 TABLE(TABLE_NAME sysname, FK_NAME sysname, FK_OBJECTID INT, FK_DISABLED INT, FK_NOT_TRUSTED INT, FK_NOT_FOR_REPLICATION INT, DELETE_RULE smallint, UPDATE_RULE smallint, 
FKTABLE_NAME sysname, FKTABLE_OWNER sysname, PKTABLE_NAME sysname, PKTABLE_OWNER sysname)
DECLARE @ListTable2 TABLE(TABLE_NAME sysname, FKCOLUMN_NAME sysname, PKCOLUMN_NAME sysname, FKC_OBJECTID INT, FKC_COLUMNID INT)
DECLARE @IndexTable TABLE(IndexName sysname, TableName sysname)

Insert Into @ListTable1
SELECT TbR.name, Fk.name, Fk.OBJECT_ID, Fk.is_disabled, Fk.is_not_trusted, Fk.is_not_for_replication, Fk.delete_referential_action, Fk.update_referential_action, 
OBJECT_NAME(Fk.parent_object_id) AS Fk_table_name, schema_name(Fk.schema_id) AS Fk_table_schema, TbR.name AS Pk_table_name, schema_name(TbR.schema_id) Pk_table_schema  
FROM sys.foreign_keys Fk LEFT OUTER JOIN sys.tables TbR ON TbR.OBJECT_ID = Fk.referenced_object_id --inner join   
WHERE schema_name(TbR.schema_id) = @schemaName

Insert Into @ListTable2
SELECT TbR.name, COL_NAME(Fk.parent_object_id, Fk_Cl.parent_column_id) AS Fk_col_name, COL_NAME(Fk.referenced_object_id, Fk_Cl.referenced_column_id) AS Pk_col_name, Fk_Cl.constraint_object_id, Fk_Cl.constraint_column_id
FROM sys.foreign_keys Fk LEFT OUTER JOIN sys.tables TbR ON TbR.OBJECT_ID = Fk.referenced_object_id INNER JOIN sys.foreign_key_columns Fk_Cl ON Fk_Cl.constraint_object_id = Fk.OBJECT_ID   
WHERE schema_name(TbR.schema_id) = @schemaName

-- Find Primary Key index
Insert Into @IndexTable select distinct ix.name, tab.name
FROM sys.indexes ix 
inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
inner join sys.types t on col.user_type_id = t.user_type_id 
inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
inner join sys.key_constraints pkc on pkc.parent_object_id = tab.object_id and pkc.parent_object_id = ixCol.object_id
Where ix.type>0 and ix.is_primary_key=1 and OBJECTPROPERTY(pkc.object_id, N'IsPrimaryKey') = 1

BEGIN TRANSACTION
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, PrimaryName, PrimaryDesc From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @TableName, @PrimaryName, @PrimaryDesc

WHILE @@FETCH_STATUS = 0
BEGIN
	-- Drop Foreign Keys --
	DECLARE cursor_fkeys CURSOR FOR SELECT FK_NAME, FK_OBJECTID, FK_DISABLED, FK_NOT_TRUSTED, FK_NOT_FOR_REPLICATION, DELETE_RULE, UPDATE_RULE, FKTABLE_NAME, FKTABLE_OWNER, PKTABLE_NAME, PKTABLE_OWNER From @ListTable1
	WHERE TABLE_NAME = @TableName
	OPEN cursor_fkeys  
	FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER

	WHILE @@FETCH_STATUS = 0   
	BEGIN
		-- create statement for dropping FK and also for recreating FK  
		-- drop statement  
		SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + ']  DROP CONSTRAINT [' + @FK_NAME + ']'
		Exec sp_executesql @cmd
		--PRINT @cmd

		FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER  
	END

	CLOSE cursor_fkeys   
	DEALLOCATE cursor_fkeys


	-- Drop Primary Keys --
	SET @cur_index = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName From @IndexTable Where TableName = @TableName
	OPEN @cur_index
	FETCH NEXT FROM @cur_index INTO @indexName, @indexTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @cmd = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
		Exec sp_executesql @cmd
		--PRINT @cmd

		FETCH NEXT FROM @cur_index INTO @indexName, @indexTableName
	END

	CLOSE @cur_index
	DEALLOCATE @cur_index


	-- Create Primary Keys --
	SET @cmd = 'ALTER TABLE [dbo].[' + @TableName + '] ADD CONSTRAINT [' + @PrimaryName + '] PRIMARY KEY CLUSTERED (' + @PrimaryDesc + ')' 
	Exec sp_executesql @cmd
	--PRINT @cmd


	-- Create Foreign Keys --
	DECLARE cursor_fkeys CURSOR FOR SELECT FK_NAME, FK_OBJECTID, FK_DISABLED, FK_NOT_TRUSTED, FK_NOT_FOR_REPLICATION, DELETE_RULE, UPDATE_RULE, FKTABLE_NAME, FKTABLE_OWNER, PKTABLE_NAME, PKTABLE_OWNER From @ListTable1
	WHERE TABLE_NAME = @TableName
	OPEN cursor_fkeys  
	FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER

	WHILE @@FETCH_STATUS = 0   
	BEGIN
		-- create process
		DECLARE @FKCOLUMNS VARCHAR(1000), @PKCOLUMNS VARCHAR(1000), @COUNTER INT
			
		-- create cursor to get FK columns  
		DECLARE cursor_fkeyCols CURSOR FOR SELECT FKCOLUMN_NAME, PKCOLUMN_NAME FROM @ListTable2 WHERE TABLE_NAME = @TableName AND FKC_OBJECTID = @FK_OBJECTID ORDER BY FKC_COLUMNID 
		OPEN cursor_fkeyCols  
		FETCH NEXT FROM cursor_fkeyCols INTO @FKCOLUMN_NAME, @PKCOLUMN_NAME  

		SET @COUNTER = 1  
		SET @FKCOLUMNS = ''  
		SET @PKCOLUMNS = ''  
         
		WHILE @@FETCH_STATUS = 0   
		BEGIN   

		IF @COUNTER > 1   
		BEGIN  
			SET @FKCOLUMNS = @FKCOLUMNS + ','  
			SET @PKCOLUMNS = @PKCOLUMNS + ','  
		END

		SET @FKCOLUMNS = @FKCOLUMNS + '[' + @FKCOLUMN_NAME + ']'  
		SET @PKCOLUMNS = @PKCOLUMNS + '[' + @PKCOLUMN_NAME + ']'  

		SET @COUNTER = @COUNTER + 1  
             
		FETCH NEXT FROM cursor_fkeyCols INTO @FKCOLUMN_NAME, @PKCOLUMN_NAME  
		END

		CLOSE cursor_fkeyCols   
		DEALLOCATE cursor_fkeyCols   

		-- generate create FK statement  
		SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + ']  WITH ' +   
           CASE @FK_NOT_TRUSTED   
               WHEN 0 THEN ' CHECK '  
               WHEN 1 THEN ' NOCHECK '  
           END +  ' ADD CONSTRAINT [' + @FK_NAME   
           + '] FOREIGN KEY (' + @FKCOLUMNS   
           + ') REFERENCES [' + @PKTABLE_OWNER + '].[' + @PKTABLE_NAME + '] ('   
           + @PKCOLUMNS + ') ON UPDATE ' +   
           CASE @UPDATE_RULE   
               WHEN 0 THEN ' NO ACTION '  
               WHEN 1 THEN ' CASCADE '   
               WHEN 2 THEN ' SET_NULL '   
               END + ' ON DELETE ' +   
           CASE @DELETE_RULE  
               WHEN 0 THEN ' NO ACTION '   
               WHEN 1 THEN ' CASCADE '   
               WHEN 2 THEN ' SET_NULL '   
               END + '' +  
           CASE @FK_NOT_FOR_REPLICATION  
               WHEN 0 THEN ''  
               WHEN 1 THEN ' NOT FOR REPLICATION '  
           END  
		Exec sp_executesql @cmd
		--PRINT @cmd  

		IF @FK_DISABLED = 1
		BEGIN
			SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + '] NOCHECK CONSTRAINT [' + @FK_NAME + ']'
			Exec sp_executesql @cmd
			--PRINT @cmd  
		END

		FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER  
	END

	CLOSE cursor_fkeys   
	DEALLOCATE cursor_fkeys

	IF @@ERROR <> 0
	BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	END

	FETCH NEXT FROM @cur_Item INTO @TableName, @PrimaryName, @PrimaryDesc
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '2.1.11' WHERE RegID = 2
GO�/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support TariffCode to TaxTrans, GL, A/R Invoice, ARCN, ARDN, IV, CS, CN, DN */
INSERT @ListTable VALUES('TaxTrans', 'TariffCode', '[nvarchar] (12) NULL', 'A')
INSERT @ListTable VALUES('TaxTransAuditDTL', 'TariffCode', '[nvarchar] (12) NULL', 'A')
INSERT @ListTable VALUES('CBDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('JEDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('ARInvoiceDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('ARCNDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('ARDNDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Item_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Item] DROP CONSTRAINT [FK_Item_TariffCode]
GO

ALTER TABLE [dbo].[Item] WITH CHECK ADD CONSTRAINT [FK_Item_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTrans_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTrans] DROP CONSTRAINT [FK_TaxTrans_TariffCode]
GO

ALTER TABLE [dbo].[TaxTrans] WITH CHECK ADD CONSTRAINT [FK_TaxTrans_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransAuditDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransAuditDTL] DROP CONSTRAINT [FK_TaxTransAuditDTL_TariffCode]
GO

ALTER TABLE [dbo].[TaxTransAuditDTL] WITH CHECK ADD CONSTRAINT [FK_TaxTransAuditDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CBDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CBDTL] DROP CONSTRAINT [FK_CBDTL_TariffCode]
GO

ALTER TABLE [dbo].[CBDTL] WITH CHECK ADD CONSTRAINT [FK_CBDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_JEDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[JEDTL] DROP CONSTRAINT [FK_JEDTL_TariffCode]
GO

ALTER TABLE [dbo].[JEDTL] WITH CHECK ADD CONSTRAINT [FK_JEDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARInvoiceDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARInvoiceDTL] DROP CONSTRAINT [FK_ARInvoiceDTL_TariffCode]
GO

ALTER TABLE [dbo].[ARInvoiceDTL] WITH CHECK ADD CONSTRAINT [FK_ARInvoiceDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARCNDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARCNDTL] DROP CONSTRAINT [FK_ARCNDTL_TariffCode]
GO

ALTER TABLE [dbo].[ARCNDTL] WITH CHECK ADD CONSTRAINT [FK_ARCNDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDNDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDNDTL] DROP CONSTRAINT [FK_ARDNDTL_TariffCode]
GO

ALTER TABLE [dbo].[ARDNDTL] WITH CHECK ADD CONSTRAINT [FK_ARDNDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IVDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IVDTL] DROP CONSTRAINT [FK_IVDTL_TariffCode]
GO

ALTER TABLE [dbo].[IVDTL] WITH CHECK ADD CONSTRAINT [FK_IVDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CNDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CNDTL] DROP CONSTRAINT [FK_CNDTL_TariffCode]
GO

ALTER TABLE [dbo].[CNDTL] WITH CHECK ADD CONSTRAINT [FK_CNDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DNDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DNDTL] DROP CONSTRAINT [FK_DNDTL_TariffCode]
GO

ALTER TABLE [dbo].[DNDTL] WITH CHECK ADD CONSTRAINT [FK_DNDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CSDTL] DROP CONSTRAINT [FK_CSDTL_TariffCode]
GO

ALTER TABLE [dbo].[CSDTL] WITH CHECK ADD CONSTRAINT [FK_CSDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

UPDATE REGISTRY SET RegValue = '1.0.9.75' WHERE RegID = 2
GO�/****** Drop Trigger: TariffChangeLog******/
IF OBJECT_ID ('TariffChangeLog','TR') IS NOT NULL
	DROP TRIGGER [TariffChangeLog]
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Tariff]') and name = N'Guid') 
  ALTER TABLE [dbo].[Tariff] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[Tariff] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[Tariff] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from sys.key_constraints where object_id = object_id(N'dbo.UIX_Tariff_Guid') AND parent_object_id = object_id(N'dbo.Tariff'))
  ALTER TABLE [dbo].[Tariff] ADD CONSTRAINT[UIX_Tariff_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

/****** Add Trigger: TariffChangeLog******/
CREATE TRIGGER [dbo].[TariffChangeLog] ON [dbo].[Tariff]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Tariff', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Tariff'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Tariff', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Tariff')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Tariff')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Tariff/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Tariff/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Tariff'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Tariff', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Tariff', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

UPDATE REGISTRY SET RegValue = '2.1.12' WHERE RegID = 2
GO�
/* Add IsFinalGSTReturn field in GSTProcessor table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTProcessor]') and name = N'IsFinalGSTReturn')
  ALTER TABLE [dbo].[GSTProcessor] ADD [IsFinalGSTReturn] [d_Boolean] NULL
GO

/* Add JEFixedAssetAndStockValueDocKey field in GSTProcessor table */
if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[GSTProcessor]') and name='JEFixedAssetAndStockValueDocKey') 
  ALTER TABLE [dbo].[GSTProcessor] ADD [JEFixedAssetAndStockValueDocKey] [bigint] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_GLMast_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[GLMast] DROP CONSTRAINT [FK_GLMast_TariffCode]
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[GLMast]') and name='TariffCode') 
  ALTER TABLE [dbo].[GLMast] ADD [TariffCode] [nvarchar] (12) NULL
GO

ALTER TABLE [dbo].[GLMast] WITH CHECK ADD CONSTRAINT [FK_GLMast_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

/* Add SSTJEDocKey column in ARPayment table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ARPayment') AND name = 'SSTJEDocKey')
ALTER TABLE [dbo].[ARPayment] ADD [SSTJEDocKey] [bigint] NULL
GO

/* Add SSTJEDocKey column in ARCN table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ARCN') AND name = 'SSTJEDocKey')
ALTER TABLE [dbo].[ARCN] ADD [SSTJEDocKey] [bigint] NULL
GO

/* Add SSTJEDocKey column in ARDeposit table*/
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ARDeposit') AND name = 'SSTJEDocKey')
ALTER TABLE [dbo].[ARDeposit] ADD [SSTJEDocKey] [bigint] NULL
GO

/* Create SST Payment Reverse JE table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ReverseSSTPayment]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[ReverseSSTPayment] (
	   [DocKey] [bigint] NOT NULL,
	   [DocType] [d_DocType] NOT NULL,
	   [AppliedDocKey] [bigint] NOT NULL,
       [AppliedDocType] [d_DocType] NOT NULL,
       [JEDocKey] [bigint] NOT NULL,
       CONSTRAINT [PK_ReverseSSTPayment] PRIMARY KEY CLUSTERED
       (
             [DocKey] ASC,
			 [DocType] ASC,
			 [AppliedDocKey] ASC,
			 [AppliedDocType] ASC
       )
) ON [PRIMARY]
GO

/* Add JEAnnualAdjDocKey2 field in GSTPartialExemption table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GSTPartialExemption]') and name = N'JEAnnualAdjDocKey2')
  ALTER TABLE [dbo].[GSTPartialExemption] ADD [JEAnnualAdjDocKey2] [bigint] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.76' WHERE RegID = 2
GO"-- Rename and change Primary Key
DECLARE @schemaName sysname
DECLARE @TableName sysname
DECLARE @PrimaryName sysname
DECLARE @PrimaryDesc sysname
DECLARE @ListTable TABLE(TableName sysname, PrimaryName sysname, PrimaryDesc sysname)
DECLARE @cur_item cursor
DECLARE @cur_index cursor

SET @schemaName = 'dbo'
INSERT @ListTable VALUES('ReverseSSTPayment', 'PK_ReverseSSTPayment_DocKey_DocType_AppliedDocKey_AppliedDocType', '[DocKey] ASC, [DocType] ASC, [AppliedDocKey] ASC, [AppliedDocType] ASC')


DECLARE @cmd NVARCHAR(1000) 

DECLARE @FK_NAME sysname
DECLARE @FK_OBJECTID INT
DECLARE @FK_DISABLED INT
DECLARE @FK_NOT_TRUSTED INT
DECLARE @FK_NOT_FOR_REPLICATION INT 
DECLARE @DELETE_RULE smallint   
DECLARE @UPDATE_RULE smallint    
DECLARE @FKTABLE_NAME sysname
DECLARE @FKTABLE_OWNER sysname 
DECLARE @PKTABLE_NAME sysname
DECLARE @PKTABLE_OWNER sysname 
DECLARE @FKCOLUMN_NAME sysname 
DECLARE @PKCOLUMN_NAME sysname
DECLARE @indexName sysname
DECLARE @indexTableName sysname

DECLARE @ListTable1 TABLE(TABLE_NAME sysname, FK_NAME sysname, FK_OBJECTID INT, FK_DISABLED INT, FK_NOT_TRUSTED INT, FK_NOT_FOR_REPLICATION INT, DELETE_RULE smallint, UPDATE_RULE smallint, 
FKTABLE_NAME sysname, FKTABLE_OWNER sysname, PKTABLE_NAME sysname, PKTABLE_OWNER sysname)
DECLARE @ListTable2 TABLE(TABLE_NAME sysname, FKCOLUMN_NAME sysname, PKCOLUMN_NAME sysname, FKC_OBJECTID INT, FKC_COLUMNID INT)
DECLARE @IndexTable TABLE(IndexName sysname, TableName sysname)

Insert Into @ListTable1
SELECT TbR.name, Fk.name, Fk.OBJECT_ID, Fk.is_disabled, Fk.is_not_trusted, Fk.is_not_for_replication, Fk.delete_referential_action, Fk.update_referential_action, 
OBJECT_NAME(Fk.parent_object_id) AS Fk_table_name, schema_name(Fk.schema_id) AS Fk_table_schema, TbR.name AS Pk_table_name, schema_name(TbR.schema_id) Pk_table_schema  
FROM sys.foreign_keys Fk LEFT OUTER JOIN sys.tables TbR ON TbR.OBJECT_ID = Fk.referenced_object_id --inner join   
WHERE schema_name(TbR.schema_id) = @schemaName

Insert Into @ListTable2
SELECT TbR.name, COL_NAME(Fk.parent_object_id, Fk_Cl.parent_column_id) AS Fk_col_name, COL_NAME(Fk.referenced_object_id, Fk_Cl.referenced_column_id) AS Pk_col_name, Fk_Cl.constraint_object_id, Fk_Cl.constraint_column_id
FROM sys.foreign_keys Fk LEFT OUTER JOIN sys.tables TbR ON TbR.OBJECT_ID = Fk.referenced_object_id INNER JOIN sys.foreign_key_columns Fk_Cl ON Fk_Cl.constraint_object_id = Fk.OBJECT_ID   
WHERE schema_name(TbR.schema_id) = @schemaName

-- Find Primary Key index
Insert Into @IndexTable select distinct ix.name, tab.name
FROM sys.indexes ix 
inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
inner join sys.types t on col.user_type_id = t.user_type_id 
inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
inner join sys.key_constraints pkc on pkc.parent_object_id = tab.object_id and pkc.parent_object_id = ixCol.object_id
Where ix.type>0 and ix.is_primary_key=1 and OBJECTPROPERTY(pkc.object_id, N'IsPrimaryKey') = 1

BEGIN TRANSACTION
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, PrimaryName, PrimaryDesc From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @TableName, @PrimaryName, @PrimaryDesc

WHILE @@FETCH_STATUS = 0
BEGIN
	-- Drop Foreign Keys --
	DECLARE cursor_fkeys CURSOR FOR SELECT FK_NAME, FK_OBJECTID, FK_DISABLED, FK_NOT_TRUSTED, FK_NOT_FOR_REPLICATION, DELETE_RULE, UPDATE_RULE, FKTABLE_NAME, FKTABLE_OWNER, PKTABLE_NAME, PKTABLE_OWNER From @ListTable1
	WHERE TABLE_NAME = @TableName
	OPEN cursor_fkeys  
	FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER

	WHILE @@FETCH_STATUS = 0   
	BEGIN
		-- create statement for dropping FK and also for recreating FK  
		-- drop statement  
		SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + ']  DROP CONSTRAINT [' + @FK_NAME + ']'
		Exec sp_executesql @cmd
		--PRINT @cmd

		FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER  
	END

	CLOSE cursor_fkeys   
	DEALLOCATE cursor_fkeys


	-- Drop Primary Keys --
	SET @cur_index = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName From @IndexTable Where TableName = @TableName
	OPEN @cur_index
	FETCH NEXT FROM @cur_index INTO @indexName, @indexTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @cmd = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
		Exec sp_executesql @cmd
		--PRINT @cmd

		FETCH NEXT FROM @cur_index INTO @indexName, @indexTableName
	END

	CLOSE @cur_index
	DEALLOCATE @cur_index


	-- Create Primary Keys --
	SET @cmd = 'ALTER TABLE [dbo].[' + @TableName + '] ADD CONSTRAINT [' + @PrimaryName + '] PRIMARY KEY CLUSTERED (' + @PrimaryDesc + ')' 
	Exec sp_executesql @cmd
	--PRINT @cmd


	-- Create Foreign Keys --
	DECLARE cursor_fkeys CURSOR FOR SELECT FK_NAME, FK_OBJECTID, FK_DISABLED, FK_NOT_TRUSTED, FK_NOT_FOR_REPLICATION, DELETE_RULE, UPDATE_RULE, FKTABLE_NAME, FKTABLE_OWNER, PKTABLE_NAME, PKTABLE_OWNER From @ListTable1
	WHERE TABLE_NAME = @TableName
	OPEN cursor_fkeys  
	FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER

	WHILE @@FETCH_STATUS = 0   
	BEGIN
		-- create process
		DECLARE @FKCOLUMNS VARCHAR(1000), @PKCOLUMNS VARCHAR(1000), @COUNTER INT
			
		-- create cursor to get FK columns  
		DECLARE cursor_fkeyCols CURSOR FOR SELECT FKCOLUMN_NAME, PKCOLUMN_NAME FROM @ListTable2 WHERE TABLE_NAME = @TableName AND FKC_OBJECTID = @FK_OBJECTID ORDER BY FKC_COLUMNID 
		OPEN cursor_fkeyCols  
		FETCH NEXT FROM cursor_fkeyCols INTO @FKCOLUMN_NAME, @PKCOLUMN_NAME  

		SET @COUNTER = 1  
		SET @FKCOLUMNS = ''  
		SET @PKCOLUMNS = ''  
         
		WHILE @@FETCH_STATUS = 0   
		BEGIN   

		IF @COUNTER > 1   
		BEGIN  
			SET @FKCOLUMNS = @FKCOLUMNS + ','  
			SET @PKCOLUMNS = @PKCOLUMNS + ','  
		END

		SET @FKCOLUMNS = @FKCOLUMNS + '[' + @FKCOLUMN_NAME + ']'  
		SET @PKCOLUMNS = @PKCOLUMNS + '[' + @PKCOLUMN_NAME + ']'  

		SET @COUNTER = @COUNTER + 1  
             
		FETCH NEXT FROM cursor_fkeyCols INTO @FKCOLUMN_NAME, @PKCOLUMN_NAME  
		END

		CLOSE cursor_fkeyCols   
		DEALLOCATE cursor_fkeyCols   

		-- generate create FK statement  
		SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + ']  WITH ' +   
           CASE @FK_NOT_TRUSTED   
               WHEN 0 THEN ' CHECK '  
               WHEN 1 THEN ' NOCHECK '  
           END +  ' ADD CONSTRAINT [' + @FK_NAME   
           + '] FOREIGN KEY (' + @FKCOLUMNS   
           + ') REFERENCES [' + @PKTABLE_OWNER + '].[' + @PKTABLE_NAME + '] ('   
           + @PKCOLUMNS + ') ON UPDATE ' +   
           CASE @UPDATE_RULE   
               WHEN 0 THEN ' NO ACTION '  
               WHEN 1 THEN ' CASCADE '   
               WHEN 2 THEN ' SET_NULL '   
               END + ' ON DELETE ' +   
           CASE @DELETE_RULE  
               WHEN 0 THEN ' NO ACTION '   
               WHEN 1 THEN ' CASCADE '   
               WHEN 2 THEN ' SET_NULL '   
               END + '' +  
           CASE @FK_NOT_FOR_REPLICATION  
               WHEN 0 THEN ''  
               WHEN 1 THEN ' NOT FOR REPLICATION '  
           END  
		Exec sp_executesql @cmd
		--PRINT @cmd  

		IF @FK_DISABLED = 1
		BEGIN
			SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + '] NOCHECK CONSTRAINT [' + @FK_NAME + ']'
			Exec sp_executesql @cmd
			--PRINT @cmd  
		END

		FETCH NEXT FROM cursor_fkeys INTO @FK_NAME, @FK_OBJECTID, @FK_DISABLED, @FK_NOT_TRUSTED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER  
	END

	CLOSE cursor_fkeys   
	DEALLOCATE cursor_fkeys

	IF @@ERROR <> 0
	BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	END

	FETCH NEXT FROM @cur_Item INTO @TableName, @PrimaryName, @PrimaryDesc
END

CLOSE @cur_Item
DEALLOCATE @cur_Item

COMMIT TRANSACTION
GO

UPDATE REGISTRY SET RegValue = '2.1.13' WHERE RegID = 2
GO�if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferSSTISJEDocKey')
ALTER TABLE [dbo].[APInvoice] ADD [ReferSSTISJEDocKey] [bigint] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferSSTISJEDocNo')
ALTER TABLE [dbo].[APInvoice] ADD [ReferSSTISJEDocNo] [d_DocNo] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.77' WHERE RegID = 2
GO�if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_AlipayPaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] DROP CONSTRAINT [FK_Location_AlipayPaymentMethod]
GO

IF EXISTS (SELECT * FROM dbo.syscolumns WHERE id = object_id(N'[dbo].[Location]') AND name = N'AlipayPaymentMethod') 
  ALTER TABLE [dbo].[Location] DROP COLUMN AlipayPaymentMethod
GO

UPDATE REGISTRY SET RegValue = '2.1.14' WHERE RegID = 2
GO�if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemIngredient]') and name = N'Qty')
  ALTER TABLE [ItemIngredient] ALTER COLUMN [Qty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[ItemGroup]') and name='CashPurchaseCode')
  ALTER TABLE [dbo].[ItemGroup] ADD [CashPurchaseCode] [dbo].[d_AccNo] NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ItemGroup_CashPurchaseCode]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[ItemGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_ItemGroup_CashPurchaseCode] FOREIGN KEY([CashPurchaseCode])
  REFERENCES [dbo].[GLMast] ([AccNo])
GO

if not exists (select * from dbo.syscolumns where id=object_id('[dbo].[PostingAccountGroup]') and name='CashPurchaseCode')
  ALTER TABLE [dbo].[PostingAccountGroup] ADD [CashPurchaseCode] [dbo].[d_AccNo] NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PostingAccountGroup_CashPurchaseCode]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[PostingAccountGroup]  WITH NOCHECK ADD  CONSTRAINT [FK_PostingAccountGroup_CashPurchaseCode] FOREIGN KEY([CashPurchaseCode])
  REFERENCES [dbo].[GLMast] ([AccNo])
GO

/* Create Tax Trans Cancelled table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxTransCancelled]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[TaxTransCancelled](
		[TaxTransKey] [bigint] IDENTITY(1,1) NOT NULL,
		[SourceType] [dbo].[d_SourceType] NOT NULL,
		[SourceKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[TaxType] [dbo].[d_TaxType] NOT NULL,
		[SupplyPurchase] [dbo].[d_SupplyPurchase] NOT NULL,
		[ProjNo] [dbo].[d_Project] NULL,
		[DeptNo] [dbo].[d_Dept] NULL,
		[TaxableAccNo] [dbo].[d_AccNo] NULL,
		[TaxableName] [dbo].[d_AccDescription] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[SourceDtlKey] [bigint] NULL,
		[Seq] [int] NULL,
		[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
		[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL DEFAULT 1,
		[TaxRate] [dbo].[d_Percent] NOT NULL,
		[TaxAccNo] [dbo].[d_AccNo] NULL,
		[TaxDate] [datetime] NOT NULL,
		[RegisterNo] [nvarchar](25) NULL,
		[TaxRegisterNo] [nvarchar](20) NULL,
		[TaxRefNo] [nvarchar](30) NULL,
		[TaxPermitNo] [nvarchar](20) NULL,
		[TaxExportCountry] [nvarchar](50) NULL,
		[Description] [dbo].[d_GLDescription] NULL,
		[OriginalDtlKey] [bigint] NULL,
		[OriginalDtlType] [dbo].[d_DtlType] NULL,
		[TariffCode] [nvarchar](12) NULL,
		[TaxBranchID] [nvarchar](8) NULL,
	 CONSTRAINT [PK_TaxTransCancelled_TaxTransKey] PRIMARY KEY CLUSTERED 
	(
		[TaxTransKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name = 'IX_TaxTransCancelled_SourceType_SourceKey' AND object_id = OBJECT_ID('TaxTransCancelled'))
	CREATE NONCLUSTERED INDEX [IX_TaxTransCancelled_SourceType_SourceKey] ON [dbo].[TaxTransCancelled]
	(
		[SourceType] ASC,
		[SourceKey] ASC
	)ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransCancelled] DROP CONSTRAINT [FK_TaxTransCancelled_CurrencyCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransCancelled] DROP CONSTRAINT [FK_TaxTransCancelled_DeptNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransCancelled] DROP CONSTRAINT [FK_TaxTransCancelled_ProjNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_TaxableAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransCancelled] DROP CONSTRAINT [FK_TaxTransCancelled_TaxableAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_TaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransCancelled] DROP CONSTRAINT [FK_TaxTransCancelled_TaxAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_TaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransCancelled] DROP CONSTRAINT [FK_TaxTransCancelled_TaxType]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransCancelled] DROP CONSTRAINT [FK_TaxTransCancelled_TariffCode]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_CurrencyCode]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[TaxTransCancelled] WITH CHECK ADD CONSTRAINT [FK_TaxTransCancelled_CurrencyCode] 
  FOREIGN KEY([CurrencyCode])
  REFERENCES [dbo].[Currency] ([CurrencyCode])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_DeptNo]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[TaxTransCancelled] WITH CHECK ADD CONSTRAINT [FK_TaxTransCancelled_DeptNo] 
  FOREIGN KEY([DeptNo])
  REFERENCES [dbo].[Dept] ([DeptNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_ProjNo]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[TaxTransCancelled] WITH CHECK ADD CONSTRAINT [FK_TaxTransCancelled_ProjNo] 
  FOREIGN KEY([ProjNo])
  REFERENCES [dbo].[Project] ([ProjNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_TaxableAccNo]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[TaxTransCancelled] WITH CHECK ADD CONSTRAINT [FK_TaxTransCancelled_TaxableAccNo] 
  FOREIGN KEY([TaxableAccNo])
  REFERENCES [dbo].[GLMast] ([AccNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_TaxAccNo]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[TaxTransCancelled] WITH CHECK ADD CONSTRAINT [FK_TaxTransCancelled_TaxAccNo] 
  FOREIGN KEY([TaxAccNo])
  REFERENCES [dbo].[GLMast] ([AccNo])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_TaxType]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[TaxTransCancelled] WITH CHECK ADD CONSTRAINT [FK_TaxTransCancelled_TaxType] 
  FOREIGN KEY([TaxType])
  REFERENCES [dbo].[TaxType] ([TaxType])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_TariffCode]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[TaxTransCancelled] WITH CHECK ADD CONSTRAINT [FK_TaxTransCancelled_TariffCode] 
  FOREIGN KEY([TariffCode])
  REFERENCES [dbo].[Tariff] ([TariffCode])
GO

UPDATE REGISTRY SET RegValue = '2.1.15' WHERE RegID = 2
GO�/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support TariffCode to A/P Invoice, APCN, APDN, PI, CP, PR */
INSERT @ListTable VALUES('APInvoiceDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('APCNDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('APDNDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('PIDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('CPDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')
INSERT @ListTable VALUES('PRDTL', 'TariffCode', 'nvarchar(12) NULL', 'A')

/* Support TaxType to PackageDtl */
INSERT @ListTable VALUES('PackageDTL', 'TaxType', '[d_TaxType] NULL', 'A')
INSERT @ListTable VALUES('PackageDTL', 'PurchaseTaxType', '[d_TaxType] NULL', 'A')

/* Support ServiceTaxRegisterNo to Debtor */
INSERT @ListTable VALUES('Debtor', 'ServiceTaxRegisterNo', '[nvarchar] (20) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APInvoiceDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APInvoiceDTL] DROP CONSTRAINT [FK_APInvoiceDTL_TariffCode]
GO

ALTER TABLE [dbo].[APInvoiceDTL] WITH CHECK ADD CONSTRAINT [FK_APInvoiceDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APCNDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APCNDTL] DROP CONSTRAINT [FK_APCNDTL_TariffCode]
GO

ALTER TABLE [dbo].[APCNDTL] WITH CHECK ADD CONSTRAINT [FK_APCNDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_APDNDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[APDNDTL] DROP CONSTRAINT [FK_APDNDTL_TariffCode]
GO

ALTER TABLE [dbo].[APDNDTL] WITH CHECK ADD CONSTRAINT [FK_APDNDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PIDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PIDTL] DROP CONSTRAINT [FK_PIDTL_TariffCode]
GO

ALTER TABLE [dbo].[PIDTL] WITH CHECK ADD CONSTRAINT [FK_PIDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CPDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CPDTL] DROP CONSTRAINT [FK_CPDTL_TariffCode]
GO

ALTER TABLE [dbo].[CPDTL] WITH CHECK ADD CONSTRAINT [FK_CPDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PRDTL_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PRDTL] DROP CONSTRAINT [FK_PRDTL_TariffCode]
GO

ALTER TABLE [dbo].[PRDTL] WITH CHECK ADD CONSTRAINT [FK_PRDTL_TariffCode] 
FOREIGN KEY([TariffCode])
REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PackageDTL_TaxType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[PackageDTL] DROP CONSTRAINT [FK_PackageDTL_TaxType]
GO

ALTER TABLE [dbo].[PackageDTL] WITH CHECK ADD CONSTRAINT [FK_PackageDTL_TaxType] 
FOREIGN KEY([TaxType])
REFERENCES [dbo].[TaxType] ([TaxType])
GO

/* Support SST Sales Tax Deduction to A/P Invoice */
if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferSSTSDJEDocKey')
ALTER TABLE [dbo].[APInvoice] ADD [ReferSSTSDJEDocKey] [bigint] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferSSTSDJEDocNo')
ALTER TABLE [dbo].[APInvoice] ADD [ReferSSTSDJEDocNo] [d_DocNo] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.78' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.1.16' WHERE RegID = 2
GOuif not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ItemLocationPrice') AND name = 'ReOQty')
ALTER TABLE [dbo].[ItemLocationPrice] ADD [ReOQty] [d_Qty] NULL
GO

if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('BonusPointRedemptionDTL') AND name = 'SubTotal')
ALTER TABLE [dbo].[BonusPointRedemptionDTL] ALTER COLUMN [SubTotal] [d_MemberPoint] NULL
GO

IF NOT EXISTS (select * from RemarkName where DocType = 'AO')
INSERT INTO [RemarkName] VALUES ('AO', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
GO

UPDATE REGISTRY SET RegValue = '1.0.9.79' WHERE RegID = 2
GO-if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferCAJEIsPayment')
  ALTER TABLE [dbo].[APInvoice] ADD [ReferCAJEIsPayment] [d_Boolean] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferCAJEDocKey')
  ALTER TABLE [dbo].[APInvoice] ADD [ReferCAJEDocKey] [bigint] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APInvoice') AND name = 'ReferCAJEDocNo')
  ALTER TABLE [dbo].[APInvoice] ADD [ReferCAJEDocNo] [d_DocNo] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APPayment') AND name = 'ReferCAJEDocKey')
  ALTER TABLE [dbo].[APPayment] ADD [ReferCAJEDocKey] [bigint] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APPayment') AND name = 'ReferCAJEDocNo')
  ALTER TABLE [dbo].[APPayment] ADD [ReferCAJEDocNo] [d_DocNo] NULL
GO

UPDATE APInvoice Set ReferCAJEIsPayment = 'T' Where ReferCAJEDocKey IS NULL
GO

UPDATE REGISTRY SET RegValue = '2.1.17' WHERE RegID = 2
GO(if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Project]') and name = N'Guid')
  ALTER TABLE [dbo].[Project] ADD [Guid][uniqueidentifier] NOT NULL DEFAULT NEWID()
GO

if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'UIX_Project_Guid')))
  ALTER TABLE [dbo].[Project] ADD CONSTRAINT[UIX_Project_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Dept]') and name = N'Guid')
  ALTER TABLE [dbo].[Dept] ADD [Guid][uniqueidentifier] NOT NULL DEFAULT NEWID() 
GO

if not exists (SELECT * FROM dbo.sysobjects WHERE id IN( object_id(N'UIX_Dept_Guid')))
  ALTER TABLE [dbo].[Dept] ADD CONSTRAINT[UIX_Dept_Guid] UNIQUE NONCLUSTERED([Guid]) 
GO

IF OBJECT_ID ('dbo.ProjectChangeLog', 'TR') IS NOT NULL 
  DROP TRIGGER [dbo].[ProjectChangeLog]
GO

CREATE TRIGGER [dbo].[ProjectChangeLog] ON [dbo].[Project]
AFTER INSERT, UPDATE, DELETE
AS
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Project', Guid, (SELECT inserted.* FOR XML RAW('Project')), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Project', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, (SELECT deleted.* FOR XML PATH('Project')) FROM deleted
OPEN deleted_cur
DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, (SELECT inserted.* FOR XML PATH('Project')) FROM inserted
OPEN inserted_cur
FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
;with XML1 as
(
select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
from @oldcontent.nodes('/Project/*') as T(N)
),
XML2 as
(
select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
from @newcontent.nodes('/Project/*') as T(N)
)
SELECT @content =
(select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL))
For XML Path('Row'),ELEMENTS XSINIL, Root('Project'))
IF @content IS NOT NULL
BEGIN
IF @@FETCH_STATUS <> 0
INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Project', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
ELSE
INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Project', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
END
FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
END
CLOSE deleted_cur
DEALLOCATE deleted_cur
CLOSE inserted_cur
DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

IF OBJECT_ID ('dbo.DeptChangeLog', 'TR') IS NOT NULL 
  DROP TRIGGER [dbo].DeptChangeLog
GO

CREATE TRIGGER [dbo].[DeptChangeLog] ON [dbo].[Dept]
AFTER INSERT, UPDATE, DELETE
AS
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Dept', Guid, (SELECT inserted.* FOR XML RAW('Dept')), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Dept', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, (SELECT deleted.* FOR XML PATH('Dept')) FROM deleted
OPEN deleted_cur
DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, (SELECT inserted.* FOR XML PATH('Dept')) FROM inserted
OPEN inserted_cur
FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
;with XML1 as
(
select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
from @oldcontent.nodes('/Dept/*') as T(N)
),
XML2 as
(
select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
from @newcontent.nodes('/Dept/*') as T(N)
)
SELECT @content =
(select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL))
For XML Path('Row'),ELEMENTS XSINIL, Root('Dept'))
IF @content IS NOT NULL
BEGIN
IF @@FETCH_STATUS <> 0
INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Dept', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
ELSE
INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Dept', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
END
FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
END
CLOSE deleted_cur
DEALLOCATE deleted_cur
CLOSE inserted_cur
DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/* Drop LastUpdate, MinQty, MaxQty, NormalLevel, ReOLevel, ReOQty column in ItemLocationPrice table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ItemLocationPrice') AND name = 'LastUpdate')
  ALTER TABLE [dbo].[ItemLocationPrice] DROP COLUMN [LastUpdate]
GO

if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ItemLocationPrice') AND name = 'MinQty')
  ALTER TABLE [dbo].[ItemLocationPrice] DROP COLUMN [MinQty]
GO

if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ItemLocationPrice') AND name = 'MaxQty')
  ALTER TABLE [dbo].[ItemLocationPrice] DROP COLUMN [MaxQty]
GO

if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ItemLocationPrice') AND name = 'NormalLevel')
  ALTER TABLE [dbo].[ItemLocationPrice] DROP COLUMN [NormalLevel]
GO

if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ItemLocationPrice') AND name = 'ReOLevel')
  ALTER TABLE [dbo].[ItemLocationPrice] DROP COLUMN [ReOLevel]
GO

if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('ItemLocationPrice') AND name = 'ReOQty')
  ALTER TABLE [dbo].[ItemLocationPrice] DROP COLUMN [ReOQty]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[ItemLevelByLocation]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ItemLevelByLocation] (
		[AutoKey] [bigint] IDENTITY(1,1) NOT NULL,
		[ItemCode] [dbo].[d_ItemCode] NOT NULL,
		[UOM] [dbo].[d_UOM] NOT NULL,
		[Location] [dbo].[d_Location] NOT NULL,
		[MinQty] [dbo].[d_Qty] NULL,
		[MaxQty] [dbo].[d_Qty] NULL,
		[NormalLevel] [dbo].[d_Qty] NULL,
		[ReOLevel] [dbo].[d_Qty] NULL,
		[ReOQty] [dbo].[d_Qty] NULL,
		[Guid] [uniqueidentifier] NOT NULL,
	 CONSTRAINT [PK_ItemLevelByLocation_AutoKey] PRIMARY KEY CLUSTERED 
	(
		[AutoKey] ASC
	),
	 CONSTRAINT [UIX_ItemLevelByLocation_ItemCode_UOM_Location] UNIQUE NONCLUSTERED 
	(
		[ItemCode] ASC,
		[UOM] ASC,
		[Location] ASC
	),
	CONSTRAINT [UIX_ItemLevelByLocation_Guid] UNIQUE NONCLUSTERED 
	(
		[Guid] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

/* To support the PrintCount in ARAP DN & CN Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCN]') and name = N'PrintCount')
  ALTER TABLE [dbo].[ARCN] ADD [PrintCount] [smallint] NULL
GO

UPDATE ARCN SET PrintCount = 0 WHERE PrintCount IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARCN]') and name = N'PrintCount')
  ALTER TABLE [ARCN] ALTER COLUMN [PrintCount] [smallint] NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDN]') and name = N'PrintCount')
  ALTER TABLE [dbo].[ARDN] ADD [PrintCount] [smallint] NULL
GO

UPDATE ARDN SET PrintCount = 0 WHERE PrintCount IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARDN]') and name = N'PrintCount')
  ALTER TABLE [ARDN] ALTER COLUMN [PrintCount] [smallint] NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCN]') and name = N'PrintCount')
  ALTER TABLE [dbo].[APCN] ADD [PrintCount] [smallint] NULL
GO

UPDATE APCN SET PrintCount = 0 WHERE PrintCount IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APCN]') and name = N'PrintCount')
  ALTER TABLE [APCN] ALTER COLUMN [PrintCount] [smallint] NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDN]') and name = N'PrintCount')
  ALTER TABLE [dbo].[APDN] ADD [PrintCount] [smallint] NULL
GO

UPDATE APDN SET PrintCount = 0 WHERE PrintCount IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[APDN]') and name = N'PrintCount')
  ALTER TABLE [APDN] ALTER COLUMN [PrintCount] [smallint] NOT NULL
GO

UPDATE REGISTRY SET RegValue = '2.1.18' WHERE RegID = 2
GO\/* GSTFilingReminder */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GSTFilingReminder]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[GSTFilingReminder](
		[GSTFilingReminderKey] [bigint] IDENTITY(1,1) NOT NULL,
		[FromDate] [DateTime] NOT NULL,
		[ToDate] [DateTime] NOT NULL,
		[IsFirstTimeRemind] [d_Boolean] NULL,
		[IsSecondTimeRemind] [d_Boolean] NULL,
		CONSTRAINT [PK_GSTFilingReminder] PRIMARY KEY CLUSTERED
		(
			[GSTFilingReminderKey] ASC
		)
	) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '1.0.9.80' WHERE RegID = 2
GO�Iif not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SalesAgent]') and name = N'EmailAddress')
  ALTER TABLE [dbo].[SalesAgent] ADD [EmailAddress] [dbo].[d_EmailAddress] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SalesAgent]') and name = N'ApproverEmailAddress')
  ALTER TABLE [dbo].[SalesAgent] ADD [ApproverEmailAddress] [dbo].[d_EmailAddress] NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ADVQT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ADVQT](
		[DocKey] [bigint] NOT NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[DebtorCode] [dbo].[d_AccNo] NULL,
		[DebtorName] [dbo].[d_AccDescription] NULL,
		[Ref] [nvarchar](40) NULL,
		[Description] [nvarchar](80) NULL,
		[DisplayTerm] [dbo].[d_DisplayTerm] NOT NULL,
		[SalesAgent] [dbo].[d_Agent] NULL,
		[InvAddr1] [dbo].[d_Address] NULL,
		[InvAddr2] [dbo].[d_Address] NULL,
		[InvAddr3] [dbo].[d_Address] NULL,
		[InvAddr4] [dbo].[d_Address] NULL,
		[Phone1] [dbo].[d_Phone] NULL,
		[Fax1] [dbo].[d_Phone] NULL,
		[Attention] [dbo].[d_Contact] NULL,
		[BranchCode] [dbo].[d_BranchCode] NULL,
		[DeliverAddr1] [dbo].[d_Address] NULL,
		[DeliverAddr2] [dbo].[d_Address] NULL,
		[DeliverAddr3] [dbo].[d_Address] NULL,
		[DeliverAddr4] [dbo].[d_Address] NULL,
		[DeliverPhone1] [dbo].[d_Phone] NULL,
		[DeliverFax1] [dbo].[d_Phone] NULL,
		[DeliverContact] [dbo].[d_Contact] NULL,
		[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
		[SalesExemptionExpiryDate] [datetime] NULL,
		[Validity] [nvarchar](40) NULL,
		[DeliveryTerm] [nvarchar](40) NULL,
		[PaymentTerm] [nvarchar](40) NULL,
		[YourRef] [nvarchar](20) NULL,
		[CC] [nvarchar](20) NULL,
		[Total] [dbo].[d_Money] NULL,
		[Footer1Param] [dbo].[d_Money] NULL,
		[Footer1Amt] [dbo].[d_Money] NULL,
		[Footer1LocalAmt] [dbo].[d_Money] NULL,
		[Footer1TaxType] [dbo].[d_TaxType] NULL,
		[Footer2Param] [dbo].[d_Money] NULL,
		[Footer2Amt] [dbo].[d_Money] NULL,
		[Footer2LocalAmt] [dbo].[d_Money] NULL,
		[Footer2TaxType] [dbo].[d_TaxType] NULL,
		[Footer3Param] [dbo].[d_Money] NULL,
		[Footer3Amt] [dbo].[d_Money] NULL,
		[Footer3LocalAmt] [dbo].[d_Money] NULL,
		[Footer3TaxType] [dbo].[d_TaxType] NULL,
		[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
		[CurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
		[NetTotal] [dbo].[d_Money] NULL,
		[LocalNetTotal] [dbo].[d_Money] NULL,
		[AnalysisNetTotal] [dbo].[d_Money] NULL,
		[LocalAnalysisNetTotal] [dbo].[d_Money] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[Transferable] [dbo].[d_Boolean] NOT NULL,
		[ToDocType] [dbo].[d_DocType] NULL,
		[ToDocKey] [bigint] NULL,
		[Note] [nvarchar](max) NULL,
		[Remark1] [dbo].[d_Remark] NULL,
		[Remark2] [dbo].[d_Remark] NULL,
		[Remark3] [dbo].[d_Remark] NULL,
		[Remark4] [dbo].[d_Remark] NULL,
		[PrintCount] [smallint] NOT NULL,
		[Cancelled] [dbo].[d_Boolean] NOT NULL,
		[LastModified] [datetime] NOT NULL,
		[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
		[CreatedTimeStamp] [datetime] NOT NULL,
		[CreatedUserID] [dbo].[d_UserID] NOT NULL,
		[ApprovalUserID] [dbo].[d_UserID] NULL,
		[ExternalLink] [nvarchar](max) NULL,
		[RefDocNo] [dbo].[d_DocNo] NULL,
		[CanSync] [dbo].[d_Boolean] NOT NULL,
		[LastUpdate] [int] NOT NULL,
		[ToDtlKey] [bigint] NULL,
		[FullTransferOption] [dbo].[d_FullTransferOption] NULL,
		[ShipVia] [dbo].[d_ShippingMethod] NULL,
		[ShipInfo] [nvarchar](40) NULL,
		[SalesLocation] [dbo].[d_Location] NULL,
		[Footer1Tax] [dbo].[d_Money] NULL,
		[Footer1LocalTax] [dbo].[d_Money] NULL,
		[Footer2Tax] [dbo].[d_Money] NULL,
		[Footer2LocalTax] [dbo].[d_Money] NULL,
		[Footer3Tax] [dbo].[d_Money] NULL,
		[Footer3LocalTax] [dbo].[d_Money] NULL,
		[ExTax] [dbo].[d_Money] NULL,
		[LocalExTax] [dbo].[d_Money] NULL,
		[Guid] [uniqueidentifier] NOT NULL,
		[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
		[CalcDiscountOnUnitPrice] [dbo].[d_Boolean] NULL,
		[TotalExTax] [dbo].[d_Money] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
		[Footer1TaxRate] [dbo].[d_Percent] NULL,
		[Footer2TaxRate] [dbo].[d_Percent] NULL,
		[Footer3TaxRate] [dbo].[d_Percent] NULL,
		[RoundingMethod] [int] NOT NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[TaxCurrencyTax] [dbo].[d_Money] NULL,
		[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
		[IsRoundAdj] [dbo].[d_Boolean] NOT NULL,
		[RoundAdj] [dbo].[d_Money] NULL,
		[FinalTotal] [dbo].[d_Money] NULL,
		[MultiPrice] [dbo].[d_MultiPricing] NULL,
		[TaxBranchID] [nvarchar](8) NULL,
		[ParentDocKey] [bigint] NULL,
		[QTStatus] [tinyint] NOT NULL,
		[Rev] [tinyint] NOT NULL,
		[NextRev] [tinyint] NOT NULL,
		[Reason] [nvarchar](200) NULL,
		[ConfirmUserID] [dbo].[d_UserID] NULL,
		[SucessLostUserID] [dbo].[d_UserID] NULL,
	 CONSTRAINT [PK_ADVQT_DocKey] PRIMARY KEY CLUSTERED 
	(
		[DocKey] ASC
	)
	ON [PRIMARY],
	 CONSTRAINT [IX_ADVQT_DocNo] UNIQUE NONCLUSTERED 
	(
		[DocNo] ASC,
		[Rev] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (
    select *
      from sys.all_columns c
      join sys.tables t on t.object_id = c.object_id
      join sys.schemas s on s.schema_id = t.schema_id
      join sys.default_constraints d on c.default_object_id = d.object_id
    where t.name = 'ADVQT'
      and c.name = 'Guid'
      and s.name = 'dbo')
	ALTER TABLE [dbo].[ADVQT] ADD  DEFAULT (newid()) FOR [Guid]
GO

if not exists (
    select *
      from sys.all_columns c
      join sys.tables t on t.object_id = c.object_id
      join sys.schemas s on s.schema_id = t.schema_id
      join sys.default_constraints d on c.default_object_id = d.object_id
    where t.name = 'ADVQT'
      and c.name = 'InclusiveTax'
      and s.name = 'dbo')
	ALTER TABLE [dbo].[ADVQT] ADD  DEFAULT ('F') FOR [InclusiveTax]
GO

if not exists (
    select *
      from sys.all_columns c
      join sys.tables t on t.object_id = c.object_id
      join sys.schemas s on s.schema_id = t.schema_id
      join sys.default_constraints d on c.default_object_id = d.object_id
    where t.name = 'ADVQT'
      and c.name = 'IsRoundAdj'
      and s.name = 'dbo')
	ALTER TABLE [dbo].[ADVQT] ADD  DEFAULT ('F') FOR [IsRoundAdj]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_ApprovalUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_ApprovalUserID] FOREIGN KEY([ApprovalUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_ConfirmUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_ConfirmUserID] FOREIGN KEY([ConfirmUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_SucessLostUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_SucessLostUserID] FOREIGN KEY([SucessLostUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_BranchCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_BranchCode] FOREIGN KEY([DebtorCode], [BranchCode])
  REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_CreatedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_CreatedUserID] FOREIGN KEY([CreatedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_CurrencyCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_CurrencyCode] FOREIGN KEY([CurrencyCode])
  REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_DebtorCode]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_DebtorCode] FOREIGN KEY([DebtorCode])
  REFERENCES [dbo].[GLMast] ([AccNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_DisplayTerm]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_DisplayTerm] FOREIGN KEY([DisplayTerm])
  REFERENCES [dbo].[Terms] ([DisplayTerm])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_Footer1TaxType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_Footer1TaxType] FOREIGN KEY([Footer1TaxType])
  REFERENCES [dbo].[TaxType] ([TaxType])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_Footer2TaxType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_Footer2TaxType] FOREIGN KEY([Footer2TaxType])
  REFERENCES [dbo].[TaxType] ([TaxType])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_Footer3TaxType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_Footer3TaxType] FOREIGN KEY([Footer3TaxType])
  REFERENCES [dbo].[TaxType] ([TaxType])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_LastModifiedUserID]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_LastModifiedUserID] FOREIGN KEY([LastModifiedUserID])
  REFERENCES [dbo].[Users] ([UserID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_SalesAgent]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_SalesAgent] FOREIGN KEY([SalesAgent])
  REFERENCES [dbo].[SalesAgent] ([SalesAgent])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_SalesLocation]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_SalesLocation] FOREIGN KEY([SalesLocation])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQT_ShipVia]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQT]  WITH CHECK ADD  CONSTRAINT [FK_ADVQT_ShipVia] FOREIGN KEY([ShipVia])
  REFERENCES [dbo].[ShippingMethod] ([ShippingMethod])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ADVQTDTL]') and objectproperty(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ADVQTDTL](
		[DtlKey] [bigint] NOT NULL,
		[DocKey] [bigint] NOT NULL,
		[Seq] [int] NOT NULL,
		[Indent] [tinyint] NULL,
		[FontStyle] [dbo].[d_FontStyle] NULL,
		[MainItem] [dbo].[d_Boolean] NOT NULL,
		[Numbering] [dbo].[d_Numbering] NULL,
		[ItemCode] [dbo].[d_ItemCode] NULL,
		[Location] [dbo].[d_Location] NULL,
		[Description] [dbo].[d_ItemDescription] NULL,
		[FurtherDescription] [nvarchar](max) NULL,
		[ProjNo] [dbo].[d_Project] NULL,
		[DeptNo] [dbo].[d_Dept] NULL,
		[UOM] [dbo].[d_UOM] NULL,
		[UserUOM] [dbo].[d_UOM] NULL,
		[Qty] [dbo].[d_Qty] NULL,
		[Rate] [dbo].[d_Qty] NULL,
		[SmallestQty] [dbo].[d_Qty] NULL,
		[TransferedQty] [dbo].[d_Qty] NOT NULL,
		[SmallestUnitPrice] [dbo].[d_Price] NULL,
		[UnitPrice] [dbo].[d_Price] NULL,
		[Discount] [nvarchar](20) NULL,
		[DiscountAmt] [dbo].[d_Money] NULL,
		[TaxType] [dbo].[d_TaxType] NULL,
		[Tax] [dbo].[d_Money] NULL,
		[SubTotal] [dbo].[d_Money] NULL,
		[LocalSubTotal] [dbo].[d_Money] NULL,
		[Transferable] [dbo].[d_Boolean] NOT NULL,
		[PrintOut] [dbo].[d_Boolean] NOT NULL,
		[DtlType] [dbo].[d_DtlType] NULL,
		[CalcByPercent] [dbo].[d_Percent] NULL,
		[AddToSubTotal] [dbo].[d_Boolean] NOT NULL,
		[EstimatedDeliveryDate] [nvarchar](20) NULL,
		[PackageDocKey] [bigint] NULL,
		[ParentDtlKey] [bigint] NULL,
		[SubQty] [dbo].[d_Qty] NULL,
		[SubTotalExTax] [dbo].[d_Money] NULL,
		[LocalTax] [dbo].[d_Money] NULL,
		[Guid] [uniqueidentifier] NOT NULL,
		[RuleNo] [bigint] NULL,
		[DeliveryDate] [datetime] NULL,
		[TaxableAmt] [dbo].[d_Money] NULL,
		[TaxAdjustment] [dbo].[d_Money] NULL,
		[LocalSubTotalExTax] [dbo].[d_Money] NULL,
		[ExtraDiscountAmt] [dbo].[d_Money] NULL,
		[TaxRate] [dbo].[d_Percent] NULL,
		[LocalTaxAdjustment] [dbo].[d_Money] NULL,
		[LocalTaxableAmt] [dbo].[d_Money] NULL,
		[TaxCurrencyTax] [dbo].[d_Money] NULL,
		[TaxCurrencyTaxableAmt] [dbo].[d_Money] NULL,
		[SalesExemptionNo] [dbo].[d_SalesExemptionNo] NULL,
	 CONSTRAINT [PK_ADVQTDTL_DtlKey] PRIMARY KEY CLUSTERED 
	(
		[DtlKey] ASC
	)
	) ON [PRIMARY]
GO

if not exists (
    select *
      from sys.all_columns c
      join sys.tables t on t.object_id = c.object_id
      join sys.schemas s on s.schema_id = t.schema_id
      join sys.default_constraints d on c.default_object_id = d.object_id
    where t.name = 'ADVQTDTL'
      and c.name = 'Guid'
      and s.name = 'dbo')
    ALTER TABLE [dbo].[ADVQTDTL] ADD  DEFAULT (newid()) FOR [Guid]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQTDTL_DeptNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQTDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADVQTDTL_DeptNo] FOREIGN KEY([DeptNo])
  REFERENCES [dbo].[Dept] ([DeptNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQTDTL_FontStyle]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQTDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADVQTDTL_FontStyle] FOREIGN KEY([FontStyle])
  REFERENCES [dbo].[FontStyle] ([FontStyle])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQTDTL_ItemUOM]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQTDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADVQTDTL_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
  REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQTDTL_Location]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQTDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADVQTDTL_Location] FOREIGN KEY([Location])
  REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQTDTL_ProjNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQTDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADVQTDTL_ProjNo] FOREIGN KEY([ProjNo])
  REFERENCES [dbo].[Project] ([ProjNo])
  ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ADVQTDTL_TaxType]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ADVQTDTL]  WITH CHECK ADD  CONSTRAINT [FK_ADVQTDTL_TaxType] FOREIGN KEY([TaxType])
  REFERENCES [dbo].[TaxType] ([TaxType])
GO

if not exists (select * from [ChangeCount] where TableName = 'ADVQT')
  INSERT INTO [ChangeCount] VALUES ('ADVQT', 0);
GO

if (object_id(N'[dbo].[UpdateADVQTChangeCount]') is not null)
  DROP TRIGGER [dbo].[UpdateADVQTChangeCount];
GO

CREATE TRIGGER UpdateADVQTChangeCount ON ADVQT
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='ADVQT'
SET NOCOUNT OFF
GO

if not exists (select * from DocNoFormat where Name = 'ADVQT Default')
  INSERT INTO [DocNoFormat] (Name, DocType, NextNumber, [Format], [Sample], IsDefault, OneMonthOneSet) VALUES ('ADVQT Default', 'AQ', 1, 'Q-<000000>', 'Q-000001', 'T', 'F');
GO

if not exists (select * from RemarkName where DocType = 'AQ')
  INSERT INTO [RemarkName] VALUES ('AQ', 'Remark 1', 'Remark 2', 'Remark 3', 'Remark 4', 'T', 'T', 'T', 'T');
GO

if not exists (select * from ColumnLock where DocType = 'AQ')
  INSERT INTO [ColumnLock] VALUES ('AQ', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T');
GO

/* Add Guid not null column to GLMast and set initial value to it */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLMast]') and name = N'Guid')
  ALTER TABLE [dbo].[GLMast] ADD [Guid][uniqueidentifier] null 
GO

UPDATE GLMast SET Guid = NEWID() WHERE Guid IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLMast]') and name = N'Guid')
  ALTER TABLE [GLMast] ALTER COLUMN [Guid][uniqueidentifier] NOT NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_GLMast_Guid]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[GLMast] ADD CONSTRAINT[UIX_GLMast_Guid] UNIQUE NONCLUSTERED([Guid])
GO

/* Add Guid not null column to Report and set initial value to it */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Report]') and name = N'Guid')
  ALTER TABLE [dbo].[Report] ADD [Guid][uniqueidentifier] null 
GO

UPDATE Report SET Guid = NEWID() WHERE Guid IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Report]') and name = N'Guid')
  ALTER TABLE [Report] ALTER COLUMN [Guid][uniqueidentifier] NOT NULL
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_Report_Guid]') and objectproperty(id, N'IsUniqueCnst') = 1)
  ALTER TABLE [dbo].[Report] ADD CONSTRAINT[UIX_Report_Guid] UNIQUE NONCLUSTERED([Guid])
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id(N'[dbo].[Location]') AND name = N'TipAccNo') 
  ALTER TABLE [dbo].[Location] ADD TipAccNo [dbo].[d_AccNo] NULL 
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Location_TipAccNo]') and objectproperty(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[Location] WITH CHECK ADD CONSTRAINT [FK_Location_TipAccNo] FOREIGN KEY([TipAccNo])
  REFERENCES [dbo].[GLMast] ([AccNo])
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EventLog]') and name = N'Description')
  ALTER TABLE [dbo].[EventLog] ALTER COLUMN [Description] [nvarchar](100) NULL
GO

UPDATE REGISTRY SET RegValue = '2.1.20' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.1.19' WHERE RegID = 2
GO,if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointRedemptionDTL]') and name = N'SerialNoList')
  ALTER TABLE [dbo].[BonusPointRedemptionDTL] 
    ADD [SerialNoList] [ntext] NULL
GO


/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* The following DDL will modify BonusPointRedemption Tables to add in Guid to detail table */
INSERT @ListTable VALUES('BonusPointRedemptionDTL', 'Guid', '[uniqueidentifier] NOT NULL DEFAULT NEWID()', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '1.0.9.81' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.1.21' WHERE RegID = 2
GO�/* Add Desc2 column to all Sales, Purchase, and Stock detail table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ADVQTDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[ADVQTDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[QTDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[QTDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[SODTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[SODTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DODTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[DODTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ConsignmentDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[ConsignmentDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ConsignmentReturnDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[ConsignmentReturnDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IVDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[IVDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CSDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[CSDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CNDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[CNDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DNDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[DNDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XSDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[XSDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[DRDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[DRDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PQDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[PQDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RQDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[RQDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PODTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[PODTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GRDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[GRDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignmentDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[PurchaseConsignmentDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignmentReturnDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PIDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[PIDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CPDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[CPDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PRDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[PRDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XPDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[XPDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GTDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[GTDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ADJDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[ADJDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ISSDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[ISSDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[RCVDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[RCVDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[XFERDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[XFERDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UpdateCostDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[UpdateCostDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WOFFDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[WOFFDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockTakeDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[StockTakeDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMOrderDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[ASMOrderDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ASMDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[ASMDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDisassemblyDTL]') and name = N'Desc2')
  ALTER TABLE [dbo].[StockDisassemblyDTL] ADD [Desc2] [dbo].[d_ItemDescription] NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.22' WHERE RegID = 2
GO�if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APCN') AND name = 'ReferCAJEDocKey')
ALTER TABLE [dbo].[APCN] ADD [ReferCAJEDocKey] [bigint] NULL
GO

if not exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('APCN') AND name = 'ReferCAJEDocNo')
ALTER TABLE [dbo].[APCN] ADD [ReferCAJEDocNo] [d_DocNo] NULL
GO

UPDATE REGISTRY SET RegValue = '1.0.9.82' WHERE RegID = 2
GO�/* Add Mobile column to Debtor, Creditor, and Branch table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'Mobile')
  ALTER TABLE [dbo].[Debtor] ADD [Mobile] [dbo].[d_Phone] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'Mobile')
  ALTER TABLE [dbo].[Creditor] ADD [Mobile] [dbo].[d_Phone] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Branch]') and name = N'Mobile')
  ALTER TABLE [dbo].[Branch] ADD [Mobile] [dbo].[d_Phone] NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.23' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.2.25' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.2.26' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.2.27' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.2.28' WHERE RegID = 2
GO!/* Drop NotificationServerURL table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[NotificationServerURL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  DROP TABLE [dbo].[NotificationServerURL]
GO

UPDATE REGISTRY SET RegValue = '2.2.29' WHERE RegID = 2
GOP/* Add SGeFilingDataId column to GLMast table to support Singapore eFiling */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLMast]') and name = N'SGeFilingDataId')
  ALTER TABLE [dbo].[GLMast] ADD [SGeFilingDataId] [nvarchar] (128) NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.30' WHERE RegID = 2
GO
�/* Add Remark column to all Consignment detail table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ConsignmentDTL]') and name = N'Remark')
  ALTER TABLE [dbo].[ConsignmentDTL] ADD [Remark] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ConsignmentReturnDTL]') and name = N'Remark')
  ALTER TABLE [dbo].[ConsignmentReturnDTL] ADD [Remark] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignmentDTL]') and name = N'Remark')
  ALTER TABLE [dbo].[PurchaseConsignmentDTL] ADD [Remark] [dbo].[d_ItemDescription] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignmentReturnDTL]') and name = N'Remark')
  ALTER TABLE [dbo].[PurchaseConsignmentReturnDTL] ADD [Remark] [dbo].[d_ItemDescription] NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.24' WHERE RegID = 2
GO�	/* Create ItemBatchBalQtyTrans table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemBatchBalQtyTrans]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[ItemBatchBalQtyTrans] (
		[TransKey] [bigint] NOT NULL,
		[ItemCode] [dbo].[d_ItemCode] NOT NULL,
		[UOM] [dbo].[d_UOM] NOT NULL,
		[Location] [dbo].[d_Location] NOT NULL,
		[BatchNo] [dbo].[d_BatchNo] NOT NULL,
		[Qty] [dbo].[d_Qty] NOT NULL,
		CONSTRAINT [PK_ItemBatchBalQtyTrans_TransKey] PRIMARY KEY CLUSTERED 
		(
			[TransKey] ASC
		) ON [PRIMARY]
	) ON [PRIMARY]
GO

/* Create MemberBalPointTrans table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MemberBalPointTrans]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].MemberBalPointTrans (
		[TransKey] [bigint] NOT NULL IDENTITY(1,1),
		[MemberNo] [dbo].[d_MemberNo] NOT NULL,
		[Point] [dbo].[d_MemberPoint] NOT NULL,
		CONSTRAINT [PK_MemberBalPointTrans_TransKey] PRIMARY KEY CLUSTERED 
		(
			[TransKey] ASC
		) ON [PRIMARY]
	) ON [PRIMARY]
GO

/* Create Mail and MailDtl tables to stored sent emails */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Mail]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[Mail] (
		[Id] [bigint] NOT NULL,
		[CreatedTime] datetime NOT NULL DEFAULT GetDate(),
		[Email] varchar(4000) NOT NULL,
		[CCEmail] varchar(4000) NULL,
		[BCCEmail] varchar(4000) NULL,
		[Subject] nvarchar(255) NULL,
		[Message] nvarchar(4000) NULL,
		[Success] char(1) NOT NULL,
		[ErrorMessage] nvarchar(4000) NULL,
		CONSTRAINT [PK_Mail_Id] PRIMARY KEY CLUSTERED 
		(
			[Id] ASC
		) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MailDtl]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[MailDtl] (
		[Id] [bigint] NOT NULL IDENTITY(1,1),
		[MailId] [bigint] NOT NULL,
		[Filename] nvarchar(255) NOT NULL,
		[Binary] varbinary(max) NULL,
		CONSTRAINT [PK_MailDtl_Id] PRIMARY KEY CLUSTERED 
		(
			[Id] ASC
		) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_MailDtl_MailId]') and objectproperty(id, N'IsForeignKey') = 1) 
	ALTER TABLE [dbo].[MailDtl] WITH CHECK ADD CONSTRAINT [FK_MailDtl_MailId] FOREIGN KEY([MailId])
	REFERENCES [dbo].[Mail] ([Id])
GO

UPDATE REGISTRY SET RegValue = '2.2.31' WHERE RegID = 2
GO
�/* Increase Registration No length */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'RegisterNo')
  ALTER TABLE [Creditor] ALTER COLUMN [RegisterNo] [nvarchar](30) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'RegisterNo')
  ALTER TABLE [Debtor] ALTER COLUMN [RegisterNo] [nvarchar](30) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'RegisterNo')
  ALTER TABLE [Profile] ALTER COLUMN [RegisterNo] [nvarchar](30) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTrans]') and name = N'RegisterNo')
  ALTER TABLE [TaxTrans] ALTER COLUMN [RegisterNo] [nvarchar](30) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTransAuditDTL]') and name = N'RegisterNo')
  ALTER TABLE [TaxTransAuditDTL] ALTER COLUMN [RegisterNo] [nvarchar](30) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTransCancelled]') and name = N'RegisterNo')
  ALTER TABLE [TaxTransCancelled] ALTER COLUMN [RegisterNo] [nvarchar](30) NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.32' WHERE RegID = 2
GO
/* Add DBVersion to Plugin table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Plugin]') and name = N'DBVersion')
  ALTER TABLE [dbo].[Plugin] ADD [DBVersion] [nvarchar] (20) NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.33' WHERE RegID = 2
GO
/* To support 30 characters of FieldName in UDF table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UDF]') and name = N'FieldName')
   ALTER TABLE [UDF] ALTER COLUMN [FieldName] [nvarchar] (30) NOT NULL
GO

/* To support 30 characters of Name in UDFList table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UDFList]') and name = N'Name')
   ALTER TABLE [UDFList] ALTER COLUMN [Name] [nvarchar] (30) NOT NULL
GO

/* To support decimal Qty in BonusPointRedemptionDTL table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[BonusPointRedemptionDTL]') and name = N'Qty')
   ALTER TABLE [BonusPointRedemptionDTL] ALTER COLUMN [Qty] [d_Qty] NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.34' WHERE RegID = 2
GO
�/* Create IRAS GST Submission */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[IRASGSTSubmission]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[IRASGSTSubmission](
		[GSTKey] [bigint] IDENTITY(1,1) NOT NULL,
		[FromDate] [datetime] NOT NULL,
		[ToDate] [datetime] NOT NULL,
		[FormType] [nvarchar](10) NOT NULL,
		[TaxDataReport] [varbinary](max) NULL,
		[RequestPayload] [nvarchar](max) NULL,
		[ResponsePayload] [nvarchar](max) NULL,
		[CreatedTimeStamp] [datetime] NULL,
		[CreatedUserID] [d_UserID] NULL,
		[ParentGSTKey] [bigint] NULL,
		[Seq] [int] NULL,
		[IsTaxAgent] [d_Boolean] NULL,
		[ShowDebtorCreditorControl] [d_Boolean] NULL,
		[ShowZeroBalance] [d_Boolean] NULL,
		[ProductVersion] [nvarchar](100) NULL,
		[IAFVersion] [nvarchar](100) NULL,
	 CONSTRAINT [PK_IRASGSTSubmission_GSTKey] PRIMARY KEY CLUSTERED 
	(
		[GSTKey] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '2.2.35' WHERE RegID = 2
GO
r
/* Add Autokey for UsersGroup table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UsersGroup]') and name = N'AutoKey') 
  ALTER TABLE [dbo].[UsersGroup] ADD [AutoKey][bigint] IDENTITY(1, 1) NOT NULL 
GO

/* Drop UsersGroup table primary key and unique constraint */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_UsersGroup_UserID_UserGroupID]')) 
  ALTER TABLE [dbo].[UsersGroup] DROP CONSTRAINT [UIX_UsersGroup_UserID_UserGroupID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_UsersGroup_UserID_UserGroupID]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1) 
  ALTER TABLE [dbo].[UsersGroup] DROP CONSTRAINT [PK_UsersGroup_UserID_UserGroupID]
GO

/* Drop AccessRight table primary key and unique constraint */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_AccessRight_CmdID_UserID]')) 
  ALTER TABLE [dbo].[AccessRight] DROP CONSTRAINT [UIX_AccessRight_CmdID_UserID]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_AccessRight_CmdID_UserID]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1) 
  ALTER TABLE [dbo].[AccessRight] DROP CONSTRAINT [PK_AccessRight_CmdID_UserID]
GO

/* Increase CmdID size to 255 characters */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[AccessRight]') and name = N'CmdID')
  ALTER TABLE [AccessRight] ALTER COLUMN [CmdID] [varchar](255) NOT NULL
GO

/* Add back AccessRight table primary key and unique constraint */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_AccessRight_CmdID_UserID]')) 
  ALTER TABLE [dbo].[AccessRight] ADD CONSTRAINT [UIX_AccessRight_CmdID_UserID] UNIQUE NONCLUSTERED ([CmdID] ASC, [UserID] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_AccessRight_AutoKey]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1) 
  ALTER TABLE [dbo].[AccessRight] ADD CONSTRAINT [PK_AccessRight_AutoKey] PRIMARY KEY CLUSTERED ([AutoKey] ASC)
GO

/* Add back UsersGroup table primary key and unique constraint */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_UsersGroup_UserID_UserGroupID]')) 
  ALTER TABLE [dbo].[UsersGroup] ADD CONSTRAINT [UIX_UsersGroup_UserID_UserGroupID] UNIQUE NONCLUSTERED ([UserID] ASC, [UserGroupID] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PK_UsersGroup_AutoKey]') and OBJECTPROPERTY(id, N'IsPrimaryKey') = 1) 
  ALTER TABLE [dbo].[UsersGroup] ADD CONSTRAINT [PK_UsersGroup_AutoKey] PRIMARY KEY CLUSTERED ([AutoKey] ASC)
GO

/* Increase UserGroupID size to 40 characters */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UsersGroup_UserGroupID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[UsersGroup] DROP CONSTRAINT [FK_UsersGroup_UserGroupID]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UsersGroup]') and name = N'UserGroupID')
  ALTER TABLE [UsersGroup] ALTER COLUMN [UserGroupID] [nvarchar](40) NOT NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[UserGroup]') and name = N'UserGroupID')
  ALTER TABLE [UserGroup] ALTER COLUMN [UserGroupID] [nvarchar](40) NOT NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[AccessRight]') and name = N'UserID')
  ALTER TABLE [AccessRight] ALTER COLUMN [UserID] [nvarchar](40) NOT NULL
GO

/* Add FK_UsersGroup_UserGroupID foreign key */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_UsersGroup_UserGroupID]') and objectproperty(id, N'IsForeignKey') = 1) 
  ALTER TABLE [dbo].[UsersGroup]  WITH CHECK ADD  CONSTRAINT [FK_UsersGroup_UserGroupID] FOREIGN KEY([UserGroupID])
  REFERENCES [dbo].[UserGroup] ([UserGroupID])
  ON UPDATE CASCADE
GO

UPDATE REGISTRY SET RegValue = '2.2.36' WHERE RegID = 2
GO
7/* Increase UserID size to 40 characters */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PeriodLockException]') and name = N'UserID')
  ALTER TABLE [PeriodLockException] ALTER COLUMN [UserID] [nvarchar](40) NOT NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.37' WHERE RegID = 2
GO
/* Add DocInfo column in StockDtl */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDtl]') and name = N'DocInfo')
  ALTER TABLE [StockDtl] ADD [DocInfo] [nvarchar](max) NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.38' WHERE RegID = 2
GO
�/* Rename IRASTaxCode to GovtTaxCode column in TaxType table */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'IRASTaxCode')
  EXEC sp_rename 'TaxType.IRASTaxCode', 'GovtTaxCode', 'COLUMN'
GO

/* Drop TaxTypeCategory column in TaxType table*/
if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('TaxType') AND name = 'TaxTypeCategory')
ALTER TABLE [dbo].[TaxType] DROP COLUMN [TaxTypeCategory]
GO

/* Add TaxSystem column in TaxType table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxType]') and name = N'TaxSystem')
  ALTER TABLE [dbo].[TaxType] ADD [TaxSystem] [nvarchar] (50) NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.39' WHERE RegID = 2
GO
�*/* The following will add [Seq2], [CFTotalQty], [CFTotalCost], [CreatedTimeStamp], [AdjustedDate], [StockTransQueueKey] field in StockDTL table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'Seq2')
  ALTER TABLE [dbo].[StockDTL] ADD [Seq2] [bigint] NOT NULL DEFAULT 0
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'CFTotalQty')
  ALTER TABLE [dbo].[StockDTL] ADD [CFTotalQty] [d_Qty] NULL DEFAULT 0.00000000
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'CFTotalCost')
  ALTER TABLE [dbo].[StockDTL] ADD [CFTotalCost] [d_Cost] NULL DEFAULT 0.00000000
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'CreatedTimeStamp')
  ALTER TABLE [dbo].[StockDTL] ADD [CreatedTimeStamp] [datetime2](7) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'AdjustedDate')
  ALTER TABLE [dbo].[StockDTL] ADD [AdjustedDate] [datetime2](7) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'StockTransQueueKey')
  ALTER TABLE [dbo].[StockDTL] ADD [StockTransQueueKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'ReportingCost')
  ALTER TABLE [dbo].[StockDTL] ADD [ReportingCost] [d_Cost] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'ReportingTotalCost')
  ALTER TABLE [dbo].[StockDTL] ADD [ReportingTotalCost] [d_Cost] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'FIFOCost')
  ALTER TABLE [dbo].[StockDTL] ADD [FIFOCost] [varchar](max) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'ReportingFIFOCost')
  ALTER TABLE [dbo].[StockDTL] ADD [ReportingFIFOCost] [varchar](max) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'BalanceFIFO')
  ALTER TABLE [dbo].[StockDTL] ADD [BalanceFIFO] [varchar](max) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'ReportingBalanceFIFO')
  ALTER TABLE [dbo].[StockDTL] ADD [ReportingBalanceFIFO] [varchar](max) NULL
GO

UPDATE [dbo].[StockDTL] SET [CreatedTimeStamp] = 
	CASE 
		 WHEN [DocType] = 'OB' THEN [DocDate]																						      -- Opening Balance
		 WHEN [DocType] = 'AS' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[ASM] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[ASM].[DocKey])	  -- Stock Assembly
		 WHEN [DocType] = 'DA' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[StockDisassembly] 
									 WHERE [dbo].[StockDTL].[DocKey] = [dbo].[StockDisassembly].[DocKey])								  -- Stock Disassembly
		 WHEN [DocType] = 'SA' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[ADJ] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[ADJ].[DocKey])	  -- Stock Adjustment
		 WHEN [DocType] = 'SI' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[ISS] WHERE [DocKey] = [dbo].[ISS].[DocKey])					  -- Stock Issue
		 WHEN [DocType] = 'SR' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[RCV] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[RCV].[DocKey])	  -- Stock Receive
		 WHEN [DocType] = 'ST' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[XFER] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[XFER].[DocKey]) -- Stock Transfer
		 WHEN [DocType] = 'WO' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[WOFF] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[WOFF].[DocKey]) -- Stock WriteOff
		 WHEN [DocType] = 'UC' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[UOMConv] 
									 WHERE [dbo].[StockDTL].[DocKey] = [dbo].[UOMConv].[DocKey])										  -- UOM Conversion
		 WHEN [DocType] = 'CP' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[CP] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[CP].[DocKey])	  -- Cash Purchase
		 WHEN [DocType] = 'GR' THEN (SELECT TOP 1[CreatedTimeStamp] FROM [dbo].[GR] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[GR].[DocKey])	  -- Goods Received
		 WHEN [DocType] = 'GT' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[GT] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[GT].[DocKey])	  -- Goods Returned
		 WHEN [DocType] = 'PI' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[PI] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[PI].[DocKey])	  -- Purchase Invoice
		 WHEN [DocType] = 'PR' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[PR] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[PR].[DocKey])	  -- Purchase Return
		 WHEN [DocType] = 'BR' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[BonusPointRedemption] 
									 WHERE [dbo].[StockDTL].[DocKey] = [dbo].[BonusPointRedemption].[DocKey])							  -- Bonus Point Redemption
		 WHEN [DocType] = 'CS' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[CS] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[CS].[DocKey])	  -- Cash Sale
		 WHEN [DocType] = 'CN' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[CN] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[CN].[DocKey])	  -- Credit Note
		 WHEN [DocType] = 'DN' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[DN] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[DN].[DocKey])	  -- Debit Note
		 WHEN [DocType] = 'DO' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[DO] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[DO].[DocKey])	  -- Delivery Order
		 WHEN [DocType] = 'DR' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[DR] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[DR].[DocKey])	  -- Delivery Return
		 WHEN [DocType] = 'IV' THEN (SELECT TOP 1 [CreatedTimeStamp] FROM [dbo].[IV] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[IV].[DocKey])	  -- Invoice		
	ELSE [DocDate] END
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Pos]'))
UPDATE [dbo].[StockDTL] SET [CreatedTimeStamp] = (SELECT [CreatedTime] FROM [dbo].[Pos] WHERE [dbo].[StockDTL].[DocKey] = [dbo].[Pos].[DocKey])  -- Point Of Sale
WHERE [DocType] = 'OS'
GO

UPDATE [dbo].[StockDTL] SET [CreatedTimeStamp] = [DocDate] WHERE [CreatedTimeStamp] Is Null
GO

UPDATE [dbo].[StockDTL] SET [AdjustedDate] = [DocDate]
GO

UPDATE [dbo].[StockDTL] SET [CFTotalQty] = CASE WHEN [CFTotalQty] IS NULL THEN 0.00000000 ELSE [CFTotalQty] END
GO

UPDATE [dbo].[StockDTL] SET [CFTotalCost] = CASE WHEN [CFTotalCost] IS NULL THEN 0.00000000 ELSE [CFTotalCost] END
GO

UPDATE [dbo].[StockDTL] SET [ReportingCost] = CASE WHEN [ReportingCost] IS NULL THEN [Cost] ELSE [ReportingCost] END
GO

UPDATE [dbo].[StockDTL] SET [ReportingTotalCost] = CASE WHEN [ReportingTotalCost] IS NULL THEN [TotalCost] ELSE [ReportingTotalCost] END
GO

UPDATE [dbo].[StockDTL] SET [ReportingFIFOCost] = CASE WHEN [ReportingFIFOCost] IS NULL THEN [FIFOCost] ELSE [ReportingFIFOCost] END
GO

UPDATE [dbo].[StockDTL] SET [ReportingBalanceFIFO] = CASE WHEN [ReportingBalanceFIFO] IS NULL THEN [BalanceFIFO] ELSE [ReportingBalanceFIFO] END
GO

ALTER TABLE [dbo].[StockDTL] ALTER COLUMN [CreatedTimeStamp] [datetime2](7) NOT NULL
GO

ALTER TABLE [dbo].[StockDTL] ALTER COLUMN [AdjustedDate] [datetime2](7) NOT NULL
GO

ALTER TABLE [dbo].[StockDTL] ALTER COLUMN [CFTotalQty] [d_Qty] NOT NULL
GO

ALTER TABLE [dbo].[StockDTL] ALTER COLUMN [CFTotalCost] [d_Cost] NOT NULL
GO

ALTER TABLE [dbo].[StockDTL] ALTER COLUMN [ReportingCost] [d_Cost] NOT NULL
GO

ALTER TABLE [dbo].[StockDTL] ALTER COLUMN [ReportingTotalCost] [d_Cost] NOT NULL
GO

/* Create table [dbo].[StockTransQueue] */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[StockTransQueue]'))
DROP TABLE [dbo].[StockTransQueue] 
GO

CREATE TABLE [dbo].[StockTransQueue] (
	[StockTransQueueKey] [bigint] NOT NULL PRIMARY KEY NONCLUSTERED,
	[ItemCode] [d_ItemCode] NULL,
	[StockDTLKey] [bigint] NULL,
	[DocKey] [bigint] NULL,
	[DtlKey] [bigint] NULL,
	[ReferTo] [bigint] NULL,
	[UOM] [d_UOM] NULL,
	[Location] [d_Location] NULL,
	[BatchNo] [d_BatchNo] NULL,
	[DocType] [d_DocType] NULL,
	[DocDate] [datetime2] (7) NULL,
	[Qty] [d_Qty] NULL,
	[RecordState] [int] NOT NULL, -- Refer to Accounting\Stock\StockCosting\RecordState.cs for more details
	[UnlockedPeriod] [int] NULL, 
	[IsRecalculate] [bit] NOT NULL,
	[PostFromUpdateStockCost] [bit] NOT NULL, -- This field is to indicate whether if the update value is done from PostToStock from UpdateStockDocumentCost
	[CostingMethod] [int] NULL,
	[AdjustedDate] [datetime2](7) NULL,
	[CreatedTimeStamp] [datetime2](7) NOT NULL,
	[RetryCount] int NOT NULL
)
GO

/* Create table [dbo].[UpdateSalesDocument] */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateSalesDocument]'))
DROP TABLE [dbo].[UpdateSalesDocument] 
GO

CREATE TABLE [dbo].[UpdateSalesDocument] (
	[DocKey] [bigint] NOT NULL,
	[DocType] [d_DocType] NOT NULL,
	[DocDate] [datetime2] NOT NULL,
	[IsAssigned] [bit] NOT NULL
)
GO

/* Add Composite Key To [dbo].[UpdateSalesDocument] */
ALTER TABLE [dbo].[UpdateSalesDocument]
    ADD CONSTRAINT [PK_DocKey_DocType] PRIMARY KEY ([DocKey], [DocType])
GO


/* Create table [dbo].[UpdateSalesDocumentDTL] */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateSalesDocumentDTL]'))
DROP TABLE [dbo].[UpdateSalesDocumentDTL] 
GO

CREATE TABLE [dbo].[UpdateSalesDocumentDTL] (
	[DtlKey] [bigint] NOT NULL,
	[DocType] [d_DocType] NOT NULL,
	[DocDate] [datetime2] NOT NULL,
	[LocalTotalCost] [d_Cost] NOT NULL DEFAULT 0.00000000, 
	[DetailTotalCostUpdated] [bit] NOT NULL DEFAULT 0,
	[LocalFOCTotalCost] [d_Cost] NOT NULL DEFAULT 0.00000000,
	[LocalFOCTotalCostUpdated] [bit] NOT NULL DEFAULT 0 
)
GO

/* Add Composite Key To [dbo].[UpdateSalesDocumentDTL] */
ALTER TABLE [dbo].[UpdateSalesDocumentDTL]
    ADD CONSTRAINT [PK_DtlKey_DocType] PRIMARY KEY ([DtlKey], [DocType])
GO

/* Create table [dbo].[UpdateStockDocument] */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateStockDocument]'))
DROP TABLE [dbo].[UpdateStockDocument] 
GO

CREATE TABLE [dbo].[UpdateStockDocument] (
	[DocKey] [bigint] NOT NULL,
	[DtlKey] [bigint] NOT NULL,
	[DocType] [d_DocType] NOT NULL,
	[DocDate] [datetime2] NOT NULL,
	[LocalTotalCost] [d_Cost] NOT NULL DEFAULT 0.00000000,
	[PostFromUpdateStockCost] [bit] NOT NULL -- This field is to indicate whether if the update value is done from previous PostToStock from UpdateStockDocumentCost (to prevent infinte loop)
)
GO

/* Add Composite Key To [dbo].[UpdateStockDocument] */
ALTER TABLE [dbo].[UpdateStockDocument]
    ADD CONSTRAINT [PK_DocKey_DtlKey_DocType] PRIMARY KEY ([DocKey], [DtlKey], [DocType])
GO

UPDATE AccessRight SET CmdID='TOOLS_STKCOST_OPTION_SHOW' WHERE CmdID='TOOLS_RECAL_STKCOST_SHOW'
GO

UPDATE REGISTRY SET RegValue = '2.2.40' WHERE RegID = 2
GO/* The following will add [CheckTrialPlanLimit] field in StockTransQueue table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockTransQueue]') and name = N'CheckTrialPlanLimit')
  ALTER TABLE [dbo].[StockTransQueue] ADD [CheckTrialPlanLimit] [bit] NULL DEFAULT 1
GO

UPDATE [dbo].[StockTransQueue] SET [CheckTrialPlanLimit] = 1
GO

ALTER TABLE [dbo].[StockTransQueue] ALTER COLUMN [CheckTrialPlanLimit] [bit] NOT NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.41' WHERE RegID = 2
GO�/* Add CGBlockStatus and CGBlockMessage column in Debtor */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'CGBlockStatus')
  ALTER TABLE [Debtor] ADD [CGBlockStatus] [smallint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'CGBlockMessage')
  ALTER TABLE [Debtor] ADD [CGBlockMessage] [nvarchar](40) NULL
GO

/* Add PGBlockStatus and PGBlockMessage column in Creditor */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'PGBlockStatus')
  ALTER TABLE [Creditor] ADD [PGBlockStatus] [smallint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'PGBlockMessage')
  ALTER TABLE [Creditor] ADD [PGBlockMessage] [nvarchar](40) NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.42' WHERE RegID = 2
GO�/* Add GSTVersion field in IRASGSTSubmission table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[IRASGSTSubmission]') and name = N'GSTVersion')
  ALTER TABLE [dbo].[IRASGSTSubmission] ADD [GSTVersion] [int] NULL
GO

Update IRASGSTSubmission Set GSTVersion = 1 Where GSTVersion IS NULL
GO

ALTER TABLE [dbo].[IRASGSTSubmission] ALTER COLUMN [GSTVersion] [int] NOT NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.43' WHERE RegID = 2
GO� if exists (SELECT * FROM dbo.syscolumns WHERE id = object_id('Mail') AND name = 'Email')
  ALTER TABLE [dbo].[Mail] ALTER COLUMN [Email] [varchar](4000) NULL
GO

/* Add PostingDate column in JEDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[JEDTL]') and name = N'PostingDate')
  ALTER TABLE [JEDTL] ADD [PostingDate] [datetime] NULL
GO

/* Add TaxDate column in JEDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[JEDTL]') and name = N'TaxDate')
  ALTER TABLE [JEDTL] ADD [TaxDate] [datetime] NULL
GO

/* Consignment to support transfer from Consignment Return */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ConsignmentReturn]') and name = N'MultiPrice')
  ALTER TABLE [ConsignmentReturn] ADD [MultiPrice] [d_MultiPricing] Null
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ConsignmentReturn]') and name = N'ToDocType')
  ALTER TABLE [ConsignmentReturn] ADD [ToDocType] [d_DocType] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignmentReturn]') and name = N'ToDocType')
  ALTER TABLE [PurchaseConsignmentReturn] ADD [ToDocType] [d_DocType] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ConsignmentReturn]') and name = N'ToDocKey')
  ALTER TABLE [ConsignmentReturn] ADD [ToDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignmentReturn]') and name = N'ToDocKey')
  ALTER TABLE [PurchaseConsignmentReturn] ADD [ToDocKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ConsignmentReturn]') and name = N'ToDtlKey')
  ALTER TABLE [ConsignmentReturn] ADD [ToDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignmentReturn]') and name = N'ToDtlKey')
  ALTER TABLE [PurchaseConsignmentReturn] ADD [ToDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ConsignmentReturnDtl]') and name = N'TransferedQty')
  ALTER TABLE [ConsignmentReturnDtl] ADD [TransferedQty] [d_Qty] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignmentReturnDtl]') and name = N'TransferedQty')
  ALTER TABLE [PurchaseConsignmentReturnDtl] ADD [TransferedQty] [d_Qty] NULL
GO

UPDATE [ConsignmentReturnDtl] SET [TransferedQty] = 0 WHERE [TransferedQty] IS NULL
GO

UPDATE [PurchaseConsignmentReturnDtl] SET [TransferedQty] = 0 WHERE [TransferedQty] IS NULL
GO

ALTER TABLE [ConsignmentReturnDtl] ALTER COLUMN [TransferedQty] [d_Qty] NOT NULL
GO

ALTER TABLE [PurchaseConsignmentReturnDtl] ALTER COLUMN [TransferedQty] [d_Qty] NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignment]') and name = N'SupplierDONo')
  ALTER TABLE [PurchaseConsignment] ADD [SupplierDONo] [d_DocNo] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PurchaseConsignmentReturn]') and name = N'SupplierDONo')
  ALTER TABLE [PurchaseConsignmentReturn] ADD [SupplierDONo] [d_DocNo] NULL
GO

if not exists (select * from [ColumnLock] where DocType='CR' AND DtlType='0')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CR', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='CG' AND DtlType='1')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CG', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='CG' AND DtlType='2')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CG', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='CG' AND DtlType='3')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('CG', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='NR' AND DtlType='0')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('NR', '0', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='PG' AND DtlType='1')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PG', '1', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='PG' AND DtlType='2')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PG', '2', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

if not exists (select * from [ColumnLock] where DocType='PG' AND DtlType='3')
  INSERT INTO [ColumnLock] (DocType, DtlType, Indent, FontStyle, MainItem, Numbering, Location, BatchNo, Description, FurtherDescription, YourPONo, YourPODate, YourDONo, YourDODate, OurPONo, OurPODate, DeliveryDate, PostToStockDate, ProjNo, DeptNo, Qty, FOCQty, UnitPrice, Discount, TaxType, Tax, SubTotal, BonusPoint, PrintOut, AccNo, ForeignCharges, LocalCharges, Duty) VALUES ('PG', '3', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F', 'F', 'F', 'F', 'F');
GO

UPDATE REGISTRY SET RegValue = '2.2.44' WHERE RegID = 2
GO�/* Add CFTotalAdjustedCost column in StockDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[StockDTL]') and name = N'CFTotalAdjustedCost')
  ALTER TABLE [StockDTL] ADD [CFTotalAdjustedCost] [d_Cost] NULL DEFAULT 0.00000000
GO

UPDATE [StockDTL] SET [CFTotalAdjustedCost] = CASE WHEN [CFTotalAdjustedCost] IS NULL THEN 0.00000000 ELSE [CFTotalAdjustedCost] END
GO

UPDATE REGISTRY SET RegValue = '2.2.45' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.2.46' WHERE RegID = 2
GO@UPDATE REGISTRY SET RegValue = '1.0.9.83' WHERE RegID = 2
GO./* Add CFTotalAdjustedCost column in StockDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[profile]') and name = N'CountriesInJson')
  ALTER TABLE [profile] ADD [CountriesInJson] [nvarchar](max) NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.47' WHERE RegID = 2

GO%/* Create Tax Setting table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxSetting]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[TaxSetting] (
       [TaxName] [nvarchar] (100) NOT NULL,
       [TaxValue] [nvarchar] (300) NULL,
       CONSTRAINT [PK_TaxSetting] PRIMARY KEY CLUSTERED
       (
             [TaxName] ASC
       )
) ON [PRIMARY]
GO

/* Increase Tax BR No length */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CBDTL]') and name = N'TaxBRNo')
ALTER TABLE CBDTL ALTER COLUMN [TaxBRNo] [nvarchar](30) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[JEDTL]') and name = N'TaxBRNo')
ALTER TABLE [JEDTL] ALTER COLUMN [TaxBRNo] [nvarchar](30) NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PaymentMethod]') and name = N'BankChargeTaxBRNo')
ALTER TABLE [PaymentMethod] ALTER COLUMN [BankChargeTaxBRNo] [nvarchar](30) NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.48' WHERE RegID = 2

GO#/* Add Show Aging for Item Inquiry in Users */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Users]') and name = N'ShowAgingItemInquiry')
	ALTER TABLE [Users] ADD [ShowAgingItemInquiry] bit NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.49' WHERE RegID = 2
GOL�-- Remove TaxType does not exist before build foreign key
DECLARE @sqlUpdateTaxCode NVARCHAR(300)

BEGIN
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PackageDTL]') and name = N'PurchaseTaxType')
BEGIN
  set @sqlUpdateTaxCode = 'Update PackageDTL Set PurchaseTaxType = null Where PurchaseTaxType IS NOT NULL AND PurchaseTaxType NOT IN (Select TaxType From TaxType)'
  Exec sp_executesql @sqlUpdateTaxCode
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLMast]') and name = N'InputTaxType')
BEGIN
  set @sqlUpdateTaxCode = 'Update GLMast Set InputTaxType = null Where InputTaxType IS NOT NULL AND InputTaxType NOT IN (Select TaxType From TaxType)'
  Exec sp_executesql @sqlUpdateTaxCode
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLMast]') and name = N'OutputTaxType')
BEGIN
  set @sqlUpdateTaxCode = 'Update GLMast Set OutputTaxType = null Where OutputTaxType IS NOT NULL AND OutputTaxType NOT IN (Select TaxType From TaxType)'
  Exec sp_executesql @sqlUpdateTaxCode
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxExemption]') and name = N'TaxType')
BEGIN
  set @sqlUpdateTaxCode = 'Delete From TaxExemption Where TaxType IS NOT NULL AND TaxType NOT IN (Select TaxType From TaxType)'
  Exec sp_executesql @sqlUpdateTaxCode
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[CBIGDTL]') and name = N'TaxType')
BEGIN
  set @sqlUpdateTaxCode = 'Update CBIGDTL Set TaxType = null Where TaxType IS NOT NULL AND TaxType NOT IN (Select TaxType From TaxType)'
  Exec sp_executesql @sqlUpdateTaxCode
END
END
GO

-- Rename TaxType to TaxCode for table, column and foreign key
IF not exists (select * from dbo.systypes where name = N'd_TaxCode')
BEGIN
	EXEC sp_addtype N'd_TaxCode', N'nvarchar (14)'

	DECLARE @sql NVARCHAR(600)
	DECLARE @cur_item cursor

	/* Drop Procedure which related with taxtype */
	DECLARE @ProcedureTable TABLE(ProcName nvarchar(40), ProcDefine nvarchar(max))

	insert into @ProcedureTable Select o.name, m.definition
	FROM sys.sql_modules m 
	INNER JOIN sys.procedures o 
	ON m.object_id=o.object_id
	Where m.definition Like '%d_TaxType%'

	DECLARE @procName  NVARCHAR(40)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ProcName From @ProcedureTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @procName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop procedure first
	  set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @procName + ']'') and OBJECTPROPERTY(id, N''IsProcedure'') = 1) DROP PROCEDURE [dbo].[' + @procName + ']'
		Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @procName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop View which related with taxtype */
	DECLARE @ViewTable TABLE(ViewName nvarchar(40), ViewDefine nvarchar(max), IsProcess int)

	insert into @ViewTable select o.name, m.definition, 0 as isProcess from sys.objects o 
	inner join sys.sql_modules m on o.object_id = m.object_id
	Where o.object_id in (select c.object_id from sys.columns c 
	inner join sys.types t on c.user_type_id = t.user_type_id 
	Where t.name='d_taxtype') and OBJECTPROPERTY(o.object_id, N'IsView') = 1

	DECLARE @viewName  NVARCHAR(40)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ViewName From @ViewTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @viewName

	WHILE @@FETCH_STATUS = 0
	BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @viewName + ']'') and OBJECTPROPERTY(id, N''IsView'') = 1) DROP VIEW [dbo].[' + @viewName + ']'

	  Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @viewName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop Foreign Key which related with taxtype and alter column with a new user defined field */
	DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), Nullable nvarchar(10), ForeignKeyName nvarchar(100), ParentTableName nvarchar(40), ParentColumnName nvarchar(40))

	insert into @ListTable Select tab1.name, col1.name, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
	tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName
	From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
	INNER JOIN sys.types typ1 ON col1.user_type_id = typ1.user_type_id 
	LEFT OUTER JOIN 
	(Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab2.name AS ParentTableName, col2.name AS ParentColumnName From sys.foreign_key_columns fkc 
	INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id INNER JOIN sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
	INNER JOIN sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id)tempfkc
	ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id
	Where tab1.name <> 'TaxType' and typ1.name='d_taxtype'

	UPDATE @ListTable SET ForeignKeyName='FK_PackageDTL_PurchaseTaxCode', ParentTableName='TaxType', ParentColumnName='TaxType' WHERE TableName='PackageDTL' AND ColumnName='PurchaseTaxType'
	UPDATE @ListTable SET ForeignKeyName='FK_GLMast_InputTaxCode', ParentTableName='TaxType', ParentColumnName='TaxType' WHERE TableName='GLMast' AND ColumnName='InputTaxType'
	UPDATE @ListTable SET ForeignKeyName='FK_GLMast_OutputTaxCode', ParentTableName='TaxType', ParentColumnName='TaxType' WHERE TableName='GLMast' AND ColumnName='OutputTaxType'
	UPDATE @ListTable SET ForeignKeyName='FK_TaxExemption_TaxCode', ParentTableName='TaxType', ParentColumnName='TaxType' WHERE TableName='TaxExemption' AND ColumnName='TaxType'
	UPDATE @ListTable SET ForeignKeyName='FK_CBIGDTL_TaxCode', ParentTableName='TaxType', ParentColumnName='TaxType' WHERE TableName='CBIGDTL' AND ColumnName='TaxType'

	DECLARE @tableName  NVARCHAR(40)
	DECLARE @oldColName  NVARCHAR(100)
	DECLARE @newColName  NVARCHAR(100)
	DECLARE @colName  NVARCHAR(40)
	DECLARE @null  nvarchar(10)
	DECLARE @fkName  NVARCHAR(100)
	DECLARE @parentTableName  NVARCHAR(40)
	DECLARE @parentColName  NVARCHAR(40)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, Nullable, ForeignKeyName From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- rename taxcode column
	Exec sp_rename 'dbo.TaxType.TaxType', 'TaxCode', 'COLUMN'
	Exec sp_rename 'dbo.TaxType', 'TaxCode'

	set @sql = 'if exists (select * from dbo.syscolumns where id=object_id(N''[dbo].[TaxCode]'') and name=''TaxCode'') ALTER TABLE [dbo].[TaxCode] ALTER COLUMN [TaxCode] [d_TaxCode] NOT NULL'
	Exec sp_executesql @sql

	-- Rename taxcode column for related table
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, Nullable, ForeignKeyName From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  set @oldColName = 'dbo.' + @tableName + '.' + @colName
	  set @newColName = Replace(@colName, 'TaxType', 'TaxCode')

	  Exec sp_rename @oldColName, @newColName, 'COLUMN'
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @newColName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @newColName + '] [d_TaxCode] ' + @null
	  Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	EXEC sp_droptype N'd_TaxType'

	/* Create Foreign Key which related with taxcode */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ForeignKeyName, ParentTableName, ParentColumnName From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @colName = Replace(@colName, 'TaxType', 'TaxCode')
		set @fkName = Replace(@fkName, 'TaxType', 'TaxCode')
		set @parentTableName = Replace(@parentTableName, 'TaxType', 'TaxCode')
		set @parentColName = Replace(@parentColName, 'TaxType', 'TaxCode')
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '])'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	--/* Create View which related with taxcode */
	DECLARE @sqlDefine  NVARCHAR(max)
	DECLARE @isProcess  int

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ViewName, ViewDefine, IsProcess From @ViewTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @ViewName, @sqlDefine, @isProcess
	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back view
		BEGIN TRY
			IF @isProcess = 0
			BEGIN
				set @sqlDefine = Replace(@sqlDefine, 'TaxType', 'TaxCode')
				Exec sp_executesql @sqlDefine
				Update @ViewTable Set IsProcess = 1 Where ViewName = @ViewName
			END
		END TRY
		BEGIN CATCH
		END CATCH
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @ViewName, @sqlDefine, @isProcess
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Store Procedure which related with taxcode */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ProcDefine From @ProcedureTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @sqlDefine

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back procedure
	  BEGIN TRY
		set @sqlDefine = Replace(@sqlDefine, 'TaxType', 'TaxCode')
		Exec sp_executesql @sqlDefine
	  END TRY
	  BEGIN CATCH
	  END CATCH

	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @sqlDefine
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item
END
GO

-- Rename TaxCodeChangeLog Trigger
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxTypeChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [TaxTypeChangeLog]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxCodeChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [TaxCodeChangeLog]
GO

CREATE TRIGGER [dbo].[TaxCodeChangeLog] ON [dbo].[TaxCode]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'TaxCode', Guid, REPLACE((SELECT inserted.* FOR XML RAW('TaxCode'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'TaxCode', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('TaxCode')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('TaxCode')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/TaxCode/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/TaxCode/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('TaxCode'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('TaxCode', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('TaxCode', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

-- Rename UpdateTaxCodeChangeCount Trigger
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateTaxTypeChangeCount]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UpdateTaxTypeChangeCount]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateTaxCodeChangeCount]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [UpdateTaxCodeChangeCount]
GO

CREATE TRIGGER UpdateTaxCodeChangeCount ON TaxCode
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='TaxCode'
SET NOCOUNT OFF
GO

-- Rename TaxCode column in ColumnLock table
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ColumnLock]') and name = N'TaxType')
  EXEC sp_rename 'dbo.ColumnLock.TaxType', 'TaxCode', 'COLUMN'
GO


-- Update TaxType to TaxCode data in other table
Update UserScript Set ScriptName = 'TaxCode' Where ScriptName = 'TaxType'
GO

Update UDF Set TableName = 'TaxCode' Where TableName = 'TaxType'
GO

Update AccessRight Set CmdID = Replace(CmdID, 'TAXTYPE', 'TAXCODE') Where CmdID like '%TAXTYPE%'
GO

Update ChangeCount Set TableName = 'TaxCode' Where TableName = 'TaxType'
GO

Update GSTSetting Set GSTName = 'CustomDutyTaxCode' Where GSTName = 'CustomDutyTaxType'
GO

Update Settings Set Value = Replace(Value, 'TaxType', 'TaxCode') Where Value like '%TaxType%'
GO

/* General Add Remove Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), AddDelete nvarchar(1))

/* Support ATC to TaxTrans, GL, A/R Invoice, ARCN, ARDN, IV, CS, CN, DN */
INSERT @ListTable VALUES('TaxTrans', 'ATC', '[varchar] (6) NULL', 'A')
INSERT @ListTable VALUES('TaxTransCancelled', 'ATC', '[varchar] (6) NULL', 'A')
INSERT @ListTable VALUES('TaxTransAuditDTL', 'ATC', '[varchar] (6) NULL', 'A')
INSERT @ListTable VALUES('CBDTL', 'ATC', 'varchar(6) NULL', 'A')
INSERT @ListTable VALUES('JEDTL', 'ATC', 'varchar(6) NULL', 'A')
INSERT @ListTable VALUES('ARInvoiceDTL', 'ATC', 'varchar(6) NULL', 'A')
INSERT @ListTable VALUES('ARCNDTL', 'ATC', 'varchar(6) NULL', 'A')
INSERT @ListTable VALUES('ARDNDTL', 'ATC', 'varchar(6) NULL', 'A')
INSERT @ListTable VALUES('IVDTL', 'ATC', 'varchar(6) NULL', 'A')
INSERT @ListTable VALUES('CNDTL', 'ATC', 'varchar(6) NULL', 'A')
INSERT @ListTable VALUES('DNDTL', 'ATC', 'varchar(6) NULL', 'A')
INSERT @ListTable VALUES('CSDTL', 'ATC', 'varchar(6) NULL', 'A')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @addDelete  NVARCHAR(1)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, AddDelete From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete

WHILE @@FETCH_STATUS = 0
BEGIN
  if @addDelete = 'A'
    set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  else
    set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @addDelete
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* General Add AccountingBasis Columns */
DECLARE @ListTable TABLE(TableName nvarchar(30), ColumnName nvarchar(30), ColumnType nvarchar(30))
/* Add AccountingBasis in ARAP table */
INSERT @ListTable VALUES('ARInvoiceDTL', 'AccountingBasis', 'int NULL')
INSERT @ListTable VALUES('ARDNDTL', 'AccountingBasis', 'int NULL')
INSERT @ListTable VALUES('APInvoiceDTL', 'AccountingBasis', 'int NULL')
INSERT @ListTable VALUES('APDNDTL', 'AccountingBasis', 'int NULL')
/* Add AccountingBasis in Sales table */
INSERT @ListTable VALUES('IVDTL', 'AccountingBasis', 'int NULL')
INSERT @ListTable VALUES('CSDTL', 'AccountingBasis', 'int NULL')
INSERT @ListTable VALUES('DNDTL', 'AccountingBasis', 'int NULL')
/* Add AccountingBasis in Purchase table */
INSERT @ListTable VALUES('PIDTL', 'AccountingBasis', 'int NULL')
INSERT @ListTable VALUES('CPDTL', 'AccountingBasis', 'int NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName NVARCHAR(30)
DECLARE @colName NVARCHAR(30)
DECLARE @colType NVARCHAR(30)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'update ' + @tableName + ' Set [' + @colName + '] = (select ' + @colName + ' from TaxCode where TaxCode.TaxCode=' + @tableName + '.TaxCode) where ' + @tableName + '.TaxCode is not null and ' + @colName + ' is null'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Rename WithholdingTaxAccNo to WHTCreditableAccNo Columns */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_WithholdingTax_TaxAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) 
	ALTER TABLE [dbo].[WithholdingTax] DROP CONSTRAINT [FK_WithholdingTax_TaxAccNo]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTax]') and name = N'WithholdingTaxAccNo')
	Exec sp_rename 'dbo.WithholdingTax.WithholdingTaxAccNo', 'WHTCreditableAccNo', 'COLUMN'
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTax]') and name = N'WHTCreditableAccNo')
  ALTER TABLE [WithholdingTax] ALTER COLUMN [WHTCreditableAccNo] [dbo].[d_AccNo] NULL
GO

/* Add WHTCreditableAccNo Columns */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTax]') and name = N'WHTPayableAccNo')
  ALTER TABLE [WithholdingTax] ADD [WHTPayableAccNo] [dbo].[d_AccNo] NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_WithholdingTax_WHTCreditableAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) 
	ALTER TABLE [dbo].[WithholdingTax] DROP CONSTRAINT [FK_WithholdingTax_WHTCreditableAccNo]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_WithholdingTax_WHTPayableAccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) 
	ALTER TABLE [dbo].[WithholdingTax] DROP CONSTRAINT [FK_WithholdingTax_WHTPayableAccNo]
GO

ALTER TABLE [dbo].[WithholdingTax]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTax_WHTCreditableAccNo] FOREIGN KEY([WHTCreditableAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

ALTER TABLE [dbo].[WithholdingTax]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTax_WHTPayableAccNo] FOREIGN KEY([WHTPayableAccNo])
REFERENCES [dbo].[GLMast] ([AccNo])
GO

/* Remove ReceiptPayment Columns */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTax]') and name = N'ReceiptPayment')
BEGIN
  EXEC('
  UPDATE [WithholdingTax] SET [WHTPayableAccNo] = [WHTCreditableAccNo], [WHTCreditableAccNo] = null WHERE [ReceiptPayment] = ''P''
  ALTER TABLE [WithholdingTax] DROP COLUMN [ReceiptPayment]
  ')
END
GO

/* Extend Description Columns length */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTax]') and name = N'Description')
  ALTER TABLE [WithholdingTax] ALTER COLUMN [Description] [nvarchar] (250) NULL
GO

/* Add WHType Columns */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTax]') and name = N'WHType')
  ALTER TABLE [WithholdingTax] ADD [WHType] [nvarchar] (30) NULL
GO

UPDATE [WithholdingTax] SET [WHType] = 'None' WHERE [WHType] IS NULL
GO

ALTER TABLE [WithholdingTax] ALTER COLUMN [WHType] [nvarchar] (30) NOT NULL
GO

/* Create Withholding Tax Setting table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WHTSetting]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[WHTSetting] (
       [WHTName] [nvarchar] (100) NOT NULL,
       [WHTValue] [nvarchar] (300) NULL,
       CONSTRAINT [PK_WHTSetting] PRIMARY KEY CLUSTERED
       (
             [WHTName] ASC
       )
) ON [PRIMARY]
GO

/* Create AlphanumericTaxCode table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SalesATC]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[SalesATC] (
		[ATC] [varchar] (6) NOT NULL, 
		[Description] [nvarchar] (250) NULL,
		[IsActive] [dbo].[d_Boolean] NOT NULL,
		[LastUpdate] [int] NOT NULL,
       CONSTRAINT [PK_SalesATC_ATC] PRIMARY KEY CLUSTERED
       (
		[ATC] ASC
       )
) ON [PRIMARY]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTrans_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTrans] DROP CONSTRAINT [FK_TaxTrans_ATC]
GO

ALTER TABLE [dbo].[TaxTrans] WITH CHECK ADD CONSTRAINT [FK_TaxTrans_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransCancelled_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransCancelled] DROP CONSTRAINT [FK_TaxTransCancelled_ATC]
GO

ALTER TABLE [dbo].[TaxTransCancelled] WITH CHECK ADD CONSTRAINT [FK_TaxTransCancelled_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_TaxTransAuditDTL_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[TaxTransAuditDTL] DROP CONSTRAINT [FK_TaxTransAuditDTL_ATC]
GO

ALTER TABLE [dbo].[TaxTransAuditDTL] WITH CHECK ADD CONSTRAINT [FK_TaxTransAuditDTL_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CBDTL_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CBDTL] DROP CONSTRAINT [FK_CBDTL_ATC]
GO

ALTER TABLE [dbo].[CBDTL] WITH CHECK ADD CONSTRAINT [FK_CBDTL_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_JEDTL_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[JEDTL] DROP CONSTRAINT [FK_JEDTL_ATC]
GO

ALTER TABLE [dbo].[JEDTL] WITH CHECK ADD CONSTRAINT [FK_JEDTL_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARInvoiceDTL_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARInvoiceDTL] DROP CONSTRAINT [FK_ARInvoiceDTL_ATC]
GO

ALTER TABLE [dbo].[ARInvoiceDTL] WITH CHECK ADD CONSTRAINT [FK_ARInvoiceDTL_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARCNDTL_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARCNDTL] DROP CONSTRAINT [FK_ARCNDTL_ATC]
GO

ALTER TABLE [dbo].[ARCNDTL] WITH CHECK ADD CONSTRAINT [FK_ARCNDTL_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ARDNDTL_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[ARDNDTL] DROP CONSTRAINT [FK_ARDNDTL_ATC]
GO

ALTER TABLE [dbo].[ARDNDTL] WITH CHECK ADD CONSTRAINT [FK_ARDNDTL_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_IVDTL_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[IVDTL] DROP CONSTRAINT [FK_IVDTL_ATC]
GO

ALTER TABLE [dbo].[IVDTL] WITH CHECK ADD CONSTRAINT [FK_IVDTL_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CNDTL_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CNDTL] DROP CONSTRAINT [FK_CNDTL_ATC]
GO

ALTER TABLE [dbo].[CNDTL] WITH CHECK ADD CONSTRAINT [FK_CNDTL_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_DNDTL_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[DNDTL] DROP CONSTRAINT [FK_DNDTL_ATC]
GO

ALTER TABLE [dbo].[DNDTL] WITH CHECK ADD CONSTRAINT [FK_DNDTL_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CSDTL_ATC]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[CSDTL] DROP CONSTRAINT [FK_CSDTL_ATC]
GO

ALTER TABLE [dbo].[CSDTL] WITH CHECK ADD CONSTRAINT [FK_CSDTL_ATC] 
FOREIGN KEY([ATC])
REFERENCES [dbo].[SalesATC] ([ATC])
GO

/* Create WithholdingTaxEntryDtl table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WithholdingTaxEntryDtl]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[WithholdingTaxEntryDTL] (
	   [TaxEntryDtlKey] [bigint] NOT NULL,
	   [DocType] [dbo].[d_DocType] NOT NULL,
	   [DocKey] [bigint] NOT NULL,
	   [WithholdingEntryType] [nvarchar] (10) NULL,
	   [WithholdingTaxCode] [dbo].[d_WithholdingTaxCode] NULL,
	   [WithholdingTaxRate] [dbo].[d_Percent] NULL,
	   [ProjNo] [dbo].[d_Project] NULL,
	   [DeptNo] [dbo].[d_Dept] NULL,
	   [Amount] [dbo].[d_Money] NULL,
	   [LocalAmount] [dbo].[d_Money] NULL,
	   [TaxCurrencyAmount] [dbo].[d_Money] NULL,
	   [WithholdingTax] [dbo].[d_Money] NULL,
	   [LocalWithholdingTax] [dbo].[d_Money] NULL,
	   [TaxCurrencyWithholdingTax] [dbo].[d_Money] NULL,
       CONSTRAINT [PK_WithholdingTaxEntryDTL] PRIMARY KEY CLUSTERED
       (
             [TaxEntryDtlKey] ASC
       )
) ON [PRIMARY]
GO


if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_WithholdingTaxEntryDtl_WithholdingTaxCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[WithholdingTaxEntryDtl]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTaxEntryDtl_WithholdingTaxCode] FOREIGN KEY([WithholdingTaxCode])
REFERENCES [dbo].[WithholdingTax] ([WithholdingTaxCode])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_WithholdingTaxEntryDtl_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[WithholdingTaxEntryDtl]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTaxEntryDtl_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_WithholdingTaxEntryDtl_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[WithholdingTaxEntryDtl]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTaxEntryDtl_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO

/* Support WithholdingTax to ARAP, Sales, Purchase Document */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('IV', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

-- Drop IsDefault columns that exists in WithholdingTax
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTax]') and name = N'IsDefault')
  ALTER TABLE [dbo].[WithholdingTax] DROP COLUMN [IsDefault]
GO

-- Drop PaymentWithholdingTaxCode columns that exists in Debtor
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'PaymentWithholdingTaxCode')
  ALTER TABLE [dbo].[Debtor] DROP COLUMN [PaymentWithholdingTaxCode]
GO

-- Drop ReceiptWithholdingTaxCode columns that exists in Creditor
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'ReceiptWithholdingTaxCode')
  ALTER TABLE [dbo].[Creditor] DROP COLUMN [ReceiptWithholdingTaxCode]
GO

/* To support BIR Category for Debtor */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'BIRCategory')
  ALTER TABLE [Debtor] ADD [BIRCategory] [int] NULL
GO

/* To support BIR Category for Creditor */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'BIRCategory')
  ALTER TABLE [Creditor] ADD [BIRCategory] [int] NULL
GO

/* To support Withholding VAT Code for Debtor */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'WithholdingVATCode')
  ALTER TABLE [Debtor] ADD [WithholdingVATCode] [dbo].[d_WithholdingTaxCode] NULL
GO

/* To support Withholding VAT Code for Creditor */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'WithholdingVATCode')
  ALTER TABLE [Creditor] ADD [WithholdingVATCode] [dbo].[d_WithholdingTaxCode] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'ReceiptWithholdingTaxCode')
  EXEC sp_rename 'Debtor.ReceiptWithholdingTaxCode', 'WithholdingTaxCode', 'COLUMN'
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'PaymentWithholdingTaxCode')
  EXEC sp_rename 'Creditor.PaymentWithholdingTaxCode', 'WithholdingTaxCode', 'COLUMN'
GO

/* Create PhilippinesEWTRemittance table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PhilippinesEWTRemittance]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[PhilippinesEWTRemittance](
	[PeriodNo] [int] NOT NULL,
	[RemittanceDate] [datetime] NULL,
	[BankCode] [nvarchar](30) NULL,
	[RORNo] [nvarchar](30) NULL,
	[PreviousRemittedAmount] [decimal](19, 2) NULL,
	[OverRemittance] [decimal](19, 2) NULL,
	[Surcharge] [decimal](19, 2) NULL,
	[Interest] [decimal](19, 2) NULL,
	[Compromise] [decimal](19, 2) NULL,
	[OtherPaymentMade] [decimal](19, 2) NULL,
 CONSTRAINT [PK_PhilippinesEWTRemittance] PRIMARY KEY CLUSTERED 
(
	[PeriodNo] ASC
)
) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '2.2.50' WHERE RegID = 2
GO2r/* Add TaxDate Columns In WithholdingTaxTrans table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxTrans]') and name = N'TaxDate')
  ALTER TABLE [WithholdingTaxTrans] ADD [TaxDate] [datetime] NULL
GO

UPDATE [WithholdingTaxTrans] SET [TaxDate] = [DocDate] WHERE [TaxDate] IS NULL
GO

ALTER TABLE [WithholdingTaxTrans] ALTER COLUMN [TaxDate] [datetime] NOT NULL
GO

/* To support WithholdingValueType for WithholdingTaxEntryDtl */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxEntryDtl]') and name = N'WithholdingValueType')
  ALTER TABLE [WithholdingTaxEntryDtl] ADD [WithholdingValueType] [nvarchar] (10) NULL
GO

UPDATE [WithholdingTaxEntryDtl] SET [WithholdingValueType] = 'WHT' WHERE [WithholdingValueType] IS NULL
GO

ALTER TABLE [WithholdingTaxEntryDtl] ALTER COLUMN [WithholdingValueType] [nvarchar] (10) NOT NULL
GO

/* Drop WithholdingEntryType column for WithholdingTaxEntryDtl */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxEntryDtl]') and name = N'WithholdingEntryType')
  ALTER TABLE [WithholdingTaxEntryDtl] DROP COLUMN [WithholdingEntryType]
GO

/* To support WithholdingValueType for WithholdingTaxTrans */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxTrans]') and name = N'WithholdingValueType')
  ALTER TABLE [WithholdingTaxTrans] ADD [WithholdingValueType] [nvarchar] (10) NULL
GO

UPDATE [WithholdingTaxTrans] SET [WithholdingValueType] = 'WHT' WHERE [WithholdingValueType] IS NULL
GO

ALTER TABLE [WithholdingTaxTrans] ALTER COLUMN [WithholdingValueType] [nvarchar] (10) NULL
GO

/* To support ProjNo & DeptNo for WithholdingTaxTrans */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxTrans]') and name = N'ProjNo')
  ALTER TABLE [WithholdingTaxTrans] ADD [ProjNo] [dbo].[d_Project] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxTrans]') and name = N'DeptNo')
  ALTER TABLE [WithholdingTaxTrans] ADD [DeptNo] [dbo].[d_Dept] NULL
GO

/* To support PaymentDocType & PaymentDocKey for WithholdingTaxTrans */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxTrans]') and name = N'PaymentDocType')
  ALTER TABLE [WithholdingTaxTrans] ADD [PaymentDocType] [dbo].[d_DocType] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxTrans]') and name = N'PaymentDocKey')
  ALTER TABLE [WithholdingTaxTrans] ADD [PaymentDocKey] [bigint] NULL
GO

/* To support PaymentDocType & PaymentDocKey for TaxTrans */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTrans]') and name = N'PaymentDocType')
  ALTER TABLE [TaxTrans] ADD [PaymentDocType] [dbo].[d_DocType] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTrans]') and name = N'PaymentDocKey')
  ALTER TABLE [TaxTrans] ADD [PaymentDocKey] [bigint] NULL
GO

/* To support PaymentDocType & PaymentDocKey for TaxTransAuditDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTransAuditDTL]') and name = N'PaymentDocType')
  ALTER TABLE [TaxTransAuditDTL] ADD [PaymentDocType] [dbo].[d_DocType] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTransAuditDTL]') and name = N'PaymentDocKey')
  ALTER TABLE [TaxTransAuditDTL] ADD [PaymentDocKey] [bigint] NULL
GO

/* To support PaymentDocType & PaymentDocKey for TaxTransCancelled */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTransCancelled]') and name = N'PaymentDocType')
  ALTER TABLE [TaxTransCancelled] ADD [PaymentDocType] [dbo].[d_DocType] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxTransCancelled]') and name = N'PaymentDocKey')
  ALTER TABLE [TaxTransCancelled] ADD [PaymentDocKey] [bigint] NULL
GO

/* To support PaymentDocType & PaymentDocKey for GLDTL */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLDTL]') and name = N'PaymentDocType')
  ALTER TABLE [GLDTL] ADD [PaymentDocType] [dbo].[d_DocType] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[GLDTL]') and name = N'PaymentDocKey')
  ALTER TABLE [GLDTL] ADD [PaymentDocKey] [bigint] NULL
GO


/* Support WHTPostingDate to ARAP, Sales, Purchase Document */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('IV', 'WHTPostingDate', '[datetime] NULL')
INSERT @ListTable VALUES('CS', 'WHTPostingDate', '[datetime] NULL')
INSERT @ListTable VALUES('DN', 'WHTPostingDate', '[datetime] NULL')
INSERT @ListTable VALUES('PI', 'WHTPostingDate', '[datetime] NULL')
INSERT @ListTable VALUES('CP', 'WHTPostingDate', '[datetime] NULL')
INSERT @ListTable VALUES('ARInvoice', 'WHTPostingDate', '[datetime] NULL')
INSERT @ListTable VALUES('ARDN', 'WHTPostingDate', '[datetime] NULL')
INSERT @ListTable VALUES('APInvoice', 'WHTPostingDate', '[datetime] NULL')
INSERT @ListTable VALUES('APDN', 'WHTPostingDate', '[datetime] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

-- Remove WithholdingTaxCode does not exist before build foreign key
DECLARE @sqlUpdateTaxCode NVARCHAR(300)

BEGIN
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'WithholdingTaxCode')
BEGIN
  set @sqlUpdateTaxCode = 'Update Debtor Set WithholdingTaxCode = null Where WithholdingTaxCode IS NOT NULL AND WithholdingTaxCode NOT IN (Select WithholdingTaxCode From WithholdingTax)'
  Exec sp_executesql @sqlUpdateTaxCode
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'WithholdingVATCode')
BEGIN
  set @sqlUpdateTaxCode = 'Update Debtor Set WithholdingVATCode = null Where WithholdingVATCode IS NOT NULL AND WithholdingVATCode NOT IN (Select WithholdingTaxCode From WithholdingTax)'
  Exec sp_executesql @sqlUpdateTaxCode
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'WithholdingTaxCode')
BEGIN
  set @sqlUpdateTaxCode = 'Update Creditor Set WithholdingTaxCode = null Where WithholdingTaxCode IS NOT NULL AND WithholdingTaxCode NOT IN (Select WithholdingTaxCode From WithholdingTax)'
  Exec sp_executesql @sqlUpdateTaxCode
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'WithholdingVATCode')
BEGIN
  set @sqlUpdateTaxCode = 'Update Creditor Set WithholdingVATCode = null Where WithholdingVATCode IS NOT NULL AND WithholdingVATCode NOT IN (Select WithholdingTaxCode From WithholdingTax)'
  Exec sp_executesql @sqlUpdateTaxCode
END
END
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_Debtor_WithholdingTaxCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_WithholdingTaxCode] FOREIGN KEY([WithholdingTaxCode])
REFERENCES [dbo].[WithholdingTax] ([WithholdingTaxCode])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_Debtor_WithholdingVATCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Debtor]  WITH CHECK ADD  CONSTRAINT [FK_Debtor_WithholdingVATCode] FOREIGN KEY([WithholdingVATCode])
REFERENCES [dbo].[WithholdingTax] ([WithholdingTaxCode])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_Creditor_WithholdingTaxCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_WithholdingTaxCode] FOREIGN KEY([WithholdingTaxCode])
REFERENCES [dbo].[WithholdingTax] ([WithholdingTaxCode])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_Creditor_WithholdingVATCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Creditor]  WITH CHECK ADD  CONSTRAINT [FK_Creditor_WithholdingVATCode] FOREIGN KEY([WithholdingVATCode])
REFERENCES [dbo].[WithholdingTax] ([WithholdingTaxCode])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_WithholdingTaxTrans_WithholdingTaxCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[WithholdingTaxTrans]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTaxTrans_WithholdingTaxCode] FOREIGN KEY([WithholdingTaxCode])
REFERENCES [dbo].[WithholdingTax] ([WithholdingTaxCode])
GO

/* Drop BIR Category from Debtor */
IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[Debtor]') and name='BIRCategory')
  ALTER TABLE [dbo].[Debtor] DROP COLUMN [BIRCategory]
GO

/* Drop BIR Category from Creditor */
IF EXISTS (SELECT * FROM dbo.syscolumns where id=object_id('[dbo].[Creditor]') and name='BIRCategory')
  ALTER TABLE [dbo].[Creditor] DROP COLUMN [BIRCategory]
GO

/* Create TaxEntity table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxEntity]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[TaxEntity](
	[TaxEntityID] [int] IDENTITY(1,1) NOT NULL,
	[Name] [dbo].[d_AccDescription] NOT NULL,
	[IdentityNo] [nvarchar](30) NULL,
	[FullTIN] [nvarchar](30) NOT NULL,
	[TIN] [nvarchar](20) NOT NULL,
	[TaxBranchID] [nvarchar](10) NOT NULL,
	[Address] [nvarchar](200) NULL,
	[PostCode] [dbo].[d_PostCode] NULL,
	[Phone] [dbo].[d_Phone] NULL,
	[EmailAddress] [dbo].[d_EmailAddress] NULL,
	[TaxCategory] [int] NOT NULL,
	[TaxClassification] [int] NOT NULL,
 CONSTRAINT [PK_TaxEntity_TaxEntityID] PRIMARY KEY CLUSTERED 
(
	[TaxEntityID] ASC
),
 CONSTRAINT [UIX_TaxEntity_TIN_TaxBranchID] UNIQUE NONCLUSTERED 
(
	[TIN] ASC,
	[TaxBranchID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

/* Add TaxEntityID Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), FKName nvarchar(100))

/* Branch, Debtor, Creditor, Payment Method, TaxTrans and WithholdingTaxTrans */
INSERT @ListTable VALUES('Profile', 'TaxEntityID', 'int NULL', 'FK_Profile_TaxEntityID')
INSERT @ListTable VALUES('Branch', 'TaxEntityID', 'int NULL', 'FK_Branch_TaxEntityID')
INSERT @ListTable VALUES('Creditor', 'TaxEntityID', 'int NULL', 'FK_Creditor_TaxEntityID')
INSERT @ListTable VALUES('Debtor', 'TaxEntityID', 'int NULL', 'FK_Debtor_TaxEntityID')
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxEntityID', 'int NULL', 'FK_PaymentMethod_BankChargeTaxEntityID')
INSERT @ListTable VALUES('TaxTrans', 'TaxEntityID', 'int NULL', 'FK_TaxTrans_TaxEntityID')
INSERT @ListTable VALUES('TaxTransAuditDTL', 'TaxEntityID', 'int NULL', 'FK_TaxTransAuditDTL_TaxEntityID')
INSERT @ListTable VALUES('TaxTransCancelled', 'TaxEntityID', 'int NULL', 'FK_TaxTransCancelled_TaxEntityID')
INSERT @ListTable VALUES('WithholdingTaxTrans', 'TaxEntityID', 'int NULL', 'FK_WithholdingTaxTrans_TaxEntityID')

/* ARAP table */
INSERT @ListTable VALUES('ARInvoice', 'TaxEntityID', 'int NULL', 'FK_ARInvoice_TaxEntityID')
INSERT @ListTable VALUES('ARCN', 'TaxEntityID', 'int NULL', 'FK_ARCN_TaxEntityID')
INSERT @ListTable VALUES('ARDN', 'TaxEntityID', 'int NULL', 'FK_ARDN_TaxEntityID')
INSERT @ListTable VALUES('APInvoice', 'TaxEntityID', 'int NULL', 'FK_APInvoice_TaxEntityID')
INSERT @ListTable VALUES('APDN', 'TaxEntityID', 'int NULL', 'FK_APDN_TaxEntityID')
INSERT @ListTable VALUES('APCN', 'TaxEntityID', 'int NULL', 'FK_APCN_TaxEntityID')

/* GL table */
INSERT @ListTable VALUES('CB', 'TaxEntityID', 'int NULL', 'FK_CB_TaxEntityID')
INSERT @ListTable VALUES('CBDTL', 'TaxEntityID', 'int NULL', 'FK_CBDTL_TaxEntityID')
INSERT @ListTable VALUES('JEDTL', 'TaxEntityID', 'int NULL', 'FK_JEDTL_TaxEntityID')

/* Sales table */
INSERT @ListTable VALUES('ADVQT', 'TaxEntityID', 'int NULL', 'FK_ADVQT_TaxEntityID')
INSERT @ListTable VALUES('QT', 'TaxEntityID', 'int NULL', 'FK_QT_TaxEntityID')
INSERT @ListTable VALUES('SO', 'TaxEntityID', 'int NULL', 'FK_SO_TaxEntityID')
INSERT @ListTable VALUES('DO', 'TaxEntityID', 'int NULL', 'FK_DO_TaxEntityID')
INSERT @ListTable VALUES('IV', 'TaxEntityID', 'int NULL', 'FK_IV_TaxEntityID')
INSERT @ListTable VALUES('CS', 'TaxEntityID', 'int NULL', 'FK_CS_TaxEntityID')
INSERT @ListTable VALUES('CN', 'TaxEntityID', 'int NULL', 'FK_CN_TaxEntityID')
INSERT @ListTable VALUES('DN', 'TaxEntityID', 'int NULL', 'FK_DN_TaxEntityID')
INSERT @ListTable VALUES('DR', 'TaxEntityID', 'int NULL', 'FK_DR_TaxEntityID')
INSERT @ListTable VALUES('XS', 'TaxEntityID', 'int NULL', 'FK_XS_TaxEntityID')
INSERT @ListTable VALUES('Consignment', 'TaxEntityID', 'int NULL', 'FK_Consignment_TaxEntityID')
INSERT @ListTable VALUES('ConsignmentReturn', 'TaxEntityID', 'int NULL', 'FK_ConsignmentReturn_TaxEntityID')

/* Purchase table */
INSERT @ListTable VALUES('RQ', 'TaxEntityID', 'int NULL', 'FK_RQ_TaxEntityID')
INSERT @ListTable VALUES('PO', 'TaxEntityID', 'int NULL', 'FK_PO_TaxEntityID')
INSERT @ListTable VALUES('GR', 'TaxEntityID', 'int NULL', 'FK_GR_TaxEntityID')
INSERT @ListTable VALUES('PI', 'TaxEntityID', 'int NULL', 'FK_PI_TaxEntityID')
INSERT @ListTable VALUES('CP', 'TaxEntityID', 'int NULL', 'FK_CP_TaxEntityID')
INSERT @ListTable VALUES('PR', 'TaxEntityID', 'int NULL', 'FK_PR_TaxEntityID')
INSERT @ListTable VALUES('GT', 'TaxEntityID', 'int NULL', 'FK_GT_TaxEntityID')
INSERT @ListTable VALUES('XP', 'TaxEntityID', 'int NULL', 'FK_XP_TaxEntityID')
INSERT @ListTable VALUES('PurchaseConsignment', 'TaxEntityID', 'int NULL', 'FK_PurchaseConsignment_TaxEntityID')
INSERT @ListTable VALUES('PurchaseConsignmentReturn', 'TaxEntityID', 'int NULL', 'FK_PurchaseConsignmentReturn_TaxEntityID')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @fkName  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, FKName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @fkName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + ']) REFERENCES [dbo].[TaxEntity] ([TaxEntityID])'
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @fkName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Create PhilippinesVATProcessor table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PhilippinesVATProcessor]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[PhilippinesVATProcessor](
	[VATKey] [bigint] IDENTITY(1,1) NOT NULL,
	[FromDate] [datetime] NOT NULL,
	[ToDate] [datetime] NOT NULL,
	[Duration] [tinyint] NOT NULL,
	[Submitted] [dbo].[d_Boolean] NOT NULL,
	[TaxDataReport] [varbinary](max) NULL,
	[TaxSummaryDataReport] [varbinary](max) NULL,
	[TotalAmountPayable] [d_Money] NOT NULL,
	[JEDocKey] [bigint] NULL,
	[Period] [varchar](1) NULL,
	[Quarter] [int] NOT NULL,
	[TaxRelief] [nvarchar](200) NULL,
	[ShortPeriodReturn] [d_Boolean] NOT NULL,
	[CreatedTimeStamp] [datetime] NULL,
	[CreatedUserID] [dbo].[d_UserID] NULL,
	[ParentVATKey] [bigint] NULL,
	[Seq] [int] NULL,
	[ProductVersion] [nvarchar](100) NULL,
	[VATVersion] [int] NOT NULL,
 CONSTRAINT [PK_PhilippinesVATProcessor_VATKey] PRIMARY KEY CLUSTERED 
(
	[VATKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

/* Extend Description Columns length */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTax]') and name = N'Description')
  ALTER TABLE [WithholdingTax] ALTER COLUMN [Description] [nvarchar] (300) NULL
GO

/* Support WithholdingTax to CB, ARAP Payment, ARAP Refund Document */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('CB', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CB', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CB', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CB', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CB', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CB', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARPayment', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARPayment', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARPayment', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARRefund', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARRefund', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARRefund', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APPayment', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APPayment', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APPayment', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APRefund', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APRefund', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APRefund', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')

/* Update withholding tax column null to 0 */
INSERT @ListTable VALUES('IV', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('IV', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CS', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('DN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PI', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('CP', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('PR', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARInvoice', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARDN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('ARCN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APInvoice', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APDN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'WithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'LocalWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'TaxCurrencyWithholdingTax', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'WithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'LocalWithholdingVAT', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('APCN', 'TaxCurrencyWithholdingVAT', '[dbo].[d_Money] NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= 0 Where ' + @colName + ' Is Null'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Create WithholdingTaxPaymentDtl table */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WithholdingTaxPaymentDtl]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[WithholdingTaxPaymentDTL] (
	   [TaxPaymentDtlKey] [bigint] NOT NULL,
	   [DocType] [dbo].[d_DocType] NOT NULL,
	   [DocKey] [bigint] NOT NULL,
	   [WithholdingValueType] [nvarchar] (10) NULL,
	   [WithholdingTaxCode] [dbo].[d_WithholdingTaxCode] NULL,
	   [WithholdingTaxRate] [dbo].[d_Percent] NULL,
	   [ProjNo] [dbo].[d_Project] NULL,
	   [DeptNo] [dbo].[d_Dept] NULL,
	   [Amount] [dbo].[d_Money] NULL,
	   [LocalAmount] [dbo].[d_Money] NULL,
	   [TaxCurrencyAmount] [dbo].[d_Money] NULL,
	   [WithholdingTax] [dbo].[d_Money] NULL,
	   [LocalWithholdingTax] [dbo].[d_Money] NULL,
	   [TaxCurrencyWithholdingTax] [dbo].[d_Money] NULL,
	   [PaymentMethod] [dbo].[d_PaymentMethod] NOT NULL
       CONSTRAINT [PK_WithholdingTaxPaymentDTL] PRIMARY KEY CLUSTERED
       (
             [TaxPaymentDtlKey] ASC
       )
) ON [PRIMARY]
GO


if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_WithholdingTaxPaymentDtl_WithholdingTaxCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[WithholdingTaxPaymentDtl]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTaxPaymentDtl_WithholdingTaxCode] FOREIGN KEY([WithholdingTaxCode])
REFERENCES [dbo].[WithholdingTax] ([WithholdingTaxCode])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_WithholdingTaxPaymentDtl_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[WithholdingTaxPaymentDtl]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTaxPaymentDtl_DeptNo] FOREIGN KEY([DeptNo])
REFERENCES [dbo].[Dept] ([DeptNo])
ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_WithholdingTaxPaymentDtl_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[WithholdingTaxPaymentDtl]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTaxPaymentDtl_ProjNo] FOREIGN KEY([ProjNo])
REFERENCES [dbo].[Project] ([ProjNo])
ON UPDATE CASCADE
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_WithholdingTaxPaymentDtl_PaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[WithholdingTaxPaymentDtl]  WITH CHECK ADD  CONSTRAINT [FK_WithholdingTaxPaymentDtl_PaymentMethod] FOREIGN KEY([PaymentMethod])
REFERENCES [dbo].[PaymentMethod] ([PaymentMethod])
GO

/* To support the GST Registration No in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'GSTRegisterNo')
  ALTER TABLE [dbo].[TaxEntity] ADD [GSTRegisterNo] [nvarchar] (20) NULL
GO

/* To support the SST Registration No in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'SSTRegisterNo')
  ALTER TABLE [dbo].[TaxEntity] ADD [SSTRegisterNo] [nvarchar] (20) NULL
GO
�/* Drop TaxBName, TaxBranchID, RegisterNo, TaxRegisterNo Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40))

/* Branch, Debtor, Creditor, Payment Method and TaxTrans */
INSERT @ListTable VALUES('Profile', 'TaxRegisterNo')
INSERT @ListTable VALUES('Branch', 'TaxBranchID')
INSERT @ListTable VALUES('Creditor', 'TaxBranchID')
INSERT @ListTable VALUES('Creditor', 'TaxRegisterNo')
INSERT @ListTable VALUES('Debtor', 'TaxBranchID')
INSERT @ListTable VALUES('Debtor', 'TaxRegisterNo')
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxBName')
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxBranchID')
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxBRNo')
INSERT @ListTable VALUES('PaymentMethod', 'BankChargeTaxRegisterNo')
INSERT @ListTable VALUES('TaxTrans', 'TaxBranchID')
INSERT @ListTable VALUES('TaxTrans', 'RegisterNo')
INSERT @ListTable VALUES('TaxTrans', 'TaxRegisterNo')
INSERT @ListTable VALUES('TaxTransCancelled', 'TaxBranchID')
INSERT @ListTable VALUES('TaxTransCancelled', 'RegisterNo')
INSERT @ListTable VALUES('TaxTransCancelled', 'TaxRegisterNo')
INSERT @ListTable VALUES('TaxTransAuditDTL', 'RegisterNo')
INSERT @ListTable VALUES('TaxTransAuditDTL', 'TaxRegisterNo')

/* ARAP table */
INSERT @ListTable VALUES('ARInvoice', 'TaxBranchID')
INSERT @ListTable VALUES('ARCN', 'TaxBranchID')
INSERT @ListTable VALUES('ARDN', 'TaxBranchID')
INSERT @ListTable VALUES('APInvoice', 'TaxBranchID')
INSERT @ListTable VALUES('APDN', 'TaxBranchID')
INSERT @ListTable VALUES('APCN', 'TaxBranchID')

/* GL table */
INSERT @ListTable VALUES('CBDTL', 'TaxBName')
INSERT @ListTable VALUES('CBDTL', 'TaxBranchID')
INSERT @ListTable VALUES('CBDTL', 'TaxBRNo')
INSERT @ListTable VALUES('CBDTL', 'TaxRegisterNo')
INSERT @ListTable VALUES('JEDTL', 'TaxBName')
INSERT @ListTable VALUES('JEDTL', 'TaxBranchID')
INSERT @ListTable VALUES('JEDTL', 'TaxBRNo')
INSERT @ListTable VALUES('JEDTL', 'TaxRegisterNo')

/* Sales table */
INSERT @ListTable VALUES('ADVQT', 'TaxBranchID')
INSERT @ListTable VALUES('QT', 'TaxBranchID')
INSERT @ListTable VALUES('SO', 'TaxBranchID')
INSERT @ListTable VALUES('DO', 'TaxBranchID')
INSERT @ListTable VALUES('IV', 'TaxBranchID')
INSERT @ListTable VALUES('CS', 'TaxBranchID')
INSERT @ListTable VALUES('CN', 'TaxBranchID')
INSERT @ListTable VALUES('DN', 'TaxBranchID')
INSERT @ListTable VALUES('DR', 'TaxBranchID')
INSERT @ListTable VALUES('XS', 'TaxBranchID')
INSERT @ListTable VALUES('Consignment', 'TaxBranchID')
INSERT @ListTable VALUES('ConsignmentReturn', 'TaxBranchID')

/* Purchase table */
INSERT @ListTable VALUES('RQ', 'TaxBranchID')
INSERT @ListTable VALUES('PO', 'TaxBranchID')
INSERT @ListTable VALUES('GR', 'TaxBranchID')
INSERT @ListTable VALUES('PI', 'TaxBranchID')
INSERT @ListTable VALUES('CP', 'TaxBranchID')
INSERT @ListTable VALUES('PR', 'TaxBranchID')
INSERT @ListTable VALUES('GT', 'TaxBranchID')
INSERT @ListTable VALUES('XP', 'TaxBranchID')
INSERT @ListTable VALUES('PurchaseConsignment', 'TaxBranchID')
INSERT @ListTable VALUES('PurchaseConsignmentReturn', 'TaxBranchID')

/* Remove Old Withholding Tax Column */
INSERT @ListTable VALUES('CBPaymentDTL', 'WithholdingTax')
INSERT @ListTable VALUES('ARPaymentDTL', 'WithholdingTax')
INSERT @ListTable VALUES('ARRefundDTL', 'WithholdingTax')
INSERT @ListTable VALUES('APPaymentDTL', 'WithholdingTax')
INSERT @ListTable VALUES('APRefundDTL', 'WithholdingTax')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Drop WithholdingTaxDocDTL table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_WithholdingTaxDocDTL_WithholdingTaxCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[WithholdingTaxDocDTL] DROP CONSTRAINT [FK_WithholdingTaxDocDTL_WithholdingTaxCode]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WithholdingTaxDocDTL]') and OBJECTPROPERTY(id, N'IsTable') = 1)
  DROP TABLE [dbo].[WithholdingTaxDocDTL]
GO

/* Alter TaxEntityID Column not nullable */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxTrans]') and name = N'TaxEntityID')
ALTER TABLE [WithholdingTaxTrans] ALTER COLUMN [TaxEntityID] [int] NOT NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.51' WHERE RegID = 2
GOz/* Add TradeName Columns In TaxEntity table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'TradeName')
  ALTER TABLE [TaxEntity] ADD [TradeName] [d_AccDescription] NULL
GO

/* The following will add UpdateTaxEntityChangeCount Trigger */
if not exists (select * from [ChangeCount] where TableName = 'TaxEntity')
INSERT INTO [ChangeCount] VALUES ('TaxEntity', 0);
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateTaxEntityChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER UpdateTaxEntityChangeCount
GO

CREATE TRIGGER UpdateTaxEntityChangeCount ON TaxEntity AFTER Insert, Update, Delete 
AS
  SET NOCOUNT ON 
  UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='TaxEntity' 
  SET NOCOUNT OFF
GO

UPDATE REGISTRY SET RegValue = '2.2.52' WHERE RegID = 2
GO�</* To support the GST Registration No in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'GSTRegisterNo')
  ALTER TABLE [dbo].[TaxEntity] ADD [GSTRegisterNo] [nvarchar] (20) NULL
GO

/* To support the SST Registration No in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'SSTRegisterNo')
  ALTER TABLE [dbo].[TaxEntity] ADD [SSTRegisterNo] [nvarchar] (20) NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateTaxEntityChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER UpdateTaxEntityChangeCount
GO

UPDATE [dbo].[TaxCode] SET IsDefault = 'F' WHERE IsActive = 'F'
GO

/* WithholdingTax Description size increase to 400 */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTax]') and name = N'Description') 
	ALTER TABLE WithholdingTax ALTER COLUMN Description [nvarchar](400) NULL
GO

if exists (select * from dbo.Settings where Name = 'General' and Value LIKE '%"Country":"PH"%')
	BEGIN
		/* Update Withholding Tax Rate and Description to latest */
		DECLARE @WHTCodeTable TABLE(WHTCode nvarchar(10), ColumnRate [dbo].[d_Percent], ColumnDesc nvarchar(400))
		INSERT @WHTCodeTable VALUES('WI010', 5, 'EWT - Professional fees (lawyers, CPAs, etc.). If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI020', 5, 'EWT - Professional entertainer such as, but not limited to actors and actresses, singers, lyricist, composers, emcees. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI021', 10, 'EWT - Professional entertainer such as, but not limited to actors and actresses, singers, lyricist, composers, emcees. If gross income is more than P 3M or VAT registered regardless of amount')
		INSERT @WHTCodeTable VALUES('WI030', 5, 'EWT- Professional athletes including basketball players, pelotaris and jockeys. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI031', 10, 'EWT- Professional athletes including basketball players, pelotaris and jockeys. If gross income is more than P 3M or VAT registered regardless of amount')
		INSERT @WHTCodeTable VALUES('WI040', 5, 'EWT- All directors and producers involved in movies, stage, television and musical productions. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI041', 10, 'EWT- All directors and producers involved in movies, stage, television and musical productions. If gross income is more than P 3M or VAT registered regardless of amount')
		INSERT @WHTCodeTable VALUES('WI050', 5, 'EWT- Management and technical consultants. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI060', 5, 'EWT - Business and Bookkeeping agents and agencies. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI070', 5, 'EWT- Insurance agents and insurance adjusters. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI080', 5, 'EWT- Other Recipients of Talent Fees. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI081', 10, 'EWT- Other Recipients of Talent Fees. If gross income is more than P 3M or VAT registered regardless of amount')
		INSERT @WHTCodeTable VALUES('WI090', 5, 'EWT- Fees of Director who are not employees of the company. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI100', null, 'EWT- Rentals Oon gross rental or lease for the continued use or possession of personal property in excess of P 10,000.00 annually and real property used in business which the payor or obligor has not taken title or is not taking title, or in which has no equity; poles, satellites, transmission facilities and billboards')
		INSERT @WHTCodeTable VALUES('WI110', null, 'EWT- Cinemathographic film rentals and other payments to resident indivduals and corporate cinematographic film owners, lessors and distributors')
		INSERT @WHTCodeTable VALUES('WI120', null, 'EWT- Income payments to certain contractors')
		INSERT @WHTCodeTable VALUES('WI130', null, 'EWT- Income distribution to the beneficiaries of estate and trusts')
		INSERT @WHTCodeTable VALUES('WI140', null, 'EWT - Gross Commission of service fees of customs, insurance, stock, immigration and commercial brokers, fees of agents of professional entertainers and real estate service practitioners (RESPs)(i.e. real estate consultants, real estate appraisers and real estate brokers. If gross income exceeds P 720,000.00')
		INSERT @WHTCodeTable VALUES('WI151', 5, 'EWT- payments for medical/dental /veterinary services thru hospitals/clinics/ health maintenance organizations, including direct payments to service providers. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI152', null, 'EWT- Payment by the General Professional Partnership (GPPs) to its partners. If gross income for the current year did not exceed P 720,000.00')
		INSERT @WHTCodeTable VALUES('WI157', null, 'EWT - Income Payment made by NGAs, LGU, & etc to its local/resident suppliers of services other than those covered by other rates of withholding tax')
		INSERT @WHTCodeTable VALUES('WI158', null, 'EWT - Income Payment made by top withholding agents to their local/resident suppliers of goods other than those covered by other rates of withholding tax')
		INSERT @WHTCodeTable VALUES('WI159', null, 'EWT - Additional Income Payments to govt personnel from importers, shipping and airline companies or their agents for overtime services')
		INSERT @WHTCodeTable VALUES('WI160', null, 'EWT - Income Payment made by top withholding agents to their local/resident suppliers of services other than those covered by other rates of withholding tax')
		INSERT @WHTCodeTable VALUES('WI515', 5, 'EWT - Commissions, rebates, discounts and other similar considerations paid/granted to independent and/or exclusive sales representatives and marketing agents and sub-agents of companies, including multi-level marketing companies. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WI530', null, 'EWT - Gross payments to embalmers by funeral parlors')
		INSERT @WHTCodeTable VALUES('WI535', null, 'EWT - Payments made by pre-need companies to funeral parlors')
		INSERT @WHTCodeTable VALUES('WI630', 5, 'EWT- Income payments on purchases of minerals, mineral products and quarry resources, such as but not limited to silver, gold, granite, gravel, sand, boulders and other mineral products except purchases by Bangko Sentral ng Pilipinas')
		INSERT @WHTCodeTable VALUES('WC010', null, 'EWT- Professional fees (Lawyers, CPA''s, Engineers, etc.). If gross income for the current year did not exceed P 720,000.00')
		INSERT @WHTCodeTable VALUES('WC100', null, 'EWT- Rentals Oon gross rental or lease for the continued use or possession of personal property in excess of P 10,000.00 annually and real property used in business which the payor or obligor has not taken title or is not taking title, or in which has no equity; poles, satellites, transmission facilities and billboards')
		INSERT @WHTCodeTable VALUES('WC110', null, 'EWT- Cinemathographic film rentals and other payments to resident indivduals and corporate cinematographic film owners, lessors and distributors')
		INSERT @WHTCodeTable VALUES('WC120', null, 'EWT - Income payments to certain contractors')
		INSERT @WHTCodeTable VALUES('WC140', 15, 'EWT - Gross Commission of service fees of customs, insurance, stock, immigration and commercial brokers, fees of agents of professional entertainers and real estate service practitioners (RESPs)(i.e. real estate consultants, real estate appraisers and real estate brokers. If gross income exceeds P 720,000.00')
		INSERT @WHTCodeTable VALUES('WC157', null, 'EWT- Income Payment made by NGAs, LGU, & etc to its local/resident suppliers of services other than those covered by other rates of withholding tax')
		INSERT @WHTCodeTable VALUES('WC158', null, 'EWT- Income Payment made by top withholding agents to their local/resident suppliers of goods other than those covered by other rates of withholding tax')
		INSERT @WHTCodeTable VALUES('WC160', null, 'EWT- Income Payment made by top withholding agents to their local/resident suppliers of services other than those covered by other rates of withholding tax')
		INSERT @WHTCodeTable VALUES('WC515', 5, 'EWT- Commissions, rebates, discounts and other similar considerations paid/granted to independent and/or exclusive sales representatives and marketing agents and sub-agents of companies, including multi-level marketing companies. If the gross income for the current year did not exceed P 3M')
		INSERT @WHTCodeTable VALUES('WC610', null, 'EWT- Income payments made to suppliers of agricultural supplier products in excess of cumulative amount of P 300,000 within the same taxable year')
		INSERT @WHTCodeTable VALUES('WC630', 5, 'EWT- Income payments on purchases of minerals, mineral products and quarry resources, such as but not limited to silver, gold, granite, gravel, sand, boulders and other mineral products except purchases by Bangko Sentral ng Pilipinas')
		INSERT @WHTCodeTable VALUES('WC212', 25, null)
		INSERT @WHTCodeTable VALUES('WC213', 25, null)
		INSERT @WHTCodeTable VALUES('WC230', 25, null)
		INSERT @WHTCodeTable VALUES('WV040', null, 'VAT Withholding from non-residents (Government Withholding Agents)')
		INSERT @WHTCodeTable VALUES('WV050', null, 'VAT Withholding from non-residents (Private Withholding Agents)')
		INSERT @WHTCodeTable VALUES('WV012', null, 'VAT Withholding on Purchases of Goods (with waiver of privilege to claim tax credit) creditable')
		INSERT @WHTCodeTable VALUES('WV014', null, 'VAT Withholding on Purchases of Goods (with waiver of privilege to claim input tax credit) final')
		INSERT @WHTCodeTable VALUES('WV022', null, 'VAT Withholding on Purchases of Services (with waiver of privilege to claim input tax credit) creditable')
		INSERT @WHTCodeTable VALUES('WV024', null, 'VAT Withholding on Purchases of Services (with waiver of privilege to claim input tax credit) final')

		DECLARE @sql NVARCHAR(500)
		DECLARE @tableName  NVARCHAR(40)
		DECLARE @colRate  NVARCHAR(40)
		DECLARE @colDesc  NVARCHAR(40)
		DECLARE @whtCode  NVARCHAR(10)
		DECLARE @colValue  [dbo].[d_Percent]
		DECLARE @colValue2  NVARCHAR(400)
		DECLARE @cur_item cursor
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT WHTCode, ColumnRate, ColumnDesc From @WHTCodeTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @whtCode, @colValue, @colValue2
		WHILE @@FETCH_STATUS = 0
		BEGIN
			IF @colValue IS NOT NULL
			BEGIN
				IF @colValue2 IS NOT NULL
				BEGIN
					SET @sql = 'UPDATE WithholdingTax SET WithholdingTaxRate = ' + CONVERT(NVARCHAR(20), @colValue) + ', Description = ''' + REPLACE(@colValue2, '''', '''''') + ''' WHERE WithholdingTaxCode = ''' + @whtCode + ''''	
				END
				ELSE
				BEGIN
					SET @sql = 'UPDATE WithholdingTax SET WithholdingTaxRate = ' + CONVERT(NVARCHAR(20), @colValue) + ' WHERE WithholdingTaxCode = ''' + @whtCode + ''''
				END
			END
			ELSE
			BEGIN
				SET @sql = 'UPDATE WithholdingTax SET Description = ''' + REPLACE(@colValue2, '''', '''''') + ''' WHERE WithholdingTaxCode = ''' + @whtCode + ''''
			END

			EXEC sp_executesql @sql

			IF @@ERROR <> 0
			BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			END

			FETCH NEXT FROM @cur_Item INTO @whtCode, @colValue, @colValue2
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item

		/* Update Obsolete Withholding Tax Code to inactive */
		UPDATE [dbo].[WithholdingTax] SET [IsActive] = 'F' WHERE WithholdingTaxCode IN ('WI141', 'WV060', 'WV070')
	END
GO


/* To support the DtlKey in WithholdingTaxPaymentDtl Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxPaymentDtl]') and name = N'DtlKey')
  ALTER TABLE [dbo].[WithholdingTaxPaymentDtl] ADD [DtlKey] [bigint] NULL
GO


DECLARE @sqlUpdateWithholdingTaxPaymentDTLDtlKey NVARCHAR(300)

BEGIN
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxPaymentDTL]') and name = N'PaymentMethod')
BEGIN
  set @sqlUpdateWithholdingTaxPaymentDTLDtlKey = 'Update WithholdingTaxPaymentDTL Set DtlKey = (Select Top 1 DtlKey From ARPaymentDTL Where ARPaymentDTL.DocKey=WithholdingTaxPaymentDTL.DocKey AND ARPaymentDTL.PaymentMethod=WithholdingTaxPaymentDTL.PaymentMethod Order By Seq) WHERE DocType=''RP'''
  Exec sp_executesql @sqlUpdateWithholdingTaxPaymentDTLDtlKey
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxPaymentDTL]') and name = N'PaymentMethod')
BEGIN
  set @sqlUpdateWithholdingTaxPaymentDTLDtlKey = 'Update WithholdingTaxPaymentDTL Set DtlKey = (Select Top 1 DtlKey From ARRefundDTL Where ARRefundDTL.DocKey=WithholdingTaxPaymentDTL.DocKey AND ARRefundDTL.PaymentMethod=WithholdingTaxPaymentDTL.PaymentMethod Order By Seq) WHERE DocType=''RF'''
  Exec sp_executesql @sqlUpdateWithholdingTaxPaymentDTLDtlKey
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxPaymentDTL]') and name = N'PaymentMethod')
BEGIN
  set @sqlUpdateWithholdingTaxPaymentDTLDtlKey = 'Update WithholdingTaxPaymentDTL Set DtlKey = (Select Top 1 DtlKey From APPaymentDTL Where APPaymentDTL.DocKey=WithholdingTaxPaymentDTL.DocKey AND APPaymentDTL.PaymentMethod=WithholdingTaxPaymentDTL.PaymentMethod Order By Seq) WHERE DocType=''PP'''
  Exec sp_executesql @sqlUpdateWithholdingTaxPaymentDTLDtlKey
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxPaymentDTL]') and name = N'PaymentMethod')
BEGIN
  set @sqlUpdateWithholdingTaxPaymentDTLDtlKey = 'Update WithholdingTaxPaymentDTL Set DtlKey = (Select Top 1 DtlKey From APRefundDTL Where APRefundDTL.DocKey=WithholdingTaxPaymentDTL.DocKey AND APRefundDTL.PaymentMethod=WithholdingTaxPaymentDTL.PaymentMethod Order By Seq) WHERE DocType=''PF'''
  Exec sp_executesql @sqlUpdateWithholdingTaxPaymentDTLDtlKey
END

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxPaymentDTL]') and name = N'PaymentMethod')
BEGIN
  set @sqlUpdateWithholdingTaxPaymentDTLDtlKey = 'Update WithholdingTaxPaymentDTL Set DtlKey = (Select Top 1 DtlKey From CBPaymentDTL Where CBPaymentDTL.DocKey=WithholdingTaxPaymentDTL.DocKey AND CBPaymentDTL.PaymentMethod=WithholdingTaxPaymentDTL.PaymentMethod Order By Seq) WHERE DocType IN (''OR'', ''PV'')'
  Exec sp_executesql @sqlUpdateWithholdingTaxPaymentDTLDtlKey
END
END
GO

ALTER TABLE [dbo].[WithholdingTaxPaymentDtl] ALTER COLUMN [DtlKey] [bigint] NOT NULL
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_WithholdingTaxPaymentDtl_PaymentMethod]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
  ALTER TABLE [dbo].[WithholdingTaxPaymentDtl] DROP CONSTRAINT [FK_WithholdingTaxPaymentDtl_PaymentMethod]
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[WithholdingTaxPaymentDtl]') and name = N'PaymentMethod')
  ALTER TABLE [dbo].[WithholdingTaxPaymentDtl] DROP COLUMN [PaymentMethod]
GO
�if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateTaxEntityChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
  DROP TRIGGER UpdateTaxEntityChangeCount
GO

CREATE TRIGGER UpdateTaxEntityChangeCount ON TaxEntity AFTER Insert, Update, Delete 
AS
  SET NOCOUNT ON 
  UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='TaxEntity' 
  SET NOCOUNT OFF
GO

/* Drop ServiceTaxRegisterNo Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40))

/* Debtor */
INSERT @ListTable VALUES('Debtor', 'ServiceTaxRegisterNo')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.2.53' WHERE RegID = 2
GORif exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[NotifAllowUsers]') and name = N'UserID')
  ALTER TABLE [NotifAllowUsers] ALTER COLUMN [UserID] [nvarchar](40) NOT NULL
GO

/* Drop vWithholdingTaxDocDTL view */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vWithholdingTaxDocDTL]') and OBJECTPROPERTY(id, N'IsView') = 1)
  DROP VIEW [dbo].[vWithholdingTaxDocDTL]
GO

UPDATE [ReportAttributes] SET [Attributes] = REPLACE([Attributes], ',', ';') WHERE [Attributes] LIKE '%,%'
GO

/* Update GST to Tax of Attributes Column in ReportAttributes Table */
UPDATE [ReportAttributes] SET [Attributes] = REPLACE([Attributes], 'GST=', 'Tax=') WHERE [Attributes] LIKE '%GST=%'
GO

/******Add function: RemoveInvalidXMLCharactersFromXMLPath******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[RemoveInvalidXMLCharactersFromXMLPath]') and OBJECTPROPERTY(id, N'IsScalarFunction') = 1)
  DROP FUNCTION [dbo].[RemoveInvalidXMLCharactersFromXMLPath]
GO

CREATE FUNCTION [dbo].RemoveInvalidXMLCharactersFromXMLPath(@InputString VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
    IF @InputString IS NOT NULL
    BEGIN
      DECLARE @Counter INT, @InvalidChar NVARCHAR(40)
	  Declare @invalidchar_list table (invalidchar NVARCHAR(6))
	  insert into @invalidchar_list values ('&#x00;'),('&#x01;'),('&#x02;'),('&#x03;'),('&#x04;'),('&#x05;'),('&#x06;'),('&#x07;'),('&#x08;'),('&#x0B;'),('&#x0C;'),('&#x0E;'),('&#x0F;'),('&#x10;'),('&#x11;'),('&#x12;'),('&#x13;'),('&#x14;'),('&#x15;'),('&#x16;'),('&#x17;'),('&#x18;'),('&#x19;'),('&#x1A;'),('&#x1B;'),('&#x1C;'),('&#x1D;'),('&#x1E;'),('&#x1F;')
	  DECLARE invalidchar_cur CURSOR FAST_FORWARD FOR SELECT invalidchar FROM @invalidchar_list
	  OPEN invalidchar_cur

	  FETCH NEXT FROM invalidchar_cur INTO @InvalidChar
	  WHILE @@FETCH_STATUS = 0
	  BEGIN
	    SELECT @Counter = PATINDEX('%[' + @InvalidChar + ']%', @InputString)
		
		IF @Counter > 0
		BEGIN
			SELECT @InputString = REPLACE(@InputString, @InvalidChar, '')
		END

		FETCH NEXT FROM invalidchar_cur INTO @InvalidChar
	  END
	  CLOSE invalidchar_cur
	  DEALLOCATE invalidchar_cur
    END
    RETURN(@InputString)
END
GO

/******Trigger: ItemBatchBalQtyChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ItemBatchBalQtyChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ItemBatchBalQtyChangeLog]
GO

CREATE TRIGGER [dbo].[ItemBatchBalQtyChangeLog] ON [dbo].[ItemBatchBalQty]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBatchBalQty', Guid, [dbo].RemoveInvalidXMLCharactersFromXMLPath((SELECT inserted.* FOR XML RAW('ItemBatchBalQty'), BINARY BASE64)), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'ItemBatchBalQty', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, [dbo].RemoveInvalidXMLCharactersFromXMLPath((SELECT deleted.* FOR XML PATH('ItemBatchBalQty'))) FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, [dbo].RemoveInvalidXMLCharactersFromXMLPath((SELECT inserted.* FOR XML PATH('ItemBatchBalQty'))) FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/ItemBatchBalQty/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/ItemBatchBalQty/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('ItemBatchBalQty'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBatchBalQty', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('ItemBatchBalQty', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/* Support WithholdingTax to CB, ARAP Payment, ARAP Refund Document */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('CB', 'WithholdingTaxVersion', '[int]')
INSERT @ListTable VALUES('ARPayment', 'WithholdingTaxVersion', '[int]')
INSERT @ListTable VALUES('ARRefund', 'WithholdingTaxVersion', '[int]')
INSERT @ListTable VALUES('APPayment', 'WithholdingTaxVersion', '[int]')
INSERT @ListTable VALUES('APRefund', 'WithholdingTaxVersion', '[int]')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType + ' NULL'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= 1 Where ' + @colName + ' Is Null AND DocKey IN (Select DocKey From WithholdingTaxPaymentDTL)'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= 2 Where ' + @colName + ' Is Null'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType + ' NOT NULL'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.2.54' WHERE RegID = 2
GOC$IF OBJECT_ID ('ItemChangeLog','TR') IS NOT NULL
  ALTER TABLE [dbo].[Item] DISABLE TRIGGER [ItemChangeLog]
GO

IF OBJECT_ID ('ItemUOMChangeLog','TR') IS NOT NULL
  ALTER TABLE [dbo].[ItemUOM] DISABLE TRIGGER [ItemUOMChangeLog]
GO

DECLARE @IsAutoCalculateMultiPricing NVARCHAR(1);
IF EXISTS (SELECT * FROM dbo.Settings WHERE Name = 'Item' AND Value LIKE '%"AutoCalculateMultiPricing":true%') --Enabled MultiPrice
    SET @IsAutoCalculateMultiPricing = '1';
ELSE
    SET @IsAutoCalculateMultiPricing = '0';

DECLARE @ListTable TABLE(ColumnName nvarchar(40), ColumnType nvarchar(100), PriceColumnName nvarchar(40))
INSERT @ListTable VALUES('AutoCalcPrice', '[bit]', 'Price')
INSERT @ListTable VALUES('AutoCalcPrice2', '[bit]', 'Price2')
INSERT @ListTable VALUES('AutoCalcPrice3', '[bit]', 'Price3')
INSERT @ListTable VALUES('AutoCalcPrice4', '[bit]', 'Price4')
INSERT @ListTable VALUES('AutoCalcPrice5', '[bit]', 'Price5')
INSERT @ListTable VALUES('AutoCalcPrice6', '[bit]', 'Price6')
INSERT @ListTable VALUES('AutoCalcMinSalePrice', '[bit]', 'MinSalePrice')
INSERT @ListTable VALUES('AutoCalcMaxSalePrice', '[bit]', 'MaxSalePrice')

DECLARE @sql NVARCHAR(300)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @priceName  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ColumnName, ColumnType, PriceColumnName From @ListTable
OPEN @cur_Item

FETCH NEXT FROM @cur_Item INTO @colName, @colType, @priceName
WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[ItemUOM]'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[ItemUOM] ADD [' + @colName + '] ' + @colType + ' NULL'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'UPDATE ItemUOM SET ' + @colName + ' = ' +
			 'CASE WHEN ' + @IsAutoCalculateMultiPricing + ' = 1 AND ('+ @priceName + ' IS NULL OR ' + @priceName + ' = -1 OR ' + @priceName + ' = 0) ' +
			 'THEN 0 ELSE ' + @IsAutoCalculateMultiPricing + ' END ' +
			 'WHERE ' + @colName + ' IS NULL';
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  set @sql = 'ALTER TABLE [dbo].[ItemUOM] ALTER COLUMN [' + @colName + '] ' + @colType + ' NOT NULL'
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @colName, @colType, @priceName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add ItemMeasurementInJson column in Profile */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'ItemMeasurementInJson')
  ALTER TABLE [Profile] ADD [ItemMeasurementInJson] [nvarchar](max) NULL
GO

/* Add ItemClassificationInJson column in Profile */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'ItemClassificationInJson')
  ALTER TABLE [Profile] ADD [ItemClassificationInJson] [nvarchar](max) NULL
GO

/* Add MSICCodeInJson column in Profile */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'MSICCodeInJson')
  ALTER TABLE [Profile] ADD [MSICCodeInJson] [nvarchar](max) NULL
GO

/* Add EInvoiceCountryCodeInJson column in Profile */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'EInvoiceCountryCodeInJson')
  ALTER TABLE [Profile] ADD [EInvoiceCountryCodeInJson] [nvarchar](max) NULL
GO

/* To support the Classification in Item Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'Classification')
  ALTER TABLE [dbo].[Item] ADD [Classification] [nvarchar](3) NULL
GO

/* To support the Business Activity Description in ItemUOM Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ItemUOM]') and name = N'Measurement')
  ALTER TABLE [dbo].[ItemUOM] ADD [Measurement] [nvarchar](3) NULL
GO

/* To support the MustGenerateEInvoice in Item Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'MustGenerateEInvoice')
  ALTER TABLE [dbo].[Item] ADD [MustGenerateEInvoice] bit NULL
GO

/* Set MustGenerateEInvoice to false */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'MustGenerateEInvoice')
  Update Item Set MustGenerateEInvoice = 0 Where MustGenerateEInvoice IS NULL
GO

/* To set the MustGenerateEInvoice in Item Table back to not null */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Item]') and name = N'MustGenerateEInvoice')
  ALTER TABLE [dbo].[Item] ALTER COLUMN [MustGenerateEInvoice] bit NOT NULL
GO

/* Drop unique constraint in TaxEntity Table */
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UIX_TaxEntity_TIN_TaxBranchID]')) 
  ALTER TABLE [dbo].[TaxEntity] DROP CONSTRAINT [UIX_TaxEntity_TIN_TaxBranchID]
GO

/* To support the Tourism Register No in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'TourismTaxRegisterNo')
  ALTER TABLE [dbo].[TaxEntity] ADD [TourismTaxRegisterNo] [nvarchar](20) NULL
GO

/* To support the Business Activity Description in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'BusinessActivityDesc')
  ALTER TABLE [dbo].[TaxEntity] ADD [BusinessActivityDesc] [d_AccDescription] NULL
GO

/* To support the MSIC Code in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'MSICCode')
  ALTER TABLE [dbo].[TaxEntity] ADD [MSICCode] [nvarchar](5) NULL
GO

/* To support the City in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'City')
  ALTER TABLE [dbo].[TaxEntity] ADD [City] [nvarchar](50) NULL
GO

/* To support the State Code in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'StateCode')
  ALTER TABLE [dbo].[TaxEntity] ADD [StateCode] [nvarchar](2) NULL
GO

/* To support the Country Code in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'CountryCode')
  ALTER TABLE [dbo].[TaxEntity] ADD [CountryCode] [nvarchar](3) NULL
GO

/* To support the Identity Type in TaxEntity Table */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'IdentityType')
  ALTER TABLE [dbo].[TaxEntity] ADD [IdentityType] [nvarchar](10) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'CompanyID')
  ALTER TABLE [dbo].[Profile] ADD [CompanyID] [varchar](50) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'PublicID')
  ALTER TABLE [dbo].[Profile] ADD [PublicID] [varchar](50) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'CompanyAccessKey')
  ALTER TABLE [dbo].[Profile] ADD [CompanyAccessKey] [varchar](50) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'AccKeyID')
  ALTER TABLE [dbo].[Profile] ADD [AccKeyID] [varchar](50) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'AccApiKey')
  ALTER TABLE [dbo].[Profile] ADD [AccApiKey] [varchar](50) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'POSKeyID')
  ALTER TABLE [dbo].[Profile] ADD [POSKeyID] [varchar](50) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'POSApiKey')
  ALTER TABLE [dbo].[Profile] ADD [POSApiKey] [varchar](50) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'AccExpiryTimestamp')
  ALTER TABLE [dbo].[Profile] ADD [AccExpiryTimestamp] [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'POSExpiryTimestamp')
  ALTER TABLE [dbo].[Profile] ADD [POSExpiryTimestamp] [datetime] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'GenerateLinkResultJson')
  ALTER TABLE [dbo].[Debtor] ADD [GenerateLinkResultJson] [nvarchar](max) NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'GenerateLinkResultJson')
  ALTER TABLE [Profile] ADD [GenerateLinkResultJson] [nvarchar](max) NULL
GO

IF OBJECT_ID ('ItemChangeLog','TR') IS NOT NULL
  ALTER TABLE [dbo].[Item] ENABLE TRIGGER [ItemChangeLog]
GO

IF OBJECT_ID ('ItemUOMChangeLog','TR') IS NOT NULL
  ALTER TABLE [dbo].[ItemUOM] ENABLE TRIGGER [ItemUOMChangeLog]
GO

UPDATE REGISTRY SET RegValue = '2.2.55' WHERE RegID = 2
GO�/* Extend BusinessActivityDesc length from 100 to 500 */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'BusinessActivityDesc')
  ALTER TABLE [dbo].[TaxEntity] ALTER COLUMN BusinessActivityDesc nvarchar(500) null
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'Guid') 
  ALTER TABLE [dbo].[Profile] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[Profile] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[Profile] ALTER Column Guid[uniqueidentifier] not null 
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[TaxEntity]') and name = N'Guid') 
  ALTER TABLE [dbo].[TaxEntity] ADD [Guid][uniqueidentifier] null 
GO

UPDATE [dbo].[TaxEntity] SET Guid = NEWID() WHERE Guid is null
GO

ALTER TABLE [dbo].[TaxEntity] ALTER Column Guid[uniqueidentifier] not null 
GO

/******Trigger: ProfileChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ProfileChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ProfileChangeLog]
GO

CREATE TRIGGER [dbo].[ProfileChangeLog] ON [dbo].[Profile]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Profile', Guid, REPLACE((SELECT inserted.* FOR XML RAW('Profile'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Profile', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('Profile')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('Profile')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Profile/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Profile/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Profile'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Profile', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Profile', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: TaxEntityChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxEntityChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [TaxEntityChangeLog]
GO

CREATE TRIGGER [dbo].[TaxEntityChangeLog] ON [dbo].[TaxEntity]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'TaxEntity', Guid, REPLACE((SELECT inserted.* FOR XML RAW('TaxEntity'), BINARY BASE64), '&#x00;',''), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'TaxEntity', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT deleted.* FOR XML PATH('TaxEntity')), '&#x00;','') FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, REPLACE((SELECT inserted.* FOR XML PATH('TaxEntity')), '&#x00;','') FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/TaxEntity/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/TaxEntity/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('TaxEntity'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('TaxEntity', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('TaxEntity', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

UPDATE REGISTRY SET RegValue = '2.2.56' WHERE RegID = 2
GO�/******Trigger: ProfileChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ProfileChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ProfileChangeLog]
GO

CREATE TRIGGER [dbo].[ProfileChangeLog] ON [dbo].[Profile]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'Profile', Guid, [dbo].RemoveInvalidXMLCharactersFromXMLPath((SELECT inserted.* FOR XML RAW('Profile'), BINARY BASE64)), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'Profile', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, [dbo].RemoveInvalidXMLCharactersFromXMLPath((SELECT deleted.* FOR XML PATH('Profile'))) FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, [dbo].RemoveInvalidXMLCharactersFromXMLPath((SELECT inserted.* FOR XML PATH('Profile'))) FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/Profile/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/Profile/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('Profile'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Profile', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('Profile', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

/******Trigger: TaxEntityChangeLog******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TaxEntityChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [TaxEntityChangeLog]
GO

CREATE TRIGGER [dbo].[TaxEntityChangeLog] ON [dbo].[TaxEntity]
AFTER INSERT, UPDATE, DELETE
AS 
SET NOCOUNT ON
SET ARITHABORT ON
DECLARE @transactionid bigint
SELECT @transactionid = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION
IF (SELECT COUNT(*) FROM deleted) = 0 AND (SELECT COUNT(*) FROM inserted) > 0
   INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) SELECT 'TaxEntity', Guid, [dbo].RemoveInvalidXMLCharactersFromXMLPath((SELECT inserted.* FOR XML RAW('TaxEntity'), BINARY BASE64)), 'X', 'I', GETDATE(), @transactionid FROM inserted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) = 0
   INSERT INTO ChangeLog (TableName, Guid, ChangeType, ChangeTime, TransactionID) SELECT 'TaxEntity', Guid, 'D', GETDATE(), @transactionid FROM deleted
ELSE IF (SELECT COUNT(*) FROM deleted) > 0 AND (SELECT COUNT(*) FROM inserted) > 0
BEGIN
   DECLARE @oldguid uniqueidentifier, @newguid uniqueidentifier, @oldcontent xml, @newcontent xml, @content nvarchar(max)
   DECLARE deleted_cur CURSOR FAST_FORWARD FOR SELECT Guid, [dbo].RemoveInvalidXMLCharactersFromXMLPath((SELECT deleted.* FOR XML PATH('TaxEntity'))) FROM deleted
   OPEN deleted_cur
   DECLARE inserted_cur CURSOR FAST_FORWARD FOR SELECT Guid, [dbo].RemoveInvalidXMLCharactersFromXMLPath((SELECT inserted.* FOR XML PATH('TaxEntity'))) FROM inserted
   OPEN inserted_cur
   FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM inserted_cur INTO @newguid, @newcontent
	  ;with XML1 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @oldcontent.nodes('/TaxEntity/*') as T(N)
	  ),
	  XML2 as
	  (
		select T.N.value('local-name(.)', 'nvarchar(max)') as NodeName, T.N.value('.', 'nvarchar(max)') as Value
		from @newcontent.nodes('/TaxEntity/*') as T(N)
	  )
	  SELECT @content = 
	  (select coalesce(XML1.NodeName, XML2.NodeName) as ColumnName, XML2.Value as NewValue
	  from XML1 full outer join XML2 on XML1.NodeName = XML2.NodeName
	  where (coalesce(XML1.Value, '') <> coalesce(XML2.Value, '') or (XML1.Value IS NOT NULL AND XML2.Value IS NULL) OR (XML1.Value IS NULL AND XML2.Value IS NOT NULL)) 
	  For XML Path('Row'),ELEMENTS XSINIL, Root('TaxEntity'))

	  IF @content IS NOT NULL
	  BEGIN
      IF @@FETCH_STATUS <> 0
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('TaxEntity', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      ELSE
         INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES('TaxEntity', @oldguid, @content, 'X', 'U', GETDATE(), @transactionid)
      END
	  FETCH NEXT FROM deleted_cur INTO @oldguid, @oldcontent
   END
   CLOSE deleted_cur
   DEALLOCATE deleted_cur
   CLOSE inserted_cur
   DEALLOCATE inserted_cur
END
SET NOCOUNT OFF
SET ARITHABORT OFF
GO

UPDATE REGISTRY SET RegValue = '2.2.57' WHERE RegID = 2
GO�$if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DocStatusChangeLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[DocStatusChangeLog](
	[ID] [bigint] IDENTITY(1,1) NOT NULL,
	[Action] [varchar](2) NOT NULL,
	[ActionTimeStamp] [datetime] NOT NULL,
	[DocStatus] [char] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Reason] [varchar](200) NULL
 CONSTRAINT [PK_DocStatusChangeLog] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

/* Add IdentityNoType, DocStatus, ExpiryTimeStamp Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('ARInvoice', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('ARPayment', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('ARCN', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('ARDN', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('ARRefund', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('APInvoice', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('APPayment', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('APCN', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('APDN', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('APRefund', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('ARAPContra', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('CB', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('JE', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('QT', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' WHEN ApprovalUserID IS NULL THEN ''D'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('SO', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('DO', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('IV', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('CN', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('DN', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('XS', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('DR', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('Consignment', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('ConsignmentReturn', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('PQ', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' WHEN ApprovalUserID IS NULL THEN ''D'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('RQ', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('PO', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('GR', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('PI', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('PR', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('XP', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('GT', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('PurchaseConsignment', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('PurchaseConsignmentReturn', 'DocStatus', 'char NULL', 'CASE WHEN Cancelled=''T'' THEN ''V'' ELSE ''A'' END', 'char NOT NULL')
INSERT @ListTable VALUES('ARInvoice', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARPayment', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARDN', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('APPayment', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('APCN', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('APDN', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('APRefund', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARAPContra', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CB', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('JE', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('QT', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('SO', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('DO', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('IV', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CN', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('DN', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('XS', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('DR', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('Consignment', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ConsignmentReturn', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('PQ', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('RQ', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('PO', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('GR', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('PI', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('PR', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('XP', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('GT', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('PurchaseConsignment', 'ExpiryTimeStamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('PurchaseConsignmentReturn', 'ExpiryTimeStamp', 'datetime NULL', '', '')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.2.65' WHERE RegID = 2
GO4^/* Add SubmitEInvoice, EInvoiceStatus, EInvoiceAIPSubmissionDateTime, EInvoiceUuid, EInvoiceValidatedDateTime, EInvoiceValidationLink, EInvoiceError, EInvoiceCancelDateTime, EInvoiceTraceId, AuthorisationNumberForCertifiedExporter, DeliveryTaxEntityID, Incoterms Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('IV', 'SubmitEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('CS', 'SubmitEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('DN', 'SubmitEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('CN', 'SubmitEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('ARRefund', 'SubmitEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('IV', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CS', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('DN', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CN', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('IV', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CS', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('DN', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CN', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('IV', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CS', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('DN', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CN', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('IV', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CS', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('DN', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CN', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('IV', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('CS', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('DN', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('CN', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('IV', 'EInvoiceError', 'varchar(max) NULL', '', '')
INSERT @ListTable VALUES('CS', 'EInvoiceError', 'varchar(max) NULL', '', '')
INSERT @ListTable VALUES('DN', 'EInvoiceError', 'varchar(max) NULL', '', '')
INSERT @ListTable VALUES('CN', 'EInvoiceError', 'varchar(max) NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceError', 'varchar(max) NULL', '', '')
INSERT @ListTable VALUES('IV', 'EInvoiceCancelDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CS', 'EInvoiceCancelDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('DN', 'EInvoiceCancelDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CN', 'EInvoiceCancelDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceCancelDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('IV', 'EInvoiceTraceId', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CS', 'EInvoiceTraceId', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('DN', 'EInvoiceTraceId', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CN', 'EInvoiceTraceId', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceTraceId', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('IV', 'EInvoiceCancelReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CS', 'EInvoiceCancelReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('DN', 'EInvoiceCancelReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CN', 'EInvoiceCancelReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceCancelReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('IV', 'DeliveryTaxEntityID', 'int NULL', '', '')
INSERT @ListTable VALUES('CS', 'DeliveryTaxEntityID', 'int NULL', '', '')
INSERT @ListTable VALUES('DN', 'DeliveryTaxEntityID', 'int NULL', '', '')
INSERT @ListTable VALUES('CN', 'DeliveryTaxEntityID', 'int NULL', '', '')
INSERT @ListTable VALUES('IV', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(19) NULL', '', '')
INSERT @ListTable VALUES('CS', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(19) NULL', '', '')
INSERT @ListTable VALUES('DN', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(19) NULL', '', '')
INSERT @ListTable VALUES('CN', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(19) NULL', '', '')
INSERT @ListTable VALUES('IV', 'Incoterms', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('CS', 'Incoterms', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('DN', 'Incoterms', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('CN', 'Incoterms', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('IV', 'FreeTradeAgreementInformation', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CS', 'FreeTradeAgreementInformation', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('DN', 'FreeTradeAgreementInformation', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CN', 'FreeTradeAgreementInformation', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('IV', 'AuthorisationNumberForCertifiedExporter', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CS', 'AuthorisationNumberForCertifiedExporter', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('DN', 'AuthorisationNumberForCertifiedExporter', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CN', 'AuthorisationNumberForCertifiedExporter', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('IV', 'ReferenceNumberOfCustomsFormNo2', 'varchar(12) NULL', '', '')
INSERT @ListTable VALUES('CS', 'ReferenceNumberOfCustomsFormNo2', 'varchar(12) NULL', '', '')
INSERT @ListTable VALUES('DN', 'ReferenceNumberOfCustomsFormNo2', 'varchar(12) NULL', '', '')
INSERT @ListTable VALUES('CN', 'ReferenceNumberOfCustomsFormNo2', 'varchar(12) NULL', '', '')
INSERT @ListTable VALUES('IV', 'FreightAllowanceChargeAmt', '[dbo].[d_Money] NULL', '', '')
INSERT @ListTable VALUES('CS', 'FreightAllowanceChargeAmt', '[dbo].[d_Money] NULL', '', '')
INSERT @ListTable VALUES('DN', 'FreightAllowanceChargeAmt', '[dbo].[d_Money] NULL', '', '')
INSERT @ListTable VALUES('CN', 'FreightAllowanceChargeAmt', '[dbo].[d_Money] NULL', '', '')
INSERT @ListTable VALUES('IV', 'FreightAllowanceChargeReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CS', 'FreightAllowanceChargeReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('DN', 'FreightAllowanceChargeReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CN', 'FreightAllowanceChargeReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('IVDtl', 'Classification', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('CSDtl', 'Classification', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('DNDtl', 'Classification', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('CNDtl', 'Classification', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('IVDtl', 'OriginCountryCode', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('CSDtl', 'OriginCountryCode', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('DNDtl', 'OriginCountryCode', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('CNDtl', 'OriginCountryCode', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'OurInvoiceNo', '[dbo].[d_DocNos] NULL', '', '')
INSERT @ListTable VALUES('CB', 'EInvoiceSelfBilledDocNo', '[dbo].[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('PI', 'EInvoiceSelfBilledDocNo', '[dbo].[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'EInvoiceSelfBilledDocNo', '[dbo].[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('IV', 'CIDocNo', '[dbo].[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('IV', 'CIDocKey', 'bigint NULL', '', '')
INSERT @ListTable VALUES('CS', 'CIDocNo', '[dbo].[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('CS', 'CIDocKey', 'bigint NULL', '', '')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EInvoiceSelfBilledLink]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[EInvoiceSelfBilledLink](
	[SBLinkKey] [int] IDENTITY(1,1) NOT NULL,
	[FromDocKey] [bigint] NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[EInvoiceUuid] [varchar](100) NOT NULL,
	[ToDocKey] [bigint] NOT NULL,
 CONSTRAINT [PK_EInvoiceSelfBilledLink_SBLinkKey] PRIMARY KEY CLUSTERED 
(
	[SBLinkKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EInvoiceSelfBilled]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[EInvoiceSelfBilled](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[DocType] [nvarchar](2) NOT NULL,
	[DocDate] [datetime] NOT NULL,
	[DocStatus] [char] NOT NULL,
	[ExpiryTimeStamp] [datetime] NULL,
	[SupplierInvoiceNo] [dbo].[d_DocNo] NULL,
	[FrequencyOfBilling] [varchar](50) NULL,
	[BillingPeriodStartDate] [datetime] NULL,
	[BillingPeriodEndDate] [datetime] NULL,
	--Supplier
	[SupplierTaxEntityID] [int] NULL,
	[SupplierName] [d_AccDescription] NOT NULL,
	[SupplierClassification] [int] NULL,
	[SupplierTIN] [nvarchar](20) NOT NULL,
	[SupplierIdentityType] [nvarchar](10) NULL,
	[SupplierIdentityNo] [nvarchar](30) NULL,
	[SupplierSSTRegistrationNumber] [nvarchar](20) NULL,
	[SupplierTourismTaxRegistrationNumber] [nvarchar](20) NULL,
	[SupplierEmail] [nvarchar](200) NULL,
	[SupplierPhone] [nvarchar](25) NOT NULL,
	[SupplierMSICCode] [nvarchar](5) NOT NULL,
	[SupplierBusinessActivityDesc] [nvarchar](500) NOT NULL,
	[SupplierAddress] [nvarchar](200) NOT NULL,
	[SupplierCity] [nvarchar](50) NOT NULL,
	[SupplierPostCode] [nvarchar](10) NOT NULL,
	[SupplierCountryCode] [nvarchar](3) NOT NULL,
	[SupplierStateCode] [nvarchar](2) NOT NULL,
	[SupplierIsForeigner] [bit] NOT NULL,
	[SupplierIsGeneralPublic] [bit] NOT NULL,
	--Buyer
	[BuyerTaxEntityID] [int] NULL,
	[BuyerName] [d_AccDescription] NOT NULL,
	[BuyerClassification] [int] NULL,
	[BuyerTIN] [nvarchar](20) NOT NULL,
	[BuyerIdentityType] [nvarchar](10) NULL,
	[BuyerIdentityNo] [nvarchar](30) NULL,
	[BuyerSSTRegistrationNumber] [nvarchar](20) NULL,
	[BuyerEmail] [nvarchar](200) NULL,
	[BuyerPhone] [nvarchar](25) NOT NULL,
	[BuyerAddress] [nvarchar](200) NOT NULL,
	[BuyerCity] [nvarchar](50) NOT NULL,
	[BuyerPostCode] [nvarchar](10) NOT NULL,
	[BuyerCountryCode] [nvarchar](3) NOT NULL,
	[BuyerStateCode] [nvarchar](2) NOT NULL,
	--Delivery
	[DeliveryTaxEntityID] [int] NULL,
	[DeliveryName] [d_AccDescription] NULL,
	[DeliveryClassification] [int] NULL,
	[DeliveryTIN] [nvarchar](20) NULL,
	[DeliveryIdentityType] [nvarchar](10) NULL,
	[DeliveryIdentityNo] [nvarchar](30) NULL,
	[DeliveryEmail] [nvarchar](200) NULL,
	[DeliveryPhone] [nvarchar](25) NULL,
	[DeliveryAddress] [nvarchar](200) NULL,
	[DeliveryCity] [nvarchar](50) NULL,
	[DeliveryPostCode] [nvarchar](10) NULL,
	[DeliveryCountryCode] [nvarchar](3) NULL,
	[DeliveryStateCode] [nvarchar](2) NULL,
	-- e-Invoice fields
	[EInvoiceStatus] [varchar](100) NULL,
	[EInvoiceAIPSubmissionDateTime] [datetime] NULL,
	[EInvoiceUuid] [varchar](100) NULL,
	[EInvoiceValidatedDateTime] [datetime] NULL,
	[EInvoiceValidationLink] [varchar](255) NULL,
	[EInvoiceError] [varchar](max) NULL,
	[EInvoiceCancelDateTime] [datetime] NULL,
	[EInvoiceTraceId] [varchar](100) NULL,
	[EInvoiceCancelReason] [varchar](100) NULL,
	-- Payment
	[BillingRef] [varchar](150) NULL,
	[PaymentMode] [varchar](2) NULL,
	[SupplierBankAccNo] [varchar](150) NULL,
	[PrepaymentAmt] [dbo].[d_Money] NULL,
	[PrepaymentDate] [datetime] NULL,
	[PaymentRef] [varchar](150) NULL,
	[PaymentTerms] [varchar](300) NULL,
	-- Annexure
	[ReferenceNumberOfCustomsFormNo1And9] [varchar](19) NULL,
	[Incoterms] [varchar](3) NULL,
	[FreeTradeAgreementInformation] [varchar](100) NULL,
	[AuthorisationNumberForCertifiedExporter] [varchar](100) NULL,
	[ReferenceNumberOfCustomsFormNo2] [varchar](12) NULL,
	[FreightAllowanceChargeAmt] [dbo].[d_Money] NULL,
	[FreightAllowanceChargeReason] [varchar](100) NULL,
	-- Other
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[InclusiveTax] [dbo].[d_Boolean] NOT NULL,
	[RoundAdj] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[ExTax] [dbo].[d_Money] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[Total] [dbo].[d_Money] NULL,
	[FinalTotal] [dbo].[d_Money] NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	--[SourceKey] [bigint] NULL,
	--[SourceType] [dbo].[d_SourceType] NULL,
 CONSTRAINT [PK_EInvoiceSelfBilled_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
),
 CONSTRAINT [UIX_EInvoiceSelfBilled_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_EInvoiceSelfBilled_SupplierTaxEntityID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[EInvoiceSelfBilled] WITH CHECK ADD CONSTRAINT [FK_EInvoiceSelfBilled_SupplierTaxEntityID] FOREIGN KEY([SupplierTaxEntityID])
	REFERENCES [dbo].[TaxEntity] ([TaxEntityID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_EInvoiceSelfBilled_BuyerTaxEntityID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[EInvoiceSelfBilled] WITH CHECK ADD CONSTRAINT [FK_EInvoiceSelfBilled_BuyerTaxEntityID] FOREIGN KEY([BuyerTaxEntityID])
	REFERENCES [dbo].[TaxEntity] ([TaxEntityID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_EInvoiceSelfBilled_DeliveryTaxEntityID]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[EInvoiceSelfBilled] WITH CHECK ADD CONSTRAINT [FK_EInvoiceSelfBilled_DeliveryTaxEntityID] FOREIGN KEY([DeliveryTaxEntityID])
	REFERENCES [dbo].[TaxEntity] ([TaxEntityID])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_EInvoiceSelfBilled_CurrencyCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[EInvoiceSelfBilled] WITH CHECK ADD CONSTRAINT [FK_EInvoiceSelfBilled_CurrencyCode] FOREIGN KEY([CurrencyCode])
	REFERENCES [dbo].[CURRENCY] ([CurrencyCode])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EInvoiceSelfBilledDetail]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[EInvoiceSelfBilledDetail](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Classification] [varchar](3) NULL,
	[Description] [varchar](300) NOT NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[Measurement] [varchar](3) NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[TaxType] [dbo].[d_TaxCode] NOT NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[TaxExemptionReason] [nvarchar](300) NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[Discount] [nvarchar](20) NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[DiscountReason] [nvarchar](300) NULL,
	[Charge] [nvarchar](20) NULL,
	[ChargeAmt] [dbo].[d_Money] NULL,
	[ChargeReason] [nvarchar](300) NULL,
	[TariffCode] [nvarchar] (12) NULL,
	[OriginCountryCode] [nvarchar](3) NULL,
	[Guid] [uniqueidentifier] NOT NULL,
 CONSTRAINT [PK_EInvoiceSelfBilledDetail_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_EInvoiceSelfBilledDetail_TariffCode]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[EInvoiceSelfBilledDetail] WITH CHECK ADD CONSTRAINT [FK_EInvoiceSelfBilledDetail_TariffCode] FOREIGN KEY([TariffCode])
	REFERENCES [dbo].[Tariff] ([TariffCode])
GO

if not exists (select * from DocNoFormat where Name = 'SB Default')
  INSERT INTO [DocNoFormat] (Name, DocType, NextNumber, Format, Sample, IsDefault, OneMonthOneSet) VALUES ('SB Default', 'SB', 1, 'SB-<000000>', 'SB-000001', 'T', 'F');
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EInvoiceConsolidatedInvoice]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[EInvoiceConsolidatedInvoice](
	[DocKey] [bigint] NOT NULL,
	[DocNo] [dbo].[d_DocNo] NOT NULL,
	[IssueDateTime] [datetime] NOT NULL,
	[RefNo] [nvarchar](150) NULL,
	[Description] [nvarchar](80) NULL,
	[SalesLocation] [dbo].[d_Location] NULL,
	[PaymentMode] [nvarchar](100) NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Total] [dbo].[d_Money] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[FromDocType] [dbo].[d_DocType] NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
	[LastModified] [datetime] NOT NULL,
	[LastModifiedUserID] [dbo].[d_UserID] NOT NULL,
	[CreatedTimeStamp] [datetime] NOT NULL,
	[CreatedUserID] [dbo].[d_UserID] NOT NULL,
	[Guid] [uniqueidentifier] NOT NULL,
	[ConsolidatedPeriod] [nvarchar](50) NULL,
	[SupplierName] [d_AccDescription] NOT NULL,
	[SupplierClassification] [int] NULL,
	[SupplierTIN] [nvarchar](20) NOT NULL,
	[SupplierIdentityType] [nvarchar](10) NULL,
	[SupplierIdentityNo] [nvarchar](30) NULL,
	[SupplierSSTRegistrationNumber] [nvarchar](20) NULL,
	[SupplierTourismTaxRegistrationNumber] [nvarchar](20) NULL,
	[SupplierEmail] [nvarchar](200) NULL,
	[SupplierPhone] [nvarchar](25) NOT NULL,
	[SupplierMSICCode] [nvarchar](5) NOT NULL,
	[SupplierBusinessActivityDesc] [nvarchar](500) NOT NULL,
	[SupplierAddress] [nvarchar](200) NOT NULL,
	[SupplierCity] [nvarchar](50) NOT NULL,
	[SupplierPostCode] [nvarchar](10) NOT NULL,
	[SupplierCountryCode] [nvarchar](3) NOT NULL,
	[SupplierStateCode] [nvarchar](2) NOT NULL,
	[BuyerName] [d_AccDescription] NOT NULL,
	[BuyerClassification] [int] NULL,
	[BuyerTIN] [nvarchar](20) NOT NULL,
	[BuyerIdentityType] [nvarchar](10) NULL,
	[BuyerIdentityNo] [nvarchar](30) NULL,
	[BuyerSSTRegistrationNumber] [nvarchar](20) NULL,
	[BuyerEmail] [nvarchar](200) NULL,
	[BuyerPhone] [nvarchar](25) NOT NULL,
	[BuyerAddress] [nvarchar](200) NOT NULL,
	[BuyerCity] [nvarchar](50) NOT NULL,
	[BuyerPostCode] [nvarchar](10) NOT NULL,
	[BuyerCountryCode] [nvarchar](3) NOT NULL,
	[BuyerStateCode] [nvarchar](2) NOT NULL,
	[FrequencyOfBilling] [varchar](50) NULL,
	[BillingPeriodStartDate] [datetime] NULL,
	[BillingPeriodEndDate] [datetime] NULL,
	[EInvoiceStatus] [varchar](100) NULL,
	[EInvoiceAIPSubmissionDateTime] [datetime] NULL,
	[EInvoiceUuid] [varchar](100) NULL,
	[EInvoiceValidatedDateTime] [datetime] NULL,
	[EInvoiceValidationLink] [varchar](255) NULL,
	[EInvoiceError] [varchar](max) NULL,
	[EInvoiceCancelDateTime] [datetime] NULL,
	[EInvoiceCancelReason] [varchar](100) NULL,
	[EInvoiceTraceId] [varchar](100) NULL,

 CONSTRAINT [PK_EInvoiceConsolidatedInvoice_DocKey] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
) ON [PRIMARY],
 CONSTRAINT [IX_EInvoiceConsolidatedInvoice_DocNo] UNIQUE NONCLUSTERED 
(
	[DocNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EInvoiceConsolidatedInvoiceLink]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[EInvoiceConsolidatedInvoiceLink](
	[CILinkKey] [bigint] NOT NULL,
	[CIDocKey] [bigint] NOT NULL,
	[CIDtlKey] [bigint] NOT NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Cancelled] [dbo].[d_Boolean] NOT NULL,
 CONSTRAINT [PK_EInvoiceConsolidatedInvoiceLink_CILinkKey] PRIMARY KEY CLUSTERED 
(
	[CILinkKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EInvoiceConsolidatedInvoiceDetail]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[EInvoiceConsolidatedInvoiceDetail](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Seq] [int] NOT NULL,
	[Classification] [varchar](3) NOT NULL,
	[Description] [varchar](300) NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[UnitPrice] [dbo].[d_Price] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[DiscountAmt] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_EInvoiceConsolidatedInvoiceDetail_DtlKey] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EInvoiceConsolidatedInvoiceDetailTaxTypes]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[EInvoiceConsolidatedInvoiceDetailTaxTypes](
	[CITaxTypeKey] [bigint] NOT NULL,
	[CIDocKey] [bigint] NOT NULL,
	[CIDtlKey] [bigint] NOT NULL,
	[TaxType] [varchar](2) NULL,
	[Description] [nvarchar](100) NULL,
	[TaxExemptionReason][nvarchar](100) NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
 CONSTRAINT [PK_EInvoiceConsolidatedInvoiceTaxCategory_CITaxTypeKey] PRIMARY KEY CLUSTERED 
(
	[CITaxTypeKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

if not exists (select * from DocNoFormat where Name = 'CI Default')
  INSERT INTO [DocNoFormat] (Name, DocType, NextNumber, Format, Sample, IsDefault, OneMonthOneSet) VALUES ('CI Default', 'CI', 1, 'CI-<000000>', 'CI-000001', 'T', 'F');
GO

UPDATE REGISTRY SET RegValue = '2.2.66' WHERE RegID = 2
GOK-- Drop OurInvoiceNo columns that exists in ARRefund
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[ARRefund]') and name = N'OurInvoiceNo')
  ALTER TABLE [dbo].[ARRefund] DROP COLUMN [OurInvoiceNo]
GO

-- Drop Description columns that exists in Consolidated Invoice
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceConsolidatedInvoice]') and name = N'Description')
  ALTER TABLE [dbo].[EInvoiceConsolidatedInvoice] DROP COLUMN [Description]
GO

-- Drop PaymentMode columns that exists in Consolidated Invoice
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceConsolidatedInvoice]') and name = N'PaymentMode')
  ALTER TABLE [dbo].[EInvoiceConsolidatedInvoice] DROP COLUMN [PaymentMode]
GO

-- Drop RefNo columns that exists in Consolidated Invoice
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceConsolidatedInvoice]') and name = N'RefNo')
  ALTER TABLE [dbo].[EInvoiceConsolidatedInvoice] DROP COLUMN [RefNo]
GO

-- Drop RefNo columns that exists in Consolidated Invoice
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceConsolidatedInvoiceDetail]') and name = N'DiscountAmt')
  ALTER TABLE [dbo].[EInvoiceConsolidatedInvoiceDetail] DROP COLUMN [DiscountAmt]
GO

/* Add SubmitEInvoice, EInvoiceStatus, EInvoiceAIPSubmissionDateTime, EInvoiceUuid, EInvoiceValidatedDateTime, EInvoiceValidationLink, EInvoiceError, EInvoiceCancelDateTime, EInvoiceTraceId, AuthorisationNumberForCertifiedExporter, DeliveryTaxEntityID, Incoterms Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('ARRefund', 'ReferenceInvoiceNo', '[dbo].[d_DocNos] NULL', '', '')
INSERT @ListTable VALUES('CB', 'SubmitEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('CB', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CB', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CB', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CB', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CB', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('CB', 'EInvoiceError', 'varchar(max) NULL', '', '')
INSERT @ListTable VALUES('CB', 'EInvoiceCancelDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CB', 'EInvoiceTraceId', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CB', 'EInvoiceCancelReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CB', 'ReferenceInvoiceNo', '[dbo].[d_DocNos] NULL', '', '')
INSERT @ListTable VALUES('CN', 'CIDocNo', '[dbo].[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('CN', 'CIDocKey', 'bigint NULL', '', '')
INSERT @ListTable VALUES('DN', 'CIDocNo', '[dbo].[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('DN', 'CIDocKey', 'bigint NULL', '', '')
INSERT @ListTable VALUES('Debtor', 'IsCashSaleDebtor', '[dbo].[d_Boolean] NULL', '', '')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceSelfBilled]') and name = N'DeliveryIsForeigner')
  ALTER TABLE [dbo].[EInvoiceSelfBilled] ADD [DeliveryIsForeigner] [bit] NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceSelfBilled]') and name = N'DeliveryIsGeneralPublic')
  ALTER TABLE [dbo].[EInvoiceSelfBilled] ADD [DeliveryIsGeneralPublic] [bit] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceSelfBilled]') and name = N'DeliveryIsForeigner')
  UPDATE EInvoiceSelfBilled SET DeliveryIsForeigner = 0 WHERE DeliveryIsForeigner IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceSelfBilled]') and name = N'DeliveryIsGeneralPublic')
  UPDATE EInvoiceSelfBilled SET DeliveryIsGeneralPublic = 0 WHERE DeliveryIsGeneralPublic IS NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceSelfBilled]') and name = N'DeliveryIsForeigner')
  ALTER TABLE [dbo].[EInvoiceSelfBilled] ALTER COLUMN [DeliveryIsForeigner] [bit] NOT NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceSelfBilled]') and name = N'DeliveryIsGeneralPublic')
  ALTER TABLE [dbo].[EInvoiceSelfBilled] ALTER COLUMN [DeliveryIsGeneralPublic] [bit] NOT NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Creditor]') and name = N'GenerateLinkResultJson')
  ALTER TABLE [dbo].[Creditor] ADD [GenerateLinkResultJson] [nvarchar](max) NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.67' WHERE RegID = 2
GO�if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ProfileChangeLog]') and objectproperty(id, N'IsTrigger') = 1)
	DROP TRIGGER [ProfileChangeLog]
GO

UPDATE REGISTRY SET RegValue = '2.2.68' WHERE RegID = 2
GO�/* Add EInvoiceIssueDateTime Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('Profile', 'EInvoiceCompanyResultInJson', 'nvarchar(max) NULL', '', '')
INSERT @ListTable VALUES('IV', 'EInvoiceIssueDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CS', 'EInvoiceIssueDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('DN', 'EInvoiceIssueDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CN', 'EInvoiceIssueDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceIssueDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CB', 'EInvoiceIssueDateTime', 'datetime NULL', '', '')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.2.69' WHERE RegID = 2
GO�/* Add IsSBConsolidated Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('EInvoiceSelfBilled', 'IsSBConsolidated', 'bit NULL', '0', 'bit NOT NULL')
INSERT @ListTable VALUES('IV', 'ConsolidatedEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('CS', 'ConsolidatedEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('CN', 'ConsolidatedEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('DN', 'ConsolidatedEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.2.70' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.2.71' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.2.72' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.2.73' WHERE RegID = 2
GOe-- Change Description in EInvoiceSelfBilledDetail from varchar to nvarchar
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceSelfBilledDetail]') and name = N'Description')
  ALTER TABLE EInvoiceSelfBilledDetail ALTER COLUMN [Description] nvarchar(300) NOT NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.74' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.2.75' WHERE RegID = 2
GO])/* Increase d_DocNo size to 30 characters */
DECLARE @UDDTName nvarchar(100)
DECLARE @UDDTType nvarchar(10)
DECLARE @NewLength bigint
DECLARE @MasterTable nvarchar(100)

SET @UDDTName = 'd_DocNo'
SET @UDDTType = 'nvarchar'
SET @NewLength = 30
SET @MasterTable = ''

/* Check User-Defined Data Type exist or not */
DECLARE @UDDTExist int
Select @UDDTExist = count(*) from sys.types where name=@UDDTName

IF @UDDTExist = 0
    RETURN

/* Check data type */
IF @UDDTType <> 'char' AND @UDDTType <> 'nchar' AND @UDDTType <> 'varchar' AND @UDDTType <> 'nvarchar'
    RETURN

DECLARE @RealNewLength bigint
SET @RealNewLength = @NewLength

/* Check current length and new length is same or not */
DECLARE @maxLength bigint
Select @maxLength = max_length from sys.types where name=@UDDTName
SET @NewLength = @NewLength * 2

IF @maxLength = @NewLength
    RETURN

DECLARE @minSize bigint
DECLARE @maxSize bigint
DECLARE @UDDTGUID [uniqueidentifier] 
DECLARE @TransactionID BIGINT

SET @UDDTGUID = N'7A31626C-A085-43E7-A180-40D187E950F8'
SELECT @TransactionID = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION

SET @minSize = 8 * 2

SET @maxSize = 500 * 2

BEGIN TRANSACTION

/* Change User-Defined Data Type size */
IF (@NewLength >= @minSize AND @NewLength <= @maxSize) AND (@maxLength > 0 AND @maxLength < 1001)
BEGIN
	DECLARE @UDDTTempName NVARCHAR(150)
	DECLARE @sql NVARCHAR(1000)
	DECLARE @cur_item cursor

	SET @UDDTTempName = N'd_' + @UDDTName + 'Temp'
	SET @sql = N'' + @UDDTType + ' (' + CAST((@NewLength / 2) as nvarchar) + ')'
	EXEC sp_addtype @UDDTTempName, @sql

	/* Find Foreign Key which combine with accno (two columns) and alter column with a new user defined field */
	DECLARE @ListTable3 TABLE(TableName nvarchar(80), ColumnName nvarchar(80), ColumnName2 nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), 
	ParentColumnName nvarchar(80), ParentColumnName2 nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	insert into @ListTable3 
	SELECT tab1.name, col1.name AS ColumnName, tempfkc.ColumnName AS ColumnName2, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
	tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.ParentColumnName2, tempfkc.update_referential_action, tempfkc.delete_referential_action,
	tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc 
	From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
	INNER JOIN 
	(
		Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab.name AS ParentTableName, COL_NAME(fkc2.parent_object_id,fkc2.parent_column_id) AS ColumnName, 
		col.name AS ParentColumnName, col2.name AS ParentColumnName2, fk.update_referential_action, fk.delete_referential_action, fk.update_referential_action_desc, fk.delete_referential_action_desc 
		From sys.foreign_key_columns fkc INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id 
		INNER JOIN sys.tables tab ON tab.object_id = fkc.referenced_object_id
		INNER JOIN sys.columns col ON col.column_id = referenced_column_id AND col.object_id = tab.object_id
		INNER JOIN sys.types typ ON col.user_type_id = typ.user_type_id 
		INNER JOIN sys.foreign_key_columns fkc2 ON fkc.constraint_object_id = fkc2.constraint_object_id AND fkc.referenced_column_id < fkc2.referenced_column_id
		INNER JOIN sys.columns col2 ON col2.column_id = fkc2.referenced_column_id AND col2.object_id = tab.object_id
		INNER JOIN sys.types typ2 ON col2.user_type_id = typ2.user_type_id 
		INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id
		WHERE col.name != col2.name AND (typ.name = @UDDTName OR typ2.name = @UDDTName)
	) tempfkc ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id

	/* Drop Foreign Key which combine with accno (two columns) and alter column with a new user defined field */
	DECLARE @tableName  NVARCHAR(80)
	DECLARE @colName  NVARCHAR(80)
	DECLARE @colName2  NVARCHAR(80)
	DECLARE @null  nvarchar(10)
	DECLARE @fkName  NVARCHAR(160)
	DECLARE @parentTableName  NVARCHAR(80)
	DECLARE @parentColName  NVARCHAR(80)
	DECLARE @parentColName2  NVARCHAR(80)
	DECLARE @updateAction tinyint
	DECLARE @deleteAction tinyint

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable3
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	DECLARE @ListTable TABLE(TableName nvarchar(80), ColumnName nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), ParentColumnName nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	insert into @ListTable Select tab1.name, col1.name, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
	tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.update_referential_action, tempfkc.delete_referential_action,
	tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc
	From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
	INNER JOIN sys.types typ1 ON col1.user_type_id = typ1.user_type_id 
	LEFT OUTER JOIN 
	(Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab2.name AS ParentTableName, col2.name AS ParentColumnName, fk.update_referential_action, fk.delete_referential_action,
	fk.update_referential_action_desc, fk.delete_referential_action_desc From sys.foreign_key_columns fkc 
	INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id INNER JOIN sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
	INNER JOIN sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
	INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id)tempfkc
	ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id
	Where typ1.name=@UDDTName

	/* Find Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	DECLARE @ListTable2 TABLE(TableName nvarchar(80), ColumnName nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), ParentColumnName nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	IF @MasterTable <> ''
	BEGIN
		insert into @ListTable2 Select tab1.name, col1.name, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
		tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.update_referential_action, tempfkc.delete_referential_action, 
		tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc 
		From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
		INNER JOIN sys.types typ1 ON col1.user_type_id = typ1.user_type_id 
		INNER JOIN 
		(Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab2.name AS ParentTableName, col2.name AS ParentColumnName,
		fk.update_referential_action, fk.delete_referential_action, fk.update_referential_action_desc, fk.delete_referential_action_desc 
		From sys.foreign_key_columns fkc INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id 
		INNER JOIN sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
		INNER JOIN sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
		LEFT OUTER JOIN sys.foreign_key_columns fkc3 ON fkc.constraint_object_id = fkc3.constraint_object_id AND fkc3.referenced_column_id = 2
		INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id
		Where tab2.Name <> @MasterTable AND fkc3.constraint_object_id IS NULL
		)tempfkc ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id
		Where typ1.name=@UDDTName
	END

	/* Find index master which related with User-Defined Data Type */
	DECLARE @IndexTable TABLE(IndexName nvarchar(1000), TableName nvarchar(80), IndexUnique nvarchar(6), IndexTypeDesc nvarchar(80), IndexIsDisabled int, FileGroupName nvarchar(80), IndexColumns nvarchar(max), IncludedColumns nvarchar(max), isPrimaryKey int, isUniqueCons int)

	insert into @IndexTable select distinct ix.name, tab.name, case when ix.is_unique = 1 then 'UNIQUE ' else '' END as indexUnique, ix.type_desc, ix.is_disabled, FILEGROUP_NAME(ix.data_space_id) FileGroupName, '' AS indexColumns, '' AS includedColumns, ix.is_primary_key, ix.is_unique_constraint 
	from sys.indexes ix 
	inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
	inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
	Where ix.type>0 and ix.is_hypothetical=0 and ix.is_primary_key=0 and t.name=@UDDTName

	-- Find Primary Key index
	insert into @IndexTable select distinct ix.name, tab.name, case when ix.is_unique = 1 then 'UNIQUE ' else '' END as indexUnique, ix.type_desc, ix.is_disabled, FILEGROUP_NAME(ix.data_space_id) FileGroupName, '' AS indexColumns, '' AS includedColumns, ix.is_primary_key, ix.is_unique_constraint 
	from sys.indexes ix 
	inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
	inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
	inner join sys.key_constraints pkc on pkc.parent_object_id = tab.object_id and pkc.parent_object_id = ixCol.object_id
	Where ix.type>0 and ix.is_hypothetical=0 and ix.is_primary_key=1 and OBJECTPROPERTY(pkc.object_id, N'IsPrimaryKey') = 1 and t.name=@UDDTName

	DECLARE @indexName NVARCHAR(1000)
	DECLARE @indexTableName NVARCHAR(80)
	/* index detail */
	DECLARE @IndexColumn nvarchar(80)
	DECLARE @IsDescendingKey int 
	DECLARE @IsIncludedColumn int
	DECLARE @cur_IndexCol cursor
	DECLARE @IndexColumns NVARCHAR(max)
	DECLARE @IncludedColumns NVARCHAR(max)
	DECLARE @IsPrimaryKey int
	DECLARE @isUniqueCons int

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName From @IndexTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  /* Find index detail column which related with User-Defined Data Type */
	  set @IndexColumns=''
	  set @IncludedColumns=''

	  SET @cur_IndexCol = CURSOR FAST_FORWARD FOR SELECT col.name, ixc.is_descending_key, ixc.is_included_column
	  from sys.tables tb 
	  inner join sys.indexes ix on tb.object_id=ix.object_id
	  inner join sys.index_columns ixc on ix.object_id=ixc.object_id and ix.index_id= ixc.index_id
	  inner join sys.columns col on ixc.object_id =col.object_id and ixc.column_id=col.column_id
	  where ix.type>0 
	  and tb.name=@indexTableName and ix.name=@indexName
	  order by ixc.index_column_id

	  OPEN @cur_IndexCol
	  FETCH NEXT FROM @cur_IndexCol INTO @IndexColumn, @IsDescendingKey, @IsIncludedColumn
	  
	  WHILE @@FETCH_STATUS = 0
	  BEGIN
		if @IsIncludedColumn=0 
		  set @IndexColumns=@IndexColumns + @IndexColumn  + case when @IsDescendingKey = 1  then ' DESC, ' else  ' ASC, ' end
		else 
		  set @IncludedColumns=@IncludedColumns  + @IndexColumn  +', ' 

		FETCH NEXT FROM @cur_IndexCol INTO @IndexColumn, @IsDescendingKey, @IsIncludedColumn
	  END

	  CLOSE @cur_IndexCol
	  DEALLOCATE @cur_IndexCol
	  
	  /* Update index and included columns in index table */
	  Set @IndexColumns = substring(@IndexColumns, 1, len(@IndexColumns) - 1)
	  Set @IncludedColumns = case when len(@IncludedColumns) >0 then substring(@IncludedColumns, 1, len(@IncludedColumns) - 1) else '' end

	  Update @IndexTable Set IndexColumns = @IndexColumns, IncludedColumns = @IncludedColumns Where IndexName = @indexName AND TableName = @indexTableName

	  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find statistics master which related with User-Defined Data Type */
	DECLARE @StatisticsTable TABLE(StatisticsName nvarchar(1000), TableName nvarchar(80), StatisticsColumns nvarchar(max))

	insert into @StatisticsTable select distinct st.name, tab.name, '' AS statisticsColumns 
	from sys.stats st 
	inner join sys.stats_columns stCol on  st.object_id = stCol.object_id and st.stats_id = stCol.stats_id 
	inner join sys.columns col on st.object_id = col.object_id and stCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on st.object_id = tab.object_id and col.object_id = tab.object_id
	Where st.auto_created=0 and st.user_created=1 and t.name=@UDDTName

	DECLARE @statisticsName NVARCHAR(1000)
	DECLARE @statisticsTableName NVARCHAR(80)
	/* statistics detail */
	DECLARE @StatisticsColumn nvarchar(80)
	DECLARE @cur_StatisticsCol cursor
	DECLARE @StatisticsColumns NVARCHAR(max)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  /* Find statistics detail column which related with User-Defined Data Type */
	  set @StatisticsColumns=''

	  SET @cur_StatisticsCol = CURSOR FAST_FORWARD FOR SELECT col.name
	  from sys.tables tb 
	  inner join sys.stats st on tb.object_id=st.object_id
	  inner join sys.stats_columns stc on st.object_id=stc.object_id and st.stats_id= stc.stats_id
	  inner join sys.columns col on stc.object_id =col.object_id and stc.column_id=col.column_id
	  and tb.name=@statisticsTableName and st.name=@statisticsName
	  order by stc.stats_column_id

	  OPEN @cur_StatisticsCol
	  FETCH NEXT FROM @cur_StatisticsCol INTO @StatisticsColumn
	  
	  WHILE @@FETCH_STATUS = 0
	  BEGIN
		set @StatisticsColumns=@StatisticsColumns + @StatisticsColumn  + ', '

		FETCH NEXT FROM @cur_StatisticsCol INTO @StatisticsColumn
	  END

	  CLOSE @cur_StatisticsCol
	  DEALLOCATE @cur_StatisticsCol
	  
	  /* Update statistics columns in statistics table */
	  Set @StatisticsColumns = substring(@StatisticsColumns, 1, len(@StatisticsColumns) - 1)

	  Update @StatisticsTable Set StatisticsColumns = @StatisticsColumns Where StatisticsName = @statisticsName AND TableName = @statisticsTableName

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find Procedure which related with User-Defined Data Type */
	DECLARE @ProcedureTable TABLE(ProcName nvarchar(200), ProcDefine nvarchar(max))

	insert into @ProcedureTable Select o.name, m.definition
	FROM sys.sql_modules m 
	INNER JOIN sys.procedures o 
	ON m.object_id=o.object_id
	Where o.name != 'bsp_ChangeUDDTSize' AND m.definition Like '%' + @UDDTName + '%'

	/* Find View and Function which related with User-Defined Data Type */
	DECLARE @ViewTable TABLE(ViewName nvarchar(200), ViewType nvarchar(2), ViewDefine nvarchar(max), IsProcess int)

	insert into @ViewTable select o.name, o.type, m.definition, 0 as isProcess from sys.objects o 
	inner join sys.sql_modules m on o.object_id = m.object_id
	Where o.object_id in (select c.object_id from sys.columns c 
	inner join sys.types t on c.user_type_id = t.user_type_id 
	Where t.name=@UDDTName) and o.type in ('TF', 'V')

	/* Drop statistics constraint which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop statistics first
	  set @sql = 'if exists (select * from sys.stats where name = N''' + @statisticsName + ''') DROP STATISTICS [dbo].[' + @statisticsTableName + '].[' + @statisticsName + ']'
	  Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Drop index or unique constraint which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  -- drop index first
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 0
		  BEGIN
			  set @sql = 'if exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') DROP INDEX [' + @indexName + '] ON [dbo].[' + @indexTableName + ']'
			  Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Drop Procedure which related with User-Defined Data Type */
	DECLARE @procName  NVARCHAR(200)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ProcName From @ProcedureTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @procName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop procedure first
	  set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @procName + ']'') and OBJECTPROPERTY(id, N''IsProcedure'') = 1) DROP PROCEDURE [dbo].[' + @procName + ']'
		Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @procName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop View and Function which related with User-Defined Data Type */
	DECLARE @viewName  NVARCHAR(200)
	DECLARE @viewType  NVARCHAR(2)
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ViewName,ViewType From @ViewTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @viewName, @viewType

	WHILE @@FETCH_STATUS = 0
	BEGIN
		if @viewType='V'
			set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @viewName + ']'') and Type in (''V'')) DROP VIEW [dbo].[' + @viewName + ']'
		else
			set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @viewName + ']'') and Type in (''TF'')) DROP FUNCTION [dbo].[' + @viewName + ']'

		Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @viewName, @viewType
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable2
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Drop Primary Key index which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  -- drop index first
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 1
		  BEGIN

				set @sql = 'if exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
			  
			  Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  -- drop index first
		  IF @IsPrimaryKey = 1
		  BEGIN
		  		-- recreate User-Defined Data Type Primary Key
				-- drop constraint first
		  		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
				Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Change new type for Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, Nullable From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- change to new type
	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [' + @UDDTTempName + '] ' + @null
    
	  Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	EXEC sp_droptype @UDDTName

	EXEC sp_rename @UDDTTempName, @UDDTName, N'USERDATATYPE'

	DECLARE @indexUnique nvarchar(6)
	DECLARE @indexTypeDesc  nvarchar(80)
	DECLARE @IndexIsDisabled int
	DECLARE @FileGroupName nvarchar(80)
	DECLARE @IndexScript nvarchar(max)
	DECLARE @StatisticsScript nvarchar(max)

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Create Primary Key index which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, IndexUnique, IndexTypeDesc, IndexIsDisabled, FileGroupName, IndexColumns, IncludedColumns, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  IF @IsPrimaryKey = 1
		  BEGIN
			   -- add back constraint
	   		   set @IndexScript = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] ADD CONSTRAINT [' + @indexName + '] PRIMARY KEY ' + @indexTypeDesc + ' (' + @IndexColumns + ') ' + 
			   case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'
			   Exec sp_executesql @IndexScript

			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 1
		  BEGIN
			  -- add back index or unique constraint
			     set @IndexScript = 'if not exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') ALTER TABLE '+ @indexTableName + ' ADD CONSTRAINT ' + @indexName + ' ' + @indexUnique + ' ' + @indexTypeDesc + ' ('+@IndexColumns+') ' + 
			     case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'

			   Exec sp_executesql @IndexScript
	   
			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Create Foreign Key which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ForeignKeyName, ParentTableName, ParentColumnName, UpdateAction, DeleteAction From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '])'
		if @updateAction = 1
			set @sql = @sql + ' on update cascade'
		if @deleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ForeignKeyName, ParentTableName, ParentColumnName, UpdateAction, DeleteAction From @ListTable2
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '])'
		if @updateAction = 1
			set @sql = @sql + ' on update cascade'
		if @deleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Foreign Key which combine with accno (two columns) */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnName2, ForeignKeyName, ParentTableName, ParentColumnName, ParentColumnName2, UpdateAction, DeleteAction From @ListTable3
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colName2, @fkName, @parentTableName, @parentColName, @parentColName2, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + '], [' + @colName2 + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '], [' + @parentColName2 + '])'
		if @UpdateAction = 1
			set @sql = @sql + ' on update cascade'
		if @DeleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colName2, @fkName, @parentTableName, @parentColName, @parentColName2, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create View and Function which related with User-Defined Data Type */
	DECLARE @sqlDefine  NVARCHAR(max)
	DECLARE @isProcess  int

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ViewName, ViewDefine, IsProcess From @ViewTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @ViewName, @sqlDefine, @isProcess
	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back view
		BEGIN TRY
			IF @isProcess = 0
			BEGIN
				Exec sp_executesql @sqlDefine
				Update @ViewTable Set IsProcess = 1 Where ViewName = @ViewName
			END
		END TRY
		BEGIN CATCH
		END CATCH
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @ViewName, @sqlDefine, @isProcess
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Store Procedure which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ProcDefine From @ProcedureTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @sqlDefine

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back procedure
		Exec sp_executesql @sqlDefine
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @sqlDefine
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Create index or unique constraint which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, IndexUnique, IndexTypeDesc, IndexIsDisabled, FileGroupName, IndexColumns, IncludedColumns, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 0
		  BEGIN
			  -- add back index or unique constraint
			   set @IndexScript = 'if not exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') CREATE '+ @indexUnique + ' ' + @indexTypeDesc + ' INDEX ' + @indexName + ' ON [dbo].'+ @indexTableName + ' ('+@IndexColumns+') '+ 
			   case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'
			   Exec sp_executesql @IndexScript
	   
			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Create statistics constraint which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName, StatisticsColumns From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName, @statisticsColumns

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back statistics constraint
	   set @StatisticsScript = 'if not exists (select * from sys.stats where name = N''' + @statisticsName + ''') CREATE STATISTICS ' + @statisticsName + ' ON [dbo].'+ @statisticsTableName + ' ('+@statisticsColumns+') '
	   Exec sp_executesql @StatisticsScript
	   
	   IF @@ERROR <> 0
	   BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	   END

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName, @statisticsColumns
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES(@UDDTName, @UDDTGUID, REPLACE((SELECT @UDDTName AS UDDTName, @UDDTType AS UDDTType, @RealNewLength AS NewLength, @MasterTable AS MasterTable FOR XML RAW('UDDT'), BINARY BASE64), '&#x00;',''), 'X', 'S', GETDATE(), @TransactionID)
	IF @@ERROR <> 0
	BEGIN
	 RETURN
	END
END

COMMIT TRANSACTION
GO

/* Increase d_DocNos size to 60 characters */
DECLARE @UDDTName nvarchar(100)
DECLARE @UDDTType nvarchar(10)
DECLARE @NewLength bigint
DECLARE @MasterTable nvarchar(100)

SET @UDDTName = 'd_DocNos'
SET @UDDTType = 'nvarchar'
SET @NewLength = 60
SET @MasterTable = ''

/* Check User-Defined Data Type exist or not */
DECLARE @UDDTExist int
Select @UDDTExist = count(*) from sys.types where name=@UDDTName

IF @UDDTExist = 0
    RETURN

/* Check data type */
IF @UDDTType <> 'char' AND @UDDTType <> 'nchar' AND @UDDTType <> 'varchar' AND @UDDTType <> 'nvarchar'
    RETURN

DECLARE @RealNewLength bigint
SET @RealNewLength = @NewLength

/* Check current length and new length is same or not */
DECLARE @maxLength bigint
Select @maxLength = max_length from sys.types where name=@UDDTName
SET @NewLength = @NewLength * 2

IF @maxLength = @NewLength
    RETURN

DECLARE @minSize bigint
DECLARE @maxSize bigint
DECLARE @UDDTGUID [uniqueidentifier] 
DECLARE @TransactionID BIGINT

SET @UDDTGUID = N'7A31626C-A085-43E7-A180-40D187E950F8'
SELECT @TransactionID = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION

SET @minSize = 8 * 2

SET @maxSize = 500 * 2

BEGIN TRANSACTION

/* Change User-Defined Data Type size */
IF (@NewLength >= @minSize AND @NewLength <= @maxSize) AND (@maxLength > 0 AND @maxLength < 1001)
BEGIN
	DECLARE @UDDTTempName NVARCHAR(150)
	DECLARE @sql NVARCHAR(1000)
	DECLARE @cur_item cursor

	SET @UDDTTempName = N'd_' + @UDDTName + 'Temp'
	SET @sql = N'' + @UDDTType + ' (' + CAST((@NewLength / 2) as nvarchar) + ')'
	EXEC sp_addtype @UDDTTempName, @sql

	/* Find Foreign Key which combine with accno (two columns) and alter column with a new user defined field */
	DECLARE @ListTable3 TABLE(TableName nvarchar(80), ColumnName nvarchar(80), ColumnName2 nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), 
	ParentColumnName nvarchar(80), ParentColumnName2 nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	insert into @ListTable3 
	SELECT tab1.name, col1.name AS ColumnName, tempfkc.ColumnName AS ColumnName2, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
	tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.ParentColumnName2, tempfkc.update_referential_action, tempfkc.delete_referential_action,
	tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc 
	From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
	INNER JOIN 
	(
		Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab.name AS ParentTableName, COL_NAME(fkc2.parent_object_id,fkc2.parent_column_id) AS ColumnName, 
		col.name AS ParentColumnName, col2.name AS ParentColumnName2, fk.update_referential_action, fk.delete_referential_action, fk.update_referential_action_desc, fk.delete_referential_action_desc 
		From sys.foreign_key_columns fkc INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id 
		INNER JOIN sys.tables tab ON tab.object_id = fkc.referenced_object_id
		INNER JOIN sys.columns col ON col.column_id = referenced_column_id AND col.object_id = tab.object_id
		INNER JOIN sys.types typ ON col.user_type_id = typ.user_type_id 
		INNER JOIN sys.foreign_key_columns fkc2 ON fkc.constraint_object_id = fkc2.constraint_object_id AND fkc.referenced_column_id < fkc2.referenced_column_id
		INNER JOIN sys.columns col2 ON col2.column_id = fkc2.referenced_column_id AND col2.object_id = tab.object_id
		INNER JOIN sys.types typ2 ON col2.user_type_id = typ2.user_type_id 
		INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id
		WHERE col.name != col2.name AND (typ.name = @UDDTName OR typ2.name = @UDDTName)
	) tempfkc ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id

	/* Drop Foreign Key which combine with accno (two columns) and alter column with a new user defined field */
	DECLARE @tableName  NVARCHAR(80)
	DECLARE @colName  NVARCHAR(80)
	DECLARE @colName2  NVARCHAR(80)
	DECLARE @null  nvarchar(10)
	DECLARE @fkName  NVARCHAR(160)
	DECLARE @parentTableName  NVARCHAR(80)
	DECLARE @parentColName  NVARCHAR(80)
	DECLARE @parentColName2  NVARCHAR(80)
	DECLARE @updateAction tinyint
	DECLARE @deleteAction tinyint

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable3
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	DECLARE @ListTable TABLE(TableName nvarchar(80), ColumnName nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), ParentColumnName nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	insert into @ListTable Select tab1.name, col1.name, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
	tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.update_referential_action, tempfkc.delete_referential_action,
	tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc
	From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
	INNER JOIN sys.types typ1 ON col1.user_type_id = typ1.user_type_id 
	LEFT OUTER JOIN 
	(Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab2.name AS ParentTableName, col2.name AS ParentColumnName, fk.update_referential_action, fk.delete_referential_action,
	fk.update_referential_action_desc, fk.delete_referential_action_desc From sys.foreign_key_columns fkc 
	INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id INNER JOIN sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
	INNER JOIN sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
	INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id)tempfkc
	ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id
	Where typ1.name=@UDDTName

	/* Find Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	DECLARE @ListTable2 TABLE(TableName nvarchar(80), ColumnName nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), ParentColumnName nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	IF @MasterTable <> ''
	BEGIN
		insert into @ListTable2 Select tab1.name, col1.name, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
		tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.update_referential_action, tempfkc.delete_referential_action, 
		tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc 
		From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
		INNER JOIN sys.types typ1 ON col1.user_type_id = typ1.user_type_id 
		INNER JOIN 
		(Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab2.name AS ParentTableName, col2.name AS ParentColumnName,
		fk.update_referential_action, fk.delete_referential_action, fk.update_referential_action_desc, fk.delete_referential_action_desc 
		From sys.foreign_key_columns fkc INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id 
		INNER JOIN sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
		INNER JOIN sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
		LEFT OUTER JOIN sys.foreign_key_columns fkc3 ON fkc.constraint_object_id = fkc3.constraint_object_id AND fkc3.referenced_column_id = 2
		INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id
		Where tab2.Name <> @MasterTable AND fkc3.constraint_object_id IS NULL
		)tempfkc ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id
		Where typ1.name=@UDDTName
	END

	/* Find index master which related with User-Defined Data Type */
	DECLARE @IndexTable TABLE(IndexName nvarchar(1000), TableName nvarchar(80), IndexUnique nvarchar(6), IndexTypeDesc nvarchar(80), IndexIsDisabled int, FileGroupName nvarchar(80), IndexColumns nvarchar(max), IncludedColumns nvarchar(max), isPrimaryKey int, isUniqueCons int)

	insert into @IndexTable select distinct ix.name, tab.name, case when ix.is_unique = 1 then 'UNIQUE ' else '' END as indexUnique, ix.type_desc, ix.is_disabled, FILEGROUP_NAME(ix.data_space_id) FileGroupName, '' AS indexColumns, '' AS includedColumns, ix.is_primary_key, ix.is_unique_constraint 
	from sys.indexes ix 
	inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
	inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
	Where ix.type>0 and ix.is_hypothetical=0 and ix.is_primary_key=0 and t.name=@UDDTName

	-- Find Primary Key index
	insert into @IndexTable select distinct ix.name, tab.name, case when ix.is_unique = 1 then 'UNIQUE ' else '' END as indexUnique, ix.type_desc, ix.is_disabled, FILEGROUP_NAME(ix.data_space_id) FileGroupName, '' AS indexColumns, '' AS includedColumns, ix.is_primary_key, ix.is_unique_constraint 
	from sys.indexes ix 
	inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
	inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
	inner join sys.key_constraints pkc on pkc.parent_object_id = tab.object_id and pkc.parent_object_id = ixCol.object_id
	Where ix.type>0 and ix.is_hypothetical=0 and ix.is_primary_key=1 and OBJECTPROPERTY(pkc.object_id, N'IsPrimaryKey') = 1 and t.name=@UDDTName

	DECLARE @indexName NVARCHAR(1000)
	DECLARE @indexTableName NVARCHAR(80)
	/* index detail */
	DECLARE @IndexColumn nvarchar(80)
	DECLARE @IsDescendingKey int 
	DECLARE @IsIncludedColumn int
	DECLARE @cur_IndexCol cursor
	DECLARE @IndexColumns NVARCHAR(max)
	DECLARE @IncludedColumns NVARCHAR(max)
	DECLARE @IsPrimaryKey int
	DECLARE @isUniqueCons int

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName From @IndexTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  /* Find index detail column which related with User-Defined Data Type */
	  set @IndexColumns=''
	  set @IncludedColumns=''

	  SET @cur_IndexCol = CURSOR FAST_FORWARD FOR SELECT col.name, ixc.is_descending_key, ixc.is_included_column
	  from sys.tables tb 
	  inner join sys.indexes ix on tb.object_id=ix.object_id
	  inner join sys.index_columns ixc on ix.object_id=ixc.object_id and ix.index_id= ixc.index_id
	  inner join sys.columns col on ixc.object_id =col.object_id and ixc.column_id=col.column_id
	  where ix.type>0 
	  and tb.name=@indexTableName and ix.name=@indexName
	  order by ixc.index_column_id

	  OPEN @cur_IndexCol
	  FETCH NEXT FROM @cur_IndexCol INTO @IndexColumn, @IsDescendingKey, @IsIncludedColumn
	  
	  WHILE @@FETCH_STATUS = 0
	  BEGIN
		if @IsIncludedColumn=0 
		  set @IndexColumns=@IndexColumns + @IndexColumn  + case when @IsDescendingKey = 1  then ' DESC, ' else  ' ASC, ' end
		else 
		  set @IncludedColumns=@IncludedColumns  + @IndexColumn  +', ' 

		FETCH NEXT FROM @cur_IndexCol INTO @IndexColumn, @IsDescendingKey, @IsIncludedColumn
	  END

	  CLOSE @cur_IndexCol
	  DEALLOCATE @cur_IndexCol
	  
	  /* Update index and included columns in index table */
	  Set @IndexColumns = substring(@IndexColumns, 1, len(@IndexColumns) - 1)
	  Set @IncludedColumns = case when len(@IncludedColumns) >0 then substring(@IncludedColumns, 1, len(@IncludedColumns) - 1) else '' end

	  Update @IndexTable Set IndexColumns = @IndexColumns, IncludedColumns = @IncludedColumns Where IndexName = @indexName AND TableName = @indexTableName

	  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find statistics master which related with User-Defined Data Type */
	DECLARE @StatisticsTable TABLE(StatisticsName nvarchar(1000), TableName nvarchar(80), StatisticsColumns nvarchar(max))

	insert into @StatisticsTable select distinct st.name, tab.name, '' AS statisticsColumns 
	from sys.stats st 
	inner join sys.stats_columns stCol on  st.object_id = stCol.object_id and st.stats_id = stCol.stats_id 
	inner join sys.columns col on st.object_id = col.object_id and stCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on st.object_id = tab.object_id and col.object_id = tab.object_id
	Where st.auto_created=0 and st.user_created=1 and t.name=@UDDTName

	DECLARE @statisticsName NVARCHAR(1000)
	DECLARE @statisticsTableName NVARCHAR(80)
	/* statistics detail */
	DECLARE @StatisticsColumn nvarchar(80)
	DECLARE @cur_StatisticsCol cursor
	DECLARE @StatisticsColumns NVARCHAR(max)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  /* Find statistics detail column which related with User-Defined Data Type */
	  set @StatisticsColumns=''

	  SET @cur_StatisticsCol = CURSOR FAST_FORWARD FOR SELECT col.name
	  from sys.tables tb 
	  inner join sys.stats st on tb.object_id=st.object_id
	  inner join sys.stats_columns stc on st.object_id=stc.object_id and st.stats_id= stc.stats_id
	  inner join sys.columns col on stc.object_id =col.object_id and stc.column_id=col.column_id
	  and tb.name=@statisticsTableName and st.name=@statisticsName
	  order by stc.stats_column_id

	  OPEN @cur_StatisticsCol
	  FETCH NEXT FROM @cur_StatisticsCol INTO @StatisticsColumn
	  
	  WHILE @@FETCH_STATUS = 0
	  BEGIN
		set @StatisticsColumns=@StatisticsColumns + @StatisticsColumn  + ', '

		FETCH NEXT FROM @cur_StatisticsCol INTO @StatisticsColumn
	  END

	  CLOSE @cur_StatisticsCol
	  DEALLOCATE @cur_StatisticsCol
	  
	  /* Update statistics columns in statistics table */
	  Set @StatisticsColumns = substring(@StatisticsColumns, 1, len(@StatisticsColumns) - 1)

	  Update @StatisticsTable Set StatisticsColumns = @StatisticsColumns Where StatisticsName = @statisticsName AND TableName = @statisticsTableName

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find Procedure which related with User-Defined Data Type */
	DECLARE @ProcedureTable TABLE(ProcName nvarchar(200), ProcDefine nvarchar(max))

	insert into @ProcedureTable Select o.name, m.definition
	FROM sys.sql_modules m 
	INNER JOIN sys.procedures o 
	ON m.object_id=o.object_id
	Where o.name != 'bsp_ChangeUDDTSize' AND m.definition Like '%' + @UDDTName + '%'

	/* Find View and Function which related with User-Defined Data Type */
	DECLARE @ViewTable TABLE(ViewName nvarchar(200), ViewType nvarchar(2), ViewDefine nvarchar(max), IsProcess int)

	insert into @ViewTable select o.name, o.type, m.definition, 0 as isProcess from sys.objects o 
	inner join sys.sql_modules m on o.object_id = m.object_id
	Where o.object_id in (select c.object_id from sys.columns c 
	inner join sys.types t on c.user_type_id = t.user_type_id 
	Where t.name=@UDDTName) and o.type in ('TF', 'V')

	/* Drop statistics constraint which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop statistics first
	  set @sql = 'if exists (select * from sys.stats where name = N''' + @statisticsName + ''') DROP STATISTICS [dbo].[' + @statisticsTableName + '].[' + @statisticsName + ']'
	  Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Drop index or unique constraint which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  -- drop index first
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 0
		  BEGIN
			  set @sql = 'if exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') DROP INDEX [' + @indexName + '] ON [dbo].[' + @indexTableName + ']'
			  Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Drop Procedure which related with User-Defined Data Type */
	DECLARE @procName  NVARCHAR(200)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ProcName From @ProcedureTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @procName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop procedure first
	  set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @procName + ']'') and OBJECTPROPERTY(id, N''IsProcedure'') = 1) DROP PROCEDURE [dbo].[' + @procName + ']'
		Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @procName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop View and Function which related with User-Defined Data Type */
	DECLARE @viewName  NVARCHAR(200)
	DECLARE @viewType  NVARCHAR(2)
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ViewName,ViewType From @ViewTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @viewName, @viewType

	WHILE @@FETCH_STATUS = 0
	BEGIN
		if @viewType='V'
			set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @viewName + ']'') and Type in (''V'')) DROP VIEW [dbo].[' + @viewName + ']'
		else
			set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @viewName + ']'') and Type in (''TF'')) DROP FUNCTION [dbo].[' + @viewName + ']'

		Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @viewName, @viewType
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable2
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Drop Primary Key index which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  -- drop index first
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 1
		  BEGIN

				set @sql = 'if exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
			  
			  Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  -- drop index first
		  IF @IsPrimaryKey = 1
		  BEGIN
		  		-- recreate User-Defined Data Type Primary Key
				-- drop constraint first
		  		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
				Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Change new type for Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, Nullable From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- change to new type
	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [' + @UDDTTempName + '] ' + @null
    
	  Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	EXEC sp_droptype @UDDTName

	EXEC sp_rename @UDDTTempName, @UDDTName, N'USERDATATYPE'

	DECLARE @indexUnique nvarchar(6)
	DECLARE @indexTypeDesc  nvarchar(80)
	DECLARE @IndexIsDisabled int
	DECLARE @FileGroupName nvarchar(80)
	DECLARE @IndexScript nvarchar(max)
	DECLARE @StatisticsScript nvarchar(max)

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Create Primary Key index which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, IndexUnique, IndexTypeDesc, IndexIsDisabled, FileGroupName, IndexColumns, IncludedColumns, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  IF @IsPrimaryKey = 1
		  BEGIN
			   -- add back constraint
	   		   set @IndexScript = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] ADD CONSTRAINT [' + @indexName + '] PRIMARY KEY ' + @indexTypeDesc + ' (' + @IndexColumns + ') ' + 
			   case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'
			   Exec sp_executesql @IndexScript

			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 1
		  BEGIN
			  -- add back index or unique constraint
			     set @IndexScript = 'if not exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') ALTER TABLE '+ @indexTableName + ' ADD CONSTRAINT ' + @indexName + ' ' + @indexUnique + ' ' + @indexTypeDesc + ' ('+@IndexColumns+') ' + 
			     case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'

			   Exec sp_executesql @IndexScript
	   
			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Create Foreign Key which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ForeignKeyName, ParentTableName, ParentColumnName, UpdateAction, DeleteAction From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '])'
		if @updateAction = 1
			set @sql = @sql + ' on update cascade'
		if @deleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ForeignKeyName, ParentTableName, ParentColumnName, UpdateAction, DeleteAction From @ListTable2
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '])'
		if @updateAction = 1
			set @sql = @sql + ' on update cascade'
		if @deleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Foreign Key which combine with accno (two columns) */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnName2, ForeignKeyName, ParentTableName, ParentColumnName, ParentColumnName2, UpdateAction, DeleteAction From @ListTable3
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colName2, @fkName, @parentTableName, @parentColName, @parentColName2, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + '], [' + @colName2 + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '], [' + @parentColName2 + '])'
		if @UpdateAction = 1
			set @sql = @sql + ' on update cascade'
		if @DeleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colName2, @fkName, @parentTableName, @parentColName, @parentColName2, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create View and Function which related with User-Defined Data Type */
	DECLARE @sqlDefine  NVARCHAR(max)
	DECLARE @isProcess  int

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ViewName, ViewDefine, IsProcess From @ViewTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @ViewName, @sqlDefine, @isProcess
	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back view
		BEGIN TRY
			IF @isProcess = 0
			BEGIN
				Exec sp_executesql @sqlDefine
				Update @ViewTable Set IsProcess = 1 Where ViewName = @ViewName
			END
		END TRY
		BEGIN CATCH
		END CATCH
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @ViewName, @sqlDefine, @isProcess
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Store Procedure which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ProcDefine From @ProcedureTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @sqlDefine

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back procedure
		Exec sp_executesql @sqlDefine
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @sqlDefine
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Create index or unique constraint which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, IndexUnique, IndexTypeDesc, IndexIsDisabled, FileGroupName, IndexColumns, IncludedColumns, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 0
		  BEGIN
			  -- add back index or unique constraint
			   set @IndexScript = 'if not exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') CREATE '+ @indexUnique + ' ' + @indexTypeDesc + ' INDEX ' + @indexName + ' ON [dbo].'+ @indexTableName + ' ('+@IndexColumns+') '+ 
			   case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'
			   Exec sp_executesql @IndexScript
	   
			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Create statistics constraint which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName, StatisticsColumns From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName, @statisticsColumns

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back statistics constraint
	   set @StatisticsScript = 'if not exists (select * from sys.stats where name = N''' + @statisticsName + ''') CREATE STATISTICS ' + @statisticsName + ' ON [dbo].'+ @statisticsTableName + ' ('+@statisticsColumns+') '
	   Exec sp_executesql @StatisticsScript
	   
	   IF @@ERROR <> 0
	   BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	   END

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName, @statisticsColumns
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES(@UDDTName, @UDDTGUID, REPLACE((SELECT @UDDTName AS UDDTName, @UDDTType AS UDDTType, @RealNewLength AS NewLength, @MasterTable AS MasterTable FOR XML RAW('UDDT'), BINARY BASE64), '&#x00;',''), 'X', 'S', GETDATE(), @TransactionID)
	IF @@ERROR <> 0
	BEGIN
	 RETURN
	END
END

COMMIT TRANSACTION
GO

DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))
/* Extend Related DocNo length */
INSERT @ListTable VALUES('GLDTL', 'RefNo1', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('GLDTL', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('JEDTL', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('APCN', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('APDN', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('APInvoice', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('ARCN', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('ARDN', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('ARInvoice', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('ARAPContra', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('ADVQT', 'YourRef', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('QT', 'YourRef', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('IV', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('CS', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('DN', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('CN', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('Consignment', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('PI', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('CP', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('PR', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('PurchaseConsignment', 'RefNo2', '[nvarchar](30) NULL')
INSERT @ListTable VALUES('DocNoFormat', 'Format', '[nvarchar](40) NOT NULL')
INSERT @ListTable VALUES('DocNoFormat', 'Sample', '[nvarchar](30) NOT NULL')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN

  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END
  
  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if not exists (select * from [ChangeCount] where TableName = 'EInvoiceConsolidatedInvoice')
INSERT INTO [ChangeCount] VALUES ('EInvoiceConsolidatedInvoice', 0);
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateEInvoiceConsolidatedInvoiceChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateEInvoiceConsolidatedInvoiceChangeCount]
GO

CREATE TRIGGER UpdateEInvoiceConsolidatedInvoiceChangeCount ON EInvoiceConsolidatedInvoice
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='EInvoiceConsolidatedInvoice'
SET NOCOUNT OFF
GO

/* Add PaymentMode column */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('EInvoiceConsolidatedInvoice', 'PaymentMode', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('EInvoiceConsolidatedInvoiceDetail', 'PaymentMode', 'nvarchar(100) NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if not exists (select * from [ChangeCount] where TableName = 'EInvoiceSelfBilled')
INSERT INTO [ChangeCount] VALUES ('EInvoiceSelfBilled', 0);
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UpdateEInvoiceSelfBilledChangeCount]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[UpdateEInvoiceSelfBilledChangeCount]
GO

CREATE TRIGGER UpdateEInvoiceSelfBilledChangeCount ON EInvoiceSelfBilled
AFTER Insert, Update, Delete
AS
SET NOCOUNT ON
UPDATE ChangeCount SET Counter=Counter+1 WHERE TableName='EInvoiceSelfBilled'
SET NOCOUNT OFF
GO

UPDATE REGISTRY SET RegValue = '2.2.76' WHERE RegID = 2
GO�/* Add EInvoiceSubmissionUuid column */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('IV', 'EInvoiceSubmissionUuid', 'varchar(100) NULL')
INSERT @ListTable VALUES('CS', 'EInvoiceSubmissionUuid', 'varchar(100) NULL')
INSERT @ListTable VALUES('DN', 'EInvoiceSubmissionUuid', 'varchar(100) NULL')
INSERT @ListTable VALUES('CN', 'EInvoiceSubmissionUuid', 'varchar(100) NULL')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceSubmissionUuid', 'varchar(100) NULL')
INSERT @ListTable VALUES('CB', 'EInvoiceSubmissionUuid', 'varchar(100) NULL')
INSERT @ListTable VALUES('EInvoiceSelfBilled', 'EInvoiceSubmissionUuid', 'varchar(100) NULL')
INSERT @ListTable VALUES('EInvoiceConsolidatedInvoice', 'EInvoiceSubmissionUuid', 'varchar(100) NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

if not exists (select * from dbo.sysindexes where name = N'IX_ADVQT_Rev_ParentDocKey_DocKey')
CREATE NONCLUSTERED INDEX [IX_ADVQT_Rev_ParentDocKey_DocKey] ON [dbo].[ADVQT]
(
	[Rev] ASC,
	[ParentDocKey] ASC,
	[DocKey] ASC
) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_ADVQT_Rev_ParentDocKey_QTStatus')
CREATE NONCLUSTERED INDEX [IX_ADVQT_Rev_ParentDocKey_QTStatus] ON [dbo].[ADVQT]
(
	[Rev] ASC,
	[ParentDocKey] ASC,
	[DocKey] ASC,
	[QTStatus] ASC
) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_ADVQT_DocDate_ApprovalUserID_ParentDocKey_Rev_QTStatus_Cancelled_DebtorCode_BranchCode_DocKey')
CREATE NONCLUSTERED INDEX [IX_ADVQT_DocDate_ApprovalUserID_ParentDocKey_Rev_QTStatus_Cancelled_DebtorCode_BranchCode_DocKey] ON [dbo].[ADVQT]
(
	[DocDate] ASC,
	[ApprovalUserID] ASC,
	[ParentDocKey] ASC,
	[Rev] ASC,
	[QTStatus] ASC,
	[Cancelled] ASC,
	[DebtorCode] ASC,
	[BranchCode] ASC,
	[DocKey] ASC
)
INCLUDE([DocNo],[DebtorName],[SalesAgent],[CurrencyCode],[CurrencyRate],[NetTotal],[LocalNetTotal],[Tax],[ShipVia],[ShipInfo],[TotalExTax],[InclusiveTax]) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_ADVQTDTL_PackageDocKey_ParentDtlKey_DocKey_ItemCode')
CREATE NONCLUSTERED INDEX [IX_ADVQTDTL_PackageDocKey_ParentDtlKey_DocKey_ItemCode] ON [dbo].[ADVQTDTL]
(
	[PackageDocKey] ASC,
	[ParentDtlKey] ASC,
	[DocKey] ASC,
	[ItemCode] ASC
)
INCLUDE([DtlKey],[Location],[Description],[ProjNo],[DeptNo],[UOM],[Qty],[UnitPrice],[Discount],[TaxCode],[Tax],[SubTotal],[SubTotalExTax],[DeliveryDate]) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_Debtor_AccNo_AutoKey')
CREATE NONCLUSTERED INDEX [IX_Debtor_AccNo_AutoKey] ON [dbo].[Debtor]
(
	[AccNo] ASC,
	[AutoKey] ASC
)
INCLUDE([AreaCode],[DebtorType]) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_Item_ItemCode_AutoKey')
CREATE NONCLUSTERED INDEX [IX_Item_ItemCode_AutoKey] ON [dbo].[Item]
(
	[ItemCode] ASC,
	[AutoKey] ASC
)
INCLUDE([ItemGroup],[ItemType],[ItemBrand],[ItemClass],[ItemCategory]) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_ADVQT_QTStatus_DocKey_ParentDocKey')
CREATE NONCLUSTERED INDEX [IX_ADVQT_QTStatus_DocKey_ParentDocKey] ON [dbo].[ADVQT]
(
	[QTStatus] ASC,
	[DocKey] ASC,
	[ParentDocKey] ASC
) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_ADVQT_QTStatus_Rev_DocKey_ParentDocKey')
CREATE NONCLUSTERED INDEX [IX_ADVQT_QTStatus_Rev_DocKey_ParentDocKey] ON [dbo].[ADVQT]
(
	[QTStatus] ASC,
	[Rev] ASC,
	[DocKey] ASC,
	[ParentDocKey] ASC
) ON [PRIMARY]

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceSelfBilledLink]') and name = N'FromDocType')
  ALTER TABLE [dbo].[EInvoiceSelfBilledLink] ADD[FromDocType] [dbo].[d_DocType] NULL
GO

if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceSelfBilledLink]') and name = N'FromDocType')
  UPDATE [dbo].[EInvoiceSelfBilledLink] SET FromDocType = 'SB' WHERE FromDocType IS NULL
GO

if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[EInvoiceSelfBilledLink]') and name = N'ToDocDtlKey')
  ALTER TABLE [dbo].[EInvoiceSelfBilledLink] ADD [ToDocDtlKey] [bigint] NULL
GO

if not exists (select * from dbo.sysindexes where name = N'IX_Item_IsActive_StockControl')
CREATE NONCLUSTERED INDEX [IX_Item_IsActive_StockControl] ON [dbo].[Item]
(
	[IsActive] ASC,
	[StockControl] ASC
)
INCLUDE([ItemCode],[CostingMethod]) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_ItemUOM_ItemCode_UOM')
CREATE NONCLUSTERED INDEX [IX_ItemUOM_ItemCode_UOM] ON [dbo].[ItemUOM]
(
	[ItemCode] ASC,
	[UOM] ASC
)
INCLUDE([Cost]) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_StockDTL_DocDate_BatchNo_ItemCode_UOM_Location')
CREATE NONCLUSTERED INDEX [IX_StockDTL_DocDate_BatchNo_ItemCode_UOM_Location] ON [dbo].[StockDTL]
(
	[DocDate] ASC,
	[BatchNo] ASC,
	[ItemCode] ASC,
	[UOM] ASC,
	[Location] ASC
)
INCLUDE([Qty],[AdjustedCost],[ReportingTotalCost]) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_Item_StockControl_IsActive_CostingMethod_ItemCode')
CREATE NONCLUSTERED INDEX [IX_Item_StockControl_IsActive_CostingMethod_ItemCode] ON [dbo].[Item]
(
	[StockControl] ASC,
	[IsActive] ASC,
	[CostingMethod] ASC,
	[ItemCode] ASC
) ON [PRIMARY]

if not exists (select * from dbo.sysindexes where name = N'IX_StockDTL_ItemCode_UOM_StockDTLKey_BatchNo_DocDate_DocKey_Location')
CREATE NONCLUSTERED INDEX [IX_StockDTL_ItemCode_UOM_StockDTLKey_BatchNo_DocDate_DocKey_Location] ON [dbo].[StockDTL]
(
	[ItemCode] ASC,
	[UOM] ASC,
	[StockDTLKey] ASC,
	[BatchNo] ASC,
	[DocDate] ASC,
	[DocKey] ASC,
	[Location] ASC,
	[ProjNo] ASC,
	[DeptNo] ASC,
	[Seq] ASC,
	[DocType] ASC,
	[DtlKey] ASC,
	[Qty] ASC,
	[CostType] ASC,
	[LastModified] ASC,
	[ReferTo] ASC
)
INCLUDE([AdjustedCost],[DocInfo],[ReportingCost],[ReportingTotalCost],[ReportingFIFOCost],[ReportingBalanceFIFO]) ON [PRIMARY]

UPDATE REGISTRY SET RegValue = '2.2.77' WHERE RegID = 2
GO�/* Drop Previous Index */
if exists (select * from sys.indexes where Name = 'IX_PBalance')
	DROP INDEX IX_PBalance ON dbo.PBalance
GO
if exists (select * from sys.indexes where Name = 'IX_OBalance')
	DROP INDEX IX_OBalance ON dbo.OBalance
GO
if exists (select * from sys.indexes where Name = 'IX_StockPBalance')
	DROP INDEX IX_StockPBalance ON dbo.StockPBalance
GO
/* Drop Duplicate Index in GLDTL*/
if exists (select * from sys.indexes where Name = 'IX_GLDTL_SourceKey_PaymentDocKey')
	DROP INDEX IX_GLDTL_SourceKey_PaymentDocKey ON dbo.GLDTL
GO

/* Add Computed Column */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PBalance]') and name = N'Computed_PeriodNo_AccNo_ProjNo_DeptNo')
	ALTER TABLE [dbo].[PBalance] ADD Computed_PeriodNo_AccNo_ProjNo_DeptNo AS ( CAST(PeriodNo as varchar(5)) + char(9) + AccNo + char(9) + ISNULL(ProjNo, '') + char(9) + ISNULL(DeptNo, ''))
GO

/* Add Computed Column Index */
if not exists (select * from sys.indexes where Name = 'IX_PBalance_Computed_PeriodNo_AccNo_ProjNo_DeptNo')
	CREATE INDEX IX_PBalance_Computed_PeriodNo_AccNo_ProjNo_DeptNo ON dbo.PBalance (Computed_PeriodNo_AccNo_ProjNo_DeptNo)
GO

/* Add Unique Index */
if not exists (select * from sys.indexes where Name = 'UIX_PBalance_PeriodNo_AccNo_ProjNo_DeptNo')
	CREATE UNIQUE INDEX UIX_PBalance_PeriodNo_AccNo_ProjNo_DeptNo ON dbo.PBalance (PeriodNo, AccNo, ProjNo, DeptNo)
GO
if not exists (select * from sys.indexes where Name = 'UIX_OBalance_PeriodNo_AccNo_ProjNo_DeptNo')
	CREATE UNIQUE INDEX UIX_OBalance_PeriodNo_AccNo_ProjNo_DeptNo ON dbo.OBalance (PeriodNo, AccNo, ProjNo, DeptNo)
GO
if not exists (select * from sys.indexes where Name = 'UIX_StockPBalance_StockSetKey_PeriodNo_ProjNo_DeptNo')
	CREATE UNIQUE INDEX UIX_StockPBalance_StockSetKey_PeriodNo_ProjNo_DeptNo ON dbo.StockPBalance (StockSetKey, PeriodNo, ProjNo, DeptNo)
GO

/* Add SubmitEInvoice, EInvoiceStatus, EInvoiceAIPSubmissionDateTime, EInvoiceUuid, EInvoiceValidatedDateTime, EInvoiceValidationLink, EInvoiceError, EInvoiceCancelDateTime, EInvoiceTraceId, AuthorisationNumberForCertifiedExporter, DeliveryTaxEntityID, Incoterms Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('ARCN', 'SubmitEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('ARCN', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'EInvoiceError', 'varchar(max) NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'EInvoiceCancelDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'EInvoiceTraceId', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'EInvoiceCancelReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'CIDocNo', '[dbo].[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'CIDocKey', 'bigint NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'EInvoiceIssueDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'ConsolidatedEInvoice', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('ARCN', 'EInvoiceSubmissionUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('ARCNDTL', 'SalesExemptionNo', '[d_SalesExemptionNo] NULL', '', '')
INSERT @ListTable VALUES('ARCNDTL', 'Classification', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('CP', 'EInvoiceSelfBilledDocNo', '[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'EInvoiceSelfBilledDocNo', '[d_DocNo] NULL', '', '')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

Update ARCN Set SubmitEInvoice = B.SubmitEInvoice, EInvoiceStatus = B.EInvoiceStatus, EInvoiceAIPSubmissionDateTime = B.EInvoiceAIPSubmissionDateTime, EInvoiceUuid = B.EInvoiceUuid, EInvoiceValidatedDateTime = B.EInvoiceValidatedDateTime, EInvoiceValidationLink = B.EInvoiceValidationLink, EInvoiceError = B.EInvoiceError, EInvoiceCancelDateTime = B.EInvoiceCancelDateTime, EInvoiceTraceId = B.EInvoiceTraceId, EInvoiceCancelReason = B.EInvoiceCancelReason, CIDocNo = B.CIDocNo, CIDocKey = B.CIDocKey, EInvoiceIssueDateTime = B.EInvoiceIssueDateTime, ConsolidatedEInvoice = B.ConsolidatedEInvoice, EInvoiceSubmissionUuid = B.EInvoiceSubmissionUuid From ARCN A INNER JOIN CN B ON A.SourceKey=B.DocKey Where A.SourceType='CN'
GO

Update ARCNDTL Set SalesExemptionNo = B.SalesExemptionNo, Classification = B.Classification From ARCNDTL A INNER JOIN CNDTL B ON A.SourceDtlKey=B.DtlKey
GO

-- Update the table with the modified JSON
UPDATE Settings SET Value = REPLACE(Value, 'PurhcaseInvoicePVNoFollowPINo', 'PurchaseInvoicePVNoFollowPINo') WHERE Name = 'PurchaseInvoice' AND Value LIKE '%"PurhcaseInvoicePVNoFollowPINo"%'

UPDATE REGISTRY SET RegValue = '2.2.78' WHERE RegID = 2
GO�/* Add RoundAdj, FinalTotal Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('EInvoiceConsolidatedInvoice', 'RoundAdj', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('EInvoiceConsolidatedInvoice', 'FinalTotal', '[dbo].[d_Money] NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE EInvoiceConsolidatedInvoice SET RoundAdj = 0 WHERE RoundAdj IS NULL
GO

UPDATE EInvoiceConsolidatedInvoice SET FinalTotal = NetTotal WHERE FinalTotal IS NULL 
GO

UPDATE REGISTRY SET RegValue = '2.2.79' WHERE RegID = 2
GO�/* Extend ReferenceNumberOfCustomsFormNo1And9, FreeTradeAgreementInformation, AuthorisationNumberForCertifiedExporter, ReferenceNumberOfCustomsFormNo2 Columns Length */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('IV', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(100) NULL')
INSERT @ListTable VALUES('CS', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(100) NULL')
INSERT @ListTable VALUES('DN', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(100) NULL')
INSERT @ListTable VALUES('CN', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(100) NULL')
INSERT @ListTable VALUES('EInvoiceSelfBilled', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(100) NULL')
INSERT @ListTable VALUES('IV', 'FreeTradeAgreementInformation', 'varchar(100) NULL')
INSERT @ListTable VALUES('CS', 'FreeTradeAgreementInformation', 'varchar(100) NULL')
INSERT @ListTable VALUES('DN', 'FreeTradeAgreementInformation', 'varchar(100) NULL')
INSERT @ListTable VALUES('CN', 'FreeTradeAgreementInformation', 'varchar(100) NULL')
INSERT @ListTable VALUES('EInvoiceSelfBilled', 'FreeTradeAgreementInformation', 'varchar(100) NULL')
INSERT @ListTable VALUES('IV', 'AuthorisationNumberForCertifiedExporter', 'varchar(100) NULL')
INSERT @ListTable VALUES('CS', 'AuthorisationNumberForCertifiedExporter', 'varchar(100) NULL')
INSERT @ListTable VALUES('DN', 'AuthorisationNumberForCertifiedExporter', 'varchar(100) NULL')
INSERT @ListTable VALUES('CN', 'AuthorisationNumberForCertifiedExporter', 'varchar(100) NULL')
INSERT @ListTable VALUES('EInvoiceSelfBilled', 'AuthorisationNumberForCertifiedExporter', 'varchar(100) NULL')
INSERT @ListTable VALUES('IV', 'ReferenceNumberOfCustomsFormNo2', 'varchar(100) NULL')
INSERT @ListTable VALUES('CS', 'ReferenceNumberOfCustomsFormNo2', 'varchar(100) NULL')
INSERT @ListTable VALUES('DN', 'ReferenceNumberOfCustomsFormNo2', 'varchar(100) NULL')
INSERT @ListTable VALUES('CN', 'ReferenceNumberOfCustomsFormNo2', 'varchar(100) NULL')
INSERT @ListTable VALUES('EInvoiceSelfBilled', 'ReferenceNumberOfCustomsFormNo2', 'varchar(100) NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.2.80' WHERE RegID = 2
GOt/* Add TINOwnershipValidated Column in Profile */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'TINOwnershipValidated')
  ALTER TABLE [dbo].[Profile] ADD [TINOwnershipValidated] [bit] NULL
GO

/* Add Signature Column in Profile */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Profile]') and name = N'Signature')
  ALTER TABLE [dbo].[Profile] ADD [Signature] [varbinary](max) NULL
GO

/* DROP Computed Column Index */
if exists (select * from sys.indexes where Name = 'IX_PBalance_Computed_PeriodNo_AccNo_ProjNo_DeptNo')
	DROP INDEX IX_PBalance_Computed_PeriodNo_AccNo_ProjNo_DeptNo ON dbo.PBalance
GO
/* DROP Computed Column */
if exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PBalance]') and name = N'Computed_PeriodNo_AccNo_ProjNo_DeptNo')
	ALTER TABLE [dbo].[PBalance] DROP COLUMN Computed_PeriodNo_AccNo_ProjNo_DeptNo
GO
/* Add Computed Column */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[PBalance]') and name = N'Computed_PeriodNo_AccNo_ProjNo_DeptNo')
	ALTER TABLE [dbo].[PBalance] ADD Computed_PeriodNo_AccNo_ProjNo_DeptNo AS ( CAST(PeriodNo as varchar(5)) + char(9) + RTRIM(AccNo) + char(9) + RTRIM(ISNULL(ProjNo, '')) + char(9) + RTRIM(ISNULL(DeptNo, '')))
GO
/* Add Computed Column Index */
if not exists (select * from sys.indexes where Name = 'IX_PBalance_Computed_PeriodNo_AccNo_ProjNo_DeptNo')
	CREATE INDEX IX_PBalance_Computed_PeriodNo_AccNo_ProjNo_DeptNo ON dbo.PBalance (Computed_PeriodNo_AccNo_ProjNo_DeptNo)
GO

UPDATE REGISTRY SET RegValue = '2.2.81' WHERE RegID = 2
GO8/* Add DoNotSubmitEInvoice Column in Debtor */
if not exists (select * from dbo.syscolumns where id = object_id(N'[dbo].[Debtor]') and name = N'DoNotSubmitEInvoice')
  ALTER TABLE [dbo].[Debtor] ADD [DoNotSubmitEInvoice] [dbo].[d_Boolean] NULL
GO

UPDATE REGISTRY SET RegValue = '2.2.82' WHERE RegID = 2
GO	#/* Extend ReferenceNumberOfCustomsFormNo1And9, ReferenceNumberOfCustomsFormNo2, FreeTradeAgreementInformation, AuthorisationNumberForCertifiedExporter Columns Length */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('IV', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(1000) NULL')
INSERT @ListTable VALUES('CS', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(1000) NULL')
INSERT @ListTable VALUES('DN', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(1000) NULL')
INSERT @ListTable VALUES('CN', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(1000) NULL')
INSERT @ListTable VALUES('EInvoiceSelfBilled', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(1000) NULL')
INSERT @ListTable VALUES('IV', 'ReferenceNumberOfCustomsFormNo2', 'varchar(1000) NULL')
INSERT @ListTable VALUES('CS', 'ReferenceNumberOfCustomsFormNo2', 'varchar(1000) NULL')
INSERT @ListTable VALUES('DN', 'ReferenceNumberOfCustomsFormNo2', 'varchar(1000) NULL')
INSERT @ListTable VALUES('CN', 'ReferenceNumberOfCustomsFormNo2', 'varchar(1000) NULL')
INSERT @ListTable VALUES('EInvoiceSelfBilled', 'ReferenceNumberOfCustomsFormNo2', 'varchar(1000) NULL')
INSERT @ListTable VALUES('IV', 'FreeTradeAgreementInformation', 'varchar(300) NULL')
INSERT @ListTable VALUES('CS', 'FreeTradeAgreementInformation', 'varchar(300) NULL')
INSERT @ListTable VALUES('DN', 'FreeTradeAgreementInformation', 'varchar(300) NULL')
INSERT @ListTable VALUES('CN', 'FreeTradeAgreementInformation', 'varchar(300) NULL')
INSERT @ListTable VALUES('EInvoiceSelfBilled', 'FreeTradeAgreementInformation', 'varchar(300) NULL')
INSERT @ListTable VALUES('IV', 'AuthorisationNumberForCertifiedExporter', 'varchar(300) NULL')
INSERT @ListTable VALUES('CS', 'AuthorisationNumberForCertifiedExporter', 'varchar(300) NULL')
INSERT @ListTable VALUES('DN', 'AuthorisationNumberForCertifiedExporter', 'varchar(300) NULL')
INSERT @ListTable VALUES('CN', 'AuthorisationNumberForCertifiedExporter', 'varchar(300) NULL')
INSERT @ListTable VALUES('EInvoiceSelfBilled', 'AuthorisationNumberForCertifiedExporter', 'varchar(300) NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/*Change Mail Message column size to max*/
if EXISTS (SELECT * FROM dbo.syscolumns WHERE id = object_id(N'[dbo].[Mail]') AND name = N'Message')
	ALTER TABLE [dbo].[Mail] ALTER COLUMN [Message] nvarchar(max);
GO

/* Add Mail FromName column if it doesn�t exist */
IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Mail]') AND name = N'FromName')
    ALTER TABLE [dbo].[Mail] ADD [FromName] [nvarchar](4000) NULL;
GO

/* Add Mail FromEmail column if it doesn�t exist */
IF NOT EXISTS (SELECT * FROM dbo.syscolumns WHERE id = OBJECT_ID(N'[dbo].[Mail]') AND name = N'FromEmail')
    ALTER TABLE [dbo].[Mail] ADD [FromEmail] [nvarchar](4000) NULL;
GO

/* Create EInvoiceEmail and EInvoiceQueue and MailQueue and MailQueueDtl tables to stored sent emails */
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[EInvoiceEmail]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[EInvoiceEmail](
        [DocType] [dbo].[d_DocType] NOT NULL,
		[BCCEmail] [varchar](4000) NULL,
		[Subject] [nvarchar](255) NULL,
		[Body] [nvarchar](max) NULL,
		[ReportName] [nvarchar](100) NOT NULL,
		[Enabled] [dbo].[d_Boolean] NOT NULL,
		CONSTRAINT [PK_EInvoiceEmail_DocType] PRIMARY KEY CLUSTERED 
		(
			[DocType] ASC
		) ON [PRIMARY]
	) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[EInvoiceQueue]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
    CREATE TABLE [dbo].[EInvoiceQueue] (
        [DocType] [dbo].[d_DocType] NOT NULL,
        [DocKey] [bigint] NOT NULL,
    ) ON [PRIMARY];
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE Name = 'IX_EInvoiceQueue_DocType_DocKey')
	CREATE INDEX IX_EInvoiceQueue_DocType_DocKey ON EInvoiceQueue (DocType, DocKey);

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[MailQueue]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[MailQueue] (
		[Id] [bigint] NOT NULL,
		[CreatedTime] datetime NOT NULL DEFAULT GetDate(),
		[FromName] [nvarchar](4000) NULL,
		[FromEmail] [nvarchar](4000) NULL,
		[Email] varchar(4000) NULL,
		[CCEmail] varchar(4000) NULL,
		[BCCEmail] varchar(4000) NULL,
		[RecipientName] varchar(4000) NULL,
		[Subject] nvarchar(255) NULL,
		[Message] nvarchar(max) NULL,
		[NextRetryTime] datetime NOT NULL DEFAULT GetDate(),
		[RetryCount] [int] NOT NULL,
		[ErrorMessage] nvarchar(4000) NULL,
		CONSTRAINT [PK_MailQueue_Id] PRIMARY KEY CLUSTERED 
		(
			[Id] ASC
		) ON [PRIMARY]
	) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[MailQueueDtl]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[MailQueueDtl] (
		[Id] [bigint] NOT NULL IDENTITY(1,1),
		[MailQueueId] [bigint] NOT NULL,
		[Filename] nvarchar(255) NOT NULL,
		[Binary] varbinary(max) NULL,
		CONSTRAINT [PK_MailQueueDtl_Id] PRIMARY KEY CLUSTERED 
		(
			[Id] ASC
		) ON [PRIMARY]
	) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[FK_MailQueueDtl_MailQueueId]') AND objectproperty(id, N'IsForeignKey') = 1) 
	ALTER TABLE [dbo].[MailQueueDtl] WITH CHECK ADD CONSTRAINT [FK_MailQueueDtl_MailQueueId] FOREIGN KEY([MailQueueId])
	REFERENCES [dbo].[MailQueue] ([Id])
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE Name = 'IX_MailQueueDtl_MailQueueId')
    CREATE INDEX IX_MailQueueDtl_MailQueueId ON MailQueueDtl ([MailQueueId]);
	
/* Add Withholding Tax Version column */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('ARInvoice', 'WithholdingTaxVersion', 'int NULL', '2', 'int NOT NULL')
INSERT @ListTable VALUES('ARDN', 'WithholdingTaxVersion', 'int NULL', '2', 'int NOT NULL')
INSERT @ListTable VALUES('IV', 'WithholdingTaxVersion', 'int NULL', '2', 'int NOT NULL')
INSERT @ListTable VALUES('CS', 'WithholdingTaxVersion', 'int NULL', '2', 'int NOT NULL')
INSERT @ListTable VALUES('DN', 'WithholdingTaxVersion', 'int NULL', '2', 'int NOT NULL')
INSERT @ListTable VALUES('APInvoice', 'WithholdingTaxVersion', 'int NULL', '2', 'int NOT NULL')
INSERT @ListTable VALUES('APDN', 'WithholdingTaxVersion', 'int NULL', '2', 'int NOT NULL')
INSERT @ListTable VALUES('PI', 'WithholdingTaxVersion', 'int NULL', '2', 'int NOT NULL')
INSERT @ListTable VALUES('CP', 'WithholdingTaxVersion', 'int NULL', '2', 'int NOT NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.2.83' WHERE RegID = 2
GO�/* Drop EInvoiceCompanyResultInJson Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40))

INSERT @ListTable VALUES('Profile', 'EInvoiceCompanyResultInJson')

DECLARE @sql NVARCHAR(300)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] DROP COLUMN [' + @colName + ']'
    
  Exec sp_executesql @sql
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.2.84' WHERE RegID = 2
GO�/* Increase d_DocNos size to 100 characters */
DECLARE @UDDTName nvarchar(100)
DECLARE @UDDTType nvarchar(10)
DECLARE @NewLength bigint
DECLARE @MasterTable nvarchar(100)

SET @UDDTName = 'd_DocNos'
SET @UDDTType = 'nvarchar'
SET @NewLength = 100
SET @MasterTable = ''

/* Check User-Defined Data Type exist or not */
DECLARE @UDDTExist int
Select @UDDTExist = count(*) from sys.types where name=@UDDTName

IF @UDDTExist = 0
    RETURN

/* Check data type */
IF @UDDTType <> 'char' AND @UDDTType <> 'nchar' AND @UDDTType <> 'varchar' AND @UDDTType <> 'nvarchar'
    RETURN

DECLARE @RealNewLength bigint
SET @RealNewLength = @NewLength

/* Check current length and new length is same or not */
DECLARE @maxLength bigint
Select @maxLength = max_length from sys.types where name=@UDDTName
SET @NewLength = @NewLength * 2

IF @maxLength = @NewLength
    RETURN

DECLARE @minSize bigint
DECLARE @maxSize bigint
DECLARE @UDDTGUID [uniqueidentifier] 
DECLARE @TransactionID BIGINT

SET @UDDTGUID = N'7A31626C-A085-43E7-A180-40D187E950F8'
SELECT @TransactionID = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION

SET @minSize = 8 * 2

SET @maxSize = 500 * 2

BEGIN TRANSACTION

/* Change User-Defined Data Type size */
IF (@NewLength >= @minSize AND @NewLength <= @maxSize) AND (@maxLength > 0 AND @maxLength < 1001)
BEGIN
	DECLARE @UDDTTempName NVARCHAR(150)
	DECLARE @sql NVARCHAR(1000)
	DECLARE @cur_item cursor

	SET @UDDTTempName = N'd_' + @UDDTName + 'Temp'
	SET @sql = N'' + @UDDTType + ' (' + CAST((@NewLength / 2) as nvarchar) + ')'
	EXEC sp_addtype @UDDTTempName, @sql

	/* Find Foreign Key which combine with accno (two columns) and alter column with a new user defined field */
	DECLARE @ListTable3 TABLE(TableName nvarchar(80), ColumnName nvarchar(80), ColumnName2 nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), 
	ParentColumnName nvarchar(80), ParentColumnName2 nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	insert into @ListTable3 
	SELECT tab1.name, col1.name AS ColumnName, tempfkc.ColumnName AS ColumnName2, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
	tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.ParentColumnName2, tempfkc.update_referential_action, tempfkc.delete_referential_action,
	tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc 
	From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
	INNER JOIN 
	(
		Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab.name AS ParentTableName, COL_NAME(fkc2.parent_object_id,fkc2.parent_column_id) AS ColumnName, 
		col.name AS ParentColumnName, col2.name AS ParentColumnName2, fk.update_referential_action, fk.delete_referential_action, fk.update_referential_action_desc, fk.delete_referential_action_desc 
		From sys.foreign_key_columns fkc INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id 
		INNER JOIN sys.tables tab ON tab.object_id = fkc.referenced_object_id
		INNER JOIN sys.columns col ON col.column_id = referenced_column_id AND col.object_id = tab.object_id
		INNER JOIN sys.types typ ON col.user_type_id = typ.user_type_id 
		INNER JOIN sys.foreign_key_columns fkc2 ON fkc.constraint_object_id = fkc2.constraint_object_id AND fkc.referenced_column_id < fkc2.referenced_column_id
		INNER JOIN sys.columns col2 ON col2.column_id = fkc2.referenced_column_id AND col2.object_id = tab.object_id
		INNER JOIN sys.types typ2 ON col2.user_type_id = typ2.user_type_id 
		INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id
		WHERE col.name != col2.name AND (typ.name = @UDDTName OR typ2.name = @UDDTName)
	) tempfkc ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id

	/* Drop Foreign Key which combine with accno (two columns) and alter column with a new user defined field */
	DECLARE @tableName  NVARCHAR(80)
	DECLARE @colName  NVARCHAR(80)
	DECLARE @colName2  NVARCHAR(80)
	DECLARE @null  nvarchar(10)
	DECLARE @fkName  NVARCHAR(160)
	DECLARE @parentTableName  NVARCHAR(80)
	DECLARE @parentColName  NVARCHAR(80)
	DECLARE @parentColName2  NVARCHAR(80)
	DECLARE @updateAction tinyint
	DECLARE @deleteAction tinyint

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable3
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	DECLARE @ListTable TABLE(TableName nvarchar(80), ColumnName nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), ParentColumnName nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	insert into @ListTable Select tab1.name, col1.name, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
	tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.update_referential_action, tempfkc.delete_referential_action,
	tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc
	From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
	INNER JOIN sys.types typ1 ON col1.user_type_id = typ1.user_type_id 
	LEFT OUTER JOIN 
	(Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab2.name AS ParentTableName, col2.name AS ParentColumnName, fk.update_referential_action, fk.delete_referential_action,
	fk.update_referential_action_desc, fk.delete_referential_action_desc From sys.foreign_key_columns fkc 
	INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id INNER JOIN sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
	INNER JOIN sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
	INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id)tempfkc
	ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id
	Where typ1.name=@UDDTName

	/* Find Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	DECLARE @ListTable2 TABLE(TableName nvarchar(80), ColumnName nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), ParentColumnName nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	IF @MasterTable <> ''
	BEGIN
		insert into @ListTable2 Select tab1.name, col1.name, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
		tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.update_referential_action, tempfkc.delete_referential_action, 
		tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc 
		From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
		INNER JOIN sys.types typ1 ON col1.user_type_id = typ1.user_type_id 
		INNER JOIN 
		(Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab2.name AS ParentTableName, col2.name AS ParentColumnName,
		fk.update_referential_action, fk.delete_referential_action, fk.update_referential_action_desc, fk.delete_referential_action_desc 
		From sys.foreign_key_columns fkc INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id 
		INNER JOIN sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
		INNER JOIN sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
		LEFT OUTER JOIN sys.foreign_key_columns fkc3 ON fkc.constraint_object_id = fkc3.constraint_object_id AND fkc3.referenced_column_id = 2
		INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id
		Where tab2.Name <> @MasterTable AND fkc3.constraint_object_id IS NULL
		)tempfkc ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id
		Where typ1.name=@UDDTName
	END

	/* Find index master which related with User-Defined Data Type */
	DECLARE @IndexTable TABLE(IndexName nvarchar(1000), TableName nvarchar(80), IndexUnique nvarchar(6), IndexTypeDesc nvarchar(80), IndexIsDisabled int, FileGroupName nvarchar(80), IndexColumns nvarchar(max), IncludedColumns nvarchar(max), isPrimaryKey int, isUniqueCons int)

	insert into @IndexTable select distinct ix.name, tab.name, case when ix.is_unique = 1 then 'UNIQUE ' else '' END as indexUnique, ix.type_desc, ix.is_disabled, FILEGROUP_NAME(ix.data_space_id) FileGroupName, '' AS indexColumns, '' AS includedColumns, ix.is_primary_key, ix.is_unique_constraint 
	from sys.indexes ix 
	inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
	inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
	Where ix.type>0 and ix.is_hypothetical=0 and ix.is_primary_key=0 and t.name=@UDDTName

	-- Find Primary Key index
	insert into @IndexTable select distinct ix.name, tab.name, case when ix.is_unique = 1 then 'UNIQUE ' else '' END as indexUnique, ix.type_desc, ix.is_disabled, FILEGROUP_NAME(ix.data_space_id) FileGroupName, '' AS indexColumns, '' AS includedColumns, ix.is_primary_key, ix.is_unique_constraint 
	from sys.indexes ix 
	inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
	inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
	inner join sys.key_constraints pkc on pkc.parent_object_id = tab.object_id and pkc.parent_object_id = ixCol.object_id
	Where ix.type>0 and ix.is_hypothetical=0 and ix.is_primary_key=1 and OBJECTPROPERTY(pkc.object_id, N'IsPrimaryKey') = 1 and t.name=@UDDTName

	DECLARE @indexName NVARCHAR(1000)
	DECLARE @indexTableName NVARCHAR(80)
	/* index detail */
	DECLARE @IndexColumn nvarchar(80)
	DECLARE @IsDescendingKey int 
	DECLARE @IsIncludedColumn int
	DECLARE @cur_IndexCol cursor
	DECLARE @IndexColumns NVARCHAR(max)
	DECLARE @IncludedColumns NVARCHAR(max)
	DECLARE @IsPrimaryKey int
	DECLARE @isUniqueCons int

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName From @IndexTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  /* Find index detail column which related with User-Defined Data Type */
	  set @IndexColumns=''
	  set @IncludedColumns=''

	  SET @cur_IndexCol = CURSOR FAST_FORWARD FOR SELECT col.name, ixc.is_descending_key, ixc.is_included_column
	  from sys.tables tb 
	  inner join sys.indexes ix on tb.object_id=ix.object_id
	  inner join sys.index_columns ixc on ix.object_id=ixc.object_id and ix.index_id= ixc.index_id
	  inner join sys.columns col on ixc.object_id =col.object_id and ixc.column_id=col.column_id
	  where ix.type>0 
	  and tb.name=@indexTableName and ix.name=@indexName
	  order by ixc.index_column_id

	  OPEN @cur_IndexCol
	  FETCH NEXT FROM @cur_IndexCol INTO @IndexColumn, @IsDescendingKey, @IsIncludedColumn
	  
	  WHILE @@FETCH_STATUS = 0
	  BEGIN
		if @IsIncludedColumn=0 
		  set @IndexColumns=@IndexColumns + @IndexColumn  + case when @IsDescendingKey = 1  then ' DESC, ' else  ' ASC, ' end
		else 
		  set @IncludedColumns=@IncludedColumns  + @IndexColumn  +', ' 

		FETCH NEXT FROM @cur_IndexCol INTO @IndexColumn, @IsDescendingKey, @IsIncludedColumn
	  END

	  CLOSE @cur_IndexCol
	  DEALLOCATE @cur_IndexCol
	  
	  /* Update index and included columns in index table */
	  Set @IndexColumns = substring(@IndexColumns, 1, len(@IndexColumns) - 1)
	  Set @IncludedColumns = case when len(@IncludedColumns) >0 then substring(@IncludedColumns, 1, len(@IncludedColumns) - 1) else '' end

	  Update @IndexTable Set IndexColumns = @IndexColumns, IncludedColumns = @IncludedColumns Where IndexName = @indexName AND TableName = @indexTableName

	  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find statistics master which related with User-Defined Data Type */
	DECLARE @StatisticsTable TABLE(StatisticsName nvarchar(1000), TableName nvarchar(80), StatisticsColumns nvarchar(max))

	insert into @StatisticsTable select distinct st.name, tab.name, '' AS statisticsColumns 
	from sys.stats st 
	inner join sys.stats_columns stCol on  st.object_id = stCol.object_id and st.stats_id = stCol.stats_id 
	inner join sys.columns col on st.object_id = col.object_id and stCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on st.object_id = tab.object_id and col.object_id = tab.object_id
	Where st.auto_created=0 and st.user_created=1 and t.name=@UDDTName

	DECLARE @statisticsName NVARCHAR(1000)
	DECLARE @statisticsTableName NVARCHAR(80)
	/* statistics detail */
	DECLARE @StatisticsColumn nvarchar(80)
	DECLARE @cur_StatisticsCol cursor
	DECLARE @StatisticsColumns NVARCHAR(max)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  /* Find statistics detail column which related with User-Defined Data Type */
	  set @StatisticsColumns=''

	  SET @cur_StatisticsCol = CURSOR FAST_FORWARD FOR SELECT col.name
	  from sys.tables tb 
	  inner join sys.stats st on tb.object_id=st.object_id
	  inner join sys.stats_columns stc on st.object_id=stc.object_id and st.stats_id= stc.stats_id
	  inner join sys.columns col on stc.object_id =col.object_id and stc.column_id=col.column_id
	  and tb.name=@statisticsTableName and st.name=@statisticsName
	  order by stc.stats_column_id

	  OPEN @cur_StatisticsCol
	  FETCH NEXT FROM @cur_StatisticsCol INTO @StatisticsColumn
	  
	  WHILE @@FETCH_STATUS = 0
	  BEGIN
		set @StatisticsColumns=@StatisticsColumns + @StatisticsColumn  + ', '

		FETCH NEXT FROM @cur_StatisticsCol INTO @StatisticsColumn
	  END

	  CLOSE @cur_StatisticsCol
	  DEALLOCATE @cur_StatisticsCol
	  
	  /* Update statistics columns in statistics table */
	  Set @StatisticsColumns = substring(@StatisticsColumns, 1, len(@StatisticsColumns) - 1)

	  Update @StatisticsTable Set StatisticsColumns = @StatisticsColumns Where StatisticsName = @statisticsName AND TableName = @statisticsTableName

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find Procedure which related with User-Defined Data Type */
	DECLARE @ProcedureTable TABLE(ProcName nvarchar(200), ProcDefine nvarchar(max))

	insert into @ProcedureTable Select o.name, m.definition
	FROM sys.sql_modules m 
	INNER JOIN sys.procedures o 
	ON m.object_id=o.object_id
	Where o.name != 'bsp_ChangeUDDTSize' AND m.definition Like '%' + @UDDTName + '%'

	/* Find View and Function which related with User-Defined Data Type */
	DECLARE @ViewTable TABLE(ViewName nvarchar(200), ViewType nvarchar(2), ViewDefine nvarchar(max), IsProcess int)

	insert into @ViewTable select o.name, o.type, m.definition, 0 as isProcess from sys.objects o 
	inner join sys.sql_modules m on o.object_id = m.object_id
	Where o.object_id in (select c.object_id from sys.columns c 
	inner join sys.types t on c.user_type_id = t.user_type_id 
	Where t.name=@UDDTName) and o.type in ('TF', 'V')

	/* Drop statistics constraint which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop statistics first
	  set @sql = 'if exists (select * from sys.stats where name = N''' + @statisticsName + ''') DROP STATISTICS [dbo].[' + @statisticsTableName + '].[' + @statisticsName + ']'
	  Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Drop index or unique constraint which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  -- drop index first
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 0
		  BEGIN
			  set @sql = 'if exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') DROP INDEX [' + @indexName + '] ON [dbo].[' + @indexTableName + ']'
			  Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Drop Procedure which related with User-Defined Data Type */
	DECLARE @procName  NVARCHAR(200)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ProcName From @ProcedureTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @procName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop procedure first
	  set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @procName + ']'') and OBJECTPROPERTY(id, N''IsProcedure'') = 1) DROP PROCEDURE [dbo].[' + @procName + ']'
		Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @procName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop View and Function which related with User-Defined Data Type */
	DECLARE @viewName  NVARCHAR(200)
	DECLARE @viewType  NVARCHAR(2)
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ViewName,ViewType From @ViewTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @viewName, @viewType

	WHILE @@FETCH_STATUS = 0
	BEGIN
		if @viewType='V'
			set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @viewName + ']'') and Type in (''V'')) DROP VIEW [dbo].[' + @viewName + ']'
		else
			set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @viewName + ']'') and Type in (''TF'')) DROP FUNCTION [dbo].[' + @viewName + ']'

		Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @viewName, @viewType
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable2
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Drop Primary Key index which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  -- drop index first
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 1
		  BEGIN

				set @sql = 'if exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
			  
			  Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  -- drop index first
		  IF @IsPrimaryKey = 1
		  BEGIN
		  		-- recreate User-Defined Data Type Primary Key
				-- drop constraint first
		  		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
				Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Change new type for Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, Nullable From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- change to new type
	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [' + @UDDTTempName + '] ' + @null
    
	  Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	EXEC sp_droptype @UDDTName

	EXEC sp_rename @UDDTTempName, @UDDTName, N'USERDATATYPE'

	DECLARE @indexUnique nvarchar(6)
	DECLARE @indexTypeDesc  nvarchar(80)
	DECLARE @IndexIsDisabled int
	DECLARE @FileGroupName nvarchar(80)
	DECLARE @IndexScript nvarchar(max)
	DECLARE @StatisticsScript nvarchar(max)

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Create Primary Key index which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, IndexUnique, IndexTypeDesc, IndexIsDisabled, FileGroupName, IndexColumns, IncludedColumns, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  IF @IsPrimaryKey = 1
		  BEGIN
			   -- add back constraint
	   		   set @IndexScript = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] ADD CONSTRAINT [' + @indexName + '] PRIMARY KEY ' + @indexTypeDesc + ' (' + @IndexColumns + ') ' + 
			   case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'
			   Exec sp_executesql @IndexScript

			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 1
		  BEGIN
			  -- add back index or unique constraint
			     set @IndexScript = 'if not exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') ALTER TABLE '+ @indexTableName + ' ADD CONSTRAINT ' + @indexName + ' ' + @indexUnique + ' ' + @indexTypeDesc + ' ('+@IndexColumns+') ' + 
			     case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'

			   Exec sp_executesql @IndexScript
	   
			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Create Foreign Key which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ForeignKeyName, ParentTableName, ParentColumnName, UpdateAction, DeleteAction From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '])'
		if @updateAction = 1
			set @sql = @sql + ' on update cascade'
		if @deleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ForeignKeyName, ParentTableName, ParentColumnName, UpdateAction, DeleteAction From @ListTable2
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '])'
		if @updateAction = 1
			set @sql = @sql + ' on update cascade'
		if @deleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Foreign Key which combine with accno (two columns) */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnName2, ForeignKeyName, ParentTableName, ParentColumnName, ParentColumnName2, UpdateAction, DeleteAction From @ListTable3
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colName2, @fkName, @parentTableName, @parentColName, @parentColName2, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + '], [' + @colName2 + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '], [' + @parentColName2 + '])'
		if @UpdateAction = 1
			set @sql = @sql + ' on update cascade'
		if @DeleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colName2, @fkName, @parentTableName, @parentColName, @parentColName2, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create View and Function which related with User-Defined Data Type */
	DECLARE @sqlDefine  NVARCHAR(max)
	DECLARE @isProcess  int

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ViewName, ViewDefine, IsProcess From @ViewTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @ViewName, @sqlDefine, @isProcess
	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back view
		BEGIN TRY
			IF @isProcess = 0
			BEGIN
				Exec sp_executesql @sqlDefine
				Update @ViewTable Set IsProcess = 1 Where ViewName = @ViewName
			END
		END TRY
		BEGIN CATCH
		END CATCH
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @ViewName, @sqlDefine, @isProcess
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Store Procedure which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ProcDefine From @ProcedureTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @sqlDefine

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back procedure
		Exec sp_executesql @sqlDefine
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @sqlDefine
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Create index or unique constraint which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, IndexUnique, IndexTypeDesc, IndexIsDisabled, FileGroupName, IndexColumns, IncludedColumns, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 0
		  BEGIN
			  -- add back index or unique constraint
			   set @IndexScript = 'if not exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') CREATE '+ @indexUnique + ' ' + @indexTypeDesc + ' INDEX ' + @indexName + ' ON [dbo].'+ @indexTableName + ' ('+@IndexColumns+') '+ 
			   case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'
			   Exec sp_executesql @IndexScript
	   
			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Create statistics constraint which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName, StatisticsColumns From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName, @statisticsColumns

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back statistics constraint
	   set @StatisticsScript = 'if not exists (select * from sys.stats where name = N''' + @statisticsName + ''') CREATE STATISTICS ' + @statisticsName + ' ON [dbo].'+ @statisticsTableName + ' ('+@statisticsColumns+') '
	   Exec sp_executesql @StatisticsScript
	   
	   IF @@ERROR <> 0
	   BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	   END

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName, @statisticsColumns
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES(@UDDTName, @UDDTGUID, REPLACE((SELECT @UDDTName AS UDDTName, @UDDTType AS UDDTType, @RealNewLength AS NewLength, @MasterTable AS MasterTable FOR XML RAW('UDDT'), BINARY BASE64), '&#x00;',''), 'X', 'S', GETDATE(), @TransactionID)
	IF @@ERROR <> 0
	BEGIN
	 RETURN
	END
END

COMMIT TRANSACTION
GO

/* Update PI EInvoiceSelfBilledDocNo to APInvoice (only NULL) */
UPDATE APInvoice SET EInvoiceSelfBilledDocNo=PI.EInvoiceSelfBilledDocNo FROM APInvoice INNER JOIN PI ON APInvoice.SourceKey = PI.DocKey 
WHERE ISNULL(PI.EInvoiceSelfBilledDocNo, '')!='' AND ISNULL(APInvoice.EInvoiceSelfBilledDocNo, '')=''
GO

/* Update CP EInvoiceSelfBilledDocNo to APInvoice (only NULL) */
UPDATE APInvoice SET EInvoiceSelfBilledDocNo=CP.EInvoiceSelfBilledDocNo FROM APInvoice INNER JOIN CP ON APInvoice.SourceKey = CP.DocKey 
WHERE ISNULL(CP.EInvoiceSelfBilledDocNo, '')!='' AND ISNULL(APInvoice.EInvoiceSelfBilledDocNo, '')=''
GO

/* Update PI EInvoiceSelfBilledDocNo from APInvoice (only NULL) */
UPDATE PI SET EInvoiceSelfBilledDocNo=APInvoice.EInvoiceSelfBilledDocNo FROM PI INNER JOIN APInvoice ON PI.DocKey=APInvoice.SourceKey 
WHERE ISNULL(APInvoice.EInvoiceSelfBilledDocNo, '')!='' AND ISNULL(PI.EInvoiceSelfBilledDocNo, '')=''
GO

/* Update CP EInvoiceSelfBilledDocNo from APInvoice (only NULL) */
UPDATE CP SET EInvoiceSelfBilledDocNo=APInvoice.EInvoiceSelfBilledDocNo FROM CP INNER JOIN APInvoice ON CP.DocKey=APInvoice.SourceKey 
WHERE ISNULL(APInvoice.EInvoiceSelfBilledDocNo, '')!='' AND ISNULL(CP.EInvoiceSelfBilledDocNo, '')=''
GO

/* Add e-Invoice License Control, EInvoiceSelfBilledDocNo and Annexure column */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('Profile', 'AccSubKeyID', 'varchar(50) NULL', '', '')
INSERT @ListTable VALUES('Profile', 'AccSubApiKey', 'varchar(50) NULL', '', '')
INSERT @ListTable VALUES('Profile', 'AccSubExpiryTimestamp', 'datetime NULL', '', '')
INSERT @ListTable VALUES('Profile', 'IsSubCompany', 'bit NULL', '0', 'bit NOT NULL')
INSERT @ListTable VALUES('Profile', 'IntermediaryLoginValidated', 'bit NULL', '0', 'bit NOT NULL')
INSERT @ListTable VALUES('Profile', 'IsEInvoiceDeactivated', 'bit NULL', '0', 'bit NOT NULL')
INSERT @ListTable VALUES('CN', 'EInvoiceSubmitDocType', 'varchar(2) NULL', '''02''', 'varchar(2) NOT NULL')
INSERT @ListTable VALUES('ARCN', 'EInvoiceSubmitDocType', 'varchar(2) NULL', '''02''', 'varchar(2) NOT NULL')
INSERT @ListTable VALUES('PR', 'EInvoiceSelfBilledDocNo', '[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('APDN', 'EInvoiceSelfBilledDocNo', '[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('APCN', 'EInvoiceSelfBilledDocNo', '[d_DocNo] NULL', '', '')
INSERT @ListTable VALUES('PI', 'DeliveryTaxEntityID', 'int NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'DeliveryTaxEntityID', 'int NULL', '', '')
INSERT @ListTable VALUES('PI', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(1000) NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'ReferenceNumberOfCustomsFormNo1And9', 'varchar(1000) NULL', '', '')
INSERT @ListTable VALUES('PI', 'Incoterms', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'Incoterms', 'varchar(3) NULL', '', '')
INSERT @ListTable VALUES('PI', 'FreeTradeAgreementInformation', 'varchar(300) NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'FreeTradeAgreementInformation', 'varchar(300) NULL', '', '')
INSERT @ListTable VALUES('PI', 'AuthorisationNumberForCertifiedExporter', 'varchar(300) NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'AuthorisationNumberForCertifiedExporter', 'varchar(300) NULL', '', '')
INSERT @ListTable VALUES('PI', 'ReferenceNumberOfCustomsFormNo2', 'varchar(1000) NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'ReferenceNumberOfCustomsFormNo2', 'varchar(1000) NULL', '', '')
INSERT @ListTable VALUES('PI', 'FreightAllowanceChargeAmt', '[dbo].[d_Money] NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'FreightAllowanceChargeAmt', '[dbo].[d_Money] NULL', '', '')
INSERT @ListTable VALUES('PI', 'FreightAllowanceChargeReason', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'FreightAllowanceChargeReason', 'varchar(100) NULL', '', '')

/* Add WithholdingTaxRoundingMethod in CB, ARAP, Sales, Purchase table */
INSERT @ListTable VALUES('CB', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('ARInvoice', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('ARCN', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('ARDN', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('ARPayment', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('ARRefund', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('APCN', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('APDN', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('APPayment', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('APRefund', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('IV', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('CS', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('DN', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('CN', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('PI', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('CP', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')
INSERT @ListTable VALUES('PR', 'WithholdingTaxRoundingMethod', '[int] NULL', '', '')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add Past Year Price History */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PastYearPriceHistory]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[PastYearPriceHistory](
		[IPKey] [bigint] IDENTITY(1,1) NOT NULL,
		[DtlKey] [bigint] NULL,
		[DocKey] [bigint] NULL,
		[DocType] [dbo].[d_DocType] NULL,
		[AccNo] [dbo].[d_AccNo] NULL,
		[BranchCode] [dbo].[d_BranchCode] NULL,
		[ItemCode] [dbo].[d_ItemCode] NULL,
		[DocNo] [dbo].[d_DocNo] NOT NULL,
		[DocDate] [datetime] NOT NULL,
		[Location] [dbo].[d_Location] NULL,
		[Agent] [dbo].[d_Agent] NULL,
		[Description] [dbo].[d_ItemDescription] NULL,
		[FurtherDescription] [nvarchar](max) NULL,
		[BatchNo] [dbo].[d_BatchNo] NULL,
		[ProjNo] [dbo].[d_Project] NULL,
		[DeptNo] [dbo].[d_Dept] NULL,
		[UOM] [dbo].[d_UOM] NULL,
		[Qty] [dbo].[d_Qty] NULL,
		[Rate] [dbo].[d_Qty] NULL,
		[SmallestQty] [dbo].[d_Qty] NULL,
		[FOCQty] [dbo].[d_Qty] NULL,
		[UnitPrice] [dbo].[d_Price] NULL,
		[Discount] [nvarchar](20) NULL,
		[TaxCode] [dbo].[d_TaxCode] NULL,
		[SubTotal] [dbo].[d_Money] NULL,
		[LastUpdate] [int] NOT NULL,
		[CurrencyRate] [dbo].[d_CurrencyRate] NULL,
		[Cancelled] [dbo].[d_Boolean] NOT NULL DEFAULT 'F',
		[Transfered] [dbo].[d_Boolean] NULL,
		[PackageDocKey] [bigint] NULL,
		[ParentDtlKey] [bigint] NULL,
		[MemberNo] [dbo].[d_MemberNo] NULL,
		[Guid] [uniqueidentifier] NOT NULL DEFAULT (newid()),
		[TaxRate] [dbo].[d_Percent] NULL,
		CONSTRAINT [PK_PastYearPriceHistory_IPKey] PRIMARY KEY CLUSTERED 
	(
		[IPKey] ASC
	),
		CONSTRAINT [UIX_PastYearPriceHistory_Guid] UNIQUE NONCLUSTERED 
	(
		[Guid] ASC
	)ON [PRIMARY]
	)ON [PRIMARY]
GO

if not exists (select * from sys.indexes where Name = 'IX_PastYearPriceHistory_AccNo_ItemCode')
	CREATE NONCLUSTERED INDEX [IX_PastYearPriceHistory_AccNo_ItemCode] ON [dbo].[PastYearPriceHistory] ([AccNo] ASC, [ItemCode] ASC)
GO

if not exists (select * from sys.indexes where Name = 'IX_PastYearPriceHistory_DocType_DocKey')
	CREATE NONCLUSTERED INDEX [IX_PastYearPriceHistory_DocType_DocKey] ON [dbo].[PastYearPriceHistory] ([DocType] ASC, [DocKey] ASC)
GO

if not exists (select * from sys.indexes where Name = 'IX_PastYearPriceHistory_DocType_DtlKey')
	CREATE NONCLUSTERED INDEX [IX_PastYearPriceHistory_DocType_DtlKey] ON [dbo].[PastYearPriceHistory] ([DocType] ASC, [DtlKey] ASC)
GO

if not exists (select * from sys.indexes where Name = 'IX_PastYearPriceHistory_ItemCode_AccNo')
	CREATE NONCLUSTERED INDEX [IX_PastYearPriceHistory_ItemCode_AccNo] ON [dbo].[PastYearPriceHistory] ([ItemCode] ASC, [AccNo] ASC)
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_PastYearPriceHistory_AccNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[PastYearPriceHistory] WITH CHECK ADD  CONSTRAINT [FK_PastYearPriceHistory_AccNo] FOREIGN KEY([AccNo])
	REFERENCES [dbo].[GLMast] ([AccNo])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_PastYearPriceHistory_Branch]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[PastYearPriceHistory] WITH CHECK ADD CONSTRAINT [FK_PastYearPriceHistory_Branch] FOREIGN KEY([AccNo], [BranchCode])
	REFERENCES [dbo].[Branch] ([AccNo], [BranchCode])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_PastYearPriceHistory_DeptNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[PastYearPriceHistory] WITH CHECK ADD CONSTRAINT [FK_PastYearPriceHistory_DeptNo] FOREIGN KEY([DeptNo])
	REFERENCES [dbo].[Dept] ([DeptNo])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_PastYearPriceHistory_ItemBatch]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[PastYearPriceHistory] WITH CHECK ADD CONSTRAINT [FK_PastYearPriceHistory_ItemBatch] FOREIGN KEY([ItemCode], [BatchNo])
	REFERENCES [dbo].[ItemBatch] ([ItemCode], [BatchNo])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_PastYearPriceHistory_ItemUOM]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[PastYearPriceHistory] WITH CHECK ADD CONSTRAINT [FK_PastYearPriceHistory_ItemUOM] FOREIGN KEY([ItemCode], [UOM])
	REFERENCES [dbo].[ItemUOM] ([ItemCode], [UOM])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_PastYearPriceHistory_Location]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[PastYearPriceHistory] WITH CHECK ADD CONSTRAINT [FK_PastYearPriceHistory_Location] FOREIGN KEY([Location])
	REFERENCES [dbo].[Location] ([Location])
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_PastYearPriceHistory_ProjNo]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[PastYearPriceHistory] WITH CHECK ADD CONSTRAINT [FK_PastYearPriceHistory_ProjNo] FOREIGN KEY([ProjNo])
	REFERENCES [dbo].[Project] ([ProjNo])
GO
�4/* Add InvoiceNow Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('Debtor', 'SGEInvoicePeppolID', 'nvarchar(50) NULL')
INSERT @ListTable VALUES('Debtor', 'SGEInvoiceBusinessUnit', 'nvarchar(10) NULL')
INSERT @ListTable VALUES('Creditor', 'SGEInvoicePeppolID', 'nvarchar(50) NULL')
INSERT @ListTable VALUES('Creditor', 'SGEInvoiceBusinessUnit', 'nvarchar(10) NULL')
INSERT @ListTable VALUES('ItemUOM', 'SGEInvoiceUnitCode', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CB', 'SGEInvoiceATDocKey', 'bigint NULL')
INSERT @ListTable VALUES('CB', 'SGEInvoiceATDocNo', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CN', 'SubmitInvoiceNow', '[dbo].[d_Boolean] NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceSendToPeppol', '[dbo].[d_Boolean] NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceDocumentUUID', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceError', 'nvarchar(MAX) NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceTraceId', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceAIPSubmissionDateTime', '[datetime] NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceSubmissionUUID', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoicePeppolError', 'nvarchar(MAX) NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoicePeppolInstanceId', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoicePeppolSubmissionStatus', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceIRASError', 'nvarchar(MAX) NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceIRASTransmissionId', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceIRASSubmissionStatus', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceATDocKey', 'bigint NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceATDocNo', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CP', 'SGEInvoiceATDocKey', 'bigint NULL')
INSERT @ListTable VALUES('CP', 'SGEInvoiceATDocNo', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('CS', 'SGEInvoiceATDocKey', 'bigint NULL')
INSERT @ListTable VALUES('CS', 'SGEInvoiceATDocNo', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('IV', 'SubmitInvoiceNow', '[dbo].[d_Boolean] NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceSendToPeppol', '[dbo].[d_Boolean] NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceDocumentUUID', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceError', 'nvarchar(MAX) NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceTraceId', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceAIPSubmissionDateTime', '[datetime] NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceSubmissionUUID', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoicePeppolError', 'nvarchar(MAX) NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoicePeppolInstanceId', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoicePeppolSubmissionStatus', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceIRASError', 'nvarchar(MAX) NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceIRASTransmissionId', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceIRASSubmissionStatus', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceATDocKey', 'bigint NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceATDocNo', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PI', 'SGEInvoiceDocumentUUID', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PI', 'SGEInvoiceError', 'nvarchar(MAX) NULL')
INSERT @ListTable VALUES('PI', 'SGEInvoiceTraceId', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PI', 'SGEInvoiceAIPSubmissionDateTime', '[datetime] NULL')
INSERT @ListTable VALUES('PI', 'SGEInvoiceSubmissionUUID', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PI', 'SGEInvoiceIRASError', 'nvarchar(MAX) NULL')
INSERT @ListTable VALUES('PI', 'SGEInvoiceIRASTransmissionId', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PI', 'SGEInvoiceIRASSubmissionStatus', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PI', 'SGEInvoiceATDocKey', 'bigint NULL')
INSERT @ListTable VALUES('PI', 'SGEInvoiceATDocNo', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PR', 'SGEInvoiceDocumentUUID', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PR', 'SGEInvoiceError', 'nvarchar(MAX) NULL')
INSERT @ListTable VALUES('PR', 'SGEInvoiceTraceId', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PR', 'SGEInvoiceAIPSubmissionDateTime', '[datetime] NULL')
INSERT @ListTable VALUES('PR', 'SGEInvoiceSubmissionUUID', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PR', 'SGEInvoiceIRASError', 'nvarchar(MAX) NULL')
INSERT @ListTable VALUES('PR', 'SGEInvoiceIRASTransmissionId', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PR', 'SGEInvoiceIRASSubmissionStatus', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('PR', 'SGEInvoiceATDocKey', 'bigint NULL')
INSERT @ListTable VALUES('PR', 'SGEInvoiceATDocNo', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('Profile', 'SGEInvoiceCompanyID', 'nvarchar(50) NULL')
INSERT @ListTable VALUES('Profile', 'SGEInvoiceCompanyAccessKey', 'nvarchar(50) NULL')
INSERT @ListTable VALUES('Profile', 'SGEInvoiceAccKeyID', 'nvarchar(50) NULL')
INSERT @ListTable VALUES('Profile', 'SGEInvoiceAccApiKey', 'nvarchar(50) NULL')
INSERT @ListTable VALUES('Profile', 'SGEInvoiceApiKey', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('Profile', 'SGEInvoiceApiSecret', 'nvarchar(100) NULL')
INSERT @ListTable VALUES('Profile', 'SGEInvoicePeppolID', 'nvarchar(50) NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add InvoiceNow Tables */
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SGEInvoiceAggregatedTransaction]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[SGEInvoiceAggregatedTransaction](
	[DocKey] [bigint] NOT NULL,
	[SGEInvoiceFlowType] [nvarchar] (100) NULL,
	[SGEInvoiceDocType] [nvarchar] (100) NULL,
	[DocNo] [dbo].[d_DocNo] NULL,
	[DocDate] [datetime] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NOT NULL,
	[ToTaxCurrencyRate] [dbo].[d_CurrencyRate] NOT NULL,
	[Description] [nvarchar] (100) NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[Total] [dbo].[d_Money] NULL,
	[TotalExTax] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[SGEInvoiceDocumentUUID] [nvarchar] (100) NULL,
	[SGEInvoiceError] [nvarchar] (MAX) NULL,
	[SGEInvoiceTraceId] [nvarchar] (100) NULL,
	[SGEInvoiceAIPSubmissionDateTime] [datetime] NULL,
	[SGEInvoiceSubmissionUUID] [nvarchar] (100) NULL,
	[SGEInvoiceIRASTransmissionId] [nvarchar] (100) NULL,
	[SGEInvoiceIRASSubmissionStatus] [nvarchar] (100) NULL,
	[SGEInvoiceIRASError] [nvarchar] (MAX) NULL,
	[CreatedTimeStamp] [datetime] NULL,
	[CreatedUserID] [dbo].[d_UserID] NULL
CONSTRAINT [PK_SGEInvoiceAggregatedTransaction] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
)
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SGEInvoiceAggregatedTransactionDetail]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[SGEInvoiceAggregatedTransactionDetail](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[Description] [nvarchar] (300) NULL,
	[GovtTaxCode] [varchar] (8) NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[TaxableAmt] [dbo].[d_Money] NULL,
	[LocalTaxableAmt] [dbo].[d_Money] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[LocalTax] [dbo].[d_Money] NULL,
	[SubTotal] [dbo].[d_Money] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL,
	[LocalSubTotal] [dbo].[d_Money] NULL,
	[LocalSubTotalExTax] [dbo].[d_Money] NULL
CONSTRAINT [PK_SGEInvoiceAggregatedTransactionDetail] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
)
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SGEInvoiceGSTRegistered]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[SGEInvoiceGSTRegistered](
	[RegisterNo] [nvarchar] (30) NOT NULL,
	[IsGSTRegistered] [dbo].[d_Boolean] NULL,
	[LastUpdatedTimeStamp] [datetime] NULL
CONSTRAINT [PK_SGEInvoiceGSTRegistered] PRIMARY KEY CLUSTERED 
(
	[RegisterNo] ASC
)
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SGEInvoiceLogging]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[SGEInvoiceLogging](
	[ID] [bigint] IDENTITY(1,1) NOT NULL,
	[DocKey] [bigint] NULL,
	[SGEInvoiceFlowType] [nvarchar] (100) NULL,
	[SGEInvoiceDocType] [nvarchar] (100) NULL,
	[DocNo] [dbo].[d_DocNo] NULL,
	[DocDate] [datetime] NULL,
	[AccNo] [dbo].[d_AccNo] NULL,
	[CurrencyCode] [dbo].[d_CurrencyCode] NULL,
	[Tax] [dbo].[d_Money] NULL,
	[Total] [dbo].[d_Money] NULL,
	[NetTotal] [dbo].[d_Money] NULL,
	[SendToPeppol] [dbo].[d_Boolean] NULL,
	[SendToIRAS] [dbo].[d_Boolean] NULL,
	[SGEInvoiceDocumentUUID] [nvarchar] (100) NULL,
	[SGEInvoiceTraceId] [nvarchar] (100) NULL,
	[SGEInvoiceAIPSubmissionDateTime] [datetime] NULL,
	[SGEInvoiceSubmissionUUID] [nvarchar] (100) NULL,
	[SGEInvoicePeppolError] [nvarchar] (MAX) NULL,
	[SGEInvoicePeppolInstanceId] [nvarchar] (100) NULL,
	[SGEInvoicePeppolSubmissionStatus] [nvarchar] (100) NULL,
	[SGEInvoicePeppolSender] [nvarchar] (100) NULL,
	[SGEInvoicePeppolReceiver] [nvarchar] (100) NULL,
	[SGEInvoiceIRASError] [nvarchar] (MAX) NULL,
	[SGEInvoiceIRASTransmissionId] [nvarchar] (100) NULL,
	[SGEInvoiceIRASSubmissionStatus] [nvarchar] (100) NULL,
	[CreatedTimeStamp] [datetime] NULL,
	[CreatedUserID] [dbo].[d_UserID] NULL
CONSTRAINT [PK_SGEInvoiceLogging] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SGEInvoiceReceiveDocument]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[SGEInvoiceReceiveDocument](
	[DocKey] [bigint] NOT NULL,
	[DocType] [nvarchar] (10) NULL,
	[SenderPeppolID] [nvarchar] (50) NULL,
	[ReceiverPeppolID] [nvarchar] (50) NULL,
	[UploadTime] [datetime] NULL,
	[Name] [nvarchar] (100) NULL,
	[DocumentUUID] [nvarchar] (100) NULL,
	[DocNo] [nvarchar] (100) NULL,
	[DocDate] [datetime] NULL,
	[CurrencyCode] [nvarchar] (10) NULL,
	[Address1] [nvarchar] (40) NULL,
	[Address2] [nvarchar] (40) NULL,
	[Address3] [nvarchar] (40) NULL,
	[Reason] [nvarchar] (80) NULL,
	[ResponseCode] [nvarchar] (100) NULL,
	[AutoCountDocKey] [bigint] NULL,
	[SyncTime] [datetime] NULL,
	[Data] [nvarchar] (MAX) NULL
CONSTRAINT [PK_SGEInvoiceReceiveDocument] PRIMARY KEY CLUSTERED 
(
	[DocKey] ASC
)
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SGEInvoiceReceiveDocumentDetail]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[SGEInvoiceReceiveDocumentDetail](
	[DtlKey] [bigint] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[ItemID] [nvarchar] (100) NULL,
	[Description] [nvarchar] (100) NULL,
	[UnitCode] [nvarchar] (100) NULL,
	[Qty] [dbo].[d_Qty] NULL,
	[UnitPrice] [dbo].[d_Money] NULL,
	[Discount] [nvarchar] (100) NULL,
	[TaxCode] [nvarchar] (100) NULL,
	[TaxRate] [dbo].[d_Percent] NULL,
	[SubTotalExTax] [dbo].[d_Money] NULL
CONSTRAINT [PK_SGEInvoiceReceiveDocumentDetail] PRIMARY KEY CLUSTERED 
(
	[DtlKey] ASC
)
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SGEInvoiceCustomerItemMapping]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[SGEInvoiceCustomerItemMapping](
	[DebtorCode] [dbo].[d_AccNo] NOT NULL,
	[CustomerItemCode] [nvarchar] (100) NOT NULL,
	[CustomerUnitCode] [nvarchar] (100) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[UOM] [dbo].[d_UOM] NULL
CONSTRAINT [PK_SGEInvoiceCustomerItemMapping] PRIMARY KEY CLUSTERED 
(
	[DebtorCode], [CustomerItemCode], [CustomerUnitCode] ASC
)
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SGEInvoiceSupplierItemMapping]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[SGEInvoiceSupplierItemMapping](
	[CreditorCode] [dbo].[d_AccNo] NOT NULL,
	[SupplierItemCode] [nvarchar] (100) NOT NULL,
	[SupplierUnitCode] [nvarchar] (100) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[UOM] [dbo].[d_UOM] NULL
CONSTRAINT [PK_SGEInvoiceSupplierItemMapping] PRIMARY KEY CLUSTERED 
(
	[CreditorCode], [SupplierItemCode], [SupplierUnitCode] ASC
)
) ON [PRIMARY]
GO

IF NOT EXISTS (SELECT * FROM DocNoFormat WHERE Name = 'AT Default')
  INSERT INTO [DocNoFormat] (Name, DocType, NextNumber, Format, Sample, IsDefault, OneMonthOneSet) VALUES ('AT Default', 'AT', 1, 'AT-<000000>', 'AT-000001', 'T', 'F');
GO

UPDATE REGISTRY SET RegValue = '2.2.85' WHERE RegID = 2
GO$#/* Update WithholdingTaxRoundingMethod Column to NOT NULL */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100))

INSERT @ListTable VALUES('CB', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('ARInvoice', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('ARCN', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('ARDN', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('ARPayment', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('ARRefund', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('APInvoice', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('APCN', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('APDN', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('APPayment', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('APRefund', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('IV', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('CS', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('DN', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('CN', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('PI', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('CP', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')
INSERT @ListTable VALUES('PR', 'WithholdingTaxRoundingMethod', '[int] NOT NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

/* Add InvoiceNow and e-Invoice Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('CN', 'SubmitInvoiceNow', '[dbo].[d_Boolean] NULL', 'CASE WHEN SGEInvoiceDocumentUUID IS NOT NULL THEN ''T'' ELSE ''F'' END', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('CN', 'SGEInvoiceSendToPeppol', '[dbo].[d_Boolean] NULL', 'CASE WHEN SGEInvoicePeppolInstanceId IS NOT NULL THEN ''T'' ELSE ''F'' END', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('IV', 'SubmitInvoiceNow', '[dbo].[d_Boolean] NULL', 'CASE WHEN SGEInvoiceDocumentUUID IS NOT NULL THEN ''T'' ELSE ''F'' END', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('IV', 'SGEInvoiceSendToPeppol', '[dbo].[d_Boolean] NULL', 'CASE WHEN SGEInvoicePeppolInstanceId IS NOT NULL THEN ''T'' ELSE ''F'' END', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('PI', 'SubmitInvoiceNow', '[dbo].[d_Boolean] NULL', 'CASE WHEN SGEInvoiceDocumentUUID IS NOT NULL THEN ''T'' ELSE ''F'' END', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('PR', 'SubmitInvoiceNow', '[dbo].[d_Boolean] NULL', 'CASE WHEN SGEInvoiceDocumentUUID IS NOT NULL THEN ''T'' ELSE ''F'' END', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('SGEInvoiceAggregatedTransaction', 'DocType', '[dbo].[d_DocType] NULL', '', '')
INSERT @ListTable VALUES('SGEInvoiceAggregatedTransaction', 'RoundAdj', '[dbo].[d_Money] NULL', '0', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('SGEInvoiceAggregatedTransaction', 'FinalTotal', '[dbo].[d_Money] NULL', 'NetTotal + RoundAdj', '[dbo].[d_Money] NULL')
INSERT @ListTable VALUES('Profile', 'HasClientIdClientSecret', 'bit NULL', '0', 'bit NOT NULL')
INSERT @ListTable VALUES('EInvoiceConsolidatedInvoice', 'GeneratedBy', '[nvarchar](10) NULL', '''System''', '[nvarchar](10) NOT NULL')
INSERT @ListTable VALUES('IV', 'EInvoiceSubmissionDateTime', 'datetime NULL', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL')
INSERT @ListTable VALUES('CS', 'EInvoiceSubmissionDateTime', 'datetime NULL', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL')
INSERT @ListTable VALUES('DN', 'EInvoiceSubmissionDateTime', 'datetime NULL', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL')
INSERT @ListTable VALUES('CN', 'EInvoiceSubmissionDateTime', 'datetime NULL', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL')
INSERT @ListTable VALUES('ARCN', 'EInvoiceSubmissionDateTime', 'datetime NULL', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL')
INSERT @ListTable VALUES('ARRefund', 'EInvoiceSubmissionDateTime', 'datetime NULL', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL')
INSERT @ListTable VALUES('CB', 'EInvoiceSubmissionDateTime', 'datetime NULL', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL')
INSERT @ListTable VALUES('EInvoiceSelfBilled', 'EInvoiceSubmissionDateTime', 'datetime NULL', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL')
INSERT @ListTable VALUES('EInvoiceConsolidatedInvoice', 'EInvoiceSubmissionDateTime', 'datetime NULL', 'EInvoiceAIPSubmissionDateTime', 'datetime NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END
  
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SGEInvoiceReceiveDocumentDetail]'))
DROP TABLE [dbo].[SGEInvoiceReceiveDocumentDetail] 
GO

/* Create NameValue table */
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[NameValue]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
    CREATE TABLE [dbo].[NameValue] (
        [Name] [varchar](100) NOT NULL,
        [Value] [nvarchar](255) NULL
        CONSTRAINT [PK_NameValue_Name] PRIMARY KEY CLUSTERED (
            [Name] ASC
        )
    ) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EInvoiceStatusChangeLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[EInvoiceStatusChangeLog](
	[ID] [bigint] IDENTITY(1,1) NOT NULL,
	[EInvoiceStatus] [varchar](100) NOT NULL,
	[EInvoiceTraceId] [varchar](100) NOT NULL,
	[EInvoiceUuid] [varchar](100) NULL,
	[EInvoiceSubmissionUuid] [varchar](100) NULL,
	[EInvoiceValidationLink] [varchar](255) NULL,
	[EInvoiceStatusReason] [varchar](100) NULL,
	[DocType] [dbo].[d_DocType] NOT NULL,
	[DocKey] [bigint] NOT NULL,
	[ActionTimeStamp] [datetime] NOT NULL,
	[UserID] [dbo].[d_UserID] NOT NULL
 CONSTRAINT [PK_EInvoiceStatusChangeLog] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

if not exists (select * from sys.indexes where Name = 'IX_EInvoiceStatusChangeLog_DocType_DocKey_EInvoiceTraceId_EInvoiceStatus_ID')
	CREATE INDEX IX_EInvoiceStatusChangeLog_DocType_DocKey_EInvoiceTraceId_EInvoiceStatus_ID ON EInvoiceStatusChangeLog (DocType, DocKey, EInvoiceTraceId, EInvoiceStatus, ID DESC)
GO

if not exists (select * from sys.indexes where Name = 'IX_EInvoiceStatusChangeLog_DocType_DocKey')
	CREATE INDEX IX_EInvoiceStatusChangeLog_DocType_DocKey ON EInvoiceStatusChangeLog (DocType, DocKey)
GO

UPDATE REGISTRY SET RegValue = '2.2.86' WHERE RegID = 2
GO8�/* Increase d_ChequeNo size to 30 characters */
DECLARE @UDDTName nvarchar(100)
DECLARE @UDDTType nvarchar(10)
DECLARE @NewLength bigint
DECLARE @MasterTable nvarchar(100)

SET @UDDTName = 'd_ChequeNo'
SET @UDDTType = 'nvarchar'
SET @NewLength = 30
SET @MasterTable = ''

/* Check User-Defined Data Type exist or not */
DECLARE @UDDTExist int
Select @UDDTExist = count(*) from sys.types where name=@UDDTName

IF @UDDTExist = 0
    RETURN

/* Check data type */
IF @UDDTType <> 'char' AND @UDDTType <> 'nchar' AND @UDDTType <> 'varchar' AND @UDDTType <> 'nvarchar'
    RETURN

DECLARE @RealNewLength bigint
SET @RealNewLength = @NewLength

/* Check current length and new length is same or not */
DECLARE @maxLength bigint
Select @maxLength = max_length from sys.types where name=@UDDTName
SET @NewLength = @NewLength * 2

IF @maxLength = @NewLength
    RETURN

DECLARE @minSize bigint
DECLARE @maxSize bigint
DECLARE @UDDTGUID [uniqueidentifier] 
DECLARE @TransactionID BIGINT

SET @UDDTGUID = N'7A31626C-A085-43E7-A180-40D187E950F8'
SELECT @TransactionID = TRANSACTION_ID FROM SYS.DM_TRAN_CURRENT_TRANSACTION

SET @minSize = 8 * 2

SET @maxSize = 500 * 2

BEGIN TRANSACTION

/* Change User-Defined Data Type size */
IF (@NewLength >= @minSize AND @NewLength <= @maxSize) AND (@maxLength > 0 AND @maxLength < 1001)
BEGIN
	DECLARE @UDDTTempName NVARCHAR(150)
	DECLARE @sql NVARCHAR(1000)
	DECLARE @cur_item cursor

	SET @UDDTTempName = N'd_' + @UDDTName + 'Temp'
	SET @sql = N'' + @UDDTType + ' (' + CAST((@NewLength / 2) as nvarchar) + ')'
	EXEC sp_addtype @UDDTTempName, @sql

	/* Find Foreign Key which combine with accno (two columns) and alter column with a new user defined field */
	DECLARE @ListTable3 TABLE(TableName nvarchar(80), ColumnName nvarchar(80), ColumnName2 nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), 
	ParentColumnName nvarchar(80), ParentColumnName2 nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	insert into @ListTable3 
	SELECT tab1.name, col1.name AS ColumnName, tempfkc.ColumnName AS ColumnName2, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
	tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.ParentColumnName2, tempfkc.update_referential_action, tempfkc.delete_referential_action,
	tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc 
	From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
	INNER JOIN 
	(
		Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab.name AS ParentTableName, COL_NAME(fkc2.parent_object_id,fkc2.parent_column_id) AS ColumnName, 
		col.name AS ParentColumnName, col2.name AS ParentColumnName2, fk.update_referential_action, fk.delete_referential_action, fk.update_referential_action_desc, fk.delete_referential_action_desc 
		From sys.foreign_key_columns fkc INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id 
		INNER JOIN sys.tables tab ON tab.object_id = fkc.referenced_object_id
		INNER JOIN sys.columns col ON col.column_id = referenced_column_id AND col.object_id = tab.object_id
		INNER JOIN sys.types typ ON col.user_type_id = typ.user_type_id 
		INNER JOIN sys.foreign_key_columns fkc2 ON fkc.constraint_object_id = fkc2.constraint_object_id AND fkc.referenced_column_id < fkc2.referenced_column_id
		INNER JOIN sys.columns col2 ON col2.column_id = fkc2.referenced_column_id AND col2.object_id = tab.object_id
		INNER JOIN sys.types typ2 ON col2.user_type_id = typ2.user_type_id 
		INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id
		WHERE col.name != col2.name AND (typ.name = @UDDTName OR typ2.name = @UDDTName)
	) tempfkc ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id

	/* Drop Foreign Key which combine with accno (two columns) and alter column with a new user defined field */
	DECLARE @tableName  NVARCHAR(80)
	DECLARE @colName  NVARCHAR(80)
	DECLARE @colName2  NVARCHAR(80)
	DECLARE @null  nvarchar(10)
	DECLARE @fkName  NVARCHAR(160)
	DECLARE @parentTableName  NVARCHAR(80)
	DECLARE @parentColName  NVARCHAR(80)
	DECLARE @parentColName2  NVARCHAR(80)
	DECLARE @updateAction tinyint
	DECLARE @deleteAction tinyint

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable3
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	DECLARE @ListTable TABLE(TableName nvarchar(80), ColumnName nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), ParentColumnName nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	insert into @ListTable Select tab1.name, col1.name, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
	tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.update_referential_action, tempfkc.delete_referential_action,
	tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc
	From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
	INNER JOIN sys.types typ1 ON col1.user_type_id = typ1.user_type_id 
	LEFT OUTER JOIN 
	(Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab2.name AS ParentTableName, col2.name AS ParentColumnName, fk.update_referential_action, fk.delete_referential_action,
	fk.update_referential_action_desc, fk.delete_referential_action_desc From sys.foreign_key_columns fkc 
	INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id INNER JOIN sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
	INNER JOIN sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
	INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id)tempfkc
	ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id
	Where typ1.name=@UDDTName

	/* Find Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	DECLARE @ListTable2 TABLE(TableName nvarchar(80), ColumnName nvarchar(80), Nullable nvarchar(10), ForeignKeyName nvarchar(160), ParentTableName nvarchar(80), ParentColumnName nvarchar(80), UpdateAction tinyint, DeleteAction tinyint, UpdateDesc nvarchar(max), DeleteDesc nvarchar(max))

	IF @MasterTable <> ''
	BEGIN
		insert into @ListTable2 Select tab1.name, col1.name, CASE WHEN col1.is_nullable = 0 THEN 'NOT NULL' ELSE 'NULL' END AS Nullable, 
		tempfkc.ForeignKeyName, tempfkc.ParentTableName, tempfkc.ParentColumnName, tempfkc.update_referential_action, tempfkc.delete_referential_action, 
		tempfkc.update_referential_action_desc, tempfkc.delete_referential_action_desc 
		From sys.tables tab1 INNER JOIN sys.columns col1 ON col1.object_id = tab1.object_id
		INNER JOIN sys.types typ1 ON col1.user_type_id = typ1.user_type_id 
		INNER JOIN 
		(Select fkc.parent_object_id, fkc.parent_column_id, obj.name AS ForeignKeyName, tab2.name AS ParentTableName, col2.name AS ParentColumnName,
		fk.update_referential_action, fk.delete_referential_action, fk.update_referential_action_desc, fk.delete_referential_action_desc 
		From sys.foreign_key_columns fkc INNER JOIN sys.objects obj ON obj.object_id = fkc.constraint_object_id 
		INNER JOIN sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
		INNER JOIN sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
		LEFT OUTER JOIN sys.foreign_key_columns fkc3 ON fkc.constraint_object_id = fkc3.constraint_object_id AND fkc3.referenced_column_id = 2
		INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id
		Where tab2.Name <> @MasterTable AND fkc3.constraint_object_id IS NULL
		)tempfkc ON tempfkc.parent_object_id=tab1.object_id and tempfkc.parent_column_id=col1.column_id
		Where typ1.name=@UDDTName
	END

	/* Find index master which related with User-Defined Data Type */
	DECLARE @IndexTable TABLE(IndexName nvarchar(1000), TableName nvarchar(80), IndexUnique nvarchar(6), IndexTypeDesc nvarchar(80), IndexIsDisabled int, FileGroupName nvarchar(80), IndexColumns nvarchar(max), IncludedColumns nvarchar(max), isPrimaryKey int, isUniqueCons int)

	insert into @IndexTable select distinct ix.name, tab.name, case when ix.is_unique = 1 then 'UNIQUE ' else '' END as indexUnique, ix.type_desc, ix.is_disabled, FILEGROUP_NAME(ix.data_space_id) FileGroupName, '' AS indexColumns, '' AS includedColumns, ix.is_primary_key, ix.is_unique_constraint 
	from sys.indexes ix 
	inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
	inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
	Where ix.type>0 and ix.is_hypothetical=0 and ix.is_primary_key=0 and t.name=@UDDTName

	-- Find Primary Key index
	insert into @IndexTable select distinct ix.name, tab.name, case when ix.is_unique = 1 then 'UNIQUE ' else '' END as indexUnique, ix.type_desc, ix.is_disabled, FILEGROUP_NAME(ix.data_space_id) FileGroupName, '' AS indexColumns, '' AS includedColumns, ix.is_primary_key, ix.is_unique_constraint 
	from sys.indexes ix 
	inner join sys.index_columns ixCol on  ix.object_id = ixCol.object_id and ix.index_id = ixCol.index_id 
	inner join sys.columns col on ix.object_id = col.object_id and ixCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on ix.object_id = tab.object_id and col.object_id = tab.object_id
	inner join sys.key_constraints pkc on pkc.parent_object_id = tab.object_id and pkc.parent_object_id = ixCol.object_id
	Where ix.type>0 and ix.is_hypothetical=0 and ix.is_primary_key=1 and OBJECTPROPERTY(pkc.object_id, N'IsPrimaryKey') = 1 and t.name=@UDDTName

	DECLARE @indexName NVARCHAR(1000)
	DECLARE @indexTableName NVARCHAR(80)
	/* index detail */
	DECLARE @IndexColumn nvarchar(80)
	DECLARE @IsDescendingKey int 
	DECLARE @IsIncludedColumn int
	DECLARE @cur_IndexCol cursor
	DECLARE @IndexColumns NVARCHAR(max)
	DECLARE @IncludedColumns NVARCHAR(max)
	DECLARE @IsPrimaryKey int
	DECLARE @isUniqueCons int

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName From @IndexTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  /* Find index detail column which related with User-Defined Data Type */
	  set @IndexColumns=''
	  set @IncludedColumns=''

	  SET @cur_IndexCol = CURSOR FAST_FORWARD FOR SELECT col.name, ixc.is_descending_key, ixc.is_included_column
	  from sys.tables tb 
	  inner join sys.indexes ix on tb.object_id=ix.object_id
	  inner join sys.index_columns ixc on ix.object_id=ixc.object_id and ix.index_id= ixc.index_id
	  inner join sys.columns col on ixc.object_id =col.object_id and ixc.column_id=col.column_id
	  where ix.type>0 
	  and tb.name=@indexTableName and ix.name=@indexName
	  order by ixc.index_column_id

	  OPEN @cur_IndexCol
	  FETCH NEXT FROM @cur_IndexCol INTO @IndexColumn, @IsDescendingKey, @IsIncludedColumn
	  
	  WHILE @@FETCH_STATUS = 0
	  BEGIN
		if @IsIncludedColumn=0 
		  set @IndexColumns=@IndexColumns + @IndexColumn  + case when @IsDescendingKey = 1  then ' DESC, ' else  ' ASC, ' end
		else 
		  set @IncludedColumns=@IncludedColumns  + @IndexColumn  +', ' 

		FETCH NEXT FROM @cur_IndexCol INTO @IndexColumn, @IsDescendingKey, @IsIncludedColumn
	  END

	  CLOSE @cur_IndexCol
	  DEALLOCATE @cur_IndexCol
	  
	  /* Update index and included columns in index table */
	  Set @IndexColumns = substring(@IndexColumns, 1, len(@IndexColumns) - 1)
	  Set @IncludedColumns = case when len(@IncludedColumns) >0 then substring(@IncludedColumns, 1, len(@IncludedColumns) - 1) else '' end

	  Update @IndexTable Set IndexColumns = @IndexColumns, IncludedColumns = @IncludedColumns Where IndexName = @indexName AND TableName = @indexTableName

	  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find statistics master which related with User-Defined Data Type */
	DECLARE @StatisticsTable TABLE(StatisticsName nvarchar(1000), TableName nvarchar(80), StatisticsColumns nvarchar(max))

	insert into @StatisticsTable select distinct st.name, tab.name, '' AS statisticsColumns 
	from sys.stats st 
	inner join sys.stats_columns stCol on  st.object_id = stCol.object_id and st.stats_id = stCol.stats_id 
	inner join sys.columns col on st.object_id = col.object_id and stCol.column_id = col.column_id 
	inner join sys.types t on col.user_type_id = t.user_type_id 
	inner join sys.tables tab on st.object_id = tab.object_id and col.object_id = tab.object_id
	Where st.auto_created=0 and st.user_created=1 and t.name=@UDDTName

	DECLARE @statisticsName NVARCHAR(1000)
	DECLARE @statisticsTableName NVARCHAR(80)
	/* statistics detail */
	DECLARE @StatisticsColumn nvarchar(80)
	DECLARE @cur_StatisticsCol cursor
	DECLARE @StatisticsColumns NVARCHAR(max)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  /* Find statistics detail column which related with User-Defined Data Type */
	  set @StatisticsColumns=''

	  SET @cur_StatisticsCol = CURSOR FAST_FORWARD FOR SELECT col.name
	  from sys.tables tb 
	  inner join sys.stats st on tb.object_id=st.object_id
	  inner join sys.stats_columns stc on st.object_id=stc.object_id and st.stats_id= stc.stats_id
	  inner join sys.columns col on stc.object_id =col.object_id and stc.column_id=col.column_id
	  and tb.name=@statisticsTableName and st.name=@statisticsName
	  order by stc.stats_column_id

	  OPEN @cur_StatisticsCol
	  FETCH NEXT FROM @cur_StatisticsCol INTO @StatisticsColumn
	  
	  WHILE @@FETCH_STATUS = 0
	  BEGIN
		set @StatisticsColumns=@StatisticsColumns + @StatisticsColumn  + ', '

		FETCH NEXT FROM @cur_StatisticsCol INTO @StatisticsColumn
	  END

	  CLOSE @cur_StatisticsCol
	  DEALLOCATE @cur_StatisticsCol
	  
	  /* Update statistics columns in statistics table */
	  Set @StatisticsColumns = substring(@StatisticsColumns, 1, len(@StatisticsColumns) - 1)

	  Update @StatisticsTable Set StatisticsColumns = @StatisticsColumns Where StatisticsName = @statisticsName AND TableName = @statisticsTableName

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Find Procedure which related with User-Defined Data Type */
	DECLARE @ProcedureTable TABLE(ProcName nvarchar(200), ProcDefine nvarchar(max))

	insert into @ProcedureTable Select o.name, m.definition
	FROM sys.sql_modules m 
	INNER JOIN sys.procedures o 
	ON m.object_id=o.object_id
	Where o.name != 'bsp_ChangeUDDTSize' AND m.definition Like '%' + @UDDTName + '%'

	/* Find View and Function which related with User-Defined Data Type */
	DECLARE @ViewTable TABLE(ViewName nvarchar(200), ViewType nvarchar(2), ViewDefine nvarchar(max), IsProcess int)

	insert into @ViewTable select o.name, o.type, m.definition, 0 as isProcess from sys.objects o 
	inner join sys.sql_modules m on o.object_id = m.object_id
	Where o.object_id in (select c.object_id from sys.columns c 
	inner join sys.types t on c.user_type_id = t.user_type_id 
	Where t.name=@UDDTName) and o.type in ('TF', 'V')

	/* Drop statistics constraint which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop statistics first
	  set @sql = 'if exists (select * from sys.stats where name = N''' + @statisticsName + ''') DROP STATISTICS [dbo].[' + @statisticsTableName + '].[' + @statisticsName + ']'
	  Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Drop index or unique constraint which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  -- drop index first
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 0
		  BEGIN
			  set @sql = 'if exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') DROP INDEX [' + @indexName + '] ON [dbo].[' + @indexTableName + ']'
			  Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Drop Procedure which related with User-Defined Data Type */
	DECLARE @procName  NVARCHAR(200)

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ProcName From @ProcedureTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @procName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop procedure first
	  set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @procName + ']'') and OBJECTPROPERTY(id, N''IsProcedure'') = 1) DROP PROCEDURE [dbo].[' + @procName + ']'
		Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @procName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop View and Function which related with User-Defined Data Type */
	DECLARE @viewName  NVARCHAR(200)
	DECLARE @viewType  NVARCHAR(2)
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ViewName,ViewType From @ViewTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @viewName, @viewType

	WHILE @@FETCH_STATUS = 0
	BEGIN
		if @viewType='V'
			set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @viewName + ']'') and Type in (''V'')) DROP VIEW [dbo].[' + @viewName + ']'
		else
			set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @viewName + ']'') and Type in (''TF'')) DROP FUNCTION [dbo].[' + @viewName + ']'

		Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @viewName, @viewType
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable2
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Drop Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ForeignKeyName From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @fkName

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- drop constraint first
	  if @fkName is not null
	  BEGIN
		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] DROP CONSTRAINT [' + @fkName + ']'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @fkName
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Drop Primary Key index which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  -- drop index first
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 1
		  BEGIN

				set @sql = 'if exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
			  
			  Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  -- drop index first
		  IF @IsPrimaryKey = 1
		  BEGIN
		  		-- recreate User-Defined Data Type Primary Key
				-- drop constraint first
		  		set @sql = 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] DROP CONSTRAINT [' + @indexName + ']'
				Exec sp_executesql @sql
			  IF @@ERROR <> 0
			  BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			  END
		  END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Change new type for Foreign Key which related with User-Defined Data Type and alter column with a new user defined field */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, Nullable From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- change to new type
	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] [' + @UDDTTempName + '] ' + @null
    
	  Exec sp_executesql @sql
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @null
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	EXEC sp_droptype @UDDTName

	EXEC sp_rename @UDDTTempName, @UDDTName, N'USERDATATYPE'

	DECLARE @indexUnique nvarchar(6)
	DECLARE @indexTypeDesc  nvarchar(80)
	DECLARE @IndexIsDisabled int
	DECLARE @FileGroupName nvarchar(80)
	DECLARE @IndexScript nvarchar(max)
	DECLARE @StatisticsScript nvarchar(max)

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Create Primary Key index which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, IndexUnique, IndexTypeDesc, IndexIsDisabled, FileGroupName, IndexColumns, IncludedColumns, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  IF @IsPrimaryKey = 1
		  BEGIN
			   -- add back constraint
	   		   set @IndexScript = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @indexName + ']'') and OBJECTPROPERTY(id, N''IsPrimaryKey'') = 1) ALTER TABLE [dbo].[' + @indexTableName + '] ADD CONSTRAINT [' + @indexName + '] PRIMARY KEY ' + @indexTypeDesc + ' (' + @IndexColumns + ') ' + 
			   case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'
			   Exec sp_executesql @IndexScript

			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 1
		  BEGIN
			  -- add back index or unique constraint
			     set @IndexScript = 'if not exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') ALTER TABLE '+ @indexTableName + ' ADD CONSTRAINT ' + @indexName + ' ' + @indexUnique + ' ' + @indexTypeDesc + ' ('+@IndexColumns+') ' + 
			     case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'

			   Exec sp_executesql @IndexScript
	   
			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Create Foreign Key which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ForeignKeyName, ParentTableName, ParentColumnName, UpdateAction, DeleteAction From @ListTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '])'
		if @updateAction = 1
			set @sql = @sql + ' on update cascade'
		if @deleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Foreign Key that refer to User-Defined Data Type but the key is not directly from master table */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ForeignKeyName, ParentTableName, ParentColumnName, UpdateAction, DeleteAction From @ListTable2
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '])'
		if @updateAction = 1
			set @sql = @sql + ' on update cascade'
		if @deleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @fkName, @parentTableName, @parentColName, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Foreign Key which combine with accno (two columns) */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnName2, ForeignKeyName, ParentTableName, ParentColumnName, ParentColumnName2, UpdateAction, DeleteAction From @ListTable3
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colName2, @fkName, @parentTableName, @parentColName, @parentColName2, @updateAction, @deleteAction

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back constraint
	  if @fkName is not null
	  BEGIN
		set @sql = 'if not exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @fkName + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1) ALTER TABLE [dbo].[' + @tableName + '] WITH CHECK ADD CONSTRAINT ' +@fkName + ' FOREIGN KEY ([' + @colName + '], [' + @colName2 + ']) REFERENCES dbo.' + @parentTableName + ' ([' + @parentColName + '], [' + @parentColName2 + '])'
		if @UpdateAction = 1
			set @sql = @sql + ' on update cascade'
		if @DeleteAction = 1
			set @sql = @sql + ' on delete cascade'
		Exec sp_executesql @sql
	  END
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colName2, @fkName, @parentTableName, @parentColName, @parentColName2, @updateAction, @deleteAction
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create View and Function which related with User-Defined Data Type */
	DECLARE @sqlDefine  NVARCHAR(max)
	DECLARE @isProcess  int

	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ViewName, ViewDefine, IsProcess From @ViewTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @ViewName, @sqlDefine, @isProcess
	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back view
		BEGIN TRY
			IF @isProcess = 0
			BEGIN
				Exec sp_executesql @sqlDefine
				Update @ViewTable Set IsProcess = 1 Where ViewName = @ViewName
			END
		END TRY
		BEGIN CATCH
		END CATCH
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @ViewName, @sqlDefine, @isProcess
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	/* Create Store Procedure which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT ProcDefine From @ProcedureTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @sqlDefine

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back procedure
		Exec sp_executesql @sqlDefine
	  IF @@ERROR <> 0
	  BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	  END

	  FETCH NEXT FROM @cur_Item INTO @sqlDefine
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	-- If change to smaller size need to drop and create index
	IF @maxLength > @NewLength
	BEGIN
		/* Create index or unique constraint which related with User-Defined Data Type */
		SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT IndexName, TableName, IndexUnique, IndexTypeDesc, IndexIsDisabled, FileGroupName, IndexColumns, IncludedColumns, isPrimaryKey, isUniqueCons From @IndexTable
		OPEN @cur_Item
		FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons

		WHILE @@FETCH_STATUS = 0
		BEGIN
		  IF @IsPrimaryKey = 0 AND @isUniqueCons = 0
		  BEGIN
			  -- add back index or unique constraint
			   set @IndexScript = 'if not exists (select * from dbo.sysindexes where name = N''' + @indexName + ''') CREATE '+ @indexUnique + ' ' + @indexTypeDesc + ' INDEX ' + @indexName + ' ON [dbo].'+ @indexTableName + ' ('+@IndexColumns+') '+ 
			   case when len(@IncludedColumns)>0 then 'INCLUDE (' + @IncludedColumns+ ')' else '' end + ' ON [' + @FileGroupName + ']'
			   Exec sp_executesql @IndexScript
	   
			   IF @@ERROR <> 0
			   BEGIN
				CLOSE @cur_Item
				DEALLOCATE @cur_Item
				RETURN
			   END

			   if @IndexIsDisabled = 1
			   BEGIN
				 set  @IndexScript = 'ALTER INDEX ' + @IndexName + ' ON [dbo].'+ @indexTableName + ' DISABLE'
				 Exec sp_executesql @IndexScript
		 
				 IF @@ERROR <> 0
				  BEGIN
					CLOSE @cur_Item
					DEALLOCATE @cur_Item
					RETURN
				  END
			   END
		   END

		  FETCH NEXT FROM @cur_Item INTO @indexName, @indexTableName, @indexUnique, @indexTypeDesc, @IndexIsDisabled, @FileGroupName, @indexColumns, @includedColumns, @IsPrimaryKey, @isUniqueCons
		END

		CLOSE @cur_Item
		DEALLOCATE @cur_Item
	END

	/* Create statistics constraint which related with User-Defined Data Type */
	SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT StatisticsName, TableName, StatisticsColumns From @StatisticsTable
	OPEN @cur_Item
	FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName, @statisticsColumns

	WHILE @@FETCH_STATUS = 0
	BEGIN
	  -- add back statistics constraint
	   set @StatisticsScript = 'if not exists (select * from sys.stats where name = N''' + @statisticsName + ''') CREATE STATISTICS ' + @statisticsName + ' ON [dbo].'+ @statisticsTableName + ' ('+@statisticsColumns+') '
	   Exec sp_executesql @StatisticsScript
	   
	   IF @@ERROR <> 0
	   BEGIN
		CLOSE @cur_Item
		DEALLOCATE @cur_Item
		RETURN
	   END

	  FETCH NEXT FROM @cur_Item INTO @statisticsName, @statisticsTableName, @statisticsColumns
	END

	CLOSE @cur_Item
	DEALLOCATE @cur_Item

	INSERT INTO ChangeLog (TableName, Guid, Content, ContentType, ChangeType, ChangeTime, TransactionID) VALUES(@UDDTName, @UDDTGUID, REPLACE((SELECT @UDDTName AS UDDTName, @UDDTType AS UDDTType, @RealNewLength AS NewLength, @MasterTable AS MasterTable FOR XML RAW('UDDT'), BINARY BASE64), '&#x00;',''), 'X', 'S', GETDATE(), @TransactionID)
	IF @@ERROR <> 0
	BEGIN
	 RETURN
	END
END

COMMIT TRANSACTION
GO

/* Add e-Invoice Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('PI', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CP', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('PR', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('APCN', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('APDN', 'EInvoiceStatus', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('PI', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('CP', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('PR', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('APCN', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('APDN', 'EInvoiceUuid', 'varchar(100) NULL', '', '')
INSERT @ListTable VALUES('PI', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('CP', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('PR', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('APCN', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('APDN', 'EInvoiceValidationLink', 'varchar(255) NULL', '', '')
INSERT @ListTable VALUES('PI', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('CP', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('APInvoice', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('PR', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('APCN', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('APDN', 'EInvoiceValidatedDateTime', 'datetime NULL', '', '')
INSERT @ListTable VALUES('PR', 'EInvoiceSubmitDocType', 'varchar(2) NULL', '', '')
INSERT @ListTable VALUES('APCN', 'EInvoiceSubmitDocType', 'varchar(2) NULL', '', '')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END
  
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MYEInvoiceReceiveDocument]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[MYEInvoiceReceiveDocument](
	[ID] [bigint] IDENTITY(1,1) NOT NULL,
	[Uuid] [varchar] (100) NOT NULL,
	[SubmissionUuid] [varchar] (100) NOT NULL,
	[DocType] [nvarchar] (2) NOT NULL,
	[DocNo] [nvarchar] (100) NOT NULL,
	[IssueDateTime] [datetime] NOT NULL,
	[ReceivedDateTime] [datetime] NOT NULL,
	[ValidatedDateTime] [datetime] NOT NULL,
	[RejectRequestDateTime] [datetime] NULL,
	[CancelDateTime] [datetime] NULL,
	[IssuerTIN] [nvarchar] (30) NULL,
	[IssuerId] [nvarchar] (30) NULL,
	[IssuerIdType] [nvarchar] (8) NULL,
	[IssuerName] [nvarchar] (100) NULL,
	[ReceiverTIN] [nvarchar] (30) NULL,
	[ReceiverId] [nvarchar] (30) NULL,
	[ReceiverIdType] [nvarchar] (8) NULL,
	[ReceiverName] [nvarchar] (100) NULL,
	[CurrencyCode] [nvarchar] (5) NULL,
	[TotalNetAmount] [d_Money] NOT NULL,
	[TotalExTax] [d_Money] NOT NULL,
	[TotalPayableAmount] [d_Money] NOT NULL,
	[Status] [varchar](100) NOT NULL,
	[ValidationLink] [varchar](255) NULL,
	[StatusReason] [varchar](300) NULL,
	[AutoCountDocType] [d_DocType] NULL,
	[AutoCountDocKey] [bigint] NULL,
	[JsonDocument] [nvarchar] (MAX) NULL
CONSTRAINT [PK_MYEInvoiceReceiveDocument] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

if not exists (select * from sys.indexes where Name = 'UIX_MYEInvoiceReceiveDocument_AutoCountDocType_AutoCountDocKey')
	CREATE UNIQUE INDEX UIX_MYEInvoiceReceiveDocument_AutoCountDocType_AutoCountDocKey ON dbo.MYEInvoiceReceiveDocument (AutoCountDocType, AutoCountDocKey) WHERE AutoCountDocType IS NOT NULL AND AutoCountDocKey IS NOT NULL
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MYEInvoiceSupplierItemMapping]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[MYEInvoiceSupplierItemMapping](
	[CreditorCode] [dbo].[d_AccNo] NOT NULL,
	[SupplierItemDescription] [nvarchar] (100) NOT NULL,
	[SupplierMeasurement] [nvarchar] (3) NOT NULL,
	[ItemCode] [dbo].[d_ItemCode] NULL,
	[UOM] [dbo].[d_UOM] NULL
CONSTRAINT [PK_MYEInvoiceSupplierItemMapping] PRIMARY KEY CLUSTERED 
(
	[CreditorCode], [SupplierItemDescription], [SupplierMeasurement] ASC
)
) ON [PRIMARY]
GO

/* Add SystemExtension */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SystemExtension]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[SystemExtension](
		[Guid] [uniqueidentifier] NOT NULL,
		[Seq] [int] NOT NULL,
		[Name] [nvarchar](100) NOT NULL,
		[Version] [varchar](20) NOT NULL,
		[MinimumAccountingVersion] [varchar](20) NOT NULL,
		[NextMinimumAccountingVersion] [varchar](20) NULL,
		[Description] [nvarchar](max) NULL,
		[WhatsNew] [nvarchar](max) NULL,
		[ExtractFiles] [dbo].[d_Boolean] NOT NULL,
		[AssemblyFile] [nvarchar](max) NULL,
		[Signature] [varchar](88) NULL,
		[ScriptLanguage] [char](2) NULL,
		[InstallationScript] [nvarchar](max) NULL,
		[CreatedTimeStamp] [datetime] NULL,
		[SupportPhone] [nvarchar](25) NULL,
		[AllowSync] [dbo].[d_Boolean] NULL,
		[SupportLicenseKey] [dbo].[d_Boolean] NULL,
		[LicenseKey] [varchar](max) NULL,
		[DBVersion] [nvarchar](20) NULL,
	 CONSTRAINT [PK_SystemExtension_Guid] PRIMARY KEY CLUSTERED 
	(
		[Guid] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

/* Add SystemExtensionFiles */
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SystemExtensionFiles]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
	CREATE TABLE [dbo].[SystemExtensionFiles](
		[Guid] [uniqueidentifier] NOT NULL,
		[FileName] [nvarchar](260) NOT NULL,
		[CreationTimeUtc] [datetime] NULL,
		[LastAccessTimeUtc] [datetime] NULL,
		[LastWriteTimeUtc] [datetime] NULL,
		[ExecuteAfterExtracted] [dbo].[d_Boolean] NOT NULL,
		[MsiGuid] [uniqueidentifier] NULL,
		[FileImage] [varbinary](max) NULL,
	 CONSTRAINT [PK_SystemExtensionFiles_Guid_FileName] PRIMARY KEY CLUSTERED 
	(
		[Guid] ASC,
		[FileName] ASC
	) ON [PRIMARY]
	) ON [PRIMARY]
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[FK_SystemExtensionFiles_Guid]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
	ALTER TABLE [dbo].[SystemExtensionFiles] WITH CHECK ADD CONSTRAINT [FK_SystemExtensionFiles_Guid] FOREIGN KEY([Guid])
	REFERENCES [dbo].[SystemExtension] ([Guid])
GO


UPDATE REGISTRY SET RegValue = '2.2.87' WHERE RegID = 2
GOa	/* Add InvoiceNow Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('PO', 'SubmitInvoiceNow', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('PO', 'SGEInvoiceError', 'nvarchar(MAX) NULL', '', '')
INSERT @ListTable VALUES('PO', 'SGEInvoiceTraceId', 'nvarchar(100) NULL', '', '')
INSERT @ListTable VALUES('PO', 'SGEInvoiceAIPSubmissionDateTime', '[datetime] NULL', '', '')
INSERT @ListTable VALUES('PO', 'SGEInvoiceSubmissionUUID', 'nvarchar(100) NULL', '', '')
INSERT @ListTable VALUES('PO', 'SGEInvoicePeppolError', 'nvarchar(MAX) NULL', '', '')
INSERT @ListTable VALUES('PO', 'SGEInvoicePeppolInstanceId', 'nvarchar(100) NULL', '', '')
INSERT @ListTable VALUES('PO', 'SGEInvoicePeppolSubmissionStatus', 'nvarchar(100) NULL', '', '')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END
  
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

UPDATE REGISTRY SET RegValue = '2.2.88' WHERE RegID = 2
GO</* Add Recurrence DocStatus, Cash Sales QR Request and InvoiceNow Peppol Format Columns */
DECLARE @ListTable TABLE(TableName nvarchar(40), ColumnName nvarchar(40), ColumnType nvarchar(100), ColumnValue nvarchar(100), ColumnType2 nvarchar(100))

INSERT @ListTable VALUES('Recurrence', 'DocStatus', 'char NULL', '''A''', 'char NOT NULL')
INSERT @ListTable VALUES('CS', 'PrintEInvoiceQRSubmission', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('CS', 'EInvoiceQRSubmission', '[dbo].[d_Boolean] NULL', '''F''', '[dbo].[d_Boolean] NOT NULL')
INSERT @ListTable VALUES('Debtor', 'SGEInvoicePeppolFormat', 'nvarchar(10) NULL', '''BIS''', 'nvarchar(10) NOT NULL')

DECLARE @sql NVARCHAR(500)
DECLARE @tableName  NVARCHAR(40)
DECLARE @colName  NVARCHAR(40)
DECLARE @colType  NVARCHAR(100)
DECLARE @colValue  NVARCHAR(200)
DECLARE @colType2  NVARCHAR(100)

DECLARE @cur_item cursor
SET @cur_Item = CURSOR FAST_FORWARD FOR SELECT TableName, ColumnName, ColumnType, ColumnValue, ColumnType2 From @ListTable
OPEN @cur_Item
FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2

WHILE @@FETCH_STATUS = 0
BEGIN
  set @sql = 'if not exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ADD [' + @colName + '] ' + @colType
  Exec sp_executesql @sql

  IF @colType2 != ''
  BEGIN
	  set @sql = 'Update ' + @tableName + ' Set ' + @colName + '= ' + @colValue + ' Where '+ @colName + ' Is Null'
	  Exec sp_executesql @sql

	  set @sql = 'if exists (select * from dbo.syscolumns where id = object_id(N''[dbo].[' + @tableName + ']'') and name = N''' + @colName + ''') ALTER TABLE [dbo].[' + @tableName + '] ALTER COLUMN [' + @colName + '] ' + @colType2
	  Exec sp_executesql @sql
  END
  
  IF @@ERROR <> 0
  BEGIN
    CLOSE @cur_Item
    DEALLOCATE @cur_Item
    RETURN
  END

  FETCH NEXT FROM @cur_Item INTO @tableName, @colName, @colType, @colValue, @colType2
END

CLOSE @cur_Item
DEALLOCATE @cur_Item
GO

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MYEInvoiceRejectRequest]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[MYEInvoiceRejectRequest](
	[ID] [bigint] IDENTITY(1,1) NOT NULL,
	[Uuid] [varchar] (100) NOT NULL,
	[DocType] [nvarchar] (2) NOT NULL,
	[DocNo] [nvarchar] (100) NOT NULL,
	[IssueDateTime] [datetime] NOT NULL,
	[ValidatedDateTime] [datetime] NOT NULL,
	[RejectRequestDateTime] [datetime] NOT NULL,
	[CancelDateTime] [datetime] NULL,
	[Status] [varchar](100) NOT NULL,
	[RejectReason] [varchar](300) NULL,
CONSTRAINT [PK_MYEInvoiceRejectRequest] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

UPDATE REGISTRY SET RegValue = '2.2.89' WHERE RegID = 2
GO;UPDATE REGISTRY SET RegValue = '2.2.90' WHERE RegID = 2
GO#����AUTOCOUNT.MANAGEACCOUNTBOOK.DLL	System.Collections.Hashtable
LoadFactorVersionComparerHashCodeProviderHashSizeKeysValuesSystem.Collections.IComparer$System.Collections.IHashCodeProvider�Q8?

		��h��IȱIRSDS�䖙D�=0�j��'C:\Users\Admin\source\repos\AutoCount 2.x\AutoCount 2.0\AutoCount Enterprise\ManageAccountBook\obj\Release\AutoCount.ManageAccountBook.pdb�I&�I �I_CorDllMainmscoree.dll�% @�0�HX�I  4VS_VERSION_INFO��?DVarFileInfo$Translation��StringFileInfo\000004b0TCommentsAutoCount Manage Account BookJCompanyNameAuto Count Sdn. Bhd.LFileDescriptionManageAccountBook0FileVersion2.2.0.0` InternalNameAutoCount.ManageAccountBook.dllz+LegalCopyrightCopyright 2022-2023 � Auto Count Sdn. Bhd.*LegalTrademarksh OriginalFilenameAutoCount.ManageAccountBook.dllJProductNameAutoCount Accounting4ProductVersion2.2.0.08Assembly Version2.2.0.0�I818g0�g*	*�H��
��g0�g10	+0L
+�7�>0<0
+�70	���0!0	+�֪��Ҿ��r]6�r?�F+p0�N0�6�
�_���5+de�j0
	*�H��
0W10	UBE10U
GlobalSign nv-sa10URoot CA10UGlobalSign Root CA0
180919000000Z
280128120000Z0L1 0UGlobalSign Root CA - R310U

GlobalSign10U
GlobalSign0�"0
	*�H��
�0�
��%v�yx"������(��vŭ�r�FCDz��_$�.K�`�F�R��Gpl�d��,��=+��׶�y�;�w��I�jb/^��h߉'�8��>��&Y
sް��&���[��`�I�(�i;���(�坊aW7�t�t�:�r/.��л��=�3�+�S�:s��A :�����O�.2`�W˹�hh�8&`u��w��� I��@H�1a^���w�d�z�_��b�
l�Ti��n郓qv�i����"0�0U�0U�0�0U��K�.E$�MP�c������0U#0�`{fE
�ʉP/}�4����K0=+10/0-+0�!http://ocsp.globalsign.com/rootr103U,0*0(�&�$�"http://crl.globalsign.com/root.crl0GU @0>0<U 0402+&https://www.globalsign.com/repository/0
	*�H��
�#p���Y��Bo�C3��?:�d�bKH�@�����_<�3���>�`����~��*�}�W�;j��޽@c���Ȉ���A�	�8�S���>�ӟPv�	��H}.Q��Sӫ@���}�OyVp_ӎ��p
7+�����k@���~��bX�w�s"Š��C���n��B/�}^��='�&��u���{��LӯQ!�[�}+�?t�Q螃o�F�#��䢋�9k�y�,�a$-�*Hp�����p0��0���xBEp�A�o�T0
	*�H��
0L1 0UGlobalSign Root CA - R310U

GlobalSign10U
GlobalSign0
200728000000Z
290318000000Z0S10	UBE10U
GlobalSign nv-sa1)0'U GlobalSign Code Signing Root R450�"0
	*�H��
�0�
��-�0�z諐=r�:K�a��g7�~쓃����C��E��cW]��%�h�K��K�J�j��a'��D��?"£O����(��]�Y��˜�,�3$�P:A��{MҨX8������,��C�	t���{�3
Yk���Z�{�U���L�⺽�u�o�atD���t��h�l&>�����0��|U�p\$x %�gg���N4�kp�8�Ծ������;�gC���t�/����	7=gl�E\a�A����w
FGsο����+���X�W�ϨZ�%�Ğ�r=�܌��;D�&������E�.珘���Bng~Bqb��`�d����!N+�mh��ƙtsg1z��Ԍyn|��~FoMŅ+Ϛ"D��7�aW$��1s��5WG~:E�-�Q����7�e�kw����?0�o1��@�������PvtY��m2���~��u��J�,�+B��j6��L�Ξ�ˍ����՛�ƒ:�c�.$d���w0�s0U��0U%0
+0U�0�0U�F�
�x9���C�VP�Ζ;0U#0���K�.E$�MP�c������0z+n0l0-+0�!http://ocsp.globalsign.com/rootr30;+0�/http://secure.globalsign.com/cacert/root-r3.crt06U/0-0+�)�'�%http://crl.globalsign.com/root-r3.crl0GU @0>0<U 0402+&https://www.globalsign.com/repository/0
	*�H��
�����0y�(�	����{Z3n
g{b��\��]#�9Pv7�D�_#Y�VḼ�d0� ��?�r�~��#��-�<�쟇1e�9�Q�u��/����e��d��Q��$���wi��,\�XwѮ����w���4J�o=��
�]�zE�%1.�h����ԝ���aK/�(~zޓ�}�
m�Ĵf?}�X����8�
�ŗ���	�\��Ml0Գ�`H
x�����b wul��2��M�����)��0�0���z#��Si���>\���?0
	*�H��
0W10	UGB10U
Sectigo Limited1.0,U%Sectigo Public Time Stamping Root R460
210322000000Z
360321235959Z0U10	UGB10U
Sectigo Limited1,0*U#Sectigo Public Time Stamping CA R360��0
	*�H��
��0����͘�CA�n�+�3~&4䉌��"�T>�&�����"3����p���+RV7�\��kv��m�Kq%p��əA��&��Ζ��CڤAV����<ԩ������-Dha��r3�#q���o��f%]�x�M��v�������������U�3`f}������;	�9G‰��/�{,Y�uˏ�����LR.x~���9@��o�R���Q�ͽ`l�H��Giٕ���>_!&$������֗i�K���Ã,� g��³Q�+�V��+"I�b��p��eA!��)��$^̧�XܱE�����^P�Nr>�r\'��$*�Qh]����,��V���?q�.Ә����}7�)�n =�$�)�<�V�y8
Y`���\0�X0U#0��wj�?���l�/�
=%0U_X�L1z�aB�R���a��2�0U��0U�0�0U%0
+0U 
00U 0LUE0C0A�?�=�;http://crl.sectigo.com/SectigoPublicTimeStampingRootR46.crl0|+p0n0G+0�;http://crt.sectigo.com/SectigoPublicTimeStampingRootR46.p7c0#+0�http://ocsp.sectigo.com0
	*�H��
��{ �5X��%X�L-gt��b&!�UTiơF�v[h_�C�@LgMc��H'0�a���r9RC�mr��*1�Μ�R~�ޣ(�ȂQ�IT��q��^�4�%59)$J+��U%��%P��`�=�!cx#�����Ρ�=f~���\����ij�����;���\M�YD�k:�+%	�\�Ĝ�@u~n�<~N�B�~��zj4�Wh��I��4 ���J$��ǿ&���$�|�J� O��N�&�L��۾v.a�U�*IV�?7z��΅���E��ݬّ�XeR��1�^6@@�`B���0<���'3Ҹ��U#oC���dZN�G}�|�
������G{JVHa����`���Ǥؿ*�a��y�:�@�'�8ġ��� �h�&�f�G<E�pKmK��^����L�z�t�\)�q���LJ<,�ő"�@�1<0�YxV�l�����_w���-��	#�k�P��*���A;Ɠa�ZIT>ǭ1'�6�k�9�\�}0�b0�ʠ�);n�ק4��zN�$0
	*�H��
0U10	UGB10U
Sectigo Limited1,0*U#Sectigo Public Time Stamping CA R360
250327000000Z
360321235959Z0r10	UGB10UWest Yorkshire10U
Sectigo Limited100.U'Sectigo Public Time Stamping Signer R360�"0
	*�H��
�0�
�ӄ��n�Sx�=Kx<ܔ�Sga���c�`E���6.�\��?�]��MS��G�I"2��P�
���(<G�~�McL���ݓ[m���ć=?�����4�;{x
~ɡ����i?Ќԇ�T�`:b�]�I�9w�9����!@!��Aa�	X�Z�V����߳��I٣�r"���u�4Y�K�4o�U�f<����\d�ƣ��M_�3Yլ<�XF��P�y�dM��A�}^��l�h	ٚ�'��}��>hv
8����c��Ļ	��w&ۈ��Ɇ�PT�XW��U]����8}�N0]
HJ��O˱�ކ��M��W&a��d�p<��:�L��2���B�t��T�6��M�����]G����)p�Q�
r�a]9_�i�o*�nX��=dA��f�y٣!��)ǼR���%t)�Y�.H�Ne�0%F��k#pD�ց�=����+��-�,/|�5[�)מK��!�����?�'�Gk��v�j3���0��0U#0�_X�L1z�aB�R���a��2�0U�a��*7d�(`��1Ќ�,�O0U��0U�00U%�0
+0JU C0A05+�10%0#+https://sectigo.com/CPS0g�0JUC0A0?�=�;�9http://crl.sectigo.com/SectigoPublicTimeStampingCAR36.crl0z+n0l0E+0�9http://crt.sectigo.com/SectigoPublicTimeStampingCAR36.crt0#+0�http://ocsp.sectigo.com0
	*�H��
���>��rQ!�e�.=R����KD����.��5�.�q�\��ʧ����ܚ�
�F�-�18l�>I�������M��"3��"v���Gj�T���61cjD��d�y�-n��ٙ#���e�ݑ�4pxW����d�KD�D�V%q3�ݹu��i���Y�Y�u���>*�:�D��8�WD*��#&��O�S�j�As���
a-�7)�:��r'�v�i^y�H���pw��U��hȤ�Y���2�?ݦ�w��C���M�Y�6��y����`��Q��rq�iTy�8D#�c$���44ۢq�~�t�^�[��ڬ��*M�Qmi!'
��r�iF�J��m�]����f�)T(-`�-�4E��#�0��0�j�6°�|:磳�6��uh0
	*�H��
0��10	UUS10U
New Jersey10UJersey City10U
The USERTRUST Network1.0,U%USERTrust RSA Certification Authority0
210322000000Z
380118235959Z0W10	UGB10U
Sectigo Limited1.0,U%Sectigo Public Time Stamping Root R460�"0
	*�H��
�0�
���عEg���&��TT�|I��ZٔD�A@�w����v,�S^ В%/�WX��nb�D2G-e�':���F�:���<z�,�~7���١ǰ��k���Ѭ**���{*h��ݬ(��ƪ!Q'�Y���{<x���
�w�����w���8hm)(od����Q��n�
�q�_�M+����z"�ɢ�.�J)�B4Z�zS]�@Eu&u
nu�~Z��
�4��ߖo�:�'z֩��?�l�@�#���EH�0�b�&]�ರ"�����ʛQ��ʮ�t�n�P�ݕ0�2�����2��y��o�V^#�70�Bɰ��-L*��hKD��bL��a�OХ���m�"X5`��
���^*�s�Fª����uG������,���k�6�-��(���8��E��v�^u˽���$J*�B�oh��b��]\G�"X���k-�H�<�l�^�c��b�&�/e�y{�M�0�㑖Į�m�Q���Fg�
�{d�' $/����0�0U#0�Sy�Z�+J�T��؛���f�0U�wj�?���l�/�
=%0U��0U�0�0U%0
+0U 
00U 0PUI0G0E�C�A�?http://crl.usertrust.com/USERTrustRSACertificationAuthority.crl05+)0'0%+0�http://ocsp.usertrust.com0
	*�H��
��eA�hD������;%��~������CĢ�9�kZ�1Q��KK'��h-g�[�avI&Q_�mC�/�=�����P�u��;-l��"&ɬ� ��X9��U�ԡ=&Pdm�%���@D�Ϙ����,U��6�#=�1�[kA�LF/�"u���l?� L@���^��2m?�W��p	�?`�C�UV\o1�;W.����"Fb�]S[���lA��_.���l�h���S��&T���ET�p�b�M����3:	\Y�88�����2�Sb��)♀Z4~=��!ۏ�asm#��d"�~��d�F���BJh����a��o�`켓�&)ɚ�VHN�#��	��G����)(�i�$�X��甶�k��"H����K�%�2���ԻQW�?�m*�ƶ	��ݢ��,]n�(�N��e׋.TPfo:��^\@����9:R�����az"/>	��'}u��q��O��w�=+0���? �ϣGt�
�7�3����)	�(���U=?0��0�Рw��Y�GaS?u�0
	*�H��
0S10	UBE10U
GlobalSign nv-sa1)0'U GlobalSign Code Signing Root R450
200728000000Z
300728000000Z0\10	UBE10U
GlobalSign nv-sa1200U)GlobalSign GCC R45 EV CodeSigning CA 20200�"0
	*�H��
�0�
�� ��2C�[��#� ^�8��,�A�U�S����z9\�����������ﯓ��L��JDPx�j�֖����|�/��W3�X{�m��&*��Or��{d���U_�嚵,��%}Q+�I�_��5�ڤ/�J��/p���3�@����ͳ��S�R�xLQ�����t����Ҥ����q�Ѿ��A3 u̱����&w�m�I���Ð�Ƹ���{�^��$�co~�aϘU�$��6��.��&�Vᲊ�ܘ�.���4�&���xm졈<���حa��p6�y��
s���,���X96H�;Z�"�t�,��Ѵ���Im�ݛkc ]�~;�C�b:��ʹ��7$rs��	܅��"�@*.m�i�n�l
��&���D�_bgL��7�U�6�n�m6&���=q��2���220|���!�<��ic��uɋ«�:��^����=�2>n}�~������N�,�ߡe�$��*��S���0��0U��0U%0
+0U�0�0U%��Y	�c���;W�60U#0��F�
�x9���C�VP�Ζ;0��+��0��09+0�-http://ocsp.globalsign.com/codesigningrootr450F+0�:http://secure.globalsign.com/cacert/codesigningrootr45.crt0AU:0806�4�2�0http://crl.globalsign.com/codesigningrootr45.crl0UU N0L0A	+�20402+&https://www.globalsign.com/repository/0g�0
	*�H��
�%u�	�9���9�/����K�|
h���q�jkO�?�E��e�L�X"f�a�c�Ԣ�^%w���q@3�)���m�M�>K�s3�-=L谺u�t-�X:lI��
���jh4%B��V��$}�+r��k�橘�>Z����t��wF*=#}(s���+��lS��<�q�^���*�3�WM^^���-!�nϗa{�qz:�c��0D72��C�ܺ���3+wm���~_u.���5�6c��dٽ��,�IV�+�'�7�W���)���-�*a�W�
@���/�Ӈ_��H�7��.fb�^�N��UWC�S�%~<a���?�׎�V^!���jq����r��"+�'O8�Q@���=}���L6W����H0R'����"�ɦ��z6�j�a_$���h��I�^д4��@��1R95)�$���c�wH�b�$�zN��n�Ξ8P&�!qe�	%��z���w����U���R�I��r�D&3fD��3!�b�H�0��0�l�j)����INTWr0
	*�H��
0\10	UBE10U
GlobalSign nv-sa1200U)GlobalSign GCC R45 EV CodeSigning CA 20200
241206072143Z
251207072143Z0��10UPrivate Organization10U751600-A10+�7<MY10	UMY10USelangor10U
Petaling Jaya1*0(U	!No.2 Jalan PJU 1A/2 Ara Damansara10U
Auto Count Sdn. Bhd.10UAuto Count Sdn. Bhd.0�"0
	*�H��
�0�
�����@�3�x#n*фG(�k���Q*Y�^���[�Ҿç��A嵥����{����f�@�>/K�UR�|�U�Qh0��4�f�-����͇r��ל��QeH�!P�����	��o��j/feܹFQ�	���f�e��3.��]H�(.7�)�05t�]��Ej������_�d�)[��.�"����md�C��}A���U���Ϭ�9�^U3���.�D9.n���/�n��D칏WR|@������Z�I��iQ*f}B9u�T1X60���_����Y�@,�?�r���S`Q�[��[���C9���8��z6:���bV�1<�7r��_�����Nu�5:�*M�F�!bEp��]P�C�%��~����ۇ\
X�YM
�G�`�Y0M��oL7�	E�/8;�9���:���_����sW�B��A����a g���� j�p+���z	<ߵQw"!�!SPv�8i�d��P5��	�Uxk���tk���0��0U��0��+��0��0L+0�@http://secure.globalsign.com/cacert/gsgccr45evcodesignca2020.crt0?+0�3http://ocsp.globalsign.com/gsgccr45evcodesignca20200UU N0L0A	+�20402+&https://www.globalsign.com/repository/0g�0	U00GU@0>0<�:�8�6http://crl.globalsign.com/gsgccr45evcodesignca2020.crl0U%0
+0U#0�%��Y	�c���;W�60U�Z�"g�3O�Ѣ*�}��P0
	*�H��
���
p�f[����a��7;Z�q�>��>��Ճ� ^�E=i�)�=g��l`>��<��t�����/;�P��=r#���ʮ���4?,~��y��k�V���u�R����\�����(/��NO#d�0�Kq>x&l*�)w��P��lȽ��n�w�:�T�o���p��l,���QI�g6��xz����(��<@���
XU�״ ��JD�x%����p��pS-���I�Yk�i�y�0���68�{�f�����9)�i��2���6��2nM��f��{��9�ɤ�M"WΨu�t}��>/W3�&��1�'U�y�20�a�3�
����Z��y��ͅT�T��W�K�j�W���VN�˷*PODt�k�*�����+Ǚ�&z*3n�����`Օ�U���ޔ�8��꤄�0]0o�Ը������'��4CꈓJ��6�&ׁO�wqwL�"��طޱ��b�E%�Z��(��(�8ײ���jP�1�;A0�;=0l0\10	UBE10U
GlobalSign nv-sa1200U)GlobalSign GCC R45 EV CodeSigning CA 2020j)����INTWr0	+�p0
+�7100	*�H��
	1
+�70
+�710
+�70#	*�H��
	1?!�d�58_��Q��LP�{
�q0
	*�H��
����K�TewT�F��I7��@�O�ZR��v�������,rC�߿0 �cߨ/��&� �Sd�켔+#77�(���g�0㍋&�g���!��̍��Ŋ]p��p������C�w�W P���@S3�H�$F�������ɐ
��5u(���6R�q���*i�+f��{�%��.Z
\��N}�U40��}�An�{�Yp�Lp��)�3%�����	
����!���UJ���[$��I��|a��̼ln�n�-E,W�EV�E[̭����p��4�!�ǐ�$2��Vx�d��*m�(���}�@��vN��w��/���v�ܠ�oQ�y76>��l�7}&�q�Ou���'#$����rU��Q�Auzܹ)��G�FT��M�9q�E�dw��Y�qAҲ��.i�b��/�6�@T��څU}�HD����}x`���y�>0M=?���
���0�2.	�(����qH�\���E1��-,�|��$fD�Y�����Wq��880�	*�H��
	1�0�0j0U10	UGB10U
Sectigo Limited1,0*U#Sectigo Public Time Stamping CA R36�);n�ק4��zN�$0
	`�He�y0	*�H��
	1	*�H��
0	*�H��
	1
251010074202Z0?	*�H��
	120M����7F�bF�&����'�=�ۈ�f[C��A�oV��p���A���y0
	*�H��
�h>��r��X�Kآ�4�q�
t��yi���U<3�HOkF�����H�R\'Y��&T�h�	3jscO0h������.�]@1؁�
�6�b<����d���إ�<��,OƑ�:
��)��J2�_��� �x,������{��'�\����K��C��(C����4�+��?0���4���0�����(�B���b�x�:>�6�ƙ���>��P�­ً@4��ߙ�
���_5m�4��ĩ&��In���>��)�͙<�l���B�$��Zo֮�����i��'d�kZ�s�Q�S꣊�;��cN��=���/X��Y�0��}#̦f��+�I|�����C��_�?>F����)�h����d��\
J���?,��RZ\�7�9�6�fvu9�����b�C�>9>b��t��e�D�q����5�����Q�mp�F���bƠN�0)�yr|�4��^A���c�#�k��g��0�5
+�71�50�4�	*�H��
��4�0�4�10
	`�He0\
+�7�N0L0
+�70	���010
	`�He �!��Jd��?�TEY|�}XN���F�V�Q��T.���l0�N0�6�
�_���5+de�j0
	*�H��
0W10	UBE10U
GlobalSign nv-sa10URoot CA10UGlobalSign Root CA0
180919000000Z
280128120000Z0L1 0UGlobalSign Root CA - R310U

GlobalSign10U
GlobalSign0�"0
	*�H��
�0�
��%v�yx"������(��vŭ�r�FCDz��_$�.K�`�F�R��Gpl�d��,��=+��׶�y�;�w��I�jb/^��h߉'�8��>��&Y
sް��&���[��`�I�(�i;���(�坊aW7�t�t�:�r/.��л��=�3�+�S�:s��A :�����O�.2`�W˹�hh�8&`u��w��� I��@H�1a^���w�d�z�_��b�
l�Ti��n郓qv�i����"0�0U�0U�0�0U��K�.E$�MP�c������0U#0�`{fE
�ʉP/}�4����K0=+10/0-+0�!http://ocsp.globalsign.com/rootr103U,0*0(�&�$�"http://crl.globalsign.com/root.crl0GU @0>0<U 0402+&https://www.globalsign.com/repository/0
	*�H��
�#p���Y��Bo�C3��?:�d�bKH�@�����_<�3���>�`����~��*�}�W�;j��޽@c���Ȉ���A�	�8�S���>�ӟPv�	��H}.Q��Sӫ@���}�OyVp_ӎ��p
7+�����k@���~��bX�w�s"Š��C���n��B/�}^��='�&��u���{��LӯQ!�[�}+�?t�Q螃o�F�#��䢋�9k�y�,�a$-�*Hp�����p0��0���xBEp�A�o�T0
	*�H��
0L1 0UGlobalSign Root CA - R310U

GlobalSign10U
GlobalSign0
200728000000Z
290318000000Z0S10	UBE10U
GlobalSign nv-sa1)0'U GlobalSign Code Signing Root R450�"0
	*�H��
�0�
��-�0�z諐=r�:K�a��g7�~쓃����C��E��cW]��%�h�K��K�J�j��a'��D��?"£O����(��]�Y��˜�,�3$�P:A��{MҨX8������,��C�	t���{�3
Yk���Z�{�U���L�⺽�u�o�atD���t��h�l&>�����0��|U�p\$x %�gg���N4�kp�8�Ծ������;�gC���t�/����	7=gl�E\a�A����w
FGsο����+���X�W�ϨZ�%�Ğ�r=�܌��;D�&������E�.珘���Bng~Bqb��`�d����!N+�mh��ƙtsg1z��Ԍyn|��~FoMŅ+Ϛ"D��7�aW$��1s��5WG~:E�-�Q����7�e�kw����?0�o1��@�������PvtY��m2���~��u��J�,�+B��j6��L�Ξ�ˍ����՛�ƒ:�c�.$d���w0�s0U��0U%0
+0U�0�0U�F�
�x9���C�VP�Ζ;0U#0���K�.E$�MP�c������0z+n0l0-+0�!http://ocsp.globalsign.com/rootr30;+0�/http://secure.globalsign.com/cacert/root-r3.crt06U/0-0+�)�'�%http://crl.globalsign.com/root-r3.crl0GU @0>0<U 0402+&https://www.globalsign.com/repository/0
	*�H��
�����0y�(�	����{Z3n
g{b��\��]#�9Pv7�D�_#Y�VḼ�d0� ��?�r�~��#��-�<�쟇1e�9�Q�u��/����e��d��Q��$���wi��,\�XwѮ����w���4J�o=��
�]�zE�%1.�h����ԝ���aK/�(~zޓ�}�
m�Ĵf?}�X����8�
�ŗ���	�\��Ml0Գ�`H
x�����b wul��2��M�����)��0��0�Рw��Y�GaS?u�0
	*�H��
0S10	UBE10U
GlobalSign nv-sa1)0'U GlobalSign Code Signing Root R450
200728000000Z
300728000000Z0\10	UBE10U
GlobalSign nv-sa1200U)GlobalSign GCC R45 EV CodeSigning CA 20200�"0
	*�H��
�0�
�� ��2C�[��#� ^�8��,�A�U�S����z9\�����������ﯓ��L��JDPx�j�֖����|�/��W3�X{�m��&*��Or��{d���U_�嚵,��%}Q+�I�_��5�ڤ/�J��/p���3�@����ͳ��S�R�xLQ�����t����Ҥ����q�Ѿ��A3 u̱����&w�m�I���Ð�Ƹ���{�^��$�co~�aϘU�$��6��.��&�Vᲊ�ܘ�.���4�&���xm졈<���حa��p6�y��
s���,���X96H�;Z�"�t�,��Ѵ���Im�ݛkc ]�~;�C�b:��ʹ��7$rs��	܅��"�@*.m�i�n�l
��&���D�_bgL��7�U�6�n�m6&���=q��2���220|���!�<��ic��uɋ«�:��^����=�2>n}�~������N�,�ߡe�$��*��S���0��0U��0U%0
+0U�0�0U%��Y	�c���;W�60U#0��F�
�x9���C�VP�Ζ;0��+��0��09+0�-http://ocsp.globalsign.com/codesigningrootr450F+0�:http://secure.globalsign.com/cacert/codesigningrootr45.crt0AU:0806�4�2�0http://crl.globalsign.com/codesigningrootr45.crl0UU N0L0A	+�20402+&https://www.globalsign.com/repository/0g�0
	*�H��
�%u�	�9���9�/����K�|
h���q�jkO�?�E��e�L�X"f�a�c�Ԣ�^%w���q@3�)���m�M�>K�s3�-=L谺u�t-�X:lI��
���jh4%B��V��$}�+r��k�橘�>Z����t��wF*=#}(s���+��lS��<�q�^���*�3�WM^^���-!�nϗa{�qz:�c��0D72��C�ܺ���3+wm���~_u.���5�6c��dٽ��,�IV�+�'�7�W���)���-�*a�W�
@���/�Ӈ_��H�7��.fb�^�N��UWC�S�%~<a���?�׎�V^!���jq����r��"+�'O8�Q@���=}���L6W����H0R'����"�ɦ��z6�j�a_$���h��I�^д4��@��1R95)�$���c�wH�b�$�zN��n�Ξ8P&�!qe�	%��z���w����U���R�I��r�D&3fD��3!�b�H�0��0�l�j)����INTWr0
	*�H��
0\10	UBE10U
GlobalSign nv-sa1200U)GlobalSign GCC R45 EV CodeSigning CA 20200
241206072143Z
251207072143Z0��10UPrivate Organization10U751600-A10+�7<MY10	UMY10USelangor10U
Petaling Jaya1*0(U	!No.2 Jalan PJU 1A/2 Ara Damansara10U
Auto Count Sdn. Bhd.10UAuto Count Sdn. Bhd.0�"0
	*�H��
�0�
�����@�3�x#n*фG(�k���Q*Y�^���[�Ҿç��A嵥����{����f�@�>/K�UR�|�U�Qh0��4�f�-����͇r��ל��QeH�!P�����	��o��j/feܹFQ�	���f�e��3.��]H�(.7�)�05t�]��Ej������_�d�)[��.�"����md�C��}A���U���Ϭ�9�^U3���.�D9.n���/�n��D칏WR|@������Z�I��iQ*f}B9u�T1X60���_����Y�@,�?�r���S`Q�[��[���C9���8��z6:���bV�1<�7r��_�����Nu�5:�*M�F�!bEp��]P�C�%��~����ۇ\
X�YM
�G�`�Y0M��oL7�	E�/8;�9���:���_����sW�B��A����a g���� j�p+���z	<ߵQw"!�!SPv�8i�d��P5��	�Uxk���tk���0��0U��0��+��0��0L+0�@http://secure.globalsign.com/cacert/gsgccr45evcodesignca2020.crt0?+0�3http://ocsp.globalsign.com/gsgccr45evcodesignca20200UU N0L0A	+�20402+&https://www.globalsign.com/repository/0g�0	U00GU@0>0<�:�8�6http://crl.globalsign.com/gsgccr45evcodesignca2020.crl0U%0
+0U#0�%��Y	�c���;W�60U�Z�"g�3O�Ѣ*�}��P0
	*�H��
���
p�f[����a��7;Z�q�>��>��Ճ� ^�E=i�)�=g��l`>��<��t�����/;�P��=r#���ʮ���4?,~��y��k�V���u�R����\�����(/��NO#d�0�Kq>x&l*�)w��P��lȽ��n�w�:�T�o���p��l,���QI�g6��xz����(��<@���
XU�״ ��JD�x%����p��pS-���I�Yk�i�y�0���68�{�f�����9)�i��2���6��2nM��f��{��9�ɤ�M"WΨu�t}��>/W3�&��1�'U�y�20�a�3�
����Z��y��ͅT�T��W�K�j�W���VN�˷*PODt�k�*�����+Ǚ�&z*3n�����`Օ�U���ޔ�8��꤄�0]0o�Ը������'��4CꈓJ��6�&ׁO�wqwL�"��طޱ��b�E%�Z��(��(�8ײ���jP�1�0�0l0\10	UBE10U
GlobalSign nv-sa1200U)GlobalSign GCC R45 EV CodeSigning CA 2020j)����INTWr0
	`�He���0
+�7100
*�H��
	10	*�H��
	1
+�70
+�710
+�70/	*�H��
	1" ��.{	�gHƨ
in�)%;X�7�G�0
	*�H��
�m�:�I�`����ɕxp0ˇ����=>CM�KI�Q�a��Ť��S�i@u�pr´zW�|&P��m��ҋ�d?���`:����.�:0P>�k3ܰqw�n��fj�i�ð
�l��_~�E�W�H�C���RL��^��7q �j�3�b�(�|�F��j�����c�03��6��_�#y5&��1m|1���ٲ�:� ���dt��~���9�cl�׉N�t�ǯ4�9,�9�%;�-B���π1��(�/U
u�%ѻ͌�I�II_��d��3,�'-���
�Qu,εεə`��E6+J Ĉ��Y���K���kz�O	jx0x�U�;GK���}�,p�o�߲xDC���ɬ�vO6�i��I=S5`7HƄ�Q���ih���GRE�fȚ�18�:`okS�J��&zJ�G��4)�g�H����6�zKPf�3��o��lc���`x�-�s�����f�yB�$+�d�p��rR�4F$��%��E�����|�P�b���0��
+�71��0��	*�H��
���0��10
	`�He0��*�H��
	�����0��
+�1010
	`�He ��z�H�*k����F"��+G�u�&P]�k�U�&�!��ֻ��j��20251010074527Z�v�t0r10	UGB10UWest Yorkshire10U
Sectigo Limited100.U'Sectigo Public Time Stamping Signer R36��0�b0�ʠ�);n�ק4��zN�$0
	*�H��
0U10	UGB10U
Sectigo Limited1,0*U#Sectigo Public Time Stamping CA R360
250327000000Z
360321235959Z0r10	UGB10UWest Yorkshire10U
Sectigo Limited100.U'Sectigo Public Time Stamping Signer R360�"0
	*�H��
�0�
�ӄ��n�Sx�=Kx<ܔ�Sga���c�`E���6.�\��?�]��MS��G�I"2��P�
���(<G�~�McL���ݓ[m���ć=?�����4�;{x
~ɡ����i?Ќԇ�T�`:b�]�I�9w�9����!@!��Aa�	X�Z�V����߳��I٣�r"���u�4Y�K�4o�U�f<����\d�ƣ��M_�3Yլ<�XF��P�y�dM��A�}^��l�h	ٚ�'��}��>hv
8����c��Ļ	��w&ۈ��Ɇ�PT�XW��U]����8}�N0]
HJ��O˱�ކ��M��W&a��d�p<��:�L��2���B�t��T�6��M�����]G����)p�Q�
r�a]9_�i�o*�nX��=dA��f�y٣!��)ǼR���%t)�Y�.H�Ne�0%F��k#pD�ց�=����+��-�,/|�5[�)מK��!�����?�'�Gk��v�j3���0��0U#0�_X�L1z�aB�R���a��2�0U�a��*7d�(`��1Ќ�,�O0U��0U�00U%�0
+0JU C0A05+�10%0#+https://sectigo.com/CPS0g�0JUC0A0?�=�;�9http://crl.sectigo.com/SectigoPublicTimeStampingCAR36.crl0z+n0l0E+0�9http://crt.sectigo.com/SectigoPublicTimeStampingCAR36.crt0#+0�http://ocsp.sectigo.com0
	*�H��
���>��rQ!�e�.=R����KD����.��5�.�q�\��ʧ����ܚ�
�F�-�18l�>I�������M��"3��"v���Gj�T���61cjD��d�y�-n��ٙ#���e�ݑ�4pxW����d�KD�D�V%q3�ݹu��i���Y�Y�u���>*�:�D��8�WD*��#&��O�S�j�As���
a-�7)�:��r'�v�i^y�H���pw��U��hȤ�Y���2�?ݦ�w��C���M�Y�6��y����`��Q��rq�iTy�8D#�c$���44ۢq�~�t�^�[��ڬ��*M�Qmi!'
��r�iF�J��m�]����f�)T(-`�-�4E��#�0�0���z#��Si���>\���?0
	*�H��
0W10	UGB10U
Sectigo Limited1.0,U%Sectigo Public Time Stamping Root R460
210322000000Z
360321235959Z0U10	UGB10U
Sectigo Limited1,0*U#Sectigo Public Time Stamping CA R360��0
	*�H��
��0����͘�CA�n�+�3~&4䉌��"�T>�&�����"3����p���+RV7�\��kv��m�Kq%p��əA��&��Ζ��CڤAV����<ԩ������-Dha��r3�#q���o��f%]�x�M��v�������������U�3`f}������;	�9G‰��/�{,Y�uˏ�����LR.x~���9@��o�R���Q�ͽ`l�H��Giٕ���>_!&$������֗i�K���Ã,� g��³Q�+�V��+"I�b��p��eA!��)��$^̧�XܱE�����^P�Nr>�r\'��$*�Qh]����,��V���?q�.Ә����}7�)�n =�$�)�<�V�y8
Y`���\0�X0U#0��wj�?���l�/�
=%0U_X�L1z�aB�R���a��2�0U��0U�0�0U%0
+0U 
00U 0LUE0C0A�?�=�;http://crl.sectigo.com/SectigoPublicTimeStampingRootR46.crl0|+p0n0G+0�;http://crt.sectigo.com/SectigoPublicTimeStampingRootR46.p7c0#+0�http://ocsp.sectigo.com0
	*�H��
��{ �5X��%X�L-gt��b&!�UTiơF�v[h_�C�@LgMc��H'0�a���r9RC�mr��*1�Μ�R~�ޣ(�ȂQ�IT��q��^�4�%59)$J+��U%��%P��`�=�!cx#�����Ρ�=f~���\����ij�����;���\M�YD�k:�+%	�\�Ĝ�@u~n�<~N�B�~��zj4�Wh��I��4 ���J$��ǿ&���$�|�J� O��N�&�L��۾v.a�U�*IV�?7z��΅���E��ݬّ�XeR��1�^6@@�`B���0<���'3Ҹ��U#oC���dZN�G}�|�
������G{JVHa����`���Ǥؿ*�a��y�:�@�'�8ġ��� �h�&�f�G<E�pKmK��^����L�z�t�\)�q���LJ<,�ő"�@�1<0�YxV�l�����_w���-��	#�k�P��*���A;Ɠa�ZIT>ǭ1'�6�k�9�\�}0��0�j�6°�|:磳�6��uh0
	*�H��
0��10	UUS10U
New Jersey10UJersey City10U
The USERTRUST Network1.0,U%USERTrust RSA Certification Authority0
210322000000Z
380118235959Z0W10	UGB10U
Sectigo Limited1.0,U%Sectigo Public Time Stamping Root R460�"0
	*�H��
�0�
���عEg���&��TT�|I��ZٔD�A@�w����v,�S^ В%/�WX��nb�D2G-e�':���F�:���<z�,�~7���١ǰ��k���Ѭ**���{*h��ݬ(��ƪ!Q'�Y���{<x���
�w�����w���8hm)(od����Q��n�
�q�_�M+����z"�ɢ�.�J)�B4Z�zS]�@Eu&u
nu�~Z��
�4��ߖo�:�'z֩��?�l�@�#���EH�0�b�&]�ರ"�����ʛQ��ʮ�t�n�P�ݕ0�2�����2��y��o�V^#�70�Bɰ��-L*��hKD��bL��a�OХ���m�"X5`��
���^*�s�Fª����uG������,���k�6�-��(���8��E��v�^u˽���$J*�B�oh��b��]\G�"X���k-�H�<�l�^�c��b�&�/e�y{�M�0�㑖Į�m�Q���Fg�
�{d�' $/����0�0U#0�Sy�Z�+J�T��؛���f�0U�wj�?���l�/�
=%0U��0U�0�0U%0
+0U 
00U 0PUI0G0E�C�A�?http://crl.usertrust.com/USERTrustRSACertificationAuthority.crl05+)0'0%+0�http://ocsp.usertrust.com0
	*�H��
��eA�hD������;%��~������CĢ�9�kZ�1Q��KK'��h-g�[�avI&Q_�mC�/�=�����P�u��;-l��"&ɬ� ��X9��U�ԡ=&Pdm�%���@D�Ϙ����,U��6�#=�1�[kA�LF/�"u���l?� L@���^��2m?�W��p	�?`�C�UV\o1�;W.����"Fb�]S[���lA��_.���l�h���S��&T���ET�p�b�M����3:	\Y�88�����2�Sb��)♀Z4~=��!ۏ�asm#��d"�~��d�F���BJh����a��o�`켓�&)ɚ�VHN�#��	��G����)(�i�$�X��甶�k��"H����K�%�2���ԻQW�?�m*�ƶ	��ݢ��,]n�(�N��e׋.TPfo:��^\@����9:R�����az"/>	��'}u��q��O��w�=+0���? �ϣGt�
�7�3����)	�(���U=?1��0��0j0U10	UGB10U
Sectigo Limited1,0*U#Sectigo Public Time Stamping CA R36�);n�ק4��zN�$0
	`�He���0	*�H��
	1
*�H��
	0	*�H��
	1
251010074527Z0?	*�H��
	120~y���H�T3.]�Z'�iGJ�[���*����@pbL��������0�z*�H��
	1�i0�e0�a08��D��f>��tK�A����0��ƮT�x��|=UH�i�Jz���0o0[�Y0W10	UGB10U
Sectigo Limited1.0,U%Sectigo Public Time Stamping Root R46z#��Si���>\���?0���=c-���a|А5đޒ�B��0��0�����0��10	UUS10U
New Jersey10UJersey City10U
The USERTRUST Network1.0,U%USERTrust RSA Certification Authority6°�|:磳�6��uh0
	*�H��
��	�n� ���P������)���R���?�p�!2�J���ԫ�i
ݜ����Z=�(��U��[\R����=@+� ⬷d[=��Y �/�|S (��%Uic��q��J�~F-]]l�+�٩�ʜ�D��s��6S7_���q7Ӵo@� �P�%kJP�f��X��d��Rm?5�`&���]�����>�z�x��>�`glF��+N3�P~��+~�����߲O�rM�
��嚼k�Y���b�W��,��)�h��WR�J�	mÀ�H��mQ��)������`X�T��{]��N����5�_��?OXs.�1�0e>��ԅ���?���.�"�&��TG��:�ec��|:�Yb�$p��Hm0��+U��n��?�B�ӱ�/�W_�R)��,�}�Xk�����v�u�R�?}�C*�SSpq�o05��+�=��z'���c�CS�l��kY8bl��Գ�z����?&��s�J
F�s��>c���^$	�l�����~

Youez - 2016 - github.com/yon3zu
LinuXploit