{# Ported to the cp shell (UI unification Phase 1). SKIN ONLY: no access-control,
approval, signature/hash or doc-log logic is touched. #}
{% extends '@System/layouts/system_layout.html.twig' %}
{% set active = 'change_log' %}
{% set page_title = 'Change Log' %}
{% block body %}
<div id="base" xmlns="http://www.w3.org/1999/html">
<div id="content">
<section>
<div class="section-body">
<div class="row">
<div class="col-xs-12">
<div class="card card-bordered style-primary">
<div class="header bg-deep-purple">
<header>
HoneyBee Ecosystem Change Log
</header>
<div class="tools">
<a class="btn btn-icon-toggle btn-collapse"><i class="fa fa-angle-down"></i></a>
<a class="btn btn-icon-toggle btn-close"><i class="zmdi zmdi-close"></i></a>
</div>
</div>
{#{{ contentData|json_encode()|raw }}#}
{#{{ dump(path) }}#}
{#{{ dump(content) }}#}
{#{{ dump(contentData) }}#}
<div class="body style-default-bright">
{% for row in contentData %}
<h3 style="text-transform: uppercase; font-size: 24px;{{ row.severity=='major'?'color:darkred;':'' }}">Ver. {{ row.versionNumber }} ------ ({{ row.releaseDate }}) </h3>
{% if row.changeLog.feature is defined %}
<h3>Features:</h3>
<ul>
{% for logData in row.changeLog.feature %}
<li style="font-size: 15px;">{{ logData }} </li>
{% endfor %}
</ul>
{% endif %}
{% if row.changeLog.modification is defined %}
<h3>Modifications:</h3>
<ul>
{% for logData in row.changeLog.modification %}
<li style="font-size: 15px;">{{ logData }} </li>
{% endfor %}
</ul>
{% endif %}
{% if row.changeLog.bugfix is defined %}
<h3>Bug Fixes:</h3>
<ul>
{% for logData in row.changeLog.bugfix %}
<li style="font-size: 15px;">{{ logData }} </li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</section>
</div>
</div>
{% include '@Application/footer/footer_copyright.html.twig' %}
<div class="control-sidebar-bg"></div>
{% include '@Application/footer/footer_js_codecovers.html.twig' %}
{% include '@Application/codecovers_footer.html.twig' %}
<script>
jQuery(document).ready(function () {
var t_title = "SALES ORDER LIST (AS ON {{ ''|date('F d, Y') }})"
// $('#product_list_table').DataTable();
var draftStatusData={
'': '',
'0': 'No',
'1': 'Yes',
};
var stageStatusData={
0: 'Pending',
'': '',
1: 'Pending',
2: 'Complete',
4: 'Partial',
};
var approvalStatusData={
0: 'Pending',
'': '',
1: 'Pending',
2: 'Complete',
4: 'Partial',
};
var tableConfig = {
'config': {
'mainTableAlias': "mainTable",
'mainTableClass': "ApplicationBundle:SalesOrder",
'mainTableIdField': "salesOrderId",
'otherConditions': " (mainTable.CompanyId=1 and mainTable.status=1) ",
'dateFieldsToStr': ['salesOrderDate'],
'skipColumnNames': ['edit_button', 'view_button','row_select'],
'flagColNames': ['draftFlag', 'stage', 'approved'],
'flagConversionByCols': {
'draftFlag': [draftStatusData],
'stage': [stageStatusData],
'approved': [approvalStatusData],
},
'joinTableList': [
{
'tableClass': "ApplicationBundle\\Entity\\AccClients",
'tableAlias': "clientTable",
'onField': 'clientId',
"onMainTableField": "clientId",
"fields": {
//'alisaFiled':'actiual field Name'
'clientName': 'clientName',
'clientDue': 'clientDue',
'clientContactNumber': 'contactNumber',
'clientCode': 'clientNumericalCode',
}
},
{
'tableClass': "ApplicationBundle\\Entity\\Employee",
'tableAlias': "salesPersonTable",
'onField': 'employeeId',
"onMainTableField": "salesPersonId",
"fields": {
//'alisaFiled':'actiual field Name'
'salesPersonName': 'name',
}
},
{
'tableClass': "ApplicationBundle\\Entity\\Region",
'tableAlias': "regionTable",
'onField': 'id',
"onMainTableField": "salesPersonTable.regionId",
"fields": {
//'alisaFiled':'actiual field Name'
'regionName': 'name',
}
},
{
'tableClass': "ApplicationBundle\\Entity\\SysDepartmentPosition",
'tableAlias': "positionTable",
'onField': 'positionId',
"onMainTableField": "salesPersonTable.positionId",
"fields": {
//'alisaFiled':'actiual field Name'
'positionName': 'positionName',
}
},
],
},
'columns': [
{
///this is the select check box dont edit this one and keep this one
"title": "",
"name": "row_select",
"data": function (row) {
return `<label class="checkbox-inline checkbox-styled checkbox-datatable-selector ">
<input type="checkbox" value="1" ><span></span>
</label>`
},
"defaultContent": ""
},
{
"title": "ID",
"name": "salesOrderId",
"data": function (row) {
return row.mainTable.salesOrderId.padStart(8, 0);
},
"tableField": "salesOrderId",
"defaultContent": ""
},
{
"title": "Date",
"name": "salesOrderDate",
"data": function (row) {
return row.mainTable.salesOrderDateStr;
},
"defaultContent": ""
},
{
"title": "Document Number",
"name": "documentHash", //this will be used directly to get the field in search or query
"data": function (row) {
return '<a class="" target="_blank" href="{{ path('view_sales_order') }}/' + row.mainTable.salesOrderId + '">' +
(row.mainTable.documentHash) + '</a>';
},
"defaultContent": ""
},
{
"title": "Customer",
"name": "clientTable.clientName", //this will be used directly to get the field in search or query
"data": function (row) {
return '<a class="" target="_blank" href="{{ path('client_profile') }}/CI/' + row.mainTable.clientId + '">' +
(row.clientCode) + ' - ' + (row.clientName) + '</a>';
},
"defaultContent": ""
},
{
"title": "Contact No.",
"name": "clientTable.contactNumber", //this will be used directly to get the field in search or query
"data": function (row) {
return row.clientContactNumber;
},
"defaultContent": ""
},
{
"title": "Sales Person",
"name": "salesPersonTable.name", //this will be used directly to get the field in search or query
"data": function (row) {
return row.salesPersonName+' - ('+row.positionName+' )';
},
"defaultContent": ""
},
{
"title": "Order Amount",
"name": "soAmount",
"data": function (row) {
return (1*row.mainTable.soAmount).toFixed(2);
},
"defaultContent": ""
},
// {
// "title": "Draft",
// "name": "draftFlag",
// "data": function (row) {
// return draftStatusData[row.mainTable.draftFlag];
// },
// "defaultContent": ""
// },
{
"title": "Approval Status",
"name": "approved",
"data": function (row) {
return approvalStatusData[row.mainTable.approved];
},
"defaultContent": ""
},
{
"title": "Stage",
"name": "approved",
"data": function (row) {
return stageStatusData[row.mainTable.stage];
},
"defaultContent": ""
},
{
"title": "View",
"name": "view_button",
"data": function (row) {
return '<a class="btn ink-reaction btn-raised btn-primary btn-sm" target="_blank" href="{{ path('view_sales_order') }}/' + row.mainTable.salesOrderId + '">' +
'<i class="fa fa-share-square"></i> <span class="view_btn_txt">VIEW</span> </a>'
},
"defaultContent": "Click to edit"
},
{
"title": "Print",
"name": "print_button",
"data": function (row) {
return '<a class="btn ink-reaction btn-raised btn-primary btn-sm" target="_blank" href="{{ path('print_sales_order') }}/' + row.mainTable.salesOrderId + '">' +
'<i class="fa fa-print"></i> <span class="print_btn_txt">PRINT</span> </a>'
},
"defaultContent": "Click to edit"
},
],
'columnDefs': [
{
responsivePriority: 1,
targets: [0,1, -1]
},
{
responsivePriority: 2,
targets: [2, 3]
},
{
orderable: false,
// className: 'select-checkbox',
targets: 0,
},
{
className: "trans_amount",
targets: [7]
}, {
className: "align_center",
targets: [1,8]
}
],
};
var listtable = $('#ajax_data_table')
.DataTable({
// dom: 't',
dom: 'Blfrtip',
// responsive: true,
lengthMenu: [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
// "scrollX": true,
// fixedColumns: {
// leftColumns: 3,
// rightColumns: 3,
// },
"buttons": {
dom: {
button: {
tag: 'button',
className: 'dt-gen-button btn btn-sm waves-effect bg-grey'
}
},
"buttons": [
//'copy', 'csv', 'pdf',
{
"extend": 'copy',
"text": '<i class="fa fa-copy"></i> COPY',
"exportOptions": {
"modifier": {
"page": 'current'
}
},
"messageTop": t_title
},
{
"extend": 'print',
"text": '<i class="fa fa-print"></i> PRINT',
"exportOptions": {
"modifier": {
"page": 'current'
}
},
// action: function ( e, dt, node, config ) {
// var myButton = this;
// dt.one( 'draw', function () {
// $.fn.dataTable.ext.buttons.printHtml5.action.call(myButton, e, dt, node, config);
// });
// dt.page.len(-1).draw();
// },
"messageTop": t_title
},
{
"extend": 'pdf',
"text": '<i class="fa fa-file-pdf"></i> PDF',
"exportOptions": {
"modifier": {
"page": 'all'
}
},
action: function (e, dt, node, config) {
var myButton = this;
dt.one('draw', function () {
$.fn.dataTable.ext.buttons.pdfHtml5.action.call(myButton, e, dt, node, config);
});
dt.page.len(-1).draw();
},
"messageTop": t_title
},
{
"extend": 'excel',
"text": '<i class="fa fa-file-excel"></i> ALL',
"className": 'bg-blue',
//"className": 'btn btn-sm bg-blue',
"exportOptions": {
"modifier": {
"page": 'all'
}
},
action: function (e, dt, node, config) {
var myButton = this;
dt.one('draw', function () {
$.fn.dataTable.ext.buttons.excelHtml5.action.call(myButton, e, dt, node, config);
});
dt.page.len(-1).draw();
},
"messageTop": t_title
},
{
"extend": 'excel',
"text": '<i class="fa fa-file-excel"></i> PAGE',
"className": 'bg-blue',
//"className": 'btn btn-sm bg-blue',
"exportOptions": {
"modifier": {
"page": 'current'
}
},
"messageTop": t_title
},
{
"extend": 'excel',
"text": '<i class="fa fa-file-excel"></i> SELECTED',
"className": 'bg-blue',
//"className": 'btn btn-sm bg-blue',
"messageTop": t_title,
exportOptions: {
//columns: ':visible:not(.not-exported)',
modifier: {
selected: true
}
},
title: 'Data export'
}
]
},
"select": {
style: 'os',
selector: 'td:first-child .checkbox-inline>input:checkbox'
},
"order": [[0, "asc"]],
columnDefs: tableConfig.columnDefs,
columns: tableConfig.columns,
"processing": true,
"serverSide": true,
"ajax": {
"url": "{{ url('generic_datatable_ajax') }}?dataTableQry=1",
"type": 'POST',
"data": {
returnJson: 1,
config: tableConfig.config
// sessionData: sessionData,
// getUnitListFlag:getUnitListFlag
}
},
initComplete: function () {
this.api().columns().every(function (col_ind) {
var column = this;
var exclude_col = [];
if (exclude_col.indexOf(col_ind) > -1) {
}
else {
// var select = $('<select class="form-conrol selectize_dt_filter"><option value="">All</option></select>')
var search_cont = $('<div class="form-line"></div>').appendTo($(column.header()))
var search_box = $('<input type="text" class="form-control ">')
.appendTo(search_cont)
.bindWithDelay('keyup change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
// .search(val ? '^' + val + '$' : '', true, false)
.search(val ? val : '', true, false)
.draw();
}, 1000);
}
});
}
});
$(".data_table_search_marker_field").bindWithDelay("keyup", function (e) {
listtable.search($(this).val()).draw()
}, 1000);
jQuery('.data_table_search_button').click(function () {
listtable.search($('.data_table_search_marker_field').val()).draw()
});
$(document).on('click','.confirmOrderButton',function(e){
e.preventDefault();
if ($(this).hasClass('already_confirmed')) return;
var soId = $(this).attr('data-id');
$.post('{{ url('confirm_client_sales_order') }}', {
// returnJson: 1,
// sessionData: sessionData
soIds: soId
})
.done(function (data) {
// console.log(data);
if (data.success == true) {
swal({
title: "Sweet!",
text: "Order(s) Confirmed for Processing !",
imageUrl: BaseURL + "images/thumbs-up.png"
});
alertify.success("Order Confirmation Done");
var succeeded_so_ids = data.succeeded_so_ids;
for (var k = 0; k < succeeded_so_ids.length; k++) {
$('#confirmOrderButton_' + succeeded_so_ids[k]).html('<i class="material-icons">verified_user</i> <span>CONFIRMED</span>')
$('#confirmOrderButton_' + succeeded_so_ids[k]).addClass('already_confirmed')
$('#confirmOrderButton_' + succeeded_so_ids[k]).removeClass('bg-cyan').addClass('bg-green')
}
} else {
swal({
title: "Sorry!",
text: "Your Action failed ! Reasons: "+(data.reasons).join(','),
imageUrl: BaseURL + "images/Bee_Sad_Emote.png"
});
alertify.success("Order Confirmation Failed");
// $('#barcode_selector_cont').waitMe('hide');
}
})
.fail(function () {
// $('#barcode_selector_cont').waitMe('hide');
});
})
$('#toast-action').on('click', function (e) {
toastr.clear();
toastr.options.closeButton = false;
toastr.options.progressBar = false;
toastr.options.debug = false;
toastr.options.positionClass = 'toast-bottom-left';
toastr.options.showDuration = 333;
toastr.options.hideDuration = 333;
toastr.options.timeOut = 2000;
toastr.options.extendedTimeOut = 1000;
toastr.options.showEasing = 'swing';
toastr.options.hideEasing = 'swing';
toastr.options.showMethod = 'slideDown';
toastr.options.hideMethod = 'slideUp';
var message = 'Marked as read. <button type="button" id="okBtn" class="btn btn-flat btn-success toastr-action">Undo</button>';
toastr.info(message, '');
});
});
</script>
{% endblock %}