fixed dynamic data for admin sales report chart
This commit is contained in:
parent
eec3c04121
commit
22a3a404aa
|
@ -7,12 +7,18 @@ $(document).ready(function() {
|
|||
fetchData()
|
||||
.then(function (response) {
|
||||
responseData = response.data;
|
||||
console.log(responseData);
|
||||
// console.log(responseData);
|
||||
const completedOrdersCount = countCompletedOrders(responseData);
|
||||
const toPayOrdersCount = countToPayOrders(responseData);
|
||||
const toShipOrdersCount = countToShipOrders(responseData);
|
||||
const returnedOrdersCount = countReturnedOrders(responseData);
|
||||
const { cod_monthly_totals, obpay_monthly_totals, months } = countMonthlySales(responseData);
|
||||
const { cod_daily_totals, obpay_daily_totals } = countDailySales(responseData);
|
||||
const { cod_yearly_totals, obpay_yearly_totals, years } = countYearlySales(responseData);
|
||||
initializeChart(completedOrdersCount, toPayOrdersCount, toShipOrdersCount, returnedOrdersCount);
|
||||
initializeSalesChart(cod_daily_totals, obpay_daily_totals, cod_monthly_totals,
|
||||
obpay_monthly_totals, months, cod_yearly_totals, obpay_yearly_totals, years
|
||||
);
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.error('Error fetching data:', error);
|
||||
|
@ -47,6 +53,207 @@ $(document).ready(function() {
|
|||
return completedOrdersCount;
|
||||
}
|
||||
|
||||
function countYearlySales(data) {
|
||||
const now = new Date();
|
||||
const years = [];
|
||||
const cod_yearly_totals = Array(5).fill(0);
|
||||
const obpay_yearly_totals = Array(5).fill(0);
|
||||
|
||||
// Initialize years array with the current year and the previous four years
|
||||
for (let i = 4; i >= 0; i--) {
|
||||
const year = new Date(now.getFullYear() - i, 0, 1); // January 1st of each year
|
||||
years.push(year);
|
||||
}
|
||||
|
||||
data.forEach(order => {
|
||||
const orderDate = new Date(order.order_date);
|
||||
orderDate.setHours(0, 0, 0, 0);
|
||||
|
||||
// Check if payment status exists and is not null
|
||||
if (order.payment && order.payment.status) {
|
||||
const payment_status = order.payment.status.toLowerCase();
|
||||
|
||||
years.forEach((year, index) => {
|
||||
if (orderDate.getFullYear() === year.getFullYear()) {
|
||||
if (payment_status === "paid") {
|
||||
const total_amount = parseInt(order.total_amount);
|
||||
if (order.payment_method === "Cash On Delivery") {
|
||||
cod_yearly_totals[4 - index] += total_amount; // Adjust index since we are going from current to past
|
||||
} else if (order.payment_method === "Obananapay") {
|
||||
obpay_yearly_totals[4 - index] += total_amount;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
cod_yearly_totals.reverse();
|
||||
obpay_yearly_totals.reverse();
|
||||
return {
|
||||
cod_yearly_totals,
|
||||
obpay_yearly_totals,
|
||||
years: years.map(year => year.getFullYear().toString()) // Return year labels for use in charts or displays
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
function countMonthlySales(data) {
|
||||
const now = new Date();
|
||||
const months = [];
|
||||
const cod_monthly_totals = Array(12).fill(0);
|
||||
const obpay_monthly_totals = Array(12).fill(0);
|
||||
for (let i = 11; i >= 0; i--) {
|
||||
const month = new Date(now.getFullYear(), now.getMonth() - i, 1);
|
||||
months.push(month);
|
||||
}
|
||||
|
||||
data.forEach(order => {
|
||||
if (order.payment && order.payment.status){
|
||||
const orderDate = new Date(order.order_date);
|
||||
orderDate.setHours(0, 0, 0, 0);
|
||||
const payment_status = order.payment.status.toLowerCase();
|
||||
|
||||
months.forEach((month, index) => {
|
||||
if (orderDate.getFullYear() === month.getFullYear() && orderDate.getMonth() === month.getMonth()) {
|
||||
if (payment_status === "paid") {
|
||||
const total_amount = parseInt(order.total_amount);
|
||||
if (order.payment_method === "Cash On Delivery") {
|
||||
cod_monthly_totals[11 - index] += total_amount;
|
||||
} else if (order.payment_method === "Obananapay") {
|
||||
obpay_monthly_totals[11 - index] += total_amount;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
console.log(cod_monthly_totals)
|
||||
cod_monthly_totals.reverse();
|
||||
obpay_monthly_totals.reverse();
|
||||
return {
|
||||
cod_monthly_totals,
|
||||
obpay_monthly_totals,
|
||||
months: months.map(month => `${month.toLocaleString('default', { month: 'short' })} ${month.getFullYear()}`) // Return month labels for use in charts or displays
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
function countDailySales(data) {
|
||||
const today = new Date();
|
||||
today.setHours(0, 0, 0, 0);
|
||||
|
||||
const sevenDaysAgo = new Date();
|
||||
sevenDaysAgo.setDate(today.getDate() - 6);
|
||||
sevenDaysAgo.setHours(0, 0, 0, 0);
|
||||
|
||||
const sixDaysAgo = new Date();
|
||||
sixDaysAgo.setDate(today.getDate() - 5);
|
||||
sixDaysAgo.setHours(0, 0, 0, 0);
|
||||
|
||||
const fiveDaysAgo = new Date();
|
||||
fiveDaysAgo.setDate(today.getDate() - 4);
|
||||
fiveDaysAgo.setHours(0, 0, 0, 0);
|
||||
|
||||
const fourDaysAgo = new Date();
|
||||
fourDaysAgo.setDate(today.getDate() - 3);
|
||||
fourDaysAgo.setHours(0, 0, 0, 0);
|
||||
|
||||
const threeDaysAgo = new Date();
|
||||
threeDaysAgo.setDate(today.getDate() - 2);
|
||||
threeDaysAgo.setHours(0, 0, 0, 0);
|
||||
|
||||
const twoDaysAgo = new Date();
|
||||
twoDaysAgo.setDate(today.getDate() - 1);
|
||||
twoDaysAgo.setHours(0, 0, 0, 0);
|
||||
//variables for total daily sales on COD
|
||||
let cod_total_7 = 0;
|
||||
let cod_total_6 = 0;
|
||||
let cod_total_5 = 0;
|
||||
let cod_total_4 = 0;
|
||||
let cod_total_3 = 0;
|
||||
let cod_total_2 = 0;
|
||||
let cod_total_1 = 0;
|
||||
|
||||
//variables for total daily sales on ObananaPay
|
||||
let obpay_total_7 = 0;
|
||||
let obpay_total_6 = 0;
|
||||
let obpay_total_5 = 0;
|
||||
let obpay_total_4 = 0;
|
||||
let obpay_total_3 = 0;
|
||||
let obpay_total_2 = 0;
|
||||
let obpay_total_1 = 0;
|
||||
|
||||
|
||||
data.forEach(order => {
|
||||
const orderDate = new Date(order.order_date);
|
||||
orderDate.setHours(0, 0, 0, 0);
|
||||
const payment_status = order.payment.status;
|
||||
if (orderDate.getTime() === sevenDaysAgo.getTime() ) {
|
||||
if(payment_status.toLowerCase() === "paid" && order.payment_method === "Cash On Delivery" ){
|
||||
cod_total_7 += parseInt(order.total_amount);
|
||||
console.log(order)
|
||||
// console.log("compare:" + sevenDaysAgo)
|
||||
}else if (payment_status.toLowerCase() === "paid" && order.payment_method === "Obananapay") {
|
||||
obpay_total_7 += parseInt(order.total_amount);
|
||||
}
|
||||
}else if (orderDate.getTime() === sixDaysAgo.getTime() ) {
|
||||
if(payment_status.toLowerCase() === "paid" && order.payment_method === "Cash On Delivery" ){
|
||||
cod_total_6 += parseInt(order.total_amount);
|
||||
console.log(order)
|
||||
// console.log("compare:" + sevenDaysAgo)
|
||||
}else if (payment_status.toLowerCase() === "paid" && order.payment_method === "Obananapay") {
|
||||
obpay_total_6 += parseInt(order.total_amount);
|
||||
}
|
||||
}else if (orderDate.getTime() === fiveDaysAgo.getTime() ) {
|
||||
if(payment_status.toLowerCase() === "paid" && order.payment_method === "Cash On Delivery" ){
|
||||
cod_total_5 += parseInt(order.total_amount);
|
||||
console.log(order)
|
||||
// console.log("compare:" + sevenDaysAgo)
|
||||
}else if (payment_status.toLowerCase() === "paid" && order.payment_method === "Obananapay") {
|
||||
obpay_total_5 += parseInt(order.total_amount);
|
||||
}
|
||||
}else if (orderDate.getTime() === fourDaysAgo.getTime() ) {
|
||||
if(payment_status.toLowerCase() === "paid" && order.payment_method === "Cash on Delivery" ){
|
||||
cod_total_4 += parseInt(order.total_amount);
|
||||
console.log(order)
|
||||
// console.log("compare:" + sevenDaysAgo)
|
||||
}else if (payment_status.toLowerCase() === "paid" && order.payment_method === "Obananapay") {
|
||||
obpay_total_4 += parseInt(order.total_amount);
|
||||
}
|
||||
}else if (orderDate.getTime() === threeDaysAgo.getTime() ) {
|
||||
if(payment_status.toLowerCase() === "paid" && order.payment_method === "Cash On Delivery" ){
|
||||
cod_total_3 += parseInt(order.total_amount);
|
||||
console.log(order)
|
||||
// console.log("compare:" + sevenDaysAgo)
|
||||
}else if (payment_status.toLowerCase() === "paid" && order.payment_method === "Obananapay") {
|
||||
obpay_total_3 += parseInt(order.total_amount);
|
||||
}
|
||||
}else if (orderDate.getTime() === twoDaysAgo.getTime() ) {
|
||||
if(payment_status.toLowerCase() === "paid" && order.payment_method === "Cash On Delivery" ){
|
||||
cod_total_2 += parseInt(order.total_amount);
|
||||
console.log(order)
|
||||
// console.log("compare:" + sevenDaysAgo)
|
||||
}else if (payment_status.toLowerCase() === "paid" && order.payment_method === "Obananapay") {
|
||||
obpay_total_2 += parseInt(order.total_amount);
|
||||
}
|
||||
}else if (orderDate.getTime() === today.getTime() ) {
|
||||
if(payment_status.toLowerCase() === "paid" && order.payment_method === "Cash On Delivery" ){
|
||||
cod_total_1 += parseInt(order.total_amount);
|
||||
console.log(order)
|
||||
// console.log("compare:" + sevenDaysAgo)
|
||||
}else if (payment_status.toLowerCase() === "paid" && order.payment_method === "Obananapay") {
|
||||
obpay_total_1 += parseInt(order.total_amount);
|
||||
}
|
||||
}
|
||||
});
|
||||
const cod_daily_totals = [cod_total_7, cod_total_6, cod_total_5, cod_total_4, cod_total_3, cod_total_2, cod_total_1,];
|
||||
const obpay_daily_totals = [obpay_total_7, obpay_total_6, obpay_total_5, obpay_total_4, obpay_total_3, obpay_total_2, obpay_total_1,];
|
||||
// console.log(total_7);
|
||||
return { cod_daily_totals, obpay_daily_totals };
|
||||
}
|
||||
|
||||
|
||||
function countToPayOrders(data) {
|
||||
const filteredData = getCurrentMonthData(data);
|
||||
let toPayOrdersCount = 0;
|
||||
|
@ -127,11 +334,13 @@ $(document).ready(function() {
|
|||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function initializeSalesChart(cod_daily_totals, obpay_daily_totals, cod_monthly_totals, obpay_monthly_totals, months, cod_yearly_totals, obpay_yearly_totals, years) {
|
||||
var acquisition = document.getElementById("salesChart");
|
||||
if (acquisition !== null) {
|
||||
function updateDailyLabels() {
|
||||
|
@ -151,23 +360,23 @@ $(document).ready(function() {
|
|||
|
||||
// Updating labelsDaily dynamically
|
||||
var labelsDaily = updateDailyLabels();
|
||||
var labelsMonthly = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
||||
var labelsYearly = ["2021", "2022", "2023", "2024", "2025"];
|
||||
var labelsMonthly = months;
|
||||
var labelsYearly = years;
|
||||
var acqData = [
|
||||
{ //daily data
|
||||
first: [91, 180, 44, 75, 150, 66, 70], //COD
|
||||
second: [300, 44, 177, 76, 23, 189, 12], //ObPay
|
||||
first: cod_daily_totals, //COD
|
||||
second: obpay_daily_totals, //ObPay
|
||||
third: [44, 167, 102, 123, 183, 88, 134] //Paymongo
|
||||
},
|
||||
{ //monthly data
|
||||
first: [144, 44, 110, 5, 123, 89, 12], //COD
|
||||
second: [22, 123, 45, 130, 112, 54, 181], //ObPay
|
||||
first: cod_monthly_totals, //COD
|
||||
second: obpay_monthly_totals, //ObPay
|
||||
third: [55, 44, 144, 75, 155, 166, 70] //Paymongo
|
||||
},
|
||||
{ //yearly data
|
||||
first: [134, 80, 123, 65, 171, 33, 22], //COD
|
||||
second: [44, 144, 77, 76, 123, 89, 112], //ObPay
|
||||
third: [156, 23, 165, 88, 112, 54, 181] //Paymongo
|
||||
first: cod_yearly_totals, //COD
|
||||
second: obpay_yearly_totals, //ObPay
|
||||
third: [156, 23, 165, 88, 112 ] //Paymongo
|
||||
}
|
||||
];
|
||||
|
||||
|
@ -253,8 +462,8 @@ $(document).ready(function() {
|
|||
},
|
||||
ticks: {
|
||||
beginAtZero: true,
|
||||
stepSize: 100,
|
||||
max: 1000
|
||||
stepSize: 20000,
|
||||
max: 200000
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -313,9 +522,10 @@ $(document).ready(function() {
|
|||
|
||||
lineAcq.update();
|
||||
});
|
||||
});
|
||||
});
|
||||
items[0].click();
|
||||
}
|
||||
}
|
||||
|
||||
function convertToCSV(data) {
|
||||
const now = new Date();
|
||||
|
|
|
@ -209,16 +209,16 @@ if ($_SESSION["isCustomer"] == true) {
|
|||
|
||||
<!-- Gelo added vendor payments tab -->
|
||||
<table class="table ec-table"
|
||||
id="order-table" style="overflow-x: auto;"
|
||||
data-role="table"
|
||||
data-pagination="true"
|
||||
data-searching="true"
|
||||
data-filtering="true"
|
||||
data-sorting="true"
|
||||
data-show-rows-steps="5,10,20,-1"
|
||||
data-horizontal-scroll="true"
|
||||
data-rownum="true"
|
||||
data-table-info-title="Display from $1 to $2 of $3 payment(s)"
|
||||
id="order-table" style="overflow-x: auto;"
|
||||
data-role="table"
|
||||
data-pagination="true"
|
||||
data-searching="true"
|
||||
data-filtering="true"
|
||||
data-sorting="true"
|
||||
data-show-rows-steps="5,10,20,-1"
|
||||
data-horizontal-scroll="true"
|
||||
data-rownum="true"
|
||||
data-table-info-title="Display from $1 to $2 of $3 payment(s)"
|
||||
>
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -898,8 +898,7 @@ if ($_SESSION["isCustomer"] == true) {
|
|||
<script src="assets/js/vendor/jquery.magnific-popup.min.js"></script>
|
||||
<script src="assets/js/plugins/jquery.sticky-sidebar.js"></script>
|
||||
<script src="assets/js/plugins/nouislider.js"></script>
|
||||
|
||||
<script src="https://cdn.metroui.org.ua/current/metro.js"></script>
|
||||
<!-- <script src="https://cdn.metroui.org.ua/current/metro.js"></script> -->
|
||||
<script>
|
||||
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
|
||||
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
|
||||
|
|
Loading…
Reference in New Issue