Explorar o código

NEW Can fix the bank account of a payment if payment not conciliated

Laurent Destailleur %!s(int64=7) %!d(string=hai) anos
pai
achega
1300f7172f
Modificáronse 1 ficheiros con 29 adicións e 27 borrados
  1. 29 27
      htdocs/compta/bank/ligne.php

+ 29 - 27
htdocs/compta/bank/ligne.php

@@ -62,6 +62,7 @@ if (! $user->rights->banque->lire && ! $user->rights->banque->consolidate) acces
 /*
  * Actions
  */
+
 if ($cancel)
 {
     if ($backtopage)
@@ -108,10 +109,23 @@ if ($user->rights->banque->modifier && $action == "update")
 {
 	$error=0;
 
-	$ac = new Account($db);
-	$ac->fetch($id);
+	$acline = new AccountLine($db);
+	$acline->fetch($rowid);
+
+	$acsource = new Account($db);
+	$acsource->fetch($id);
+
+	$actarget = new Account($db);
+	if (GETPOST('accountid','int') > 0 && ! $acline->rappro && ! $acline->getVentilExportCompta())	// We ask to change bank account
+	{
+		$actarget->fetch(GETPOST('accountid','int'));
+	}
+	else
+	{
+		$actarget->fetch($id);
+	}
 
-	if ($ac->courant == Account::TYPE_CASH && $_POST['value'] != 'LIQ')
+	if ($actarget->courant == Account::TYPE_CASH && GETPOST('value','alpha') != 'LIQ')
 	{
 		setEventMessages($langs->trans("ErrorCashAccountAcceptsOnlyCashMoney"), null, 'errors');
 		$error++;
@@ -119,16 +133,6 @@ if ($user->rights->banque->modifier && $action == "update")
 
 	if (! $error)
 	{
-		// Avant de modifier la date ou le montant, on controle si ce n'est pas encore rapproche
-		$conciliated=0;
-		$sql = "SELECT b.rappro FROM ".MAIN_DB_PREFIX."bank as b WHERE rowid=".$rowid;
-		$result = $db->query($sql);
-		if ($result)
-		{
-			$objp = $db->fetch_object($result);
-			$conciliated=$objp->rappro;
-		}
-
 		$db->begin();
 
 		$amount = price2num($_POST['amount']);
@@ -142,15 +146,15 @@ if ($user->rights->banque->modifier && $action == "update")
 		if (isset($_POST['banque']))     $sql.=" banque='".$db->escape($_POST["banque"])."',";
 		if (isset($_POST['emetteur']))   $sql.=" emetteur='".$db->escape($_POST["emetteur"])."',";
 		// Blocked when conciliated
-		if (! $conciliated)
+		if (! $acline->rappro)
 		{
 			if (isset($_POST['label']))      $sql.=" label='".$db->escape($_POST["label"])."',";
 			if (isset($_POST['amount']))     $sql.=" amount='".$amount."',";
 			if (isset($_POST['dateomonth'])) $sql.=" dateo = '".$db->idate($dateop)."',";
 			if (isset($_POST['datevmonth'])) $sql.=" datev = '".$db->idate($dateval)."',";
 		}
-		$sql.= " fk_account = ".$id;
-		$sql.= " WHERE rowid = ".$rowid;
+		$sql.= " fk_account = ".$actarget->id;
+		$sql.= " WHERE rowid = ".$acline->id;
 
 		$result = $db->query($sql);
 		if (! $result)
@@ -282,7 +286,7 @@ if ($result)
         $account = $acct->id;
 
         $bankline = new AccountLine($db);
-        $bankline->fetch($rowid,$ref);
+        $bankline->fetch($rowid, $ref);
 
         $links=$acct->get_url($rowid);
         $bankline->load_previous_next_ref('','rowid');
@@ -311,21 +315,19 @@ if ($result)
         print '<div class="underbanner clearboth"></div>';
         print '<table class="border" width="100%">';
 
-        // Ref
-        /*
-        print '<tr><td class="titlefield">'.$langs->trans("Ref")."</td>";
-        print '<td>';
-        print $form->showrefnav($bankline, 'rowid', $linkback, 1, 'rowid', 'rowid');
-        print '</td>';
-        print '</tr>';
-        */
-
         $i++;
 
         // Bank account
         print '<tr><td class="titlefield">'.$langs->trans("Account").'</td>';
         print '<td>';
-        print $acct->getNomUrl(1,'transactions','reflabel');
+        if (! $objp->rappro && ! $bankline->getVentilExportCompta())
+        {
+        	print $form->select_comptes($acct->id, 'accountid', 0, '', 0);
+        }
+        else
+        {
+        	print $acct->getNomUrl(1,'transactions','reflabel');
+        }
         print '</td>';
         print '</tr>';