From c90e19daaa20fe0628094ca2b67c999f3ca396de Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Mon, 27 Oct 2025 09:12:05 +0330 Subject: [PATCH 1/3] Add field to installation report --- .../templates/certificates/print.html | 25 ++-- certificates/templates/certificates/step.html | 24 ++-- db.sqlite3 | Bin 4743168 -> 4775936 bytes installations/admin.py | 10 +- installations/forms.py | 36 ++++-- ...2_installationreport_flow_rate_and_more.py | 50 ++++++++ ...ort_post_calibration_flow_rate_and_more.py | 21 ++++ installations/models.py | 9 +- .../installation_report_step.html | 110 +++++++++++++----- .../templates/processes/instance_summary.html | 35 +++++- 10 files changed, 259 insertions(+), 61 deletions(-) create mode 100644 installations/migrations/0012_installationreport_flow_rate_and_more.py create mode 100644 installations/migrations/0013_remove_installationreport_post_calibration_flow_rate_and_more.py diff --git a/certificates/templates/certificates/print.html b/certificates/templates/certificates/print.html index 39b028a..3e75dc5 100644 --- a/certificates/templates/certificates/print.html +++ b/certificates/templates/certificates/print.html @@ -5,6 +5,7 @@ تاییدیه - {{ instance.code }} {% load static %} + {% load common_tags %} @@ -52,21 +53,31 @@
مشخصات چاه و کنتور هوشمند
-
موقعیت مکانی (UTM): {{ latest_report.utm_x|default:'-' }} , {{ latest_report.utm_y|default:'-' }}
+
موقعیت مکانی (UTM): X: {{ latest_report.utm_x|default:'-' }} , Y: {{ latest_report.utm_y|default:'-' }}
نیرو محرکه چاه: {{ latest_report.driving_force|default:'-' }}
نوع کنتور: {{ latest_report.get_meter_type_display|default:'-' }}
-
قطر لوله آبده (اینچ): {{ latest_report.discharge_pipe_diameter|default:'-' }}
+ {% if latest_report.meter_type == 'smart' %} +
مدل کنتور: {{ latest_report.get_meter_model_display|default:'-' }}
+ {% else %} +
سایز کنتور: {{ latest_report.meter_size|default:'-' }}
+ {% endif %}
نوع مصرف: {{ latest_report.get_usage_type_display|default:'-' }}
شماره سیم‌کارت: {{ latest_report.sim_number|default:'-' }}
+
شارژ کنتور (متر مکعب): {{ latest_report.meter_charge|default:'-' }}
+
پایان اعتبار شارژ: {{ latest_report.meter_charge_expiration_date|to_jalali|default:'-' }}
+
شماره سریال کنتور: {{ instance.well.water_meter_serial_number|default:'-' }}
+
-
سایز کنتور: {{ latest_report.meter_size|default:'-' }}
+
قطر لوله آبده (اینچ): {{ latest_report.discharge_pipe_diameter|default:'-' }}
شماره پروانه بهره‌برداری چاه: {{ latest_report.exploitation_license_number|default:'-' }}
-
قدرت موتور: {{ latest_report.motor_power|default:'-' }}
-
دبی قبل از کالیبراسیون: {{ latest_report.pre_calibration_flow_rate|default:'-' }}
-
دبی بعد از کالیبراسیون: {{ latest_report.post_calibration_flow_rate|default:'-' }}
+
قدرت موتور (کیلووات ساعت): {{ latest_report.motor_power|default:'-' }}
+
دبی (لیتر بر ثانیه): {{ latest_report.flow_rate|default:'-' }}
+
عدد کنتور (متر مکعب): {{ latest_report.meter_reading|default:'-' }}
+
پلمپ تابلو: {{ latest_report.is_panel_sealed|yesno:'دارد,ندارد' }}
+
تابلو قطع: {{ latest_report.is_panel_cut|yesno:'دارد,ندارد' }}
+
انجام عملیات قطع: {{ latest_report.is_disconnection_done|yesno:'دارد,ندارد' }}
نام شرکت کنتورساز: {{ latest_report.water_meter_manufacturer.name|default:'-' }}
-
شماره سریال کنتور: {{ instance.well.water_meter_serial_number|default:'-' }}
diff --git a/certificates/templates/certificates/step.html b/certificates/templates/certificates/step.html index f8249cb..8696e6c 100644 --- a/certificates/templates/certificates/step.html +++ b/certificates/templates/certificates/step.html @@ -2,6 +2,7 @@ {% load static %} {% load processes_tags %} {% load humanize %} + {% load common_tags %} {% load accounts_tags %} {% block sidebar %} @@ -73,21 +74,30 @@
مشخصات چاه و کنتور هوشمند
-
موقعیت مکانی (UTM):{{ latest_report.utm_x|default:'-' }} , {{ latest_report.utm_y|default:'-' }}
+
موقعیت مکانی (UTM):X: {{ latest_report.utm_x|default:'-' }} , Y: {{ latest_report.utm_y|default:'-' }}
نیرو محرکه چاه:{{ latest_report.driving_force|default:'-' }}
نوع کنتور:{{ latest_report.get_meter_type_display|default:'-' }}
-
قطر لوله آبده (اینچ):{{ latest_report.discharge_pipe_diameter|default:'-' }}
+ {% if latest_report.meter_type == 'smart' %} +
مدل کنتور:{{ latest_report.get_meter_model_display|default:'-' }}
+ {% else %} +
سایز کنتور:{{ latest_report.meter_size|default:'-' }}
+ {% endif %}
نوع مصرف:{{ latest_report.get_usage_type_display|default:'-' }}
شماره سیم‌کارت:{{ latest_report.sim_number|default:'-' }}
+
شارژ کنتور (متر مکعب):{{ latest_report.meter_charge|default:'-' }}
+
پایان اعتبار شارژ:{{ latest_report.meter_charge_expiration_date|to_jalali|default:'-' }}
+
شماره سریال کنتور:{{ instance.well.water_meter_serial_number|default:'-' }}
-
سایز کنتور:{{ latest_report.meter_size|default:'-' }}
+
قطر لوله آبده (اینچ):{{ latest_report.discharge_pipe_diameter|default:'-' }}
شماره پروانه بهره‌برداری چاه:{{ latest_report.exploitation_license_number|default:'-' }}
-
قدرت موتور:{{ latest_report.motor_power|default:'-' }}
-
دبی قبل از کالیبراسیون:{{ latest_report.pre_calibration_flow_rate|default:'-' }}
-
دبی بعد از کالیبراسیون:{{ latest_report.post_calibration_flow_rate|default:'-' }}
+
قدرت موتور (کیلووات ساعت):{{ latest_report.motor_power|default:'-' }}
+
دبی (لیتر بر ثانیه):{{ latest_report.flow_rate|default:'-' }}
+
عدد کنتور (متر مکعب):{{ latest_report.meter_reading|default:'-' }}
+
پلمپ تابلو:{{ latest_report.is_panel_sealed|yesno:'دارد,ندارد' }}
+
تابلو قطع:{{ latest_report.is_panel_cut|yesno:'دارد,ندارد' }}
+
انجام عملیات قطع:{{ latest_report.is_disconnection_done|yesno:'دارد,ندارد' }}
نام شرکت کنتورساز:{{ latest_report.water_meter_manufacturer.name|default:'-' }}
-
شماره سریال کنتور:{{ instance.well.water_meter_serial_number|default:'-' }}
diff --git a/db.sqlite3 b/db.sqlite3 index b4e650c3e3809c7102f04a88c2cadf932875cabb..746ab0f10d2d86515f71640bf2c8d7b28405394c 100644 GIT binary patch delta 38974 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 delta 11359 zcmahv33wDm)>C~4Y|V^=&asjKIUDVnH}UI}bJ(F;W%*c%$3f$1ov86 zGn4fZeGA!P3{<=sW@Dt~ji)o?^vn8Gvq1)e7m{NI6xSzJeF?kU6f5A|gmgA20s5OE zw(-uaNHnnV;Vid)l|6+W!obm=4dKu=UDP*rWN~O&<40NL$lvJAPSPKXakCxw-hiNErf6+!%O0m6nrLMUrN*P#agCWd1JO6TrsOO_sC3uq z{!>m^9DbWKcc8;P(4Cv(c00VeE;1<$#ptyU0|w^$209!$xh|*MIRNVPjwo0giDJn9 zXmk<9s(t+f9iD-?&K$4T+;qhnz8|m<8=Q?Z--$0Ldpu?HtaJqbM2RYdXB{^8X z@;4C5&^;uq0Zmt+V*=txQzEM%^3z15bg@CvNQ5$G5krQbFRtUE?0Yju@L1-bzz)-w z!{PS)bZ~Srv(^3wcnB2w&7|fhrb(hbpWGv`v?Kizribz`QuOf2p_IAADzRtu^z$=B zFtc?Gl3>;hn_co%HIuL4UrKJHamErRhoJhpSxnJoQDHendMr+<8!UCUPf?KDB%p`XmcT}(U zD=+Bqub`AA*Qf+>QBtb|3{GHT$l-0=ps+t`@xk5p408Mkmx2DM#Wfh}@cs-!CwFrc z-iJ5iVc3I{ahP&NIjel8yrTS>+}Ft^D9|28rAkFlw*SD5zS^s+d#29rfsyT(yTAOQ zbYNcTj5pyobodhf37^Af@VEFR{sJGvAK)YSFn)uI1@C}B7jGuzUHnAK6kZcAICO;{ ze2pnFYn=N2YXW-no^t(2+D6|!u>DvcGMhPkj9LWtYl`3u1%6DW+?&|K-p;c+MtE7L zqY^`(_`T#zfBl+#=onJOLH3an1MGRXq`LmnOg&thDM;6mfwPP6e{D=-agUS;q5o$p zwE~?=tw5(zEBw(^tOn&m&jpSKwMT=XC*=*owTbcY%F{v#J4n9*gcf10Iv=cOQ|oR6 zv_*&@f7&G6UJS3CDiQ?0$M5qSvHbB!^N-bXg8A%%qNqMH6Il>f%zzH zz3HgfPivjut=;A?#2*=UkWxuSNpwP9raHc^Nv=v_<&5-9gyxqsV4F7Iy^~vQ^}AYH=Q?)HWFi;VS)6sG)w$Dx3}j~!M-ZO z-w#QCD0hZ#Br^_6piea^`*pZU`2^puoX3TDg0dffjo-pDPQ%-ARL`Y$Uai3RuM1_! z*c6n>$6rc0h>a5u5TR2Vpc$W9J=ktYe-tHN9r?8Mhfz3_A>irNb)v=Ol9Y zHp3u&iV4T-@NV26x8ef)AbuRj9yvcz-dbUqu|GCDTH|KSInlV;ojFY=y%9#!xJh z!r64j*1ZbB^ zn#X(EJl(quv3FkYz1StukC|0Uzw5&EI>1s&d{N_HglF`H^(huIVf?Pil+D+qmxmQ|qf-2(it1e46T zhssxU_yRSROYn3&0%v268p?gj2IV0oj@qzwcrG4~gSe0Klk%?eXQe?IsmL(cX0lrG zm$(Jb$CWsQQFRWf-ANyhvI2SM^!%6ef|5e3QHEe@ie2W1co`W8`5(zD4Uo*q7|DdTCbLAkV z#kC6@?ItTJZZ}o;YX4sE_TcPL!FH%%JAMcDtKQ9e$phK{57W4E4!4^MNNkzxH$lQj z#h3~rcQ-WL9Ed|EXrCx2l9usuGK=)kDHX<(&WUoG5l-J*V$>^N(xwGaS89rahe)xg zR~FHV0Z?1$k0c}SlB*(2d#QZCsp+^Wmb|t=E+}*7DdSWr*oK$mS$GT{gl%+jJFUE@ zY*nUGDd^#IHnu4LQa)E+RTe4ZU~q@5NkNb7xN(efSvjQ~Qr0RJq^3iTLeSD7i)86h zc^@5i7>ZMUAf8P8QhpY3dCG9j4nG79o$?rH>6A_6n@+j3w~UVbLEaf=2$PrVWo zoV>=YL%{ZE6J(|9g;N%gj`Bc^t0_$%1n}5 zhi58ZD#PUca;E7ClVqG{_|`B+`itadj*z4V<%~e+7*i2jr`!%FHYo9sy;g~Vp}vp= zE7vM~jL+rsI9<8fE{DtGbWoqt?Ww5rP0pPJN1j%!P`_4*V<=s;u0v-POVC+R#F2CB zlyH5LNjap$-{5!fPP~?yZin)#a#A^jZ^Bi0zG<#{fulu9gFuU7AY)sUF`9LZg>Bmu zg?zkC$w7%Gyi7-(i`CS*SdU+#y0T333O3<3d{S9LlG>EA)7yXF^Asog?qhGPfXd%R;jikw@p4A24zo(Q+NhsWp31D*p-p zI=`KNlCS6Q;V1G#*<0B{wm%!k3d{xOE9Py6FdLbbP*rChL?s)2Ms|duPY^7xGh4{= zMdpJD$}WXBnE%a~Gvx0}%rWDrW>26?n^|DMQR%Y5^X1Vdl6TT<>80a@>Uc|PkN5P= zzk5&PHScK!H9Z3~@2P>D=@VwHr5@1h|LM%Vix1(~@%yS!ZKT$mh6iC094n!4wXpCk zLJY+`kx3x`+#ZH&5>2L39o~T_;c(>*-u|Zj^i1H%SuT)qBD!Z2q zO@?&gME9kFMFx_7lZB08qF{nT0qFhfVRR0$~t`5pOj zxr}Q49%|$L$|dR^FHnLCEB{5Vmv4l@H5RJfU(=Og8qTEd^LAyHk}LmHCi4CAAgG~V z9rzQvKHQEIl&_RlrBdlDe=9#H-z8^LL%tf{f}@mU$`i_XB~k8_pOLHNR5+l)d<`$g z#aL9{QkE;j6|?-l+$4{YtsP2s!+D0RKOA1AXP4h*g`uYc@#OZ`!*9^=+-gD7d}>CSd)rVWK~_|>rY$?r~e50k0d89MJ3;YJ|uiu^jsFE7I^Kjaa42! z)SXW$fs3P}vlwJn)zO5&HaeOo14c)`Yv4Ar>vV9uC9a0dE05m9Ky8D?4nr!V&9LBv z`9`v~GJ3K=Dx<7Cs%NUB>EBA2>KNvKgrx^#LUI2icA^X!(x^_}(yel^Xd+4@UGK$2 z)Uff&Sr7uT0}v*5N7(bc+KiLx&km2J|2T4Xczi^do^l0P>H(C;2U%5_II@3!N)ZCz zgDELwcUAmg1B|7QoL&_A*IQ@C6YI=`GhOUu&IAXO(if0rEuPB^EUrvk2HRfoybo2I zJewGPE?GJ`alV0D!8Yq4aMGDVvT72~7}+M&M1@9Z8bl z>6VZ5`W5pN$%^@X=C=NEaM6A`iLalUVC_O(85FX%`U8I+`*Tz8z&B zK*Ap43+VFdp&@M5XnV^*^bz43?9Vdfh1GTm!LU;)8Sq7;eJgq!=)nF8wM(*ia_buV zRs(7ye2aY}BG0$lUqxs#nZD6JoQ1ITgry{Jv;EC9v=;ad`z2V~VDCeckJ@7yHj|4Y zgFmppfxwdJ{-}EuKmL(D!+`DszSDk+obI&C49X@yowSc+(NIqfHWn3*ckE;P&ZDtyj zo{CC^A7-Z%amJ7_uqtSUnxZV;xLp!8M|HdSFQ^@sl?@*a%PNBz!?V`Hvm>%Xmmk37;rFtAU&#{z<#v zA#Q|uMOluewJA$$`|hnxrD|U-&(&hMEzs7I+8@rfq&@}a)>I35yft;#?*iXJ;-va7 zwx-g5Kk~)aw0=yiQE1iS5~W`LtE`wj#s>}irBhOhI9X^_*|ta^tt72-EgMGB3T5e< zH+8=VuL}Oi`WMHhlNZNklmcfEU(yj8YglNM_G&bP)UF%44R8H{iy7p=#mu4-eHm54 zfDXQ_h^-*~gIQ`ak)b)zVW*-zskohOV3)DA>^!!HoywN8W7#sAjtbz5xQm7Zoz&Io zz=xWTrVf$kDO;3UrA1jrJ)*At}wVAg-M?qG(L13wKr~P2+w$KDPvMuy6C!CW$ zf|l)}a*fhrjdX}~7G;gq+cbji5-(}@o#HRreTVon1t6+G$f4&#ec9Z%4O!|J@f|~^ zc7NB9q1}(r6<4i4Vo1AM-%q>0V@M^ot)WQ7f`J9cwvcaWS=Q3B?4@NnOUwH2Epwo< z7=EixV*Gk}k79w-XS8m4&~U+Fgg$?BB#`GXI6f8Nja-jk>q%(OLXJDazRbW6_VkDLEOstu zpyOsH2Z~we6j2d|Yc`F%z&a~Ll%wLz(2O6+GdbBTSRWafLN@!HAVK@!))C8>ok!RL9CwaMb+_9^&3RG5IP62UB-1`A%0*=65AHQPxXTJiUlYxVWE+oW{;ihv{+yrhcHvls9tF2D`s+*}Tq#wF3f z_X*s@#dA@d89&Y$I8F;3Ued~aT1m8WuU77XF~hy-u#pzz(JdZo8Gh5j@;`e9IWFte z2KpMUoT)XYWYpfSXl1ol$8^^Th;$K;jWG)iS1VR(pC5+5Psb1 zX$EG5w-4lw@HUVeC*%?A?n8-cFTQ((FKQ5WYvnGj+zAh;qkVU{*D0#& z=C7Pp*IdCb+^oMjj{$C%XCW-TkdOp{!NbKz~EuyV1HX>0M3`(NTj~h^Rqhj_PhGAT; ziaTddtGu^*&b_lI(=DgTm2;T7nD8DPVZCsK+bIs5AnD*$6~|$U17E}8^k_)JQt~4J zPY;PVxYXZ$Gpp~NF?kL}prWdpIb-rYbLewjj->~|?|CUgqrF9Ig8fm zq4-f(had3PQku~aIG<+N)Zc&3C7|j${nbT;{dbJ&l#(Tkz zPM4Pwu{X(jQ7p*Rg_-{ta)N{*tke<>hwcg`UWe|~pkKTz6i=zv&55Y% zq@#t3yC?&uRQD#2PlLJRaA8Ei;dXj`-pv0oWaW>+t3yWBmT=%_gp#fe*_o?>cYamKnWi(Jh>-o*xhaXDHx6ZVuf&y(*mn z=J|Dw1M=Bxl0#8gr5+SvVb|p!_sAv!_uV14xkoOYp3ioEwv)1Q)dnsy==Qmsu4GD= z-w9^aHSkpO#UALr1+yD^GL`&>;gs;_?(Ri+r&puQxy=J3irs#%s_s=+t`(V*|dBub2RGefp(e*@8P>W9tyc``hdtjxgL+(X)}8~9*zDy&wF}_I={EfOQVXp$fjFUZcc>3E#6HE z-FXSnOsh`mRN9#U9PjeRGlp{2w$VJ``urGJM|UIO=k@vJu*2Pi@^6K*4fzt>zajr1y!do}2-<(~T46?>QQSR% zb5L)|MFhtH>MhOgVz*r1&YsTHw+tLWS_b;6Mst0|PkL>w!5uroJK>a_T|>sL_D!by z3F`K#=8Jr`)|cLo6U7eA7r6z-xBCKQL%T0iR2?QYlp`M<^7Suaql7$~oAqa_&aOcq zdC~qi*Rql95)j(_nP5pzsMEYChN}yIEDUBG^jpEV+n)h#RdiPJI71fHKHxFI)~aHu z-m=?I{{x9-_n`BSaZht^>Y&|XoexU`gCC%2m2^Aw3l4r48p@*kkjR3;YiLY)%_DlN zXz)NIw_f$R0;|%f4_)T_jz)^Jlc~GV9v4NbM-Bd7U{DyLT##uVl6ukg)5Z@b)5hPh z_LN{;j(+1fUGpS9jbsJA$5CId=J&2dZ}*|waiDGkR0O=6ulXc?2)o(77|uDx5S%OY zhLg4PL)0&;9^zfgDXOnz;GXHe-9fB3<>?VvhkB>N{Be0Eo?2sGN3w?IEl0fOX_1#6 z41LLH3-}cpDU-{so@HqB(jd(N(9;0jTcaxfTFLVHp*b3sr#KQlE^ivO+9SM4#4$8) z1tKp$7&^-A?JViilddUw5jS#?!q}^+Nk?sFK3rkEk=KH*scTxi74YPaJRmz;L#cds zvhog+_v|r!t!^&T>7cxeDT4Mc919JB&^WNQc;jguj-`%9&kxF9&!@ie<00xBJM-uU z7cFAotJ?~Ba(Q+BBmr8IZ-^1xewWwH$2Cs~O9v^c#01K2zeFxC3l;EtTk<*TVg^Fr zh;E&+LR_`Uh}I7 zR%mZeNCR(IaKBzolTD^BsExH*iQ`e~m{i*B&e`jRMG;0Rh6 z!e}93l^rI$P2KzH#Gm1h@lpH(-J|##zf4o!7cmK*lxAod=_Cni{=svwb3q`M=U5$z zg`*1s3EHETTv!lL9EsBRIzc~8Cv6h1h!uvfq@RTc>FcO&ehb&qnS!2Ms4Ph)8(t2C zA(TYg_6MdjbWA#PcgyawZqgDv&`;Sg^k86*@zI1OHX(Z0Fs3mR@+U}r;O^}%J;dw{ z*cf&)8MHU>F5L~-7ua4@GxMG~6DupKr%jq&F=yJ$yC+Vmo;i0SeV&|TtD0OnZAL}4 zZTRTY(kxq2&Fsnly(Jvk7x*4FG`ON6abG|oR}Kbv2aVHc3|n&|sf3K^3LHmp^kmWy zc=UYW670AT$Rte{0`EzvRkhwU6*JkVC&J~xZ+7mlcwb0t9r)N zACBHWcolq?5u8C*MZ41wc{nS$nB};2=pNu5!FA9UNN)=+Dr8SbG2g8QbT zCBU}?C&HAL;CAFD5v{@X9J>Eipfq4A>NW>qev4pt~R0bcSVy>NV2~pG>&Oe$KYD ze`1&MReXrg;?3NT+%axHUEdaSQ=y?I+DrFBVFS%fML>L4VH&xqtMG)VE&x||o{N4i zY>!ekoaR8vh7{0c)KVnfK~O_JReAI4bmc7jTM;!uvx_DPr2M9W3#d7xNFd`LD)O?_ zVixGZMC}42ega`U7?TlP3KRd~TnLLt(`<6-h9ctRb(bZjCt>lz(V`rBiY9)U zLE0;|O2Z_d6c3#@Ga2Mh?-vc^)J3!7YNFNhY0>#8dXA0nDq4xihI2*Z5PW!{XbWk+ zP}Iuw@KxJUdG4p8+hYjVmGOv3R#=D36*x0x^7VWkJ^V)P#?-6%yr#4vq$#bqMqo49 zfgm`FZ&km3&agMG&IY@?xDQ}^2|Z|JD@h`YbBiC2*BdK!7DF0M9~SpjoBk@XrAx*@ z*!bcsFyl}nxp!Rg%Dz^EEUCvurs8;|gKlp5q}0H|9>k`TMZEsdcisd=UcmBJ$4nAeRIjzBGK0d zf-JT7>dq6C?<$GvIf+RRb$W9K_+1{4pPbkiy2wNAK04ageI=E811neRuw5yTE7j4B zmf5=TemJ@)e~5NEjnLC+BP?8ucyljK*^qh;C;BRrMt@hbJ=!A3Asya?OO@mF$U&C; zk{nXOxnyQ$BOJ9AMUV+{XcI%Y+K?y`lQncvFmlQe9o>ISR(31eE(xo${zn5_y~Yd` z?Zx5b_MFfrb%RJZnlJx7`)P*;w2ixZhI2@$O@Q)C#wak}B^$b*27g>4!hBcBz0h*3 zM1UvqODNMLOQOhq152JqacUaEAdS@F(aQ7k75Ns^bH>ZYQHCwjZxV5~umdEnuHS}S PK;uHiWc_WSD*gWfp4-7? diff --git a/installations/admin.py b/installations/admin.py index fc78615..2a2f779 100644 --- a/installations/admin.py +++ b/installations/admin.py @@ -24,11 +24,12 @@ class InstallationReportAdmin(admin.ModelAdmin): list_display = ( 'assignment', 'visited_date', 'meter_type', 'meter_size', 'water_meter_manufacturer', 'discharge_pipe_diameter', 'usage_type', 'exploitation_license_number', - 'motor_power', 'pre_calibration_flow_rate', 'post_calibration_flow_rate', + 'motor_power', 'flow_rate', 'meter_reading', 'meter_charge', 'meter_charge_expiration_date', 'new_water_meter_serial', 'seal_number', 'sim_number', + 'is_panel_sealed', 'is_panel_cut', 'is_disconnection_done', 'is_meter_suspicious', 'approved', 'created' ) - list_filter = ('is_meter_suspicious', 'approved', 'visited_date', 'meter_type', 'usage_type', 'water_meter_manufacturer') + list_filter = ('is_meter_suspicious', 'is_panel_sealed', 'is_panel_cut', 'is_disconnection_done', 'approved', 'visited_date', 'meter_type', 'usage_type', 'water_meter_manufacturer') search_fields = ( 'assignment__process_instance__code', 'new_water_meter_serial', 'seal_number', 'exploitation_license_number', 'sim_number' ) @@ -43,7 +44,7 @@ class InstallationReportAdmin(admin.ModelAdmin): ) }), ('مشخصات هیدرولیکی', { - 'fields': ('discharge_pipe_diameter', 'pre_calibration_flow_rate', 'post_calibration_flow_rate') + 'fields': ('discharge_pipe_diameter', 'flow_rate', 'meter_reading', 'meter_charge', 'meter_charge_expiration_date') }), ('کاربری و مجوز', { 'fields': ('usage_type', 'exploitation_license_number') @@ -51,6 +52,9 @@ class InstallationReportAdmin(admin.ModelAdmin): ('توان و محرکه', { 'fields': ('driving_force', 'motor_power') }), + ('وضعیت تابلو/قطع', { + 'fields': ('is_panel_sealed', 'is_panel_cut', 'is_disconnection_done') + }), ('توضیحات', { 'fields': ('description',) }), diff --git a/installations/forms.py b/installations/forms.py index b8be2b0..4c30a5f 100644 --- a/installations/forms.py +++ b/installations/forms.py @@ -22,7 +22,8 @@ class InstallationReportForm(forms.ModelForm): 'visited_date', 'new_water_meter_serial', 'seal_number', 'utm_x', 'utm_y', 'meter_type', 'meter_size', 'meter_model', 'discharge_pipe_diameter', 'usage_type', 'exploitation_license_number', - 'motor_power', 'pre_calibration_flow_rate', 'post_calibration_flow_rate', + 'motor_power', 'flow_rate', 'meter_reading', 'meter_charge', 'meter_charge_expiration_date', + 'is_panel_sealed', 'is_panel_cut', 'is_disconnection_done', 'water_meter_manufacturer', 'sim_number', 'driving_force', 'is_meter_suspicious', 'description' ] @@ -90,17 +91,24 @@ class InstallationReportForm(forms.ModelForm): 'class': 'form-control', 'required': True }), - 'pre_calibration_flow_rate': forms.NumberInput(attrs={ + 'flow_rate': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', 'step': '0.0001', - 'required': True }), - 'post_calibration_flow_rate': forms.NumberInput(attrs={ + 'meter_reading': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', 'step': '0.0001', - 'required': True + }), + 'meter_charge': forms.NumberInput(attrs={ + 'class': 'form-control', + 'min': '0', + 'step': '0.0001', + }), + 'meter_charge_expiration_date': forms.DateInput(attrs={ + 'type': 'date', + 'class': 'form-control', }), 'water_meter_manufacturer': forms.Select(attrs={ 'class': 'form-select', @@ -119,6 +127,15 @@ class InstallationReportForm(forms.ModelForm): 'class': 'form-check-input', 'id': 'id_is_meter_suspicious', }), + 'is_panel_sealed': forms.CheckboxInput(attrs={ + 'class': 'form-check-input', + }), + 'is_panel_cut': forms.CheckboxInput(attrs={ + 'class': 'form-check-input', + }), + 'is_disconnection_done': forms.CheckboxInput(attrs={ + 'class': 'form-check-input', + }), 'description': forms.Textarea(attrs={ 'class': 'form-control', 'rows': 3 @@ -137,12 +154,17 @@ class InstallationReportForm(forms.ModelForm): 'usage_type': 'نوع مصرف', 'exploitation_license_number': 'شماره پروانه بهره‌برداری', 'motor_power': 'قدرت موتور (کیلووات ساعت)', - 'pre_calibration_flow_rate': 'دبی قبل از کالیبراسیون (لیتر بر ثانیه)', - 'post_calibration_flow_rate': 'دبی بعد از کالیبراسیون (لیتر بر ثانیه)', + 'flow_rate': 'دبی (لیتر بر ثانیه)', + 'meter_reading': 'عدد کنتور (متر مکعب)', + 'meter_charge': 'شارژ کنتور (متر مکعب)', + 'meter_charge_expiration_date': 'تاریخ پایان اعتبار شارژ', 'water_meter_manufacturer': 'شرکت سازنده کنتور', 'sim_number': 'شماره سیمکارت', 'driving_force': 'نیرو محرکه چاه', 'is_meter_suspicious': 'کنتور مشکوک است', + 'is_panel_sealed': 'پلمپ تابلو', + 'is_panel_cut': 'تابلو قطع', + 'is_disconnection_done': 'انجام عملیات قطع', 'description': 'توضیحات' } diff --git a/installations/migrations/0012_installationreport_flow_rate_and_more.py b/installations/migrations/0012_installationreport_flow_rate_and_more.py new file mode 100644 index 0000000..1f3f29b --- /dev/null +++ b/installations/migrations/0012_installationreport_flow_rate_and_more.py @@ -0,0 +1,50 @@ +# Generated by Django 5.2.4 on 2025-10-27 03:42 + +import django.core.validators +from decimal import Decimal +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('installations', '0011_alter_installationreport_discharge_pipe_diameter'), + ] + + operations = [ + migrations.AddField( + model_name='installationreport', + name='flow_rate', + field=models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='(لیتر بر ثانیه)دبی'), + ), + migrations.AddField( + model_name='installationreport', + name='is_disconnection_done', + field=models.BooleanField(default=False, verbose_name='انجام عملیات قطع'), + ), + migrations.AddField( + model_name='installationreport', + name='is_panel_cut', + field=models.BooleanField(default=False, verbose_name='تابلو قطع'), + ), + migrations.AddField( + model_name='installationreport', + name='is_panel_sealed', + field=models.BooleanField(default=False, verbose_name='پلمپ تابلو'), + ), + migrations.AddField( + model_name='installationreport', + name='meter_charge', + field=models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, validators=[django.core.validators.MinValueValidator(Decimal('0'))], verbose_name='شارژ کنتور (متر مکعب)'), + ), + migrations.AddField( + model_name='installationreport', + name='meter_charge_expiration_date', + field=models.DateField(blank=True, null=True, verbose_name='تاریخ پایان اعتبار شارژ'), + ), + migrations.AddField( + model_name='installationreport', + name='meter_reading', + field=models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, validators=[django.core.validators.MinValueValidator(Decimal('0'))], verbose_name='عدد کنتور (متر مکعب)'), + ), + ] diff --git a/installations/migrations/0013_remove_installationreport_post_calibration_flow_rate_and_more.py b/installations/migrations/0013_remove_installationreport_post_calibration_flow_rate_and_more.py new file mode 100644 index 0000000..31f653d --- /dev/null +++ b/installations/migrations/0013_remove_installationreport_post_calibration_flow_rate_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 5.2.4 on 2025-10-27 03:47 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('installations', '0012_installationreport_flow_rate_and_more'), + ] + + operations = [ + migrations.RemoveField( + model_name='installationreport', + name='post_calibration_flow_rate', + ), + migrations.RemoveField( + model_name='installationreport', + name='pre_calibration_flow_rate', + ), + ] diff --git a/installations/models.py b/installations/models.py index c7d7e31..ae86340 100644 --- a/installations/models.py +++ b/installations/models.py @@ -55,6 +55,12 @@ class InstallationReport(BaseModel): ] meter_model = models.CharField(max_length=20, choices=METER_MODEL_CHOICES, null=True, blank=True, verbose_name='مدل کنتور') meter_size = models.CharField(max_length=50, null=True, blank=True, verbose_name='سایز کنتور') + meter_reading = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, validators=[MinValueValidator(Decimal('0'))], verbose_name='عدد کنتور (متر مکعب)') + meter_charge = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, validators=[MinValueValidator(Decimal('0'))], verbose_name='شارژ کنتور (متر مکعب)') + meter_charge_expiration_date = models.DateField(null=True, blank=True, verbose_name='تاریخ پایان اعتبار شارژ') + is_panel_sealed = models.BooleanField(default=False, verbose_name='پلمپ تابلو') + is_panel_cut = models.BooleanField(default=False, verbose_name='تابلو قطع') + is_disconnection_done = models.BooleanField(default=False, verbose_name='انجام عملیات قطع') discharge_pipe_diameter = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='قطر لوله آبده (اینچ)') USAGE_TYPE_CHOICES = [ ('domestic', 'شرب و خدمات'), @@ -64,8 +70,7 @@ class InstallationReport(BaseModel): usage_type = models.CharField(max_length=20, choices=USAGE_TYPE_CHOICES, null=True, verbose_name='نوع مصرف') exploitation_license_number = models.CharField(max_length=50, verbose_name='شماره پروانه بهره‌برداری چاه') motor_power = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(کیلووات ساعت) قدرت موتور') - pre_calibration_flow_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی قبل از کالیبراسیون') - post_calibration_flow_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون') + flow_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی') water_meter_manufacturer = models.ForeignKey('wells.WaterMeterManufacturer', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='شرکت سازنده کنتور آب') sim_number = models.CharField(max_length=20, null=True, blank=True, verbose_name='شماره سیمکارت') driving_force = models.CharField(max_length=50, null=True, blank=True, verbose_name='نیرو محرکه چاه') diff --git a/installations/templates/installations/installation_report_step.html b/installations/templates/installations/installation_report_step.html index 3246dea..fbd0405 100644 --- a/installations/templates/installations/installation_report_step.html +++ b/installations/templates/installations/installation_report_step.html @@ -156,8 +156,10 @@ {% endif %}

قطر لوله آبده (اینچ): {{ report.discharge_pipe_diameter|default:'-' }}

سازنده کنتور: {{ report.water_meter_manufacturer|default:'-' }}

-

شماره سیمکارت: {{ report.sim_number|default:'-' }}

+

شماره سیمکارت: {{ report.sim_number|default:'-' }}

نیرو محرکه چاه: {{ report.driving_force|default:'-' }}

+

شارژ کنتور (متر مکعب): {{ report.meter_charge|default:'-' }}

+

پایان اعتبار شارژ: {{ report.meter_charge_expiration_date|to_jalali|default:'-' }}

کنتور مشکوک: {{ report.is_meter_suspicious|yesno:'بله,خیر' }}

@@ -165,9 +167,12 @@

UTM Y: {{ report.utm_y|default:'-' }}

نوع مصرف: {{ report.get_usage_type_display|default:'-' }}

شماره پروانه بهره‌برداری: {{ report.exploitation_license_number|default:'-' }}

-

قدرت موتور(کیلووات ساعت): {{ report.motor_power|default:'-' }}

-

دبی قبل کالیبراسیون(لیتر/ثانیه): {{ report.pre_calibration_flow_rate|default:'-' }}

-

دبی بعد کالیبراسیون(لیتر/ثانیه): {{ report.post_calibration_flow_rate|default:'-' }}

+

قدرت موتور (کیلووات ساعت): {{ report.motor_power|default:'-' }}

+

دبی (لیتر/ثانیه): {{ report.flow_rate|default:'-' }}

+

عدد کنتور (متر مکعب): {{ report.meter_reading|default:'-' }}

+

پلمپ تابلو: {{ report.is_panel_sealed|yesno:'بله,خیر' }}

+

تابلو قطع: {{ report.is_panel_cut|yesno:'بله,خیر' }}

+

انجام عملیات قطع: {{ report.is_disconnection_done|yesno:'بله,خیر' }}

@@ -389,17 +394,32 @@ {% endif %}
- {{ form.pre_calibration_flow_rate.label_tag }} - {{ form.pre_calibration_flow_rate }} - {% if form.pre_calibration_flow_rate.errors %} -
{{ form.pre_calibration_flow_rate.errors.0 }}
+ {{ form.flow_rate.label_tag }} + {{ form.flow_rate }} + {% if form.flow_rate.errors %} +
{{ form.flow_rate.errors.0 }}
{% endif %}
- {{ form.post_calibration_flow_rate.label_tag }} - {{ form.post_calibration_flow_rate }} - {% if form.post_calibration_flow_rate.errors %} -
{{ form.post_calibration_flow_rate.errors.0 }}
+ {{ form.meter_reading.label_tag }} + {{ form.meter_reading }} + {% if form.meter_reading.errors %} +
{{ form.meter_reading.errors.0 }}
+ {% endif %} +
+
+ {{ form.meter_charge.label_tag }} + {{ form.meter_charge }} + {% if form.meter_charge.errors %} +
{{ form.meter_charge.errors.0 }}
+ {% endif %} +
+
+ {{ form.meter_charge_expiration_date.label_tag }} + + + {% if form.meter_charge_expiration_date.errors %} +
{{ form.meter_charge_expiration_date.errors.0 }}
{% endif %}
@@ -432,14 +452,43 @@
{{ form.driving_force.errors.0 }}
{% endif %}
-
-
- {{ form.is_meter_suspicious }} - {{ form.is_meter_suspicious.label_tag }} +
+
+
+ {{ form.is_meter_suspicious }} + {{ form.is_meter_suspicious.label_tag }} +
+ {% if form.is_meter_suspicious.errors %} +
{{ form.is_meter_suspicious.errors.0 }}
+ {% endif %} +
+
+
+ {{ form.is_panel_sealed }} + {{ form.is_panel_sealed.label_tag }} +
+ {% if form.is_panel_sealed.errors %} +
{{ form.is_panel_sealed.errors.0 }}
+ {% endif %} +
+
+
+ {{ form.is_panel_cut }} + {{ form.is_panel_cut.label_tag }} +
+ {% if form.is_panel_cut.errors %} +
{{ form.is_panel_cut.errors.0 }}
+ {% endif %} +
+
+
+ {{ form.is_disconnection_done }} + {{ form.is_disconnection_done.label_tag }} +
+ {% if form.is_disconnection_done.errors %} +
{{ form.is_disconnection_done.errors.0 }}
+ {% endif %}
- {% if form.is_meter_suspicious.errors %} -
{{ form.is_meter_suspicious.errors.0 }}
- {% endif %}
@@ -653,7 +702,7 @@