Overview
Comment:Allow to just subscribe a user to a service, without adding a payment
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | stable
Files: files | file ages | folders
SHA1: 481cf0b0009719a33a16c4f02739b2fcefe723d4
User & Date: bohwaz on 2020-12-08 17:08:31
Other Links: manifest | tags
Context
2020-12-08
17:47
Allow to do an opening balance from nothing check-in: 99bb6ee70f user: bohwaz tags: trunk
17:08
Allow to just subscribe a user to a service, without adding a payment check-in: 481cf0b000 user: bohwaz tags: trunk, stable
17:03
Allow unprotected SQL queries, but only if created by someone who has access to main config check-in: 820a6f443d user: bohwaz tags: trunk
Changes

Modified src/include/lib/Garradin/Entities/Services/Service_User.php from [2a1fc75349] to [c3706f63b1].

85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
...
137
138
139
140
141
142
143
144


145
146
147
148
149
150
151
152
		if (null === $this->_fee) {
			$this->_fee = Fees::get($this->id_fee);
		}

		return $this->_fee;
	}

	public function addPayment(int $user_id, ?array $source = null)
	{
		if (null === $source) {
			$source = $_POST;
		}

		$transaction = new Transaction;
		$transaction->id_creator = $user_id;
................................................................................

		if ($su->id_fee && $su->fee()->id_account && $su->id_user) {
			$su->expected_amount = $su->fee()->getAmountForUser($su->id_user);
		}

		$su->save();

		if ($su->id_fee && $su->fee()->id_account && !empty($source['amount'])) {


			$su->addPayment($user_id, $source);
		}

		$db->commit();

		return $su;
	}
}







|







 







|
>
>








85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
...
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
		if (null === $this->_fee) {
			$this->_fee = Fees::get($this->id_fee);
		}

		return $this->_fee;
	}

	public function addPayment(int $user_id, ?array $source = null): Transaction
	{
		if (null === $source) {
			$source = $_POST;
		}

		$transaction = new Transaction;
		$transaction->id_creator = $user_id;
................................................................................

		if ($su->id_fee && $su->fee()->id_account && $su->id_user) {
			$su->expected_amount = $su->fee()->getAmountForUser($su->id_user);
		}

		$su->save();

		if ($su->id_fee && $su->fee()->id_account
			&& !empty($source['amount'])
			&& !empty($source['create_payment'])) {
			$su->addPayment($user_id, $source);
		}

		$db->commit();

		return $su;
	}
}

Modified src/templates/services/save.tpl from [73e786595a] to [76ea220052].

84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
...
150
151
152
153
154
155
156




157
158
159
160
			{input type="date" name="expiry_date" default=$today label="Date d'expiration de l'inscription"}
			{input type="checkbox" name="paid" value="1" default="1" label="Marquer cette inscription comme payée"}
			<dd class="help">Décocher cette case pour pouvoir suivre les règlements de personnes qui payent en plusieurs fois. Il sera possible de cocher cette case lorsque le solde aura été réglé.</dd>
		</dl>
	</fieldset>

	<fieldset class="accounting">
		<legend>Enregistrement en comptabilité</legend>

		<dl>
			{input type="money" name="amount" label="Montant réglé par le membre" fake_required=1 help="En cas de règlement en plusieurs fois il sera possible d'ajouter des règlements via la page de suivi des activités de ce membre."}
			{input type="list" target="acc/charts/accounts/selector.php?targets=%s"|args:$account_targets name="account" label="Compte de règlement" required=1}
			{input type="text" name="reference" label="Numéro de pièce comptable" help="Numéro de facture, de note de frais, etc."}
			{input type="text" name="payment_reference" label="Référence de paiement" help="Numéro de chèque, numéro de transaction CB, etc."}
		</dl>
................................................................................
});

var selected = document.querySelector('input[name="id_service"]:checked, input[name="id_service"]');
selected.checked = true;

g.toggle('.accounting', false);
selectService(selected);




</script>
{/literal}

{include file="admin/_foot.tpl"}







|







 







>
>
>
>




84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
...
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
			{input type="date" name="expiry_date" default=$today label="Date d'expiration de l'inscription"}
			{input type="checkbox" name="paid" value="1" default="1" label="Marquer cette inscription comme payée"}
			<dd class="help">Décocher cette case pour pouvoir suivre les règlements de personnes qui payent en plusieurs fois. Il sera possible de cocher cette case lorsque le solde aura été réglé.</dd>
		</dl>
	</fieldset>

	<fieldset class="accounting">
		<legend>{input type="checkbox" name="create_payment" value=1 default=1 label="Enregistrer en comptabilité"}</legend>

		<dl>
			{input type="money" name="amount" label="Montant réglé par le membre" fake_required=1 help="En cas de règlement en plusieurs fois il sera possible d'ajouter des règlements via la page de suivi des activités de ce membre."}
			{input type="list" target="acc/charts/accounts/selector.php?targets=%s"|args:$account_targets name="account" label="Compte de règlement" required=1}
			{input type="text" name="reference" label="Numéro de pièce comptable" help="Numéro de facture, de note de frais, etc."}
			{input type="text" name="payment_reference" label="Référence de paiement" help="Numéro de chèque, numéro de transaction CB, etc."}
		</dl>
................................................................................
});

var selected = document.querySelector('input[name="id_service"]:checked, input[name="id_service"]');
selected.checked = true;

g.toggle('.accounting', false);
selectService(selected);

$('#f_create_payment_1').onchange = (e) => {
	g.toggle('.accounting dl', $('#f_create_payment_1').checked);
};
</script>
{/literal}

{include file="admin/_foot.tpl"}