From 27192d78c9837a3f4e6dc8b443d69d84e46ca7a0 Mon Sep 17 00:00:00 2001 From: raynald Date: Wed, 13 Apr 2022 17:26:33 +0200 Subject: [PATCH] duplicates --- __manifest__.py | 2 + .../__pycache__/__init__.cpython-37.pyc | Bin 218 -> 0 bytes .../__pycache__/controllers.cpython-37.pyc | Bin 1504 -> 0 bytes models/__init__.py | 1 + models/__pycache__/__init__.cpython-37.pyc | Bin 596 -> 0 bytes models/__pycache__/address.cpython-37.pyc | Bin 1805 -> 0 bytes models/__pycache__/email.cpython-37.pyc | Bin 1488 -> 0 bytes models/__pycache__/mail_mail.cpython-37.pyc | Bin 566 -> 0 bytes .../mailing_mailing.cpython-37.pyc | Bin 840 -> 0 bytes models/__pycache__/models.cpython-37.pyc | Bin 1676 -> 0 bytes models/__pycache__/operation.cpython-37.pyc | Bin 19564 -> 0 bytes models/__pycache__/partner.cpython-37.pyc | Bin 6983 -> 0 bytes models/__pycache__/phone.cpython-37.pyc | Bin 1492 -> 0 bytes models/__pycache__/qualifier.cpython-37.pyc | Bin 5031 -> 0 bytes .../__pycache__/relationship.cpython-37.pyc | Bin 3663 -> 0 bytes models/duplicate.py | 141 ++++++++++++++++++ security/ir.model.access.csv | 5 + views/duplicate.xml | 67 +++++++++ views/partner.xml | 12 +- 19 files changed, 227 insertions(+), 1 deletion(-) delete mode 100644 controllers/__pycache__/__init__.cpython-37.pyc delete mode 100644 controllers/__pycache__/controllers.cpython-37.pyc delete mode 100644 models/__pycache__/__init__.cpython-37.pyc delete mode 100644 models/__pycache__/address.cpython-37.pyc delete mode 100644 models/__pycache__/email.cpython-37.pyc delete mode 100644 models/__pycache__/mail_mail.cpython-37.pyc delete mode 100644 models/__pycache__/mailing_mailing.cpython-37.pyc delete mode 100644 models/__pycache__/models.cpython-37.pyc delete mode 100644 models/__pycache__/operation.cpython-37.pyc delete mode 100644 models/__pycache__/partner.cpython-37.pyc delete mode 100644 models/__pycache__/phone.cpython-37.pyc delete mode 100644 models/__pycache__/qualifier.cpython-37.pyc delete mode 100644 models/__pycache__/relationship.cpython-37.pyc create mode 100644 models/duplicate.py create mode 100644 views/duplicate.xml diff --git a/__manifest__.py b/__manifest__.py index a151eb2..307b2e2 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -39,8 +39,10 @@ 'views/payment_batch.xml', 'views/website_sale.xml', 'views/aggregate.xml', + 'views/duplicate.xml', 'wizard/operation_duplicate_wizard.xml', 'report/report_donationtax.xml' + #'views/website_donation.xml' diff --git a/controllers/__pycache__/__init__.cpython-37.pyc b/controllers/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index 95d834625c959b91ca093db189430bc1dd16ab3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmZ?b<>g`k0`+d+Bu^my7{q}ACLqHBh>K-_L<&O+V-7Ym!7BK^fl?+9!AU25j z<)ELRlAjMIbc<7q%2JE;lS_+B@^f_)Q-J!5_45l-^S}%w!}a6iGxIV_;^XxSDsOSv TrW;Ao! zJs_d{hlCsdhO@7n_Al&-a`%Lcz?RFOU3R_gZ$_iOL+!KQe>!Oh{cRWb%_nd`L;Xku z9AKqWv6L~3-O{bR)N8R<`c;qyE%wW>iqfdXK^dp<_YQ;*y>TEC(Q7a5L2%?G@mrGU zB+U3Tts9yn6c-DjG{N34O5k^h5@|8`Rh+0oi=(U*hq=9U-y#ABG}MHMa8d?N>I!e} z13P2jf(Jg$0faXJ450`8H|#Y_0~nC{kr`Tn>Lp58R>9l@@7%*@;1kD(;Q4<}fWHn`{w=w2$M8^xx6%FTj;%xDcI$|^zx~Ul z6>%ey7(@J_bKA4->;8%YaO#~|UJQeE4~8rMJj6eUV>Jx#h`;WUO@r?2%3XP@a22h3 zFuDnu)1KNPO@C?Ub_lz7?1-!-^vI%QZ+UP$E7Ta}LW?nhJS$59BSrb*5?)JlhE|< zwUOqCJmDAm+C)ld3viFpitkzSJ`od%R}BiKmiwEcnu+|JLh|)y|HYTf{zJJXBlPUm zp}o4(I(bHNTSrZxw2c92Qi=>R9k8fs4q>ZM27jyctx$vklV2Gu8K{J z0tytlPWr}IqCCaNR@(=b>|2%Y`IYHE#P-1%6K$Msz53I^gpR-ab}B*2mOQ0bdMR+) zW#B1=g;F?`ji_6Y%UYwP0zft0!jtCO47MyBkW}@Ih!gIxKJ^{fC;F(P>|>hab}wY^ zrpF$gbC>(uFL<&g@-T66L;~A%Qubob>#P!-n?C0iJ$Nc4PI2NFi>&N8-D?lp%Ed42 zUF+=@d199#ksb|YUw7<2X6=rRtPM&hqi5m7erj!A&2GCEuX54VING~u((ZO4n{0j$ rZnH4i4po&EH3oDZKe5EB-!iGS(As6<=bcwy**{C!FK5WQ9((@)1Rkb0 diff --git a/models/__init__.py b/models/__init__.py index e690b10..ef8a066 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -13,3 +13,4 @@ from . import payment_batch from . import sale_order from . import product from . import aggregate +from . import duplicate diff --git a/models/__pycache__/__init__.cpython-37.pyc b/models/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index d2d8dee1fcb03565cf7ca803894118f06af479e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmZ|MJx;?g7=U4?`TvKN3!n}q2LK_&4hx%?$gNFkDY1j?AoUEK1c?)MW#S4Tag@Z(V_g>nw(F0ltqchH#=&`80UqFIzaX6OU?fvOg8;n(ujtA<1cx;Aj=&L( zykl@oWA6l<(8N0hr!@7>z!}ZFb8t>`?*d%V!n*{QwDhjP6|KB$a7}CP2HemF+`f?Y z#Sg57tb=3zwy;sYN?~A-&dfOFnQ^U{lUm_v#<>yJ0%I{TIU?r0RsxXgS(x*cEzU|c z^rs`tS4NC}+V15Ho#tBmY^*Tv!gRaEIz4S* o{aV=$R;oNE&BbWDzL!e6zQ36d$LtPHE~B`|SF%@-D)?{z1A1MJYybcN diff --git a/models/__pycache__/address.cpython-37.pyc b/models/__pycache__/address.cpython-37.pyc deleted file mode 100644 index 8f06c8160178b349e143b9518b7d6cb3c8ecaa7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1805 zcmZ8iOK)5?6t?ec?z|`O1Smvo%1G%1vP2OoO(}Gds1i^lOX$kE_DpW#d+)^dB$?4< z)kXX-yHF29ko zl&1TVii}a6m4#D))mN9ow4YK`<*jb%){#H5{r}sOeCnLM?}y6>2-w zs!#_|m$g}kbwSg+3rG(%D{O_W0$#iG$tvJA@K^`D0eBto2HRv?ptIjL+hHHv)yU=> zG{o#f_R;H@Y`sANBHNJR2WG1r^MaLyO2$;`f=kMn-)|sH$dquGs_;nn-vQOu-lU@ zoNVN*37J}^$JDAknYb*{Gg^$eUDlp6)%|F(Feol3ndHobS;6?tVnVkIhyspt%~KDi zwk?8g%g%?cu0Sw+3k1CNZ@!!3r|9R$x4}GM-i0RzbIiOQqy`$Dp}7xM{}9bR_zez`_H{5vue`V69K#&pJOq-2C(q<2EN|MjV3K7zOw++C zH<7g4G=a^SX=15xW#de#g7_`Kw+J_q+gm_rBP7kth8X6WIHcmfJ21 z(lXn0t#ZI`QtmRPWN7V{_$D5!X(F*6@DOxpjzUSz_2TvSqN>*IN@w6vayWj+af`&X;X_r_Gl4}TLn zm%`;$SqnhR?3MQYSHg)iVbwv}wqmYQwHDeZV6R+Ws0sDa%H`T-xZh#4n}yxNLJ>|S z;en)_$$*EFEhvvveAoIwc%tHqwhU#2RlH}s1AG^_1o$@ay@u~Jd>{CM?8+Y4;MbP} zIeg#Z!*^s(4uXQK zRc@5@QC>=QV~!4?(F+mN)Xw)cJPru0y~@78RCS8Om%A0j}$kEfz;TLyclP1Z!H$M*Ee(r&V9xp-z;C`*9w z2er9_+U)e>Q)KY1G5GlUQaaUXDbq|!bTrzG=Td$fl|4+jH11XhGlUZTB)(Q|`^Gz+<|is? z;1>xC9PiV=t9Fc`wdQl%Z--m&-nL-kaNet%JGIfV_27N0AiHaiHV^Wz+i5Xv{tubc zs^5khsT({o?}k%G_czN~DuPan?>gM=^tf4#0XNEzZDLs`6xmj`9`eVb!j!6Y-u|BC Y$@YYv=Q)2rE#rb>7qdF2yf`cW12g-WGynhq diff --git a/models/__pycache__/mailing_mailing.cpython-37.pyc b/models/__pycache__/mailing_mailing.cpython-37.pyc deleted file mode 100644 index 1ca550a15d8ebcacdb962f84599d6f45cb56e140..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcmZuvy^a$x5Vm){yG}^NaRs^x(V-NVNR;R}p`)NmD6Vs3Eg2`bVb>0J0=g(vcO5Tr zSMn^pfmi4?@?bVO*r(cwi-@$2(A$fa<~kHJQkoT;xq53Q9f@NP*oGU@BkmyHs?5UXwxg2V;=QfcdmsRz9Cqss`ut z#(=7w&sN6NZW_+Cc2IwVD~bpT1XZa>6?@1af%GvEdE^W-Z zpmNt2NWSc4WApH>YN)G#KrMNNl;PjP{+6E!~_Pww;9T?`!ey}eQ*q9J9y_Wed}{Dn4=yf zam6PU3=+?rs%Jj6%KaqvB%Hh&889Zoxl{J5vZLwRtxR)XLMUt07BJfNd9*KFwvAZc z`sdQ<=}oEUN*>qL!}u;oAPJ*qbn{}o@7@28PX$2YO za9QaaWvi7)OtQ#Tl{0Zbv+ARi#jn28=lN&2tFH!{}_WD$wl>`>G{R3uFLS^u|1sf HOLH4V5Z>9BR&SRv4h|_$cvW;jD$JEoDNKqAMN|c`IqYR?yfczk+K1e;3zo`o zh;z+B1@uiEW~h2P8Hf93n0W&J^$o6p6? z6C7%aLRf;OR>ne>*`b{|p~FaLr*7tjUgn3s**j@13&J3)hjp`e(?-?|o6P#g5}xp1 zS;CiW*1B}UHfm}jKuxgGbVU7y)o=WXw^@Bh`&l7ms=cf6YsN%9UJenf9tONmWdNZ@%s0zD13+LME)x7A$mx9lFAq zu+WqKtR`Ga`?Vbg(!Z)-TVVs|CeAI{zUqkDH4}lTzp^e_*cA;-zp3vR3z>@|SJ7F8 z`C;~O#7j9TV7Yqtu5A$C7$0s{iB!EsQ9&=o#U=)tlCkPz*>2pUDo@T^sDl7K(TS>85dLvsbWYL1YO-l%;M{F zRRT})Qh|flYxii%!IVSSp5=%i3EC?_;N%|5^HMi&#Q=h{Zft`ncpDX_ShoZ{4v6n{ z9IAsNU@mhV-|paB1KZf%U?D z#hbN>DWZYD=4&_Xh!(=7t#|Jhc=h0}Zm=!?>fjAZ^n~o;vr8VA3eggnR-P8;@F8YQ z@F}rY@X>lx&#O#A5+gM}M$OuX>6(yZUZv&#(o+XV8=@Z5pA$AK$tOC%p2c%qK??(p z`d!$k!1qYJL*jtMeG=4FctC;}qU$eYDq{lxw_GlyZf~-Pe&T5*;eGP#k!SFn=gY$) zm%6zne&_NckoXrBSuF-h$bLx2dsPRqcjOUi*fkEOw- zG7JQQfDRUF85fJmA=KzhV01rAn6G3t0fLkEp3~p8fsnc8-}2MJ7i(gCNyShE#XYve KcI=kDyZ<-S;K#lI diff --git a/models/__pycache__/operation.cpython-37.pyc b/models/__pycache__/operation.cpython-37.pyc deleted file mode 100644 index 8c952ab8f8786acfed5e5f408de3cc237351f604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19564 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 diff --git a/models/__pycache__/partner.cpython-37.pyc b/models/__pycache__/partner.cpython-37.pyc deleted file mode 100644 index 27a1cac7f223e53d61e9c7d3f6078053ca51bbdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6983 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 J4Om4l`VX58m2&_9 diff --git a/models/__pycache__/qualifier.cpython-37.pyc b/models/__pycache__/qualifier.cpython-37.pyc deleted file mode 100644 index f90c5a181c4f69b6c26bfeb8e28d3179c9b1e5b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5031 zcmd5=OK%*<5uTpc&OW)MD2mi`6(zDZutS78okeEQuIgvgDNPb0-pV8Nx@)vT-S3R@Cm!b&BC9{~C?&^0{eO1+auU@Yh zc;5TN_#657loYMfO%q!qja?T8|er~jD|HS%6 z+fr_Cz(t%WcOw!pPm~o7qqeEaPZJ?Ok#Zo_%;J~aFazEyl{ zqJGfer9;L&UVd%tF@J_vu>GpKI2ejPAM}%8dxZUA_ws(2ip_!C9bY=zw%nOEUe8OB zNLs_eNVZ}W@;T5HZ6s|7a@su@^`q@^sCMPiFSLu^yEd9w5ZYwV<|$u z+Y&obk|xW_UI+I{n<-C;q*+d~9C-K+^Q%3;$tXZClk65z5Ys zpfectQ$1SFV2E@;piw&!@rH7A>t76cj%Ht58SueCliRR{mqM;|MoBv8-3~cPeq}1= zmCS}#3Qa5zcU3j$ybztOfDS*8=@L4$VO?b&8{eFcJgdCrW5d?lP2~l8h9FRtAiz4K zSfE@B^hlZ;HAi;=lZ&Jyqam59nt_etwEZNNVbo6(X<>O~-+vKGeSB4V)Q7zYshol2 z_}EXxPO7TM=8$B*s!~jnNWeK0j+RhH=x~w{U&fm>Ks;tM+j7kY&gz-E?F1^cB&hSB zKu)7VI0r5)za*TlOUAIzfC{Hu&dU|FXUHHPP{T{WO&vWNgb`lZG4-J83emKM)(?C{9~1!+0bB5f{3N`kTr@bF}fWZOR)Eh$``{ z-?#$LGZL+IcPL<@rRRe|EW*CLiB4p)DfA`ZL*+@^%0`x9#R79d{eWKxBaPqg4U~63 z_Y2c0JeW&o3%imv%-kWg(nBgEYak;^{tS{DDVrF3=7Bk3z^S?ON1)c?Y{@vV4~+w7 z(>P=gj4yUxS&{L|PTh&sE$y+1&CN9fH8ZbSYX-_5__i*UQF1aKcehNL0{^8Y16(iX zmcji!xE0NbQ2Ki!G+GVMg=@r^fFOumm|3+;+>k`dOH-@)R_?LdF2 zP?qSwgmW740jx!PFl7PFneSSrZPH%buAHS&Hg<^+h6AfozJTu#Z`EJSCJd(MKU$cn zau9UlFiC>o7@~iK32A}kB8cHMt&2c)1HTHZm=#vj@1iwcdc)zewN4lh8IU%fzoD@6 z*9jTNx3A0zq9GLOLWv0cP$D}P0LZYco$3k3-Vmhgl`~XGq1M|?J>zhu z1?>i(MaXVq&RLECjXJ_JICJ2*e1Ts;VsK8kF7hSazrin}&!zp6KhG~CwLUK@2MhcP zlIN@ZnogcC@D}Xvx;pY%r|sySEOUG}M;a7_d^t;_kr;NiM3znijbbE|Ryb<)qn837 zKAPqMiX1Y9e;u-?L0^6kvMumLSSsPwc={;{J8(~Mg5L*{3S@DUTPdP%*V;qgys4uw zVkz8YV3Xt0ShLsPp08w{hn!Q}If9#{H8a0OHVGu^@WQrLx$rTk5qA#BW^XtG=Jfe= zAnjssmiHoBTxH|i1=3E-9ck~G(f^O)(9t#%hon25{528nRSVau8pUCBVmCY`g~B&myFq)R zlv6no=HAKHY3gh=co`+p^C*teUHKWh;DXvXT2|jsTSSp7-#X$){QYUN6Y=)=?#I(x zEK-q!5YrQWmDXX-LgZdx;vZ6M07D2*w4Lj7~X^=?^P?sn(%dul1&_D{n3Pzu-e! TIw5S$Bi(75HFIuZ?%uxvCDRn} diff --git a/models/__pycache__/relationship.cpython-37.pyc b/models/__pycache__/relationship.cpython-37.pyc deleted file mode 100644 index 44e9e7110477114004d80e1a11434115d3f55d51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3663 zcmcInTW=f372eq!msioUWLv(ZOq0SPP*a7_dzD0u)60vMpj8@Rfnc%bjHH#9Txw=1 ziv;yj8AyRb|3Q9ie@1`Cy!NSop-=tJ?2@JxRY@PZ!W_*xb3f-h7k<)g)+~IF|N89t z-&ZZ`pTx{R7o8n6H3i`oXQ?${Asg7CJ#a#Yk<3orffsrMKlBanq?JJs27_u?HN2bF z2KBJctlwGO;e~b4 zxNP$JYsMSA`N}$HVT-r$h!wq&jl_^=LlsGpnk%ZqWVAOKiRt}ohk7}U-6q=MqLap* z`9kgP#sjg}Wjc`Jc$`SVrw^~+V;JXSDRhN)i4q?AyM-XghW*2McpylxDwoOdKsNAj z-Ogp)e-WJ|DtVryNj}l;5Qp^{2I;fWe6*)%Y71m$T>=~2o>@n1-ytQTXYV@)_G@;= zW{i6;T-nPV?w_+iL#a?kWmn$9%73#DwVm*({qBd7wx8bJJ4{rEj_bs!6fvK4#A%}P zuB#hL#Ik=F^|SFXH>>4sERh}vtn4b0?rYDC{>_qiY4?veGoEFJJOM&Zgxu_pRh|u= z#GLG~IoH@`fve5AddV)m(L~py{-J;_=t8ukqIX-)J1k(+AIukj!#6^Iq-liPK!ym!|08v!U1; z#KTEgD+~=2D@l&4YkfQswoHafZa`pkvPABYjGVuUrtW|Q%w?|KVu9^4yZj4mGv_Tw zAua6CqFs>x(NSDDN^s$pZc>Gt)OfvglLnB{)DNyzY=PRFK|WnCba2I4WF6OpuNZjW z6)ez!@q@Wr7z_MAd_W@VS_aDB#SP>d%_iSjM!#Gq0h#cseaY}$v}NQz zzCpoPuq*G=o)3sTB=U&JJ46VZ@_R(gWjfS*7eoiofX1zCC}fjl1V#BCk^hRp_c2O) zsy4_1gTSKC0!Py5Tj(RW(x?6b@@?ot(5CQAK|3%ZJfJXb{^}H>b@ z4{MlR=WWPt@zo0_Y=CcqyA6H~e5>TwOMXSPFK_WX!1G;x&)|9WYipnJ4SxSs5Z)H; zqcy`n;16E~NDAv;Tdoz}0pcI&>m&E)vCN^x>7#4S)f<(=8;hXT8D(SH84o*f{5ezRAFe&JQqx)f@Dtge*j@5vT+pfp4|q@QXStWb4)W@@u6M_Hf%Xp&Zu3F(@KOU#KnK`W^ z*CT(JnV9i}wxDMgqf`lqPBJXU4M^W|YXa<3G}Qq~tTRTbjXOwbCcPc7gi@NjZOs^r z=k4n1BJdW7Cx6yH&jyIRUAvG`rb3_GR69`B6*twlqIous$~;Y>wQyPl<9lq{yA}l{ zMta{^-lr^0AH`~V68Wn-0paWnMa`LW`uiFC)cR`Y%$>R1eqqZVo@H-Xs+Z%Tm&oSG z-cC8zD#m1sRxXX($E`1|nS)UW3b6~tn5r*6e6Ym zkn0Q9q{tU z=%GBSMo~YFm5QQ5Y}>k`6C1#Ca(`wYRnFNA1tw+?hsXd9x-?wXaDbZOYKHT+Q9)x)1=59` zz`uQl1HHR58+s3R3(c5dOx2pMl}?9BLEkC+e^@F=A>T8m>eh=W|8uO8zaa8UBE|xK zA3hBuISGof#ols*RX9K5g(xwl>+VNaa)g{d8tsf#6fzYa!f($7W*Tatd^$iT>63i)Cx#s`wp rsrH`H4=YpYnS^W3S_)DNL+N01 and j1: + + domain='' + + # if len(list_field)==1: + # domain= "('"+list_field[0]+"','=','"+list_field[0]+"')" + # else: + if len(list_field)>1:domain="['&'," + else:domain="[" + + i=1 + for f in list_field: + if pp[f]: + if i==1:domain+="('"+f+"','=','"+pp[f]+"')" + if i>1:domain+=",('"+f+"','=','"+pp[f]+"')" + i=i+1 + domain+=']' + if domain!='[]': + + partner_dbl=self.env['res.partner'].search(eval(domain)) + + for partner in partner_dbl: + vals={} + vals['partner_id']=partner.id + self.env['opendons.duplicate_partner'].create(vals) + dbl_partner_ids.append(partner.id) + + action = self.env.ref("contacts.action_contacts").sudo().read([])[0] + + action.update( + { + "domain": [("id", "in", dbl_partner_ids)], + "limit": 500, + } + ) + return action + + + +class opendons_duplicate_rule(models.Model): + _name = 'opendons.duplicate_rule' + _description = 'duplicate partner rule' + field_ids=fields.One2many( + 'opendons.duplicate_rule_line', + 'rule_id', + string='fields', + + ) + + + +class opendons_duplicate_rule_line(models.Model): + _name = 'opendons.duplicate_rule_line' + _description = 'duplicate partner rule line' + field=fields.Selection('field_selection', string='fields') + rule_id=fields.Many2one( + 'opendons.duplicate_rule', + string='rule', + required=True, + index=True, + readonly=True, + track_visibility='onchange', + ondelete='restrict' + ) + @api.model + def field_selection(self): + field_list=self.env['res.partner'].fields_get() + #raise Warning(json.dumps(field_list)) + result=[] + for key in field_list: + result.append((key,key)) + result.sort() + return result + + def field_selection2(self): + + field_list=self.env['res.partner'].fields_get() + #raise Warning(json.dumps(field_list)) + result=[] + for key in field_list: + result.append((key,key)) + raise Warning(result) + return result diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 0ed7ed1..5755e42 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -24,3 +24,8 @@ access_opendons_payment_batch_qr_code,opendons_payment_batch_qrcode,model_opendo access_opendons_duplicate_operation_wizard,opendons_duplicate_operation_wizard,model_opendons_operation_duplicate,donation.group_donation_manager,1,1,1,1 access_opendons_aggregate_partner,opendons_aggregate_partner,model_opendons_aggregate_partner,donation.group_donation_manager,1,1,1,1 + +access_opendons_duplicate_rule,opendons_duplicate_rule,model_opendons_duplicate_rule,donation.group_donation_manager,1,1,1,1 +access_opendons_duplicate_rule_line,opendons_duplicate_rule_line,model_opendons_duplicate_rule_line,donation.group_donation_manager,1,1,1,1 + +access_opendons_duplicate_partner,opendons_duplicate_partner,model_opendons_duplicate_partner,donation.group_donation_manager,1,1,1,1 diff --git a/views/duplicate.xml b/views/duplicate.xml new file mode 100644 index 0000000..6329c8a --- /dev/null +++ b/views/duplicate.xml @@ -0,0 +1,67 @@ + + + + + + opendons_duplicate rules list + opendons.duplicate_rule + + + + + + + + + + opendons_duplicate partner list + opendons.duplicate_partner + + + + + + + + + + + opendons_duplicate_rule Form + opendons.duplicate_rule + +
+ + + + + + + +
+
+
+ + + + + duplicate rules + opendons.duplicate_rule + tree,form + + + + + duplicate partners + opendons.duplicate_partner + tree,form + + + + generate_duplicate_partner + + code + action=model.find_duplicate_partner() + + +
+
\ No newline at end of file diff --git a/views/partner.xml b/views/partner.xml index 1efe78e..823ad40 100644 --- a/views/partner.xml +++ b/views/partner.xml @@ -184,7 +184,17 @@ - + + + + + + +