§
    ?m—j#  ã                  óp   — d dl mZ d dlZd dlmZ d dlmZmZ  ej        e	¦  «        Z
 G d„ d¦  «        ZdS )é    )ÚannotationsN)ÚAny)ÚDecimalÚROUND_HALF_UPc                  óD   — e Zd ZdZ ed¦  «         ed¦  «        fdd„ZdS )ÚIpcCalculatorMixinu>   TÃ­nh toÃ¡n Phá»¥ lá»¥c 03a IPC (Interim Payment Certificate).z10.0z5.0Ú
project_idÚstrÚstage_numberÚintÚcompleted_value_vndr   Úadvance_pctÚretention_pctÚreturnúdict[str, Any]c           
     ó¤  — d}t          d¦  «        }t          d¦  «        }t          d¦  «        }		 |                      ¦   «         5 }
|
                     ¦   «         5 }|                     |||f¦  «         |                     ¦   «         }|rft          t          |d         ¦  «        ¦  «        }t          t          |d         ¦  «        ¦  «        }t          t          |d         ¦  «        ¦  «        }	ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   n4# t          $ r'}t                               d|› �¦  «         Y d}~nd}~ww xY wt          t          |¦  «        ¦  «         	                    t          d¦  «        t          ¬	¦  «        }||z  t          d
¦  «        z   	                    t          d¦  «        t          ¬	¦  «        }||z  t          d
¦  «        z   	                    t          d¦  «        t          ¬	¦  «        }||z
  |z
  }||z   }||z   }|	|z   }||z
  |z
  }||t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        dœt          |¦  «        t          |¦  «        t          |	¦  «        dœt          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        dœddœS )ut   
        TÃ­nh toÃ¡n giÃ¡ trá»‹ thanh toÃ¡n Ä‘á»£t (Phá»¥ lá»¥c 03a) lÅ©y káº¿ ká»³ trÆ°á»›c vÃ  ká»³ nÃ y.
        a¤  
            SELECT COALESCE(SUM(completed_value_vnd), 0) as prev_completed,
                   COALESCE(SUM(advance_deduction_vnd), 0) as prev_advance,
                   COALESCE(SUM(retention_deduction_vnd), 0) as prev_retention,
                   COALESCE(SUM(net_payment_vnd), 0) as prev_net
            FROM erp_dossier_ipcs
            WHERE project_id = %s AND stage_number < %s AND status = 'APPROVED'
        Ú0Úprev_completedÚprev_advanceÚprev_retentionNu0   KhÃ´ng thá»ƒ tra cá»©u lÅ©y káº¿ ká»³ trÆ°á»›c: z0.0000)ÚroundingÚ100)r   Úadvance_deduction_vndÚretention_deduction_vndÚnet_payment_vnd)r   r   r   ÚQS_REVIEWED)r	   r   ÚperiodÚcumulative_previousÚcumulative_to_dateÚstatus)r   Úget_connectionÚcursorÚexecuteÚfetchoner
   Ú	ExceptionÚloggerÚwarningÚquantizer   )Úselfr	   r   r   r   r   Úsql_prevr   r   r   ÚconnÚcurÚrowÚeÚcurrent_completedÚcurrent_advanceÚcurrent_retentionÚcurrent_netÚtotal_completedÚtotal_advanceÚtotal_retentionÚ	total_nets                         úVC:\Projects\DSCons\app\modules\dossier\application\dossier_generator\ipc_calculator.pyÚcalculate_ipc_03az$IpcCalculatorMixin.calculate_ipc_03a   sˆ  € ðˆõ ! ™œˆÝ˜s‘|”|ˆÝ  ™œˆð		SØ×$Ò$Ñ&Ô&ð I¨$°·²±´ð IÀØ—’˜H z°<Ð&@ÑAÔAÐAØ—l’l‘n”n�Øð IÝ%,­S°Ð5EÔ1FÑ-GÔ-GÑ%HÔ%H�NÝ#*­3¨s°>Ô/BÑ+CÔ+CÑ#DÔ#D�LÝ%,­S°Ð5EÔ1FÑ-GÔ-GÑ%HÔ%H�NðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið Ið Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iøøõ ð 	Sð 	Sð 	SÝ�NŠNÐQÈaÐQÐQÑRÔRÐRÐRÐRÐRÐRÐRøøøøð	Søøøõ $¥CÐ(;Ñ$<Ô$<Ñ=Ô=×FÒFÅwÈxÑGXÔGXÕcpÐFÑqÔqÐØ,¨{Ñ:½WÀU¹^¼^ÑK×UÒUÕV]Ð^fÑVgÔVgÕrÐUñ  Aô  AˆØ.°Ñ>ÅÈÁÄÑO×YÒYÕZaÐbjÑZkÔZkõ  wDÐYñ  Eô  EÐØ'¨/Ñ9Ð<MÑMˆð )Ð+<Ñ<ˆØ$ Ñ6ˆØ(Ð+<Ñ<ˆØ# mÑ3°oÑEˆ	ð %Ø(å'*Ð+<Ñ'=Ô'=Ý),¨_Ñ)=Ô)=Ý+.Ð/@Ñ+AÔ+AÝ#& {Ñ#3Ô#3ð	ð õ (+¨>Ñ':Ô':Ý),¨\Ñ):Ô):Ý+.¨~Ñ+>Ô+>ð$ð $õ (+¨?Ñ';Ô';Ý),¨]Ñ);Ô);Ý+.¨Ñ+?Ô+?Ý#& y¡>¤>ð	#ð #ð $ð)
ð 
ð 	
s`   ±D ÁDÁBC;Ã/DÃ;C?	Ã?DÄC?	ÄDÄD ÄDÄD ÄDÄD Ä
EÄ(E
Å
EN)r	   r
   r   r   r   r   r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r8   © ó    r7   r   r   	   sR   € € € € € ØHÐHð  '˜w v™œØ!( ¨¡¤ðE
ð E
ð E
ð E
ð E
ð E
ð E
r>   r   )Ú
__future__r   ÚloggingÚtypingr   Údecimalr   r   Ú	getLoggerr9   r&   r   r=   r>   r7   ú<module>rD      s˜   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à	ˆÔ	˜8Ñ	$Ô	$€ðH
ð H
ð H
ð H
ð H
ñ H
ô H
ð H
ð H
ð H
r>   