Explorar o código

added approve step in Zam for pro-netmedia

Piotr Labudda %!s(int64=9) %!d(string=hai) anos
pai
achega
4622e218a2

+ 4 - 2
SE/se-lib/Route/UrlAction/ProjektyProNetMediaApproveZam.php

@@ -36,12 +36,13 @@ class Route_UrlAction_ProjektyProNetMediaApproveZam extends RouteBase {// TODO:
 			$data = $this->setProps($data);
 			$sqlObj = array();
 			$sqlObj['ID'] = $data['id_order'];
-			$sqlObj['APPROVE_STATUS'] = 'ZATWIERDZONE';
+			$sqlObj['APPROVE_STATUS'] = 'OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA';
 			$sqlObj['APPROVED_BY'] = User::getFullName();
 			$affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
 			echo '<div class="container">';
 			if ($affected >= 0) {
-				SE_Layout::alert('success', "Zmieniono status zamówienia na ZATWIERDZONE");
+				SE_Layout::alert('success', "Przekazano do ostatecznego zatwierdzenia");
+				// TODO: show link to final approve if has access?
 			} else {
 				SE_Layout::alert('danger', "Wystąpiły błędy podczas zmieniania statusu zamówienia");
 			}
@@ -127,6 +128,7 @@ class Route_UrlAction_ProjektyProNetMediaApproveZam extends RouteBase {// TODO:
 	<?php echo SE_Layout::alert('info', "Suma netto zamówienia: <b>{$data['zamowienie_suma']}</b>"); ?>
 
 	<form style="text-align:center">
+		<h3>Przekazanie do ostatecznego zatwierdzenia</h3>
 		<input type="hidden" name="_route" value="UrlAction_ProjektyProNetMediaApproveZam">
 		<input type="hidden" name="_task" value="">
 		<input type="hidden" name="id_order" value="<?php echo $data['id_order']; ?>">

+ 153 - 0
SE/se-lib/Route/UrlAction/ProjektyProNetMediaFinalApproveZam.php

@@ -0,0 +1,153 @@
+<?php
+
+Lib::loadClass('RouteBase');
+Lib::loadClass('TypespecialVariable');
+Lib::loadClass('Request');
+Lib::loadClass('Response');
+
+class Route_UrlAction_ProjektyProNetMediaFinalApproveZam extends RouteBase {// TODO: UrlActionBase @see Route_UrlAction
+
+	public function handleAuth() {
+		if (!User::logged()) {
+			User::authByRequest();
+		}
+	}
+
+	public function defaultAction() {
+		SE_Layout::gora();
+		if (1 != V::get('_print', '', $_GET)) SE_Layout::menu();
+		try {
+			$data = array();
+			$data['id_order'] = V::get('ID_ORDER', 0, $_REQUEST, 'int');
+			if (!$data['id_order']) throw new Exception("Error: Brak nr zamówienia!");
+			$data = $this->setProps($data);
+			$this->finalApproveFormView($data);
+		} catch (Exception $e) {
+			SE_Layout::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+		}
+		SE_Layout::dol();
+	}
+
+	public function finalApproveOrderAction() {
+		SE_Layout::gora();
+		try {
+			$data = array();
+			$data['id_order'] = V::get('id_order', 0, $_REQUEST, 'int');
+			$data = $this->setProps($data);
+			$sqlObj = array();
+			$sqlObj['ID'] = $data['id_order'];
+			$sqlObj['APPROVE_STATUS'] = 'ZATWIERDZONE';
+			$sqlObj['APPROVED_BY'] = User::getFullName();
+			$affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
+			echo '<div class="container">';
+			if ($affected >= 0) {
+				SE_Layout::alert('success', "Zmieniono status zamówienia na ZATWIERDZONE");
+			} else {
+				SE_Layout::alert('danger', "Wystąpiły błędy podczas zmieniania statusu zamówienia");
+			}
+			?>
+			<div style="text-align:center">
+				<a href="index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT=<?php echo $data['id_project']; ?>" class="btn btn-primary">Wróć</a>
+			</div>
+			<?php
+			echo '</div>';
+		} catch (Exception $e) {
+			SE_Layout::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+		}
+		SE_Layout::dol();
+	}
+
+	public function rejectOrderAction() {
+		SE_Layout::gora();
+		try {
+			$data = array();
+			$data['id_order'] = V::get('id_order', 0, $_REQUEST, 'int');
+			$data = $this->setProps($data);
+			$sqlObj = array();
+			$sqlObj['ID'] = $data['id_order'];
+			$sqlObj['APPROVE_STATUS'] = 'ODRZUCONE';
+			$sqlObj['APPROVED_BY'] = User::getFullName();
+			$affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
+			echo '<div class="container">';
+			if ($affected >= 0) {
+				SE_Layout::alert('success', "Zmieniono status zamówienia na ODRZUCONE");
+			} else {
+				SE_Layout::alert('danger', "Wystąpiły błędy podczas zmieniania statusu zamówienia");
+			}
+			?>
+			<div style="text-align:center">
+				<a href="index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT=<?php echo $data['id_project']; ?>" class="btn btn-primary">Wróć</a>
+			</div>
+			<?php
+			echo '</div>';
+		} catch (Exception $e) {
+			SE_Layout::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+		}
+		SE_Layout::dol();
+	}
+
+	public function setProps($data) {
+		$idOrder = V::get('id_order', 0, $data, 'int');
+		if (!$idOrder) throw new Exception("Error: Brak nr zamówienia!");
+		$data['id_order'] = $idOrder;
+		$data['zamowienie_label'] = '';
+
+		$data['orderRaw'] = DB::getPDO()->fetchAll("
+			select r.ID
+					, r.ORDER_LABEL
+					, r.ID_PROJECT
+					, sum(o.OFFER_PRICE_PER_UNIT * o.OFFER_QUANTITY) as SUM_NETTO
+					, p.M_DIST_DESC
+			from CRM_LISTA_ZASOBOW_ORDERS r
+				join IN7_MK_BAZA_DYSTRYBUCJI p on(p.ID = r.ID_PROJECT)
+				left join CRM_LISTA_ZASOBOW_OFFERS o on(
+					o.ID_ORDER = r.ID
+					and (o.A_STATUS is null or o.A_STATUS not in('DELETED'))
+				)
+			where (r.A_STATUS is null or r.A_STATUS not in('DELETED'))
+				and r.ID = {$idOrder}
+		");
+		if (empty($data['orderRaw'])) throw new Exception("Error: Brak danych dla zamówienia {$idOrder}!");
+		$data['orderRaw'] = $data['orderRaw'][0];
+		$data['zamowienie_label'] = $data['orderRaw']['ORDER_LABEL'];
+		$data['zamowienie_suma'] = number_format($data['orderRaw']['SUM_NETTO'], 2, ',', ' ');
+		$data['id_project'] = $data['orderRaw']['ID_PROJECT'];
+		$data['project_label'] = $data['orderRaw']['M_DIST_DESC'];
+
+		return $data;
+	}
+
+	public function finalApproveFormView($data) {
+		?>
+<div class="container">
+	<h1>Zamówienie: <?php echo $data['zamowienie_label']; ?>
+		<br><small>Dotyczy projektu: <?php echo $data['project_label']; ?></small>
+	</h1>
+
+	<?php echo SE_Layout::alert('info', "Suma netto zamówienia: <b>{$data['zamowienie_suma']}</b>"); ?>
+
+	<form style="text-align:center">
+		<input type="hidden" name="_route" value="UrlAction_ProjektyProNetMediaFinalApproveZam">
+		<input type="hidden" name="_task" value="">
+		<input type="hidden" name="id_order" value="<?php echo $data['id_order']; ?>">
+		<button onClick="return finalApproveOrder(this);" class="btn btn-lg btn-primary">Zatwierdzam</button>
+		<button onClick="return rejectOrder(this);" class="btn btn-lg btn-danger" style="margin-left:30px">Nie zatwierdzam</button>
+	</form>
+
+	<hr>
+	<?php Router::getRoute('UrlAction_ProjektyProNetMediaZamZlec')->previewOrder($data['id_order']);?>
+</div>
+<script>
+function finalApproveOrder(fld) {
+	var frm = fld.form;
+	frm['_task'].value='finalApproveOrder';
+}
+function rejectOrder(fld) {
+	var frm = fld.form;
+	frm['_task'].value='rejectOrder';
+}
+</script>
+		<?php
+	}
+
+}

+ 9 - 1
SE/se-lib/Route/UrlAction/ProjektyProNetMediaZamZlec.php

@@ -393,6 +393,13 @@ class Route_UrlAction_ProjektyProNetMediaZamZlec extends RouteBase {// TODO: Url
 			else if ('OCZEKUJE_ZATWIERDZENIA' == $order['APPROVE_STATUS']) {
 				foreach ($urlFunctions as $fun) {
 					if ('ProjektyProNetMediaApproveZam' == $fun['name']) {
+						$changeState['OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA'] = $fun;
+					}
+				}
+			}
+			else if ('OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA' == $order['APPROVE_STATUS']) {
+				foreach ($urlFunctions as $fun) {
+					if ('ProjektyProNetMediaFinalApproveZam' == $fun['name']) {
 						$changeState['ZATWIERDZONE'] = $fun;
 					}
 				}
@@ -1237,7 +1244,8 @@ ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `PAYMENT_TERM_DAYS_FV` int(11) NOT NU
 -- ADD payment method
 ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `PAYMENT_METHOD` VARCHAR(32) NOT NULL DEFAULT 'N/S;';
 ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `PAYMENT_METHOD` VARCHAR(32) NOT NULL DEFAULT '';
-
+-- 2016-07-13 - ADD 'OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA' to `APPROVE_STATUS`
+ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` CHANGE `APPROVE_STATUS` `APPROVE_STATUS` ENUM('WERSJA_ROBOCZA','OCZEKUJE_ZATWIERDZENIA','ZATWIERDZONE','ODRZUCONE','OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA') CHARACTER SET latin2 COLLATE latin2_general_ci NOT NULL DEFAULT 'WERSJA_ROBOCZA';
 
 1213		12		14/AS/13/SP/2014/IV/2016		14 / AS / 13/SP/2014 /   IV / 2016
 1292		30		34/JL/16/SP/2015/V/2016			34 / JL / 16/SP/2015 /    V / 2016