Просмотр исходного кода

added Orders widget with save ajax function

Piotr Labudda 10 лет назад
Родитель
Сommit
28feb56994

+ 210 - 34
SE/se-lib/Route/UrlAction/ProjektyProNetMediaZamZlec.php

@@ -2,6 +2,8 @@
 
 Lib::loadClass('RouteBase');
 Lib::loadClass('TypespecialVariable');
+Lib::loadClass('Request');
+Lib::loadClass('Response');
 
 class Route_UrlAction_ProjektyProNetMediaZamZlec extends RouteBase {// TODO: UrlActionBase @see Route_UrlAction
 
@@ -157,7 +159,8 @@ class Route_UrlAction_ProjektyProNetMediaZamZlec extends RouteBase {// TODO: Url
 		$widgetCompanies = V::get('widgetCompanies', array(), $data);
 ?>
 <div class="container" style="margin-top:2em">
-	<form action="" method="post" class="form-horizontal">
+	<form action="" method="get" class="form-horizontal">
+		<input type="hidden" name="_route" value="UrlAction_ProjektyProNetMediaZamZlec">
 		<div class="form-group">
 			<label for="id_project" class="col-sm-2 control-label">Projekt</label>
 			<div class="col-sm-4">
@@ -328,9 +331,39 @@ body { font-size:12px; line-height:1.3em }
 		exit;
 	}
 
+	public function saveAjaxAction() {
+		$body = Request::getRequestBody();
+		$json = json_decode($body, $assoc = true);
+
+		$res = new stdClass();
+		$res->type = 'success';
+		$res->msg = 'OK';
+		$res->orderPosList = array();
+		if (!empty($json['orderPosList'])) {
+			foreach ($json['orderPosList'] as $item) {
+				if ($item['id'] < 0) {// TODO: add new record
+					$item['id'] = -1 * $item['id'] + 10000;
+				} else {// TODO: update record
+
+				}
+				$res->orderPosList[] = $item;
+			}
+		}
+		Response::sendJsonExit($res);
+	}
+
 	public function zamowienieView($data) {
+		$orderPosList = array();
 		$ile_pozycji = V::get('ile_pozycji', 10, $data);
-		?>
+		for ($i = 1; $i <= $ile_pozycji; $i++) {
+			$posItem = array('id' => -1 * $i, 'name' => '', 'price' => '', 'quantity' => '', 'unit' => '');
+			$orderPosList[] = (object)$posItem;
+		}
+		// fetch from db - overwrite $orderPosList
+
+		$saveLink = Request::getPathUri() . 'index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task=saveAjax';
+
+?>
 <style type="text/css">
 body { font-size:12px; line-height:1.3em }
 #tbl-items td { padding:3px !important }
@@ -365,37 +398,9 @@ body { font-size:12px; line-height:1.3em }
 
 	<p>Zamówienie nr: <?php echo V::get('obcy_nr_sprawy', '.........................', $data);//zam./OSOBA/nr budowy/I/2016 ?></p>
 	<p style="font-weight:bold">Zamawiający niniejszym składa zamówienie na wskazanych poniżej warunkach zgodnie z ofertą Dostawcy z dnia <?php echo V::get('data_oferty', '..................', $data); ?>.</p>
-	<table id="tbl-items" style="width:100%; margin-top:2em" class="table table-bordered page-break-before">
-		<tr>
-			<th style="text-align:center">Lp.</th>
-			<th style="text-align:center">Wyszczególnienie</th>
-			<th style="text-align:center">J.M.</th>
-			<th style="text-align:center">Ilość</th>
-			<th style="text-align:center">Cena jednostkowa netto<br>[pln]</th>
-			<th style="text-align:center">Wartość brutto<br>[pln]</th>
-		</tr>
-		<?php for ($i = 0; $i < $ile_pozycji; $i++) : ?>
-		<tr class="page-break-before">
-			<td><?php echo $i + 1; ?>.</td>
-			<td></td>
-			<td></td>
-			<td></td>
-			<td></td>
-			<td></td>
-		</tr>
-		<?php endfor; ?>
-		<tr>
-			<td colspan="5" style="text-align:right; border-bottom:none"><b>RAZEM:</b></td>
-			<td rowspan="2"></td>
-		</tr>
-		<tr>
-			<td colspan="5" style="border-top:none"><b>Słownie:</b> <?php echo $suma_slownie; ?></td>
-		</tr>
-		<tr>
-			<td colspan="5"><b>UWAGI: NA FAKTURZE VAT NALEŻY UMIESZCZAĆ CZYTELNY NR ZAMÓWIENIA</b></td>
-			<td></td>
-		</tr>
-	</table>
+<div id="tbl-items" style="margin-top:2em">
+	<div id="widget-orders"></div>
+</div>
 
 	<h4 style="font-size:1.2em">WARUNKI REALIZACJI ZAMÓWIENIA:</h4>
 	<ol>
@@ -427,8 +432,179 @@ body { font-size:12px; line-height:1.3em }
 		</div>
 	</div>
 </div>
-		<?php
+
+<script src="stuff/vendors.js"></script>
+<script src="stuff/bundle.se_route_orders.js"></script>
+<script>
+var isPrint = false;// TODO: from request
+var _mode = '<?php echo (V::get('_print', '', $_REQUEST))? 'print' : 'view'; ?>';
+var _projectInfo = {id: 5130};
+var _notes = 'NA FAKTURZE VAT NALEŻY UMIESZCZAĆ CZYTELNY NR ZAMÓWIENIA';
+var _pos = <?php echo json_encode($orderPosList); ?>;
+var _saveLink = '<?php echo $saveLink; ?>';
+var _dbg = <?php echo (DBG::isActive())? 'true' : 'false'; ?>;
+
+jQuery("#widget-orders").p5_Orders({
+	year: '2016',
+	today: '2016-10-05',
+	projectInfo: _projectInfo,
+	pos: _pos,
+  notes: _notes,
+  mode: _mode,
+  save: function(data, callback) {
+    var orderPosList, idOrder;
+    try {
+      console.log('#widget-orders/Orders::save: data:', data);
+      if (!data || !('orderPosList' in data)) throw "Brak danych do zapisania";
+      orderPosList = data.orderPosList || [];
+			idOrder = data.idOrder || -1;
+
+			var req = superagent
+				.post(_saveLink)
+				.type('json') // header ĺapplication/x-www-form-urlencoded' requires type('form');
+				.send({orderPosList: orderPosList, idOrder: idOrder})
+				.set('Accept', 'application/json')
+				.end(function(err, res) {
+					if(_dbg)console.log('#widget-orders/Orders::save: res:', res, 'res.body:', res.body);
+					if (err || !res.ok) {
+						jQuery(document).trigger('DBG:notify', {type: 'warning', msg: 'Req error', err: err});
+					} else {
+						if ('application/json' !== res.type) {
+							jQuery(document).trigger('DBG:notify', {type: 'warning', msg: 'Wrong response type - required json. ' + res.text});
+							return;
+						}
+						jQuery(document).trigger('DBG:notify', {type: 'success', msg: 'res.status:' + res.status + '. res.body:' + JSON.stringify(res.body)});
+						callback(null, {message: 'Saved', type: 'success', orderPosList: res.body.orderPosList, idOrder: res.body.idOrder});
+					}
+					req = null;
+				});
+    } catch (e) {
+      callback(e);
+    }
+  },
+	dbg: true
+});
+</script>
+
+<?php
 		exit;
 	}
 
 }
+
+/*
+ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS`      ADD `ID_ORDER` int(11)     NOT NULL DEFAULT 0;
+ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS_HIST` ADD `ID_ORDER` varchar(11) NOT NULL DEFAULT 'N/S;';
+
+CREATE TABLE IF NOT EXISTS `CRM_LISTA_ZASOBOW_ORDERS` (
+	`ID` int(11) NOT NULL AUTO_INCREMENT,
+	`ID_COMPANIES` int(11) NOT NULL DEFAULT 0,
+	`ID_PROJECT` int(11) NOT NULL DEFAULT 0,
+	`ID_PROJECT_path` varchar(255) NOT NULL COMMENT 'wyliczalna dynamicznie sciezka sprawy',
+	`A_RECORD_CREATE_DATE` datetime  DEFAULT NULL,
+	`A_RECORD_CREATE_AUTHOR` varchar(100)  DEFAULT NULL,
+	`SYNC_SQIX_STATUS` varchar(100) NOT NULL DEFAULT '',
+	`A_RECORD_UPDATE_DATE` datetime  DEFAULT NULL,
+	`A_RECORD_UPDATE_AUTHOR` varchar(100) NOT NULL DEFAULT '',
+	`L_APPOITMENT_DATE` varchar(30) NOT NULL DEFAULT '',
+	`L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT '',
+	`L_APPOITMENT_PERIOD` varchar(4) NOT NULL DEFAULT '',
+	`L_APPOITMENT_INFO` varchar(255) NOT NULL DEFAULT '',
+	`L_APPOITMENT_TYPE` enum('','ARRANGED','TO_ARRANGE','CANCELLED','TO_CANCEL','RELATE','WAIT') DEFAULT NULL,
+	`A_STATUS` enum('WAITING','NORMAL','MONITOR','WARNING','OFF_SOFT','OFF_HARD','DELETED') DEFAULT NULL,
+	`A_STATUS_INFO` varchar(255) NOT NULL DEFAULT '',
+	`A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT '',
+	`A_CLASSIFIED` varchar(100) NOT NULL DEFAULT '',
+	`NR` varchar(255) NOT NULL DEFAULT '',
+	`COMPANY_NIP` varchar(32) NOT NULL DEFAULT '',
+	`COMPANY_NAME` varchar(255) NOT NULL DEFAULT '',
+	`COMPANY_ADDRESS` varchar(255) NOT NULL DEFAULT '',
+	`OFFER_DATE` date DEFAULT NULL,
+	`OFFER_NR` varchar(255) NOT NULL DEFAULT '',
+	`ORDER_TYPE` varchar(255) NOT NULL DEFAULT '',
+	`DELIVERY_DATE` date DEFAULT NULL,
+	`EXECUTION_START_DATE` date DEFAULT NULL,
+	`EXECUTION_END_DATE` date DEFAULT NULL,
+	`CASH_PENALTY` varchar(255) NOT NULL DEFAULT '',
+	`LOCATION` date DEFAULT NULL,
+	`NOTES` varchar(1000) NOT NULL DEFAULT '',
+	PRIMARY KEY (`ID`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin2;
+
+
+CREATE TABLE IF NOT EXISTS `CRM_LISTA_ZASOBOW_ORDERS_HIST` (
+	`ID` int(11) NOT NULL AUTO_INCREMENT,
+	`ID_USERS2` int(11) NOT NULL,
+	`ID_COMPANIES` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`ID_PROJECT` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`ID_PROJECT_path` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`A_RECORD_CREATE_DATE` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`A_RECORD_CREATE_AUTHOR` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`SYNC_SQIX_STATUS` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`A_RECORD_UPDATE_DATE` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`A_RECORD_UPDATE_AUTHOR` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`L_APPOITMENT_DATE` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`L_APPOITMENT_USER` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`L_APPOITMENT_PERIOD` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`L_APPOITMENT_INFO` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`L_APPOITMENT_TYPE` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`A_STATUS` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`A_STATUS_INFO` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`A_ADM_COMPANY` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`A_CLASSIFIED` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`NR` varchar(255) NOT NULL DEFAULT 'N/S;'
+	`COMPANY_NIP` varchar(32) NOT NULL DEFAULT 'N/S;'
+	`COMPANY_NAME` varchar(255) NOT NULL DEFAULT 'N/S;'
+	`COMPANY_ADDRESS` varchar(255) NOT NULL DEFAULT 'N/S;'
+	`OFFER_DATE` varchar(10) NOT NULL DEFAULT 'N/S;'
+	`OFFER_NR` varchar(255) NOT NULL DEFAULT 'N/S;'
+	`ORDER_TYPE` varchar(255) NOT NULL DEFAULT 'N/S;'
+	`DELIVERY_DATE` varchar(255) NOT NULL DEFAULT 'N/S;'
+	`EXECUTION_START_DATE` varchar(10) NOT NULL DEFAULT 'N/S;'
+	`EXECUTION_END_DATE` varchar(10) NOT NULL DEFAULT 'N/S;'
+	`CASH_PENALTY` varchar(255) NOT NULL DEFAULT 'N/S;'
+	`LOCATION` varchar(10) NOT NULL DEFAULT 'N/S;'
+	`NOTES` varchar(1000) NOT NULL DEFAULT 'N/S;',
+	PRIMARY KEY (`ID`),
+  KEY `ID_USERS2` (`ID_USERS2`)
+) ENGINE=MyISAM  DEFAULT CHARSET=latin2;
+
+CREATE VIEW `CRM_LISTA_ZASOBOW_ORDERS_summary_view` AS SELECT o.`ID`
+		, o.`ID_COMPANIES`
+		, o.`ID_PROJECT`
+		, o.`ID_PROJECT_path`
+		, o.`A_RECORD_CREATE_DATE`
+		, o.`A_RECORD_CREATE_AUTHOR`
+		, o.`SYNC_SQIX_STATUS`
+		, o.`A_RECORD_UPDATE_DATE`
+		, o.`A_RECORD_UPDATE_AUTHOR`
+		, o.`L_APPOITMENT_DATE`
+		, o.`L_APPOITMENT_USER`
+		, o.`L_APPOITMENT_PERIOD`
+		, o.`L_APPOITMENT_INFO`
+		, o.`L_APPOITMENT_TYPE`
+		, o.`A_STATUS`
+		, o.`A_STATUS_INFO`
+		, o.`A_ADM_COMPANY`
+		, o.`A_CLASSIFIED`
+		, o.`NR`
+		, o.`COMPANY_NIP`
+		, o.`COMPANY_NAME`
+		, o.`COMPANY_ADDRESS`
+		, o.`OFFER_DATE`
+		, o.`OFFER_NR`
+		, o.`ORDER_TYPE`
+		, o.`DELIVERY_DATE`
+		, o.`EXECUTION_START_DATE`
+		, o.`EXECUTION_END_DATE`
+		, o.`CASH_PENALTY`
+		, o.`LOCATION`
+		, o.`NOTES`
+		, SUM(NETTO_VALUE_TO_PAY) as SUM_POS
+		, COUNT(1) as COUNT_POS
+	FROM `CRM_LISTA_ZASOBOW_ORDERS` o
+		LEFT JOIN `CRM_LISTA_ZASOBOW_OFFERS` f on(f.ID_ORDER = o.ID)
+	GROUP BY o.`ID`
+;
+
+*/

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
SE/stuff/bundle.se_route_orders.js


Некоторые файлы не были показаны из-за большого количества измененных файлов