|
|
@@ -234,13 +234,13 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
<table class="table table-bordered">
|
|
|
<thead>
|
|
|
<tr>
|
|
|
- <td rowspan="6" colspan="1" style="width:80px; text-align:center; vertical-align:middle">data</td>
|
|
|
+ <td rowspan="7" colspan="1" style="width:80px; text-align:center; vertical-align:middle">data</td>
|
|
|
<td rowspan="1" colspan="2" style="text-align:center; vertical-align:middle">data rozpoczęcia umowy</td>
|
|
|
<td rowspan="1" colspan="2" style="text-align:center; vertical-align:middle">data zakończenia umowy</td>
|
|
|
<td rowspan="1" colspan="2" style="text-align:center; vertical-align:middle">pozostało dni:</td>
|
|
|
<td rowspan="2" colspan="2" style="text-align:center; vertical-align:middle">Wartość kosztorysu</td>
|
|
|
<td rowspan="3" colspan="2" style="text-align:center; vertical-align:middle">ROBOCIZNA</td>
|
|
|
- <td rowspan="6" colspan="1" style="text-align:center; vertical-align:middle">Koszty dodatkowe (reprezentacyjne)</td>
|
|
|
+ <td rowspan="6" colspan="1" style="text-align:center; vertical-align:middle; border-bottom:none">Koszty dodatkowe (reprezentacyjne)</td>
|
|
|
<td rowspan="4" colspan="2" style="text-align:center; vertical-align:middle">Zamówienia</td>
|
|
|
<td rowspan="4" colspan="2" style="text-align:center; vertical-align:middle">Zaliczki</td>
|
|
|
<td rowspan="4" colspan="2" style="text-align:center; vertical-align:middle">Zgody wejścia w teren</td>
|
|
|
@@ -260,32 +260,47 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
<td rowspan="1" colspan="1" style="text-align:center; vertical-align:middle">Materiały</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <th rowspan="3" colspan="1" style="text-align:center; vertical-align:middle; white-space:nowrap"><?php echo UI::price($data['budget']); ?></th>
|
|
|
+ <th rowspan="4" colspan="1" style="text-align:center; vertical-align:middle; white-space:nowrap"><?php echo UI::price($data['budget']); ?></th>
|
|
|
<td rowspan="1" colspan="1" style="text-align:center; vertical-align:middle">Zysk/Strata</td>
|
|
|
- <th rowspan="3" colspan="1" style="text-align:center; vertical-align:middle; white-space:nowrap"><?php echo UI::price($data['TODO__aneks_netto']); ?></th>
|
|
|
- <th rowspan="3" colspan="2" style="text-align:center; vertical-align:middle; white-space:nowrap"><?php echo UI::price($data['TODO__kary_netto']); ?></th>
|
|
|
+ <th rowspan="3" colspan="1" style="text-align:center; vertical-align:middle; white-space:nowrap; border-bottom:none"><?php echo UI::price($data['TODO__aneks_netto']); ?></th>
|
|
|
+ <th rowspan="3" colspan="2" style="text-align:center; vertical-align:middle; white-space:nowrap; border-bottom:none"><?php echo UI::price($data['TODO__kary_netto']); ?></th>
|
|
|
<td rowspan="1" colspan="1" style="text-align:center; vertical-align:middle">???</td>
|
|
|
- <th rowspan="3" colspan="1" style="text-align:center; vertical-align:middle; white-space:nowrap"><?php echo UI::price($data['COST_OSPRZET']); ?></th>
|
|
|
- <th rowspan="3" colspan="1" style="text-align:center; vertical-align:middle; white-space:nowrap"><?php echo UI::price($data['COST_MATERIALY']); ?></th>
|
|
|
- <td rowspan="3" colspan="1" style="text-align:center; vertical-align:middle">koszty pracowników</td>
|
|
|
- <td rowspan="3" colspan="1" style="text-align:center; vertical-align:middle">koszt firmy podwykonawczej</td>
|
|
|
+ <th rowspan="3" colspan="1" style="text-align:center; vertical-align:middle; white-space:nowrap; border-bottom:none"><?php echo UI::price($data['COST_OSPRZET']); ?></th>
|
|
|
+ <th rowspan="3" colspan="1" style="text-align:center; vertical-align:middle; white-space:nowrap; border-bottom:none"><?php echo UI::price($data['COST_MATERIALY']); ?></th>
|
|
|
+ <td rowspan="3" colspan="1" style="text-align:center; vertical-align:middle; border-bottom:none">koszty pracowników</td>
|
|
|
+ <td rowspan="3" colspan="1" style="text-align:center; vertical-align:middle; border-bottom:none">koszt firmy podwykonawczej</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle; white-space:nowrap; <?php echo $styleZyskStrata; ?>"><?php echo UI::price($data['TODO__sum_zysk_strata']); ?></td>
|
|
|
+ <td rowspan="3" colspan="1" style="text-align:center; vertical-align:middle; white-space:nowrap; <?php echo $styleZyskStrata; ?>"><?php echo UI::price($data['TODO__sum_zysk_strata']); ?></td>
|
|
|
<td rowspan="1" colspan="1" style="text-align:center; vertical-align:middle">???</td>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">numer zamówienia (kwota netto)</td>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">numer faktury kwota po weryfikacji</td>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">zaliczka kwota</td>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">rozliczanie zaliczki koszty dzienne</td>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">służebności</td>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">odszkodowania</td>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">Sprzęt własny</td>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">sprzęt wynajęty</td>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">organizacja ruchu</td>
|
|
|
- <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">zajętość pasa drogowego</td>
|
|
|
+ <td rowspan="3" colspan="1" style="text-align:center; vertical-align:middle">numer zamówienia (kwota netto)</td>
|
|
|
+ <td rowspan="3" colspan="1" style="text-align:center; vertical-align:middle">numer faktury kwota po weryfikacji</td>
|
|
|
+ <td rowspan="3" colspan="1" style="text-align:center; vertical-align:middle">zaliczka kwota</td>
|
|
|
+ <td rowspan="3" colspan="1" style="text-align:center; vertical-align:middle">rozliczanie zaliczki koszty dzienne</td>
|
|
|
+ <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle; border-bottom:none">służebności</td>
|
|
|
+ <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle; border-bottom:none">odszkodowania</td>
|
|
|
+ <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle; border-bottom:none">Sprzęt własny</td>
|
|
|
+ <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle; border-bottom:none">sprzęt wynajęty</td>
|
|
|
+ <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle; border-bottom:none">organizacja ruchu</td>
|
|
|
+ <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle; border-bottom:none">zajętość pasa drogowego</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td rowspan="1" colspan="1" style="text-align:center; vertical-align:middle">???</td>
|
|
|
+ <td rowspan="2" colspan="1" style="text-align:center; vertical-align:middle">???</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'ANEKS')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="2" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'KARY')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'OSPRZET')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'MATERIALY')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'PRACOWNICY')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'PODWYKONAWCY')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'REPREZENTACYJNE')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'ZGODY_SLUZEBNOSCI')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'ZGODY_ODSZKODOWANIA')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'SPRZET_WLASNY')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'SPRZET_WYNAJETY')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'ORGANIZACJA_RUCHU')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
+ <td rowspan="1" colspan="1" style="padding:0; text-align:center; vertical-align:middle; border-top:none"><button onClick="return budget_addCost(this, 'ZAJETOSC_PASA')" class="btn btn-link" style="padding:0"><i class="glyphicon glyphicon-plus-sign"></i></button></td>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
<tbody>
|
|
|
@@ -338,6 +353,85 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
</tbody>
|
|
|
</table>
|
|
|
</div>
|
|
|
+<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 _dbg = <?php echo V::get('DBG', 0, $_REQUEST, 'int'); ?>;
|
|
|
+
|
|
|
+function p5Utils_parseFloatOrZero(strToParse) {
|
|
|
+ if (!strToParse) return 0
|
|
|
+ if ("string" === typeof strToParse) {
|
|
|
+ strToParse = strToParse.replace(/,/g, '.')
|
|
|
+ strToParse = strToParse.replace(/ /g, '')
|
|
|
+ }
|
|
|
+ var floatVal = parseFloat(strToParse)
|
|
|
+ return (!isNaN(floatVal))? floatVal : 0
|
|
|
+}
|
|
|
+
|
|
|
+function budget_addCost(n, type) {
|
|
|
+ var labels = {}
|
|
|
+ labels['ANEKS'] = "Aneks"
|
|
|
+ labels['KARY'] = "kary, potrącenia "
|
|
|
+ var labelType = (type in labels) ? labels[type] : type
|
|
|
+
|
|
|
+ swal({
|
|
|
+ title: 'Kwota netto dla kosztu "' + labelType + '"',
|
|
|
+ animation: false,
|
|
|
+ input: 'text',
|
|
|
+ inputPlaceholder: '0,00',
|
|
|
+ // inputAttributes: {'step': '0.01'},
|
|
|
+ showCancelButton: true,
|
|
|
+ confirmButtonText: 'Dodaj koszt',
|
|
|
+ showLoaderOnConfirm: true,
|
|
|
+ preConfirm: function(price) {
|
|
|
+ return new Promise(function(resolve, reject) {
|
|
|
+ price = p5Utils_parseFloatOrZero(price)
|
|
|
+ if (price <= 0) {
|
|
|
+ reject('Kwota musi być większa od zera.')
|
|
|
+ } else {
|
|
|
+ superagent
|
|
|
+ .post(_saveLink)
|
|
|
+ .type('json') // header ĺapplication/x-www-form-urlencoded' requires type('form');
|
|
|
+ .send({
|
|
|
+ type: type,
|
|
|
+ price: price
|
|
|
+ })
|
|
|
+ .set('Accept', 'application/json')
|
|
|
+ .end(function(err, res) {
|
|
|
+ if(_dbg)console.log('#widget-budget/addCost: 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 dodawaniu kosztu")
|
|
|
+ resolve({
|
|
|
+ id: res.body.id,
|
|
|
+ price: res.body.price,
|
|
|
+ type: res.body.type
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ allowOutsideClick: false
|
|
|
+ }).then(function(responseBody) {
|
|
|
+ swal({
|
|
|
+ type: 'success',
|
|
|
+ animation: false,
|
|
|
+ title: 'Koszt dodano!',
|
|
|
+ html: 'Add cost: ' + responseBody.price + ' for type('+responseBody.type+') ' + labelType + '.'
|
|
|
+ })
|
|
|
+ }).catch(function(e) {
|
|
|
+ // eg. hit Cancel
|
|
|
+ })
|
|
|
+}
|
|
|
+</script>
|
|
|
<?php if ($viewParams['print_mode']) : ?>
|
|
|
<script>window.print();</script>
|
|
|
<?php endif; ?>
|
|
|
@@ -345,4 +439,25 @@ dostęp dla zarządu i os. odp. kwota końcowa
|
|
|
DBG::_('DBG', '>2', 'data', $data, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
}
|
|
|
|
|
|
+ public function addCostAjaxAction() {
|
|
|
+ $response = array();
|
|
|
+ $response['type'] = 'danger';
|
|
|
+ $response['msg'] = 'TODO';
|
|
|
+ try {
|
|
|
+ $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");
|
|
|
+ } catch (Exception $e) {
|
|
|
+ $response['type'] = 'danger';
|
|
|
+ $response['msg'] = $e->getMessage();
|
|
|
+ }
|
|
|
+ Response::sendJsonExit($response);
|
|
|
+ }
|
|
|
+
|
|
|
}
|