Explorar o código

working add cost ajax in Budget for pro-netmedia

Piotr Labudda %!s(int64=9) %!d(string=hai) anos
pai
achega
65ae191a2b
Modificáronse 1 ficheiros con 66 adicións e 8 borrados
  1. 66 8
      SE/se-lib/Route/UrlAction/ProjektyProNetMediaBudget.php

+ 66 - 8
SE/se-lib/Route/UrlAction/ProjektyProNetMediaBudget.php

@@ -356,7 +356,7 @@ dostęp dla zarządu i os. odp.	kwota końcowa
 <link rel="stylesheet" href="static/sweetalert2.min.css" type="text/css">
 <script src="static/sweetalert2.min.js"></script>
 <script>
-var _saveLink = '<?php echo Request::getPathUri(); ?>index.php?_route=UrlAction_ProjektyProNetMediaBudget&_task=addCostAjax';
+var _saveLink = '<?php echo Request::getPathUri(); ?>index.php?_route=UrlAction_ProjektyProNetMediaBudget&_task=addCostAjax&ID_PROJECT=<?php echo $data['id_project']; ?>';
 var _dbg = <?php echo V::get('DBG', 0, $_REQUEST, 'int'); ?>;
 
 function p5Utils_parseFloatOrZero(strToParse) {
@@ -372,7 +372,8 @@ function p5Utils_parseFloatOrZero(strToParse) {
 function budget_addCost(n, type) {
 	var labels = {}
 	labels['ANEKS'] = "Aneks"
-	labels['KARY'] = "kary, potrącenia "
+	labels['KARY'] = "kary, potrącenia"
+	// TODO: add labels ...
 	var labelType = (type in labels) ? labels[type] : type
 
 	swal({
@@ -424,8 +425,8 @@ function budget_addCost(n, type) {
 	  swal({
 	    type: 'success',
 			animation: false,
-	    title: 'Koszt dodano!',
-	    html: 'Add cost: ' + responseBody.price + ' for type('+responseBody.type+') ' + labelType + '.'
+	    title: responseBody.msg || 'Koszt dodano',
+	    html: 'Rodzaj kosztu: ' + (labelType || responseBody.type) + ', kwota: ' + responseBody.price + '.'
 	  })
 	}).catch(function(e) {
 		// eg. hit Cancel
@@ -442,17 +443,31 @@ function budget_addCost(n, type) {
 	public function addCostAjaxAction() {
 		$response = array();
 		$response['type'] = 'danger';
-		$response['msg'] = 'TODO';
+		$response['msg'] = 'Unknown error';
 		try {
+			$idProject = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
+			if (!$idProject) throw new Exception("Missing id project");
 			$json = Request::getRequestBody();
 			if (empty($json)) throw new Exception("Error Processing Request - json expected");
 			$json = @json_decode($json, $assoc = true);
 			if (null == $json && 0 !== json_last_error()) throw new Exception("Error Processing Request - Parse json error: " . json_last_error());
 			$price = V::get('price', '', $json);
 			$type = V::get('type', '', $json);
-			if (empty($json['price'])) throw new Exception("Missing price");
-			if (empty($json['type'])) throw new Exception("Missing type");
-throw new Exception("Missing price X");
+			if (empty($price)) throw new Exception("Missing price");
+			if (empty($type)) throw new Exception("Missing type");
+			$response['price'] = $price;
+			$response['type'] = $type;
+
+			$cost = array();
+			$cost['COST_VALUE'] = $price;
+			$cost['COST_TYPE'] = $type;
+			$cost['ID_PROJECT'] = $idProject;
+			// $cost['NOTES'] = $notes;// TODO: add notes to form?
+			$idItem = DB::getDB()->ADD_NEW_OBJ('PROJECT_COSTS', (object)$cost);
+			if ($idItem <= 0) throw new Exception("Wystąpiły błędy podczas tworzenia nowego rekordu w bazie danych");
+			$response['type'] = 'success';
+			$response['id'] = $idItem;
+			$response['msg'] = "Koszt został dodany";
 		} catch (Exception $e) {
 			$response['type'] = 'danger';
 			$response['msg'] = $e->getMessage();
@@ -461,3 +476,46 @@ throw new Exception("Missing price X");
 	}
 
 }
+
+/*
+-- `PROJECT_COSTS`.`COST_VALUE` max 1000000123456,78
+
+CREATE TABLE IF NOT EXISTS `PROJECT_COSTS` (
+	`ID` int(11) NOT NULL AUTO_INCREMENT,
+	`ID_PROJECT` int(11) NOT NULL DEFAULT 0,
+	`A_RECORD_CREATE_DATE` datetime  DEFAULT NULL,
+	`A_RECORD_CREATE_AUTHOR` varchar(20)  DEFAULT NULL,
+	`SYNC_SQIX_STATUS` varchar(100) NOT NULL DEFAULT '',
+	`A_RECORD_UPDATE_DATE` datetime  DEFAULT NULL,
+	`A_RECORD_UPDATE_AUTHOR` varchar(20) NOT NULL DEFAULT '',
+	`A_STATUS` enum('WAITING','NORMAL','MONITOR','WARNING','OFF_SOFT','OFF_HARD','DELETED') DEFAULT NULL,
+	`A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT '',
+	`A_CLASSIFIED` varchar(100) NOT NULL DEFAULT '',
+	`COST_VALUE` decimal(16,2) NOT NULL DEFAULT '',
+	`COST_TYPE` varchar(32) NOT NULL DEFAULT '',
+	`NOTES` varchar(255) NOT NULL DEFAULT '',
+	PRIMARY KEY (`ID`)
+	KEY `ID_PROJECT` (`ID_PROJECT`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin2;
+
+CREATE TABLE IF NOT EXISTS `PROJECT_COSTS_HIST` (
+	`ID` int(11) NOT NULL AUTO_INCREMENT,
+	`ID_USERS2` int(11) NOT NULL,
+	`ID_PROJECT` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`A_RECORD_CREATE_DATE` varchar(255) NOT NULL DEFAULT 'N/S;',
+	`A_RECORD_CREATE_AUTHOR` varchar(20) 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(20) 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;',
+	`COST_VALUE` varchar(16) NOT NULL DEFAULT 'N/S;',
+	`COST_TYPE` varchar(32) NOT NULL DEFAULT 'N/S;',
+	`NOTES` varchar(255) NOT NULL DEFAULT 'N/S;',
+	PRIMARY KEY (`ID`),
+  KEY `ID_USERS2` (`ID_USERS2`)
+) ENGINE=MyISAM  DEFAULT CHARSET=latin2;
+
+*/