§
     ’j{#  ã                   óh  — d Z ddlZddlmc mZ ddlmZ ddl	m
Z
 ddlZddlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZmZmZmZmZ dd
lmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ej&        defd„¦   «         Z'ddiZ(d„ Z)defd„Z*d„ Z+defd„Z,d„ Z-defd„Z.d„ Z/defd„Z0d„ Z1defd„Z2defd„Z3dS )zxUnit and integration tests for Enterprise Advanced Modules (War Room, Site Operations, Telematics, 3-Way Matching, IPC).é    N)Údate)ÚDecimal)Ú
TestClient)Ú
create_app)ÚBusinessPillarEnum)ÚMatchStatusEnum)ÚAttendanceEntryÚGPSPhotoAttachmentÚMachineHourEntryÚ MaterialRequisitionCreateRequestÚMaterialRequisitionItemÚMRStatusEnumÚSiteDiaryCreateRequest)ÚFinancialWarRoomService)ÚFuelTelematicsService)ÚIPCExporterService)ÚThreeWayMatchingService)ÚSiteOperationsServiceÚreturnc                  ó<   — t          ¦   «         } t          | ¦  «        S )N)r   r   )Úapps    ú<C:\Projects\DSCons\tests\test_enterprise_advanced_modules.pyÚclientr      s   € å
‰,Œ,€CÝ�c‰?Œ?Ðó    ÚAuthorizationzBearer dev-test-tokenc            	      ó”  — t          ¦   «         } |                      ¦   «         }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }t          |¦  «        }d}||k    }	|	�st          j        d|	fd	||f¦  «        d
t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd
dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}	}d„ |j        D ¦   «         }t          j        }||v }|sßt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}t          j        }||v }|sßt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}t          j        }||v }|sßt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}t          j        }||v }|sßt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}|j        }t'          |t(          ¦  «        }|�sddt          j        ¦   «         v st          j        t&          ¦  «        rt          j        t&          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t(          ¦  «        rt          j        t(          ¦  «        ndt          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}}|j        }t'          |t(          ¦  «        }|�sddt          j        ¦   «         v st          j        t&          ¦  «        rt          j        t&          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t(          ¦  «        rt          j        t(          ¦  «        ndt          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}}|j        }d}t)          |¦  «        }||k    }|�st          j        d|fd ||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t(          ¦  «        rt          j        t(          ¦  «        ndt          j        |¦  «        t          j        |¦  «        d!œz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}|j        }|j        }d"}	||	k    }|s½t          j        d#|fd$||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        d%œz  }d&d'|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}	|j        }|j        }t          |¦  «        }	d(}|	|k    }|�st          j        d|fd)|	|f¦  «        d
t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd
dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |¦  «        d*œz  }d+d,|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}	x}}d S )-NÚ
0202111150©ú==)z6%(py2)s
{%(py2)s = %(py0)s.company_tax_id
} == %(py5)sÚdata©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7é   )zW%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.pillars_breakdown
})
} == %(py8)sÚlen©r"   Úpy1Úpy3r$   Úpy8úassert %(py10)sÚpy10c                 ó   — h | ]	}|j         ’Œ
S © )Ú	pillar_id)Ú.0Úps     r   ú	<setcomp>z>test_financial_war_room_service_calculation.<locals>.<setcomp>.   s   € Ð>Ð>Ð> !�!”+Ð>Ð>Ð>r   ©Úin)z4%(py2)s
{%(py2)s = %(py0)s.PILLAR_1_EPC
} in %(py4)sr   Ú
pillar_ids)r"   r#   Úpy4úassert %(py6)sÚpy6)z6%(py2)s
{%(py2)s = %(py0)s.PILLAR_2_FLEET
} in %(py4)s)z:%(py2)s
{%(py2)s = %(py0)s.PILLAR_3_EQUIPMENT
} in %(py4)s)z:%(py2)s
{%(py2)s = %(py0)s.PILLAR_4_MATERIALS
} in %(py4)sz\assert %(py6)s
{%(py6)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.total_revenue_ytd
}, %(py4)s)
}Ú
isinstancer   )r"   r*   r+   r8   r:   zaassert %(py6)s
{%(py6)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.total_gross_profit_ytd
}, %(py4)s)
}ú0.0000©ú>)zV%(py2)s
{%(py2)s = %(py0)s.total_revenue_ytd
} > %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}©r"   r#   r8   r:   r,   éZ   ©ú>=)z\%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.cashflow_runway
}.net_runway_days
} >= %(py7)s©r"   r#   r8   r&   úassert %(py9)sÚpy9é   )zx%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.cashflow_runway
}.forecast_30d
})
} == %(py10)s©r"   r*   r+   r$   r&   r.   úassert %(py12)sÚpy12)r   Úget_war_room_summaryÚcompany_tax_idÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚpillars_breakdownr(   r   ÚPILLAR_1_EPCÚPILLAR_2_FLEETÚPILLAR_3_EQUIPMENTÚPILLAR_4_MATERIALSÚtotal_revenue_ytdr;   r   Útotal_gross_profit_ytdÚcashflow_runwayÚnet_runway_daysÚforecast_30d)Úservicer    Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert2Ú@py_assert7Ú@py_assert6Ú@py_format9Ú@py_format11r7   Ú@py_format5Ú@py_format7Ú@py_assert5Ú@py_format10Ú@py_assert9Ú@py_assert8Ú@py_format13s                       r   Ú+test_financial_war_room_service_calculationrp   &   sI  € Ý%Ñ'Ô'€GØ×'Ò'Ñ)Ô)€DàÔÐ. ,Ð.Ð ,Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð ,Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ4Ñ.Ô.Ð.Õ.Ô.ˆ4Ñ.Ô.Ð.Ð.Õ.Ô.ÐÑ.Ô.Õ.Ô. ,Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ%Ð+�3Ð%Ñ&Ô&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ñ+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�3Ñ+Ô+Ð+Õ+Ô+�3Ñ+Ô+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆtÑ+Ô+Ð+Õ+Ô+ˆtÑ+Ô+Ð+Ð+Õ+Ô+Ð%Ñ+Ô+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð ?Ð> tÔ'=Ð>Ñ>Ô>€JÝÔ*Ð8Ð*¨jÐ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð*¨jÐ8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ÕÑ8Ô8Ð8Õ8Ô8ÕÑ8Ô8Ð8Ð8Õ8Ô8Ð*Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8¨jÑ8Ô8Ð8Õ8Ô8¨jÑ8Ô8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8ÝÔ,Ð:Ð,°
Ð:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð,°
Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ÕÑ:Ô:Ð:Õ:Ô:ÕÑ:Ô:Ð:Ð:Õ:Ô:Ð,Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:°
Ñ:Ô:Ð:Õ:Ô:°
Ñ:Ô:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:ÝÔ0Ð>Ð0°JÐ>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð0°JÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ÕÑ>Ô>Ð>Õ>Ô>ÕÑ>Ô>Ð>Ð>Õ>Ô>Ð0Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>°JÑ>Ô>Ð>Õ>Ô>°JÑ>Ô>Ð>Ð>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>ÝÔ0Ð>Ð0°JÐ>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð0°JÐ>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ÕÑ>Ô>Ð>Õ>Ô>ÕÑ>Ô>Ð>Ð>Õ>Ô>Ð0Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>°JÑ>Ô>Ð>Õ>Ô>°JÑ>Ô>Ð>Ð>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>ð Ô,Ð6�:Ð,­gÑ6Ô6Ð6Ð6Ñ6Ð6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�:Ñ6Ô6Ð6Õ6Ô6�:Ñ6Ô6Ð6Ð6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�dÑ6Ô6Ð6Õ6Ô6�dÑ6Ô6Ð6Ð6Õ6Ô6Ð,Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6­gÑ6Ô6Ð6Õ6Ô6­gÑ6Ô6Ð6Ð6Õ6Ô6Ð6Ñ6Ô6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6ØÔ1Ð;�:Ð1µ7Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;�:Ñ;Ô;Ð;Õ;Ô;�:Ñ;Ô;Ð;Ð;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;�dÑ;Ô;Ð;Õ;Ô;�dÑ;Ô;Ð;Ð;Õ;Ô;Ð1Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;µ7Ñ;Ô;Ð;Õ;Ô;µ7Ñ;Ô;Ð;Ð;Õ;Ô;Ð;Ñ;Ô;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;ØÔ!Ð5¨HÐ5¥G¨HÑ$5Ô$5Ð5Ð!Ð$5Ò5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5Ð!Ð$5Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆ4Ñ5Ô5Ð5Õ5Ô5ˆ4Ñ5Ô5Ð5Ð5Õ5Ô5Ð!Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5¥GÑ5Ô5Ð5Õ5Ô5¥GÑ5Ô5Ð5Ð5Õ5Ô5¨HÑ5Ô5Õ5Ô5Ð$5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ØÔÐ5ÐÔ/Ð5°2Ð5Ð/°2Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð/°2Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆ4Ñ5Ô5Ð5Õ5Ô5ˆ4Ñ5Ô5Ð5Ð5Õ5Ô5ÐÑ5Ô5Õ5Ô5Ð/Ñ5Ô5Õ5Ô5°2Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ØÔ#Ð7Ð#Ô0Ð7�3Ð0Ñ1Ô1Ð7°RÐ7Ð1°RÒ7Ð7Ð7Ñ7Õ7Ô7Ð7Ð7Ð7Ð7Ð1°RÐ7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7�3Ñ7Ô7Ð7Õ7Ô7�3Ñ7Ô7Ð7Ð7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆtÑ7Ô7Ð7Õ7Ô7ˆtÑ7Ô7Ð7Ð7Õ7Ô7Ð#Ñ7Ô7Õ7Ô7Ð0Ñ7Ô7Õ7Ô7Ð1Ñ7Ô7Õ7Ô7°RÑ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7r   r   c           	      óš  — |                       dt          ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     ¦   «         }|d
         }d}||k    }	|	slt          j        d|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}	}|d         }t          |¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}|                       dt          ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }	 |	¦   «         }t          |¦  «        }d}||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}	x}x}x}}|                       dt          ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d}|j        } |¦   «         }||v }	|	s½t          j        d |	fd!||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d"œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}	x}}d S )#Nz/v1/war-room/summary©ÚheaderséÈ   r   ©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚresr!   r%   r&   rK   r   ©z%(py1)s == %(py4)s©r*   r8   r9   r:   rT   r'   ©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr(   rC   rD   rE   z/v1/war-room/pillarsÚres_pillars)zb%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.json
}()
})
} == %(py10)srG   rH   rI   z/v1/war-room/cashflowÚres_cashflowr]   r5   )zC%(py1)s in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.json
}()
}©r*   r+   r$   r&   ©ÚgetÚAUTH_HEADERSÚstatus_coderL   rM   rN   rO   rP   rQ   rR   rS   Újsonr(   )r   rv   r_   r`   ra   rb   rc   ÚpayloadÚ@py_assert0rd   ri   rj   rf   rk   rl   rz   rm   rn   rh   ro   r{   s                        r   Útest_war_room_api_endpointsr„   <   s  € Ø
�*Š*Ð+µ\ˆ*Ñ
BÔ
B€CØŒ?Ð!˜cÐ!ˆ?˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ?˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ?Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø�hŠh‰jŒj€GØÐ#Ô$Ð4¨Ð4Ð$¨Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð$¨Ð4Ñ4Ô4Õ4Ô4Ð$Ñ4Ô4Õ4Ô4¨Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÐ*Ô+Ð1�3Ð+Ñ,Ô,Ð1°Ð1Ð,°Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð,°Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1�3Ñ1Ô1Ð1Õ1Ô1�3Ñ1Ô1Ð1Ð1Õ1Ô1Ð+Ñ1Ô1Õ1Ô1Ð,Ñ1Ô1Õ1Ô1°Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1à—*’*Ð3½\�*ÑJÔJ€KØÔ"Ð) cÐ)Ð" cÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð" cÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆ;Ñ)Ô)Ð)Õ)Ô)ˆ;Ñ)Ô)Ð)Ð)Õ)Ô)Ð"Ñ)Ô)Õ)Ô) cÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÔÐ'ÐÐÑ!Ô!Ð'�3Ð!Ñ"Ô"Ð' aÐ'Ð" aÒ'Ð'Ð'Ñ'Õ'Ô'Ð'Ð'Ð'Ð'Ð" aÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�3Ñ'Ô'Ð'Õ'Ô'�3Ñ'Ô'Ð'Ð'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆ{Ñ'Ô'Ð'Õ'Ô'ˆ{Ñ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô'Ð!Ñ'Ô'Õ'Ô'Ð"Ñ'Ô'Õ'Ô' aÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'à—:’:Ð5½|�:ÑLÔL€LØÔ#Ð* sÐ*Ð# sÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð# sÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆ<Ñ*Ô*Ð*Õ*Ô*ˆ<Ñ*Ô*Ð*Ð*Õ*Ô*Ð#Ñ*Ô*Õ*Ô* sÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ0˜\Ô.Ð0Ð.Ð.Ñ0Ô0Ð0ˆ>Ð0Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ>Ð0Ð0Ñ0Ô0Õ0Ô0ˆ>Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0˜\Ñ0Ô0Ð0Õ0Ô0˜\Ñ0Ô0Ð0Ð0Õ0Ô0Ð.Ñ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r   c                  óì  — t          ¦   «         } t          dt          ddd¦  «        ddddd	t          d
ddt	          d¦  «        ¬¦  «        gt          dddt	          d¦  «        t	          d¦  «        t	          d¦  «        d¬¦  «        gt          dddddd¬¦  «        g¬¦
  «
        }|                      |¦  «        }|j        }|j	        }d} ||¦  «        }|s±dd t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d!œz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}|j        }d"}||k    }|sªt          j        d#|fd$||f¦  «        d t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd t          j        |¦  «        t          j        |¦  «        d%œz  }	d&d'|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}}|j        }d}t	          |¦  «        }||k    }|�st          j        d#|fd(||f¦  «        d t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd t          j        |¦  «        d)t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd)t          j        |¦  «        t          j        |¦  «        d!œz  }d*d+|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}t)          dd,d-t          ddd.¦  «        dd/d0t+          d1d2d3t	          d4¦  «        t	          d5¦  «        ¬6¦  «        g¬7¦  «        }|                      |¦  «        }|j        }t0          j        }||k    }|sòt          j        d#|fd8||f¦  «        d9t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd9t          j        |¦  «        d:t          j        ¦   «         v st          j        t0          ¦  «        rt          j        t0          ¦  «        nd:t          j        |¦  «        d;œz  }d<d=|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j        }d>}t	          |¦  «        }||k    }|�st          j        d#|fd?||f¦  «        d9t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd9t          j        |¦  «        d)t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd)t          j        |¦  «        t          j        |¦  «        d!œz  }d*d+|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}|                      |j        t0          j        d@¬A¦  «        }|j        }t0          j        }||k    }|sòt          j        d#|fdB||f¦  «        dCt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndCt          j        |¦  «        d:t          j        ¦   «         v st          j        t0          ¦  «        rt          j        t0          ¦  «        nd:t          j        |¦  «        d;œz  }d<d=|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j        dD         }|j        }d4}t	          |¦  «        }||k    }|sÚt          j        d#|fdE||f¦  «        t          j        |¦  «        t          j        |¦  «        d)t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd)t          j        |¦  «        t          j        |¦  «        dFœz  }dGdH|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}d S )INúDA-KM-BENKEM-2025-2026iê  é   é   ÚSUNNYg      @@u   Ká»¹ sÆ° Pháº¡m VÄƒn TÃ¹ngu%   Chá»‰ huy trÆ°á»Ÿng Nguyá»…n SÄ© SÆ¡nu(   Ä�Ã o Ä‘áº¥t há»‘ mÃ³ng cá»‘ng Báº¿n KemzNV-01u   Pháº¡m VÄƒn TÃ¹ngu   Ká»¹ sÆ°ú8.0000)Úemployee_codeÚemployee_nameÚ
role_titleÚhours_workedzEXC-KOMATSU-01zKomatsu PC200u   LÃ¡i mÃ¡y HÃ¹ngz	4128.0000z	4136.0000u   Ä�Ã o há»‘ mÃ³ng)Úequipment_codeÚequipment_nameÚoperator_nameÚstart_engine_hoursÚend_engine_hoursÚtotal_operating_hoursÚwork_descriptionzIMG-TEST-01z/static/uploads/test.jpggê46¼4@g�St$—«Z@z2026-08-23T10:00:00u   Há»‘ mÃ³ng cá»‘ng Báº¿n Kem)Úphoto_idÚfile_urlÚlatitudeÚ	longitudeÚcaptured_atÚcaption)
Úproject_codeÚlog_dateÚweather_conditionÚtemperature_celsiusÚengineer_nameÚsite_manager_nameÚwork_summaryÚ
attendanceÚmachine_logsÚphotoszDIARY-DA-KM-zjassert %(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.diary_id
}.startswith
}(%(py6)s)
}Údiaryr?   é   r   )z5%(py2)s
{%(py2)s = %(py0)s.total_workers
} == %(py5)sr!   r%   r&   )zY%(py2)s
{%(py2)s = %(py0)s.total_machine_hours
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   r-   r.   zWBS-KM-02-BETONGÚHIGHé   u   BÃ£i Ä‘Ãºc cá»‘ng Báº¿n Kemu   Ä�á»• bÃª tÃ´ng thÃ¢n cá»‘ngzMAT-CAT-VANGu
   CÃ¡t vÃ ngu   mÂ³z30.0000z320000.0000)Ú	item_codeÚmaterial_nameÚunitÚrequested_qtyÚunit_price_estimate)rœ   Úwbs_task_codeÚurgencyÚrequired_dateÚrequester_nameÚdelivery_locationÚreasonÚitems)zM%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.SUBMITTED
}Úmrr   )r"   r#   r8   r:   zassert %(py8)sr,   z9600000.0000)z\%(py2)s
{%(py2)s = %(py0)s.total_estimated_amount
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}u   Nguyá»…n SÄ© SÆ¡n)Úapprover_name)zL%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.APPROVED
}Úapproved_mrr   )zR%(py3)s
{%(py3)s = %(py1)s.approved_qty
} == %(py9)s
{%(py9)s = %(py5)s(%(py7)s)
})r*   r+   r$   r&   rE   zassert %(py11)sÚpy11) r   r   r   r	   r   r   r
   Úcreate_site_diaryÚdiary_idÚ
startswithrN   rO   rL   rP   rQ   rR   rS   Útotal_workersrM   Útotal_machine_hoursr   r   Úcreate_material_requisitionÚstatusr   Ú	SUBMITTEDÚtotal_estimated_amountÚupdate_mr_statusÚmr_idÚAPPROVEDrµ   Úapproved_qty)r^   Ú	diary_reqr¦   r_   ra   rk   re   rg   r`   rb   rc   rh   Úmr_reqr¶   rj   r¸   rƒ   rd   rf   rn   rl   Ú@py_format12s                         r   Ú&test_site_operations_service_lifecyclerÊ   M   sP	  € Ý#Ñ%Ô%€Gõ 'Ø-Ý�d˜A˜rÑ"Ô"Ø!Ø Ø2ØAØ?åØ%Ø1Ø%Ý$ XÑ.Ô.ð	ñ ô ð
õ Ø/Ø.Ø/Ý#*¨;Ñ#7Ô#7Ý!(¨Ñ!5Ô!5Ý&-¨hÑ&7Ô&7Ø!3ðñ ô ð

õ Ø&Ø3Ø Ø"Ø1Ø5ðñ ô ð	
ð7%ñ %ô %€IðL ×%Ò% iÑ0Ô0€EØŒ>Ð4ˆ>Ô$Ð4 ^Ð4Ð$Ð$ ^Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆ5Ñ4Ô4Ð4Õ4Ô4ˆ5Ñ4Ô4Ð4Ð4Õ4Ô4ˆ>Ñ4Ô4Õ4Ô4Ð$Ñ4Ô4Õ4Ô4 ^Ñ4Ô4Õ4Ô4Ð4Ñ4Ô4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÔÐ# !Ð#Ð !Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð !Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ5Ñ#Ô#Ð#Õ#Ô#ˆ5Ñ#Ô#Ð#Ð#Õ#Ô#ÐÑ#Ô#Õ#Ô# !Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØÔ$Ð9°Ð9­°Ñ(9Ô(9Ð9Ð$Ð(9Ò9Ð9Ð9Ñ9Õ9Ô9Ð9Ð9Ð9Ð9Ð$Ð(9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆ5Ñ9Ô9Ð9Õ9Ô9ˆ5Ñ9Ô9Ð9Ð9Õ9Ô9Ð$Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9­Ñ9Ô9Ð9Õ9Ô9­Ñ9Ô9Ð9Ð9Õ9Ô9°Ñ9Ô9Õ9Ô9Ð(9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9õ .Ø-Ø(ØÝ˜4  BÑ'Ô'Ø3Ø7Ø-å#Ø(Ø*ØÝ% iÑ0Ô0Ý$+¨MÑ$:Ô$:ðñ ô ð
ðñ ô €Fð$ 
×	,Ò	,¨VÑ	4Ô	4€BØŒ9Ð.�Ô.Ð.ˆ9Ð.Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆ9Ð.Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ2Ñ.Ô.Ð.Õ.Ô.ˆ2Ñ.Ô.Ð.Ð.Õ.Ô.ˆ9Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.�Ñ.Ô.Ð.Õ.Ô.�Ñ.Ô.Ð.Ð.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ$Ð?°Ð?­°Ñ(?Ô(?Ð?Ð$Ð(?Ò?Ð?Ð?Ñ?Õ?Ô?Ð?Ð?Ð?Ð?Ð$Ð(?Ð?Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?ˆ2Ñ?Ô?Ð?Õ?Ô?ˆ2Ñ?Ô?Ð?Ð?Õ?Ô?Ð$Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?­Ñ?Ô?Ð?Õ?Ô?­Ñ?Ô?Ð?Ð?Õ?Ô?°Ñ?Ô?Õ?Ô?Ð(?Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ð ×*Ò*Ø
Œ•,Ô'Ð7Jð +ñ ô €Kð ÔÐ6¥Ô!6Ð6ÐÐ!6Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6ÐÐ!6Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6ˆ;Ñ6Ô6Ð6Õ6Ô6ˆ;Ñ6Ô6Ð6Ð6Õ6Ô6ÐÑ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6¥Ñ6Ô6Ð6Õ6Ô6¥Ñ6Ô6Ð6Ð6Õ6Ô6Ð!6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ØÔ˜QÔÐBÐÔ,ÐB¸	ÐBµ¸	Ñ0BÔ0BÐBÐ,Ð0BÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ,Ð0BÐBÑBÔBÕBÔBÐÑBÔBÕBÔBÐ,ÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔBµÑBÔBÐBÕBÔBµÑBÔBÐBÐBÕBÔB¸	ÑBÔBÕBÔBÐ0BÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBr   c           	      ó®  — |                       dt          ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        } |¦   «         }t          |¦  «        }d
}	||	k    }
|
�st          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}x}
}	|                       dt          ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        } |¦   «         }t          |¦  «        }d
}	||	k    }
|
�st          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}x}
}	d S )Nz/v1/site/diariesrr   rt   r   ru   rv   r!   r%   r&   r§   rA   )zb%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.json
}()
})
} >= %(py10)sr(   rG   rH   rI   z/v1/site/requisitionsÚres_mrr}   )r   rv   r_   r`   ra   rb   rc   rd   rf   rm   rn   rh   ro   rÌ   s                 r   Ú"test_site_operations_api_endpointsrÍ   ›   s£  € à
�*Š*Ð'µˆ*Ñ
>Ô
>€CØŒ?Ð!˜cÐ!ˆ?˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ?˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ?Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØŒxÐˆxˆx‰zŒzÐ�3ˆz‰?Œ?Ð˜aÐˆ?˜aÒÐÐÑÕÔÐÐÐÐˆ?˜aÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔˆxÑÔÕÔˆzÑÔÕÔˆ?ÑÔÕÔ˜aÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐÐÐð �ZŠZÐ/½ˆZÑFÔF€FØÔÐ$ Ð$Ð Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆ6Ñ$Ô$Ð$Õ$Ô$ˆ6Ñ$Ô$Ð$Ð$Õ$Ô$ÐÑ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØŒ{Ð"ˆ{ˆ{‰}Œ}Ð"�3ˆ}ÑÔÐ" Ð"Ð Ò"Ð"Ð"Ñ"Õ"Ô"Ð"Ð"Ð"Ð"Ð Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�3Ñ"Ô"Ð"Õ"Ô"�3Ñ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆvÑ"Ô"Ð"Õ"Ô"ˆvÑ"Ô"Ð"Ð"Õ"Ô"ˆ{Ñ"Ô"Õ"Ô"ˆ}Ñ"Ô"Õ"Ô"ÐÑ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"r   c                  óB  — t          ¦   «         } |                      ¦   «         }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d	|fd
||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}x}x}}t          d„ |j        D ¦   «         ¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d	|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}x}x}}d S )Nr'   rA   )z>%(py2)s
{%(py2)s = %(py0)s.total_active_equipment
} >= %(py5)sÚsummaryr!   r%   r&   r<   r=   )zh%(py2)s
{%(py2)s = %(py0)s.average_consumption_liters_per_hour
} > %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   r?   r-   r.   c              3   ó0   K  — | ]}|j         d k    ¯|V — ŒdS )zEXC-KOBELCO-02N)r�   )r2   Úas     r   ú	<genexpr>z/test_fuel_telematics_service.<locals>.<genexpr>°   s9   è è € ð ð Ø¨!Ô*:Ð>NÒ*NÐ*NˆÐ*NÐ*NÐ*NÐ*Nðð r   ÚWARNING_OVERCONSUMPTIONr   )z.%(py2)s
{%(py2)s = %(py0)s.status
} == %(py5)sÚkobelcoz15.0000)zX%(py2)s
{%(py2)s = %(py0)s.variance_percentage
} > %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})r   Úget_dashboard_summaryÚtotal_active_equipmentrL   rM   rN   rO   rP   rQ   rR   rS   Ú#average_consumption_liters_per_hourr   ÚnextÚassessmentsrÀ   Úvariance_percentage)r^   rÏ   r_   r`   ra   rb   rc   rk   re   rg   rh   rÔ   s               r   Útest_fuel_telematics_servicerÛ   ¨   s–  € Ý#Ñ%Ô%€GØ×+Ò+Ñ-Ô-€GàÔ)Ð.¨QÐ.Ð)¨QÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð)¨QÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ7Ñ.Ô.Ð.Õ.Ô.ˆ7Ñ.Ô.Ð.Ð.Õ.Ô.Ð)Ñ.Ô.Õ.Ô.¨QÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ6ÐJÀÐJ½ÀÑ9JÔ9JÐJÐ6Ð9JÒJÐJÐJÑJÕJÔJÐJÐJÐJÐJÐ6Ð9JÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJˆ7ÑJÔJÐJÕJÔJˆ7ÑJÔJÐJÐJÕJÔJÐ6ÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ½ÑJÔJÐJÕJÔJ½ÑJÔJÐJÐJÕJÔJÀÑJÔJÕJÔJÐ9JÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJõ ð ð ØÔ&ðñ ô ñ ô €Gð Œ>Ð6Ð6Ð6ˆ>Ð6Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6ˆ>Ð6Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6ˆ7Ñ6Ô6Ð6Õ6Ô6ˆ7Ñ6Ô6Ð6Ð6Õ6Ô6ˆ>Ñ6Ô6Õ6Ô6Ð6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ØÔ&Ð;°Ð;­°Ñ);Ô);Ð;Ð&Ð);Ò;Ð;Ð;Ñ;Õ;Ô;Ð;Ð;Ð;Ð;Ð&Ð);Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆ7Ñ;Ô;Ð;Õ;Ô;ˆ7Ñ;Ô;Ð;Ð;Õ;Ô;Ð&Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;­Ñ;Ô;Ð;Õ;Ô;­Ñ;Ô;Ð;Ð;Õ;Ô;°Ñ;Ô;Õ;Ô;Ð);Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;r   c                 ót  — |                       dt          ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     ¦   «         }d
}||v }	|	s—t          j        d|	fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}	d}||v }	|	s—t          j        d|	fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}	d S )Nz/v1/telematics/summaryrr   rt   r   ru   rv   r!   r%   r&   rÙ   r5   )z%(py1)s in %(py3)sr‚   )r*   r+   zassert %(py5)sr$   Úmaintenance_schedules©r~   r   r€   rL   rM   rN   rO   rP   rQ   rR   rS   r�   )r   rv   r_   r`   ra   rb   rc   r‚   rƒ   rd   Ú@py_format4s              r   Útest_telematics_api_endpointrà   ·   s�  € Ø
�*Š*Ð-µ|ˆ*Ñ
DÔ
D€CØŒ?Ð!˜cÐ!ˆ?˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ?˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ?Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø�hŠh‰jŒj€GØÐ#ˆ=˜GÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ=˜GÐ#Ñ#Ô#Õ#Ô#ˆ=Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#˜GÑ#Ô#Ð#Õ#Ô#˜GÑ#Ô#Ð#Ð#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ø"Ð-Ð" gÐ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð" gÐ-Ñ-Ô-Õ-Ô-Ð"Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô- gÑ-Ô-Ð-Õ-Ô- gÑ-Ô-Ð-Ð-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   c                  ó¾  — t          ¦   «         } |                      ¦   «         }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd	||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd
||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        d         }|j        }t          j        }	||	k    }|sÇt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}x}x}}	d S )Né   r   )z>%(py2)s
{%(py2)s = %(py0)s.total_invoices_checked
} == %(py5)srÏ   r!   r%   r&   r§   )z=%(py2)s
{%(py2)s = %(py0)s.perfect_matches_count
} == %(py5)s)z8%(py2)s
{%(py2)s = %(py0)s.mismatches_count
} == %(py5)sr   )zW%(py3)s
{%(py3)s = %(py1)s.match_status
} == %(py7)s
{%(py7)s = %(py5)s.PERFECT_MATCH
}r   r|   rD   rE   )r   rÕ   Útotal_invoices_checkedrL   rM   rN   rO   rP   rQ   rR   rS   Úperfect_matches_countÚmismatches_countÚmatchesÚmatch_statusr   ÚPERFECT_MATCH)r^   rÏ   r_   r`   ra   rb   rc   rƒ   rd   rf   rl   s              r   Útest_matching_serviceré   À   sÐ  € Ý%Ñ'Ô'€GØ×+Ò+Ñ-Ô-€GàÔ)Ð.¨QÐ.Ð)¨QÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð)¨QÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ7Ñ.Ô.Ð.Õ.Ô.ˆ7Ñ.Ô.Ð.Ð.Õ.Ô.Ð)Ñ.Ô.Õ.Ô.¨QÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ(Ð-¨AÐ-Ð(¨AÒ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð(¨AÐ-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ7Ñ-Ô-Ð-Õ-Ô-ˆ7Ñ-Ô-Ð-Ð-Õ-Ô-Ð(Ñ-Ô-Õ-Ô-¨AÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÔ#Ð( qÐ(Ð# qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð# qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ7Ñ(Ô(Ð(Õ(Ô(ˆ7Ñ(Ô(Ð(Ð(Õ(Ô(Ð#Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØŒ?˜1ÔÐKÐÔ*ÐK­oÔ.KÐKÐ*Ð.KÒKÐKÐKÐKÕKÔKÐKÐKÐKÐKÐ*Ð.KÐKÑKÔKÕKÔKÐÑKÔKÕKÔKÐ*ÑKÔKÐKÕKÔKÑKÔKÐKÐKÕKÔK­oÑKÔKÐKÕKÔK­oÑKÔKÐKÐKÕKÔKÐ.KÑKÔKÐKÐKÑKÐKÐKÐKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKr   c                 óð  — |                       dt          ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     ¦   «         }|d
         }d}||k    }	|	slt          j        d|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}	}d S )Nz/v1/matching/summaryrr   rt   r   ru   rv   r!   r%   r&   rä   r§   rA   )z%(py1)s >= %(py4)srx   r9   r:   rÞ   )r   rv   r_   r`   ra   rb   rc   r‚   rƒ   rd   ri   rj   s               r   Útest_matching_api_endpointrë   Ê   s²  € Ø
�*Š*Ð+µ\ˆ*Ñ
BÔ
B€CØŒ?Ð!˜cÐ!ˆ?˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ?˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ?Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø�hŠh‰jŒj€GØÐ*Ô+Ð0¨qÐ0Ð+¨qÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð+¨qÐ0Ñ0Ô0Õ0Ô0Ð+Ñ0Ô0Õ0Ô0¨qÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r   c                  ó   — t          ¦   «         } |                      dd¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd
||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }t          |¦  «        }d}||k    }	|	�st          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}	}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}d S )Nr†   é   )rœ   Úperiod_numberr   )z4%(py2)s
{%(py2)s = %(py0)s.project_code
} == %(py5)sÚipcr!   r%   r&   )z5%(py2)s
{%(py2)s = %(py0)s.period_number
} == %(py5)sr'   )zK%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.items
})
} == %(py8)sr(   r)   r-   r.   z10.0000)z_%(py2)s
{%(py2)s = %(py0)s.advance_recovery_rate_pct
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   r?   z5.0000)zX%(py2)s
{%(py2)s = %(py0)s.retention_rate_pct
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}rŠ   )zR%(py2)s
{%(py2)s = %(py0)s.vat_rate_pct
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r<   r=   )z]%(py2)s
{%(py2)s = %(py0)s.total_net_payable_period
} > %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})r   Úgenerate_ipc_03arœ   rL   rM   rN   rO   rP   rQ   rR   rS   rî   rµ   r(   Úadvance_recovery_rate_pctr   Úretention_rate_pctÚvat_rate_pctÚtotal_net_payable_period)r^   rï   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   rk   s                r   Útest_ipc_exporter_servicerõ   Ò   s,  € Ý Ñ"Ô"€GØ
×
"Ò
"Ø-¸Qð #ñ ô €Cð ÔÐ7Ð7Ð7ÐÐ7Ò7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7ÐÐ7Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆ3Ñ7Ô7Ð7Õ7Ô7ˆ3Ñ7Ô7Ð7Ð7Õ7Ô7ÐÑ7Ô7Õ7Ô7Ð7Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØÔÐ! Ð!Ð Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!Ð Ð!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ÐÑ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØŒyÐ�3ˆy‰>Œ>Ð˜QÐˆ>˜QÒÐÐÑÕÔÐÐÐÐˆ>˜QÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔˆyÑÔÕÔˆ>ÑÔÕÔ˜QÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐØÔ(Ð>°IÐ>­G°IÑ,>Ô,>Ð>Ð(Ð,>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð(Ð,>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ3Ñ>Ô>Ð>Õ>Ô>ˆ3Ñ>Ô>Ð>Ð>Õ>Ô>Ð(Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­GÑ>Ô>Ð>Õ>Ô>­GÑ>Ô>Ð>Ð>Õ>Ô>°IÑ>Ô>Õ>Ô>Ð,>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ!Ð6¨XÐ6¥W¨XÑ%6Ô%6Ð6Ð!Ð%6Ò6Ð6Ð6Ñ6Õ6Ô6Ð6Ð6Ð6Ð6Ð!Ð%6Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6ˆ3Ñ6Ô6Ð6Õ6Ô6ˆ3Ñ6Ô6Ð6Ð6Õ6Ô6Ð!Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6¥WÑ6Ô6Ð6Õ6Ô6¥WÑ6Ô6Ð6Ð6Õ6Ô6¨XÑ6Ô6Õ6Ô6Ð%6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ØÔÐ0 xÐ0�w xÑ0Ô0Ð0ÐÐ0Ò0Ð0Ð0Ñ0Õ0Ô0Ð0Ð0Ð0Ð0ÐÐ0Ð0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ3Ñ0Ô0Ð0Õ0Ô0ˆ3Ñ0Ô0Ð0Ð0Õ0Ô0ÐÑ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0�wÑ0Ô0Ð0Õ0Ô0�wÑ0Ô0Ð0Ð0Õ0Ô0 xÑ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØÔ'Ð;°(Ð;­'°(Ñ*;Ô*;Ð;Ð'Ð*;Ò;Ð;Ð;Ñ;Õ;Ô;Ð;Ð;Ð;Ð;Ð'Ð*;Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆ3Ñ;Ô;Ð;Õ;Ô;ˆ3Ñ;Ô;Ð;Ð;Õ;Ô;Ð'Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;­'Ñ;Ô;Ð;Õ;Ô;­'Ñ;Ô;Ð;Ð;Õ;Ô;°(Ñ;Ô;Õ;Ô;Ð*;Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;r   c                 óÐ  — |                       dt          ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     ¦   «         }|d
         }d}||k    }	|	slt          j        d|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}	}|d         }t          |¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}d S )Nz?/v1/ipc/03a?project_code=DA-KM-BENKEM-2025-2026&period_number=3rr   rt   r   ru   rv   r!   r%   r&   Úcontractor_nameu&   CÃ”NG TY TNHH XÃ‚Y Dá»°NG Ä�á»ŠNH SÆ Nrw   rx   r9   r:   rµ   r'   ry   r(   rC   rD   rE   r}   )r   rv   r_   r`   ra   rb   rc   r‚   rƒ   rd   ri   rj   rf   rk   rl   s                  r   Útest_ipc_api_endpointrø   á   sÆ  € Ø
�*Š*ØIÝð ñ ô €Cð Œ?Ð!˜cÐ!ˆ?˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ?˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Õ!Ô!ˆ3Ñ!Ô!Ð!Ð!Õ!Ô!ˆ?Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø�hŠh‰jŒj€GØÐ$Ô%ÐQÐ)QÐQÐ%Ð)QÒQÐQÐQÐQÕQÔQÐQÐQÐQÐQÐ%Ð)QÐQÑQÔQÕQÔQÐ%ÑQÔQÕQÔQÐ)QÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQØ�wÔÐ%�3ÐÑ Ô Ð% AÐ%Ð  AÒ%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð  AÐ%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%�3Ñ%Ô%Ð%Õ%Ô%�3Ñ%Ô%Ð%Ð%Õ%Ô%ÐÑ%Ô%Õ%Ô%Ð Ñ%Ô%Õ%Ô% AÑ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%r   c                 óZ  — |                       d¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d	}|j
        }||v }|sªt          j        d
|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|                       d¦  «        }	|	j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |	¦  «        rt          j        |	¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d}|	j
        }||v }|sªt          j        d
|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |	¦  «        rt          j        |	¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d S )Nz/dashboard/war-roomrt   r   ru   Úres_warroomr!   r%   r&   zExecutive Financial War Roomr5   )z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.text
})r*   r+   r$   z/dashboard/site-diary-mobileÚres_pwazSite Operations PWA)r~   r€   rL   rM   rN   rO   rP   rQ   rR   rS   Útext)
r   rú   r_   r`   ra   rb   rc   rƒ   rd   rû   s
             r   Útest_static_dashboard_endpointsrý   í   s²  € Ø—*’*Ð2Ñ3Ô3€KØÔ"Ð) cÐ)Ð" cÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð" cÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆ;Ñ)Ô)Ð)Õ)Ô)ˆ;Ñ)Ô)Ð)Ð)Õ)Ô)Ð"Ñ)Ô)Õ)Ô) cÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø)Ð=¨[Ô-=Ð=Ð)Ð-=Ð=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð)Ð-=Ð=Ñ=Ô=Õ=Ô=Ð)Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=¨[Ñ=Ô=Ð=Õ=Ô=¨[Ñ=Ô=Ð=Ð=Õ=Ô=Ð-=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=à�jŠjÐ7Ñ8Ô8€GØÔÐ% #Ð%Ð #Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð #Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ7Ñ%Ô%Ð%Õ%Ô%ˆ7Ñ%Ô%Ð%Ð%Õ%Ô%ÐÑ%Ô%Õ%Ô% #Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø Ð0 G¤LÐ0Ð  LÐ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð  LÐ0Ñ0Ô0Õ0Ô0Ð Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0 GÑ0Ô0Ð0Õ0Ô0 GÑ0Ô0Ð0Ð0Õ0Ô0 LÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r   )4Ú__doc__ÚbuiltinsrN   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterL   Údatetimer   Údecimalr   ÚpytestÚstarlette.testclientr   Úapp.mainr   Ú%app.models.financial_war_room_schemasr   Úapp.models.matching_schemasr   Ú"app.models.site_operations_schemasr	   r
   r   r   r   r   r   Ú<app.modules.financial.application.financial_war_room_servicer   Ú:app.modules.operations.application.fuel_telematics_servicer   Ú1app.modules.core.application.ipc_exporter_servicer   Ú-app.modules.core.application.matching_servicer   Ú:app.modules.operations.application.site_operations_servicer   Úfixturer   r   rp   r„   rÊ   rÍ   rÛ   rà   ré   rë   rõ   rø   rý   r0   r   r   ú<module>r     s‰  ðØ ~Ð ~à  € € € € € € € € € € € € Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø +Ð +Ð +Ð +Ð +Ð +à Ð Ð Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DØ 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð aÐ `Ð `Ð `Ð `Ð `Ø \Ð \Ð \Ð \Ð \Ð \Ø PÐ PÐ PÐ PÐ PÐ PØ QÐ QÐ QÐ QÐ QÐ QØ \Ð \Ð \Ð \Ð \Ð \ð „ð�
ð ð ð ñ „ðð
  Ð!8Ð9€ð8ð 8ð 8ð,1¨
ð 1ð 1ð 1ð 1ð"KCð KCð KCð\	#¨zð 	#ð 	#ð 	#ð 	#ð<ð <ð <ð.¨ð .ð .ð .ð .ðLð Lð Lð1 zð 1ð 1ð 1ð 1ð<ð <ð <ð& *ð &ð &ð &ð &ð1¨Jð 1ð 1ð 1ð 1ð 1ð 1r   