| | 245 | LEFT JOIN kbnteam.api_user du ON du.user_id = d.driver_user_id |
| | 246 | LEFT JOIN kbnteam.company_order co ON co.delivery_id = d.delivery_id |
| | 247 | LEFT JOIN kbnteam.company cmp ON cmp.company_id = co.company_id; |
| | 248 | }}} |
| | 249 | |
| | 250 | == View 5: Преглед на доставите == |
| | 251 | |
| | 252 | === SQL Дефиниција === |
| | 253 | |
| | 254 | {{{ |
| | 255 | #!sql |
| | 256 | CREATE OR REPLACE VIEW kbnteam.v_driver_deliveries AS |
| | 257 | SELECT |
| | 258 | d.delivery_id, |
| | 259 | d.delivery_date, |
| | 260 | d.delivery_notes, |
| | 261 | ds.d_status_name, |
| | 262 | drv.user_id AS driver_user_id, |
| | 263 | du.user_first_name AS driver_first_name, |
| | 264 | du.user_last_name AS driver_last_name, |
| | 265 | du.user_phone_no AS driver_phone, |
| | 266 | r.rest_id, |
| | 267 | r.rest_name, |
| | 268 | co.comp_order_id, |
| | 269 | cmp.company_id, |
| | 270 | cmp.company_name, |
| | 271 | o.order_id, |
| | 272 | o.order_datetime, |
| | 273 | o.order_total, |
| | 274 | o.customer_user_id, |
| | 275 | o.customer_first_name, |
| | 276 | o.customer_last_name, |
| | 277 | o.customer_email, |
| | 278 | COALESCE(o.meals, '') AS meals, |
| | 279 | COALESCE(o.drinks, '') AS drinks |
| | 280 | FROM kbnteam.delivery d |
| | 281 | JOIN kbnteam.delivery_status ds ON ds.d_status_id = d.d_status_id |
| 252 | | LEFT JOIN kbnteam.company cmp ON cmp.company_id = co.company_id; |
| 253 | | ---- |
| 254 | | |
| 255 | | === View 4 |
| 256 | | |
| 257 | | _Мени со пијалоци_ |
| 258 | | |
| 259 | | [source,sql] |
| 260 | | ---- |
| 261 | | CREATE OR REPLACE VIEW kbnteam.v_menu_drink AS |
| 262 | | SELECT |
| 263 | | d.drink_id, |
| 264 | | d.drink_name, |
| 265 | | d.drink_milliliters, |
| 266 | | d.drink_price, |
| 267 | | r.rest_id, |
| 268 | | r.rest_name |
| 269 | | FROM kbnteam.drink d |
| 270 | | JOIN kbnteam.restaurant r ON r.rest_id = d.rest_id; |
| 271 | | ---- |
| 272 | | |
| 273 | | === View 5 |
| 274 | | |
| 275 | | _Преглед на фактурирањето на компаниите_ |
| 276 | | |
| 277 | | [source,sql] |
| 278 | | ---- |
| 279 | | CREATE OR REPLACE VIEW kbnteam.v_company_billing_overview AS |
| 280 | | WITH company_contracts AS ( |
| 281 | | SELECT |
| 282 | | ct.company_id, |
| 283 | | COUNT(*) AS contract_count |
| 284 | | FROM kbnteam.contract ct |
| 285 | | GROUP BY ct.company_id |
| 286 | | ), |
| 287 | | invoice_totals AS ( |
| 288 | | SELECT |
| 289 | | i.invoice_id, |
| 290 | | i.comp_order_id, |
| 291 | | co.company_id, |
| 292 | | co.delivery_id, |
| 293 | | COUNT(o.order_id) AS customer_order_count, |
| 294 | | COALESCE(SUM(o.order_total), 0)::numeric(14,2) AS invoice_amount |
| 295 | | FROM kbnteam.invoice i |
| 296 | | JOIN kbnteam.company_order co ON co.comp_order_id = i.comp_order_id |
| 297 | | LEFT JOIN kbnteam.customer_order o ON o.comp_order_id = co.comp_order_id |
| 298 | | GROUP BY i.invoice_id, i.comp_order_id, co.company_id, co.delivery_id |
| 299 | | ) |
| 300 | | SELECT |
| 301 | | it.invoice_id, |
| 302 | | it.comp_order_id, |
| 303 | | cmp.company_id, |
| 304 | | cmp.company_name, |
| 305 | | cmp.company_address, |
| 306 | | it.delivery_id, |
| 307 | | it.customer_order_count, |
| 308 | | it.invoice_amount, |
| 309 | | COALESCE(cc.contract_count, 0) AS contract_count |
| 310 | | FROM invoice_totals it |
| 311 | | JOIN kbnteam.company cmp ON cmp.company_id = it.company_id |
| 312 | | LEFT JOIN company_contracts cc ON cc.company_id = cmp.company_id; |
| 313 | | ---- |
| 314 | | |
| 315 | | === View 6 |
| 316 | | |
| 317 | | _Приходи според договорите_ |
| 318 | | |
| 319 | | [source,sql] |
| 320 | | ---- |
| | 286 | LEFT JOIN kbnteam.company cmp ON cmp.company_id = co.company_id |
| | 287 | LEFT JOIN kbnteam.v_orders_full o ON o.comp_order_id = co.comp_order_id; |
| | 288 | }}} |
| | 289 | |
| | 290 | == View 6: Приходи според договорите == |
| | 291 | |
| | 292 | === SQL Дефиниција === |
| | 293 | |
| | 294 | {{{ |
| | 295 | #!sql |
| 408 | | JOIN kbnteam.customer cu |
| 409 | | ON cu.user_id = cl.user_id |
| 410 | | JOIN kbnteam.company cmp |
| 411 | | ON cmp.company_id = cu.company_id |
| 412 | | JOIN kbnteam.api_user au |
| 413 | | ON au.user_id = cl.user_id |
| 414 | | JOIN kbnteam.customer_loyalty_status cls |
| 415 | | ON cls.cus_loyalty_status_id = cl.cus_loyalty_status_id |
| 416 | | JOIN kbnteam.loyalty_tier lt |
| 417 | | ON lt.tier_id = cl.tier_id |
| 418 | | LEFT JOIN order_stats os |
| 419 | | ON os.customer_user_id = cl.user_id; |
| 420 | | ---- |
| 421 | | |
| 422 | | === View 8 |
| 423 | | |
| 424 | | _Преглед на доставите на доставувачите_ |
| 425 | | |
| 426 | | [source,sql] |
| 427 | | ---- |
| 428 | | CREATE OR REPLACE VIEW kbnteam.v_driver_deliveries AS |
| 429 | | WITH order_meals AS ( |
| 430 | | SELECT |
| 431 | | x.order_id, |
| 432 | | string_agg(x.meal_name, ', ' ORDER BY x.meal_name) AS meals |
| 433 | | FROM ( |
| 434 | | SELECT DISTINCT |
| 435 | | om.order_id, |
| 436 | | m.meal_name |
| 437 | | FROM kbnteam.order_meal om |
| 438 | | JOIN kbnteam.meal m ON m.meal_id = om.meal_id |
| 439 | | ) x |
| 440 | | GROUP BY x.order_id |
| 441 | | ), |
| 442 | | order_drinks AS ( |
| 443 | | SELECT |
| 444 | | x.order_id, |
| 445 | | string_agg(x.drink_name, ', ' ORDER BY x.drink_name) AS drinks |
| 446 | | FROM ( |
| 447 | | SELECT DISTINCT |
| 448 | | od.order_id, |
| 449 | | d.drink_name |
| 450 | | FROM kbnteam.order_drink od |
| 451 | | JOIN kbnteam.drink d ON d.drink_id = od.drink_id |
| 452 | | ) x |
| 453 | | GROUP BY x.order_id |
| 454 | | ) |
| 455 | | SELECT |
| 456 | | d.delivery_id, |
| 457 | | d.delivery_date, |
| 458 | | d.delivery_notes, |
| 459 | | ds.d_status_name, |
| 460 | | drv.user_id AS driver_user_id, |
| 461 | | du.user_first_name AS driver_first_name, |
| 462 | | du.user_last_name AS driver_last_name, |
| 463 | | du.user_phone_no AS driver_phone, |
| 464 | | r.rest_id, |
| 465 | | r.rest_name, |
| 466 | | co.comp_order_id, |
| 467 | | cmp.company_id, |
| 468 | | cmp.company_name, |
| 469 | | o.order_id, |
| 470 | | o.order_datetime, |
| 471 | | o.order_total, |
| 472 | | cu.user_id AS customer_user_id, |
| 473 | | au.user_first_name AS customer_first_name, |
| 474 | | au.user_last_name AS customer_last_name, |
| 475 | | au.user_email AS customer_email, |
| 476 | | COALESCE(om.meals, '') AS meals, |
| 477 | | COALESCE(od.drinks, '') AS drinks |
| 478 | | FROM kbnteam.delivery d |
| 479 | | JOIN kbnteam.delivery_status ds ON ds.d_status_id = d.d_status_id |
| 480 | | LEFT JOIN kbnteam.driver drv ON drv.user_id = d.driver_user_id |
| 481 | | LEFT JOIN kbnteam.api_user du ON du.user_id = drv.user_id |
| 482 | | LEFT JOIN kbnteam.restaurant r ON r.rest_id = drv.rest_id |
| 483 | | LEFT JOIN kbnteam.company_order co ON co.delivery_id = d.delivery_id |
| 484 | | LEFT JOIN kbnteam.company cmp ON cmp.company_id = co.company_id |
| 485 | | LEFT JOIN kbnteam.customer_order o ON o.comp_order_id = co.comp_order_id |
| 486 | | LEFT JOIN kbnteam.customer cu ON cu.user_id = o.customer_user_id |
| 487 | | LEFT JOIN kbnteam.api_user au ON au.user_id = cu.user_id |
| 488 | | LEFT JOIN order_meals om ON om.order_id = o.order_id |
| 489 | | LEFT JOIN order_drinks od ON od.order_id = o.order_id; |
| 490 | | ---- |
| 491 | | |
| 492 | | === View 9 |
| 493 | | |
| 494 | | _Термини за ручек на доставувачите_ |
| 495 | | |
| 496 | | [source,sql] |
| 497 | | ---- |
| | 383 | JOIN kbnteam.customer cu ON cu.user_id = cl.user_id |
| | 384 | JOIN kbnteam.company cmp ON cmp.company_id = cu.company_id |
| | 385 | JOIN kbnteam.api_user au ON au.user_id = cl.user_id |
| | 386 | JOIN kbnteam.customer_loyalty_status cls ON cls.cus_loyalty_status_id = cl.cus_loyalty_status_id |
| | 387 | JOIN kbnteam.loyalty_tier lt ON lt.tier_id = cl.tier_id |
| | 388 | LEFT JOIN order_stats os ON os.customer_user_id = cl.user_id; |
| | 389 | }}} |
| | 390 | |
| | 391 | == View 8: Термини за ручек на доставувачите == |
| | 392 | |
| | 393 | === SQL Дефиниција === |
| | 394 | |
| | 395 | {{{ |
| | 396 | #!sql |
| 521 | | ---- |
| 522 | | |
| | 420 | }}} |
| | 421 | |
| | 422 | == View 9: Фактурирање на компаниите == |
| | 423 | |
| | 424 | === SQL Дефиниција === |
| | 425 | |
| | 426 | {{{ |
| | 427 | #!sql |
| | 428 | CREATE OR REPLACE VIEW kbnteam.v_company_billing_overview AS |
| | 429 | WITH company_contracts AS ( |
| | 430 | SELECT company_id, COUNT(*) AS contract_count |
| | 431 | FROM kbnteam.contract |
| | 432 | GROUP BY company_id |
| | 433 | ) |
| | 434 | SELECT |
| | 435 | i.invoice_id, |
| | 436 | i.comp_order_id, |
| | 437 | cmp.company_id, |
| | 438 | cmp.company_name, |
| | 439 | cmp.company_address, |
| | 440 | co.delivery_id, |
| | 441 | COUNT(o.order_id) AS customer_order_count, |
| | 442 | COALESCE(SUM(o.order_total), 0)::numeric(14,2) AS invoice_amount, |
| | 443 | COALESCE(cc.contract_count, 0) AS contract_count |
| | 444 | FROM kbnteam.invoice i |
| | 445 | JOIN kbnteam.company_order co ON co.comp_order_id = i.comp_order_id |
| | 446 | JOIN kbnteam.company cmp ON cmp.company_id = co.company_id |
| | 447 | LEFT JOIN kbnteam.customer_order o ON o.comp_order_id = co.comp_order_id |
| | 448 | LEFT JOIN company_contracts cc ON cc.company_id = cmp.company_id |
| | 449 | GROUP BY i.invoice_id, i.comp_order_id, cmp.company_id, |
| | 450 | cmp.company_name, cmp.company_address, co.delivery_id, cc.contract_count; |
| | 451 | }}} |