Skip to content
Snippets Groups Projects
Commit af8c9f1d authored by lecluse's avatar lecluse
Browse files
Enregistrement des demandes de mise en paiement
parent 61ecfb3d
No related branches found
No related tags found
No related merge requests found
select code_enseignement, libelle_enseignement, code_formation, libelle_formation from (
select code_enseignement, libelle_enseignement, code_formation, libelle_formation, statut from (
select
ep.source_code code_enseignement,
ep.libelle libelle_enseignement,
......@@ -12,6 +12,10 @@ from
join etape ech on 1 = ose_divers.comprise_entre(ech.histo_creation,ech.histo_destruction) and ech.id = ch.etape_id
where
1 = ose_divers.comprise_entre(ep.histo_creation,ep.histo_destruction)
AND ech.source_code not like '%_400'
AND ech.source_code not like '%_500'
AND ech.source_code not like '%_501'
AND ech.source_code not like '%_504'
) t1 where cc > 1
ORDER BY
code_enseignement, code_formation
\ No newline at end of file
......@@ -45,6 +45,7 @@ return [
'service_manager' => [
'invokables' => [
'ApplicationServiceAPayer' => 'Application\Service\ServiceAPayer',
'ApplicationMiseEnPaiement' => 'Application\Service\MiseEnPaiement',
'ApplicationTypeHeures' => 'Application\Service\TypeHeures',
'ApplicationCentreCout' => 'Application\Service\CentreCout',
],
......
......@@ -5,6 +5,7 @@ namespace Application\Controller;
use Application\Service\ContextProviderAwareInterface;
use Application\Service\ContextProviderAwareTrait;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\Json\Json;
/**
* @method \Application\Controller\Plugin\Context context()
......@@ -38,10 +39,24 @@ class PaiementController extends AbstractActionController implements ContextProv
$this->initFilters();
$intervenant = $this->context()->mandatory()->intervenantFromRoute(); /* @var $intervenant \Application\Entity\Db\Intervenant */
$annee = $this->context()->getGlobalContext()->getAnnee();
if ($this->getRequest()->isPost()) {
$changements = $this->params()->fromPost('changements', '{}');
$changements = Json::decode($changements, Json::TYPE_ARRAY);
//var_dump($changements);
$this->getServiceMiseEnPaiement()->saveChangements($changements);
}
$servicesAPayer = $this->getServiceServiceAPayer()->getListByIntervenant($intervenant, $annee);
return compact('intervenant', 'servicesAPayer');
}
/**
* @return \Application\Service\MiseEnPaiement
*/
protected function getServiceMiseEnPaiement()
{
return $this->getServiceLocator()->get('applicationMiseEnPaiement');
}
/**
* @return \Application\Service\ServiceAPayer
*/
......
......@@ -457,7 +457,7 @@ class MiseEnPaiement implements HistoriqueAwareInterface
* @param \Application\Entity\Db\FormuleResultatServiceReferentiel $formuleResultatServiceReferentiel
* @return MiseEnPaiement
*/
public function setFormuleResultatServiceReferentielerentiel(\Application\Entity\Db\FormuleResultatServiceReferentiel $formuleResultatServiceReferentiel = null)
public function setFormuleResultatServiceReferentiel(\Application\Entity\Db\FormuleResultatServiceReferentiel $formuleResultatServiceReferentiel = null)
{
$this->formuleResultatServiceReferentiel = $formuleResultatServiceReferentiel;
......
<?php
namespace Application\Service;
use Application\Entity\Db\MiseEnPaiement as MiseEnPaiementEntity;
/**
* Description of MiseEnPaiement
*
* @author Laurent LÉCLUSE <laurent.lecluse at unicaen.fr>
*/
class MiseEnPaiement extends AbstractEntityService
{
/**
* retourne la classe des entités
*
* @return string
* @throws RuntimeException
*/
public function getEntityClass()
{
return 'Application\Entity\Db\MiseEnPaiement';
}
/**
* Retourne l'alias d'entité courante
*
* @return string
*/
public function getAlias(){
return 'mep';
}
/**
* Sauvegarde tous les changements intervenus dans un ensemble de mises en paiement
*
* @param array $changements
*/
public function saveChangements( $changements )
{
foreach( $changements as $miseEnPaiementId => $data ){
if (0 === strpos($miseEnPaiementId, 'new')){ // insert
$miseEnPaiement = $this->newEntity();
/* @var $miseEnPaiement MiseEnPaiementEntity */
$this->hydrateFromChangements($miseEnPaiement, $data);
$this->save($miseEnPaiement);
}else{
$miseEnPaiement = $this->get( $miseEnPaiementId );
if (null == $data || 'removed' == $data){ // delete
$this->delete($miseEnPaiement);
}else{ // update
$this->hydrateFromChangements($miseEnPaiement, $data);
$this->save($miseEnPaiement);
}
}
}
}
private function hydrateFromChangements( MiseEnPaiementEntity $object, $data )
{
if (isset($data['heures'])){
$object->setHeures( (float)$data['heures'] );
}
if (isset($data['centre-cout-id'])){
$serviceCentreCout = $this->getServiceLocator()->get('applicationCentreCout');
/* @var $serviceCentreCout CentreCout */
$object->setCentreCout( $serviceCentreCout->get( (integer)$data['centre-cout-id'] ) );
}
if (isset($data['formule-resultat-service-id'])){
$serviceFormuleResultatService = $this->getServiceLocator()->get('ApplicationFormuleResultatService');
/* @var $serviceFormuleResultatService FormuleResultatService */
$object->setFormuleResultatService( $serviceFormuleResultatService->get( (integer)$data['formule-resultat-service-id'] ) );
}
if (isset($data['formule-resultat-service-referentiel-id'])){
$serviceFormuleResultatServiceReferentiel = $this->getServiceLocator()->get('ApplicationFormuleResultatServiceReferentiel');
/* @var $serviceFormuleResultatServiceReferentiel FormuleResultatServiceReferentiel */
$object->setFormuleResultatServiceReferentiel( $serviceFormuleResultatServiceReferentiel->get( (integer)$data['formule-resultat-service-referentiel-id'] ) );
}
if (isset($data['type-heures-id'])){
$serviceTypeHeures = $this->getServiceLocator()->get('applicationTypeHeures');
/* @var $serviceTypeHeures TypeHeures */
$object->setTypeHeures( $serviceTypeHeures->get( (integer)$data['type-heures-id'] ) );
}
}
}
\ No newline at end of file
......@@ -22,6 +22,12 @@ class DemandeMiseEnPaiementViewHelper extends AbstractHtmlElement implements Ser
private $servicesAPayer = [];
/**
*
* @var \Zend\Form\Form
*/
private $form;
private static $miseEnPaiementListeIdSequence = 1;
......@@ -47,6 +53,33 @@ class DemandeMiseEnPaiementViewHelper extends AbstractHtmlElement implements Ser
return $this->render();
}
/**
*
* @return \Zend\Form\Form
*/
public function getForm()
{
if (null === $this->form){
$this->form = new \Zend\Form\Form;
$this->form->add( new \Zend\Form\Element\Hidden('changements') );
$this->form->add(array(
'name' => 'submit',
'type' => 'Submit',
'attributes' => array(
'value' => 'Effectuer la demande de paiement',
'class' => 'btn btn-primary sauvegarde',
),
));
$this->form->setAttribute('action', $this->getView()->url(null, [], [], true));
}
return $this->form;
}
public function render()
{
$servicesAPayer = $this->getServicesAPayer();
......@@ -60,7 +93,14 @@ class DemandeMiseEnPaiementViewHelper extends AbstractHtmlElement implements Ser
foreach( $servicesAPayer as $serviceAPayer ){
$out .= $this->renderServiceAPayer($serviceAPayer);
}
$out .= '<div><button type="button" class="btn btn-primary sauvegarde">Effectuer la demande de paiement</button></div>';
$out .= '<div>';
$out .= $this->getView()->form()->openTag($this->getForm());
$out .= $this->getView()->formHidden($this->getForm()->get('changements'));
$out .= $this->getView()->formRow($this->getForm()->get('submit'));
$out .= $this->getView()->form()->closeTag();
$out .= '</div>';
$out .= '</div>';
$out .= '<script type="text/javascript">';
$out .= '$(function() { DemandeMiseEnPaiement.get("'.$this->getId().'").init(); });';
......@@ -175,17 +215,29 @@ class DemandeMiseEnPaiementViewHelper extends AbstractHtmlElement implements Ser
'heures-mep' => 0.0,
'heures-dmep' => 0.0,
'heures-non-dmep' => 0.0,
'mep-defaults' => [
'formule-resultat-service-id' => $serviceAPayer instanceof FormuleResultatService ? $serviceAPayer->getId() : null,
'formule-resultat-service-referentiel-id' => $serviceAPayer instanceof FormuleResultatServiceReferentiel ? $serviceAPayer->getId() : null,
'type-heures-id' => $typeHeures->getId(),
],
];
$mepBuffer = [];
$ccCount = 0;
$ccLast = null;
foreach( $serviceAPayer->getCentreCout() as $centreCout ){
if ($centreCout->typeHeuresMatches( $typeHeures )){
$params['centres-cout'][$centreCout->getId()] = [
$ccCount ++;
$ccLast = $centreCout->getId();
$params['centres-cout'][$ccLast] = [
'libelle' => (string)$centreCout,
'parent' => $centreCout->getParent() ? $centreCout->getParent()->getId() : null
];
}
}
if ($ccCount == 1){ // un seul choix possible, donc sél. par défaut!
$params['default-centre-cout'] = $ccLast;
}
$misesEnPaiement = $serviceAPayer->getMiseEnPaiement()->filter( function( MiseEnPaiement $miseEnPaiement ) use ($typeHeures) {
return $miseEnPaiement->getTypeHeures() === $typeHeures;
......@@ -267,6 +319,7 @@ class DemandeMiseEnPaiementViewHelper extends AbstractHtmlElement implements Ser
return $this;
}
/**
* @return \Application\Service\TypeHeures
*/
......
......@@ -16,4 +16,4 @@ $this->headTitle()->append($intervenant->getNomUsuel())->append($title) ?>
<h1 class="page-header"><?php echo $title; ?></h1>
<?php
echo $this->demandeMiseEnPaiement( $servicesAPayer );
\ No newline at end of file
echo $this->demandeMiseEnPaiement( $servicesAPayer )->render();
\ No newline at end of file
......@@ -84,8 +84,7 @@ function DemandeMiseEnPaiement( id )
alert('Enregistrement impossible');
return false;
}
alert(JSON.stringify( this.changes ));
this.element.find("form input[name='changements']").val( JSON.stringify( this.changes ) );
return true;
}
......@@ -111,8 +110,8 @@ function DemandeMiseEnPaiement( id )
that.demanderToutesHeuresEnPaiement();
});
this.element.find(".sauvegarde").on("click", function(){
that.sauvegarder();
this.element.find("form").on("submit", function(){
return that.sauvegarder();
});
}
}
......@@ -223,10 +222,11 @@ function MiseEnPaiementListe( demandeMiseEnPaiement, element )
'read-only' : false,
'validation' : null
};
this.demandeMiseEnPaiement.changeInsert( id, {
heures : this.params['demandes-mep'][id]['heures'],
'centre-cout-id': this.params['demandes-mep'][id]['centre-cout-id']
} );
var mepParams = this.params['mep-defaults'];
mepParams['heures'] = this.params['demandes-mep'][id]['heures'];
mepParams['centre-cout-id'] = this.params['demandes-mep'][id]['centre-cout-id'];
this.demandeMiseEnPaiement.changeInsert( id, mepParams );
}
this.element.append( this.renderMiseEnPaiement( id ) );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment