|
|
@@ -426,7 +426,8 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
<script src="static/sweetalert2.min.js"></script>
|
|
|
<script>
|
|
|
(function(){
|
|
|
- var _saveLink = '<?php echo Request::getPathUri(); ?>index.php?_route=UrlAction_ProjektyProNetMediaBudget&_task=addCostAjax&ID_PROJECT=<?php echo $data['id_project']; ?>';
|
|
|
+ var _saveAddCostLink = '<?php echo Request::getPathUri(); ?>index.php?_route=UrlAction_ProjektyProNetMediaBudget&_task=addCostAjax&ID_PROJECT=<?php echo $data['id_project']; ?>';
|
|
|
+ var _saveEditCostLink = '<?php echo Request::getPathUri(); ?>index.php?_route=UrlAction_ProjektyProNetMediaBudget&_task=editCostAjax&ID_PROJECT=<?php echo $data['id_project']; ?>';
|
|
|
var _dbg = <?php echo V::get('DBG', 0, $_REQUEST, 'int'); ?>;
|
|
|
var _initCosts = <?php echo json_encode($costs); ?>;
|
|
|
var _initBudgetValue = <?php echo ($data['budget']) ? $data['budget'] : 0; ?>;
|
|
|
@@ -556,42 +557,63 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_aneks']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_aneks']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_aneks']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'ANEKS', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_aneks'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_aneks']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_aneks'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_kary']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_kary']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_kary']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'KARY', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_kary'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_kary']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_kary'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_osprzet']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_osprzet']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_osprzet']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'OSPRZET', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_osprzet'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_osprzet']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_osprzet'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_materialy']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_materialy']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_materialy']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'MATERIALY', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_materialy'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_materialy']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_materialy'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_koszt_pracownikow']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_koszt_pracownikow']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_koszt_pracownikow']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'PRACOWNICY', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_koszt_pracownikow'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_koszt_pracownikow']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_koszt_pracownikow'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_koszt_podwykonawcow']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_koszt_podwykonawcow']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_koszt_podwykonawcow']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'PODWYKONAWCY', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_koszt_podwykonawcow'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_koszt_podwykonawcow']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_koszt_podwykonawcow'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_koszt_reprezentacyjny']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_koszt_reprezentacyjny']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_koszt_reprezentacyjny']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'REPREZENTACYJNE', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_koszt_reprezentacyjny'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_koszt_reprezentacyjny']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_koszt_reprezentacyjny'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
@@ -665,48 +687,72 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_zaliczki']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_zaliczki']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_zaliczki']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'ZALICZKA_KWOTA', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_zaliczki'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_zaliczki']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_zaliczki'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_rozliczone_zaliczki']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_rozliczone_zaliczki']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_rozliczone_zaliczki']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'ZALICZKA_KOSZTY_DZIENNE', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_rozliczone_zaliczki'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_rozliczone_zaliczki']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_rozliczone_zaliczki'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_zgoda_sluzebnosci']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_zgoda_sluzebnosci']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_zgoda_sluzebnosci']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'ZGODY_SLUZEBNOSCI', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_zgoda_sluzebnosci'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_zgoda_sluzebnosci']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_zgoda_sluzebnosci'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_zgoda_odszkodowania']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_zgoda_odszkodowania']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_zgoda_odszkodowania']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'ZGODY_ODSZKODOWANIA', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_zgoda_odszkodowania'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_zgoda_odszkodowania']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_zgoda_odszkodowania'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_sprzet_wlasny']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_sprzet_wlasny']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_sprzet_wlasny']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'SPRZET_WLASNY', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_sprzet_wlasny'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_sprzet_wlasny']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_sprzet_wlasny'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_sprzet_wynajety']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_sprzet_wynajety']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_sprzet_wynajety']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'SPRZET_WYNAJETY', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_sprzet_wynajety'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_sprzet_wynajety']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_sprzet_wynajety'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_organizacja_ruchu']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_organizacja_ruchu']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_organizacja_ruchu']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'ORGANIZACJA_RUCHU', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_organizacja_ruchu'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_organizacja_ruchu']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_organizacja_ruchu'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
|
|
|
// <td style="color:<?php echo ($cost['budget_zajetosc_pasa']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['budget_zajetosc_pasa']); ?></td>
|
|
|
tdNode = document.createElement('td')
|
|
|
+ if (cost['budget_zajetosc_pasa']) {
|
|
|
+ tdNode.setAttribute('onClick', "return p5UI__Clickable(this, 'p5:Budget:editCost', {type: 'ZAJETOSC_PASA', 'id': " + cost['costRaw']['ID'] + ", 'price': " + cost['budget_zajetosc_pasa'] + "})");
|
|
|
+ }
|
|
|
p5Utils__nodeStyle(tdNode, {whiteSpace: 'nowrap', color: ((cost['budget_zajetosc_pasa']) ? 'black' : 'silver')})
|
|
|
tdNode.appendChild(document.createTextNode(p5Utils__pricePrintPL(cost['budget_zajetosc_pasa'], '0,00')))
|
|
|
costNode.appendChild(tdNode)
|
|
|
@@ -723,6 +769,98 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
if (!payload || !payload.props || !payload.props.type) return false;
|
|
|
budget_addCost(n, payload.props.type);
|
|
|
});
|
|
|
+ jQuery(document).on('p5:Budget:editCost:click', function(e, n, payload) {
|
|
|
+ if (!payload || !payload.props || !payload.props.type || !payload.props.id) return false;
|
|
|
+ budget_editCost(n, payload.props.id, payload.props.type, payload.props.price);
|
|
|
+ });
|
|
|
+
|
|
|
+ function budget_editCost(n, id, type, costPrice) {
|
|
|
+ var labels = {}
|
|
|
+ labels['ANEKS'] = "Aneks"
|
|
|
+ labels['KARY'] = "Kary, potrącenia"
|
|
|
+ labels['OSPRZET'] = "Osprzęt"
|
|
|
+ labels['MATERIALY'] = "Materiały"
|
|
|
+ labels['PRACOWNICY'] = "Koszty pracowników"
|
|
|
+ labels['PODWYKONAWCY'] = "Koszt firmy podwykonawczej"
|
|
|
+ labels['REPREZENTACYJNE'] = "Koszty reprezentacyjne"
|
|
|
+ labels['ZALICZKA_KWOTA'] = "Zaliczka kwota"
|
|
|
+ labels['ZALICZKA_KOSZTY_DZIENNE'] = "Rozliczanie zaliczki koszty dzienne"
|
|
|
+ labels['ZGODY_SLUZEBNOSCI'] = "Służebności"
|
|
|
+ labels['ZGODY_ODSZKODOWANIA'] = "Odszkodowania"
|
|
|
+ labels['SPRZET_WLASNY'] = "Sprzęt własny"
|
|
|
+ labels['SPRZET_WYNAJETY'] = "Sprzęt wynajęty"
|
|
|
+ labels['ORGANIZACJA_RUCHU'] = "Organizacja ruchu"
|
|
|
+ labels['ZAJETOSC_PASA'] = "Zajętość pasa drogowego"
|
|
|
+ var labelText = (type in labels) ? labels[type] : type
|
|
|
+ var desc = {}
|
|
|
+ desc['ANEKS'] = "<br>Proszę wprowadzić róznicę pomiędzy aktualnym <abbr title=\"kwotą na umowie lub poprzednim aneksie\">budżetem</abbr>, a kwotą na aneksie"
|
|
|
+ desc['ANEKS'] += ", np.:"
|
|
|
+ desc['ANEKS'] += "<br><small>- kwota na umowie: 100,000"
|
|
|
+ desc['ANEKS'] += "<br>- kwota na aneksie: 150,000"
|
|
|
+ desc['ANEKS'] += "<br>wprowadzamy: <code>-50,000</code></small>"
|
|
|
+ var descText = (type in desc) ? desc[type] : ''
|
|
|
+
|
|
|
+ swal({
|
|
|
+ title: 'Kwota netto dla kosztu:',
|
|
|
+ html: '"' + labelText + '"' + descText,
|
|
|
+ animation: false,
|
|
|
+ input: 'text',
|
|
|
+ inputValue: costPrice,
|
|
|
+ inputPlaceholder: '0,00',
|
|
|
+ // inputAttributes: {'step': '0.01'},
|
|
|
+ showCancelButton: true,
|
|
|
+ confirmButtonText: 'Edytuj koszt',
|
|
|
+ showLoaderOnConfirm: true,
|
|
|
+ preConfirm: function(price) {
|
|
|
+ return new Promise(function(resolve, reject) {
|
|
|
+ price = p5Utils__parseFloatOrZero(price)
|
|
|
+ if ('ANEKS' != type && price <= 0) {
|
|
|
+ reject('Kwota musi być większa od zera.')
|
|
|
+ } else if ('ANEKS' == type && price == 0) {
|
|
|
+ reject('Kwota musi być inna niż zero.')
|
|
|
+ } else {
|
|
|
+ superagent
|
|
|
+ .post(_saveEditCostLink)
|
|
|
+ .type('json') // header ĺapplication/x-www-form-urlencoded' requires type('form');
|
|
|
+ .send({
|
|
|
+ id: id,
|
|
|
+ type: type,
|
|
|
+ price: price
|
|
|
+ })
|
|
|
+ .set('Accept', 'application/json')
|
|
|
+ .end(function(err, res) {
|
|
|
+ if(_dbg)console.log('#widget-budget/editCost: res:', res, 'res.body:', res.body)
|
|
|
+ if (err || !res.ok) {
|
|
|
+ // jQuery(document).trigger('DBG:notify', {type: 'warning', msg: 'Req error', err: err});
|
|
|
+ reject("Request error")
|
|
|
+ } else {
|
|
|
+ if ('application/json' !== res.type) {
|
|
|
+ reject("Wrong response type - required json")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!res.body.id || res.body.id <= 0) reject(res.body.msg || "Wystąpiły błędy podczas aktualizacji kosztu")
|
|
|
+ resolve(res.body)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ allowOutsideClick: false
|
|
|
+ }).then(function(responseBody) {
|
|
|
+ swal({
|
|
|
+ type: 'success',
|
|
|
+ animation: false,
|
|
|
+ title: responseBody.msg || 'Koszt zaktualizowano',
|
|
|
+ html: 'Rodzaj kosztu: ' + (labelText || responseBody.type) + '<br>Kwota: ' + p5Utils__pricePrintPL(responseBody.price, '0') + '.'
|
|
|
+ })
|
|
|
+ if (responseBody.update_data) {
|
|
|
+ // TODO: budget__renderData(responseBody.update_data)
|
|
|
+ budget__renderCosts(responseBody.update_data['costs']);
|
|
|
+ }
|
|
|
+ }).catch(function(e) {
|
|
|
+ // eg. hit Cancel
|
|
|
+ })
|
|
|
+ }
|
|
|
|
|
|
function budget_addCost(n, type) {
|
|
|
var labels = {}
|
|
|
@@ -766,10 +904,10 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
if ('ANEKS' != type && price <= 0) {
|
|
|
reject('Kwota musi być większa od zera.')
|
|
|
} else if ('ANEKS' == type && price == 0) {
|
|
|
- reject('Kwota musi być inna niż zera.')
|
|
|
+ reject('Kwota musi być inna niż zero.')
|
|
|
} else {
|
|
|
superagent
|
|
|
- .post(_saveLink)
|
|
|
+ .post(_saveAddCostLink)
|
|
|
.type('json') // header ĺapplication/x-www-form-urlencoded' requires type('form');
|
|
|
.send({
|
|
|
type: type,
|
|
|
@@ -829,7 +967,7 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
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);
|
|
|
+ $price = V::get('price', '', $json, 'price');
|
|
|
$type = V::get('type', '', $json);
|
|
|
if (empty($price)) throw new Exception("Missing price");
|
|
|
if (empty($type)) throw new Exception("Missing type");
|
|
|
@@ -860,6 +998,49 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
Response::sendJsonExit($response);
|
|
|
}
|
|
|
|
|
|
+ public function editCostAjaxAction() {
|
|
|
+ $response = array();
|
|
|
+ $response['type'] = 'danger';
|
|
|
+ $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());
|
|
|
+ $id = V::get('id', '', $json);
|
|
|
+ $price = V::get('price', '', $json, 'price');
|
|
|
+ $type = V::get('type', '', $json);
|
|
|
+ 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['ID'] = $id;
|
|
|
+ $cost['ID_PROJECT'] = $idProject;
|
|
|
+ $cost['COST_VALUE'] = $price;
|
|
|
+ $cost['COST_TYPE'] = $type;
|
|
|
+ // $cost['NOTES'] = $notes;// TODO: add notes to form?
|
|
|
+ $affected = DB::getDB()->UPDATE_OBJ('PROJECT_COSTS', (object)$cost);
|
|
|
+ if ($affected <= 0) throw new Exception("Wystąpiły błędy podczas aktualizacji rekordu w bazie danych");
|
|
|
+ $response['id'] = $id;
|
|
|
+ $response['type'] = 'success';
|
|
|
+ $response['msg'] = "Koszt został zaktualizowany";
|
|
|
+ {// update costs
|
|
|
+ $data = array();
|
|
|
+ $data['id_project'] = $idProject;
|
|
|
+ $data = $this->setProps($data);
|
|
|
+ $response['update_data'] = $data;
|
|
|
+ }
|
|
|
+ } catch (Exception $e) {
|
|
|
+ $response['type'] = 'danger';
|
|
|
+ $response['msg'] = $e->getMessage();
|
|
|
+ }
|
|
|
+ Response::sendJsonExit($response);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/*
|