From 2a9c3de89afc9e52eee5c1caf5338ae7bc870f26 Mon Sep 17 00:00:00 2001 From: Pranshu Tomar Date: Wed, 6 May 2020 22:48:48 +0530 Subject: [PATCH] Order comment feature added --- .../Admin/publishable/assets/css/admin.css | 2 +- .../publishable/assets/mix-manifest.json | 2 +- .../Controllers/Sales/OrderController.php | 42 +++++- packages/Webkul/Admin/src/Http/routes.php | 2 + .../assets/sass/partials/_sales.scss | 27 +++- .../Admin/src/Resources/lang/ar/app.php | 6 +- .../Admin/src/Resources/lang/en/app.php | 8 +- .../Admin/src/Resources/lang/fa/app.php | 6 +- .../Admin/src/Resources/lang/nl/app.php | 6 +- .../Admin/src/Resources/lang/pt_BR/app.php | 6 +- .../views/sales/orders/view.blade.php | 137 ++++++++++++------ .../Sales/src/Contracts/OrderComment.php | 7 + ..._06_171638_create_order_comments_table.php | 36 +++++ packages/Webkul/Sales/src/Models/Order.php | 9 +- .../Webkul/Sales/src/Models/OrderComment.php | 24 +++ .../Sales/src/Models/OrderCommentProxy.php | 10 ++ .../src/Providers/ModuleServiceProvider.php | 1 + .../Repositories/OrderCommentRepository.php | 19 +++ 18 files changed, 292 insertions(+), 58 deletions(-) create mode 100755 packages/Webkul/Sales/src/Contracts/OrderComment.php create mode 100644 packages/Webkul/Sales/src/Database/Migrations/2020_05_06_171638_create_order_comments_table.php create mode 100755 packages/Webkul/Sales/src/Models/OrderComment.php create mode 100755 packages/Webkul/Sales/src/Models/OrderCommentProxy.php create mode 100755 packages/Webkul/Sales/src/Repositories/OrderCommentRepository.php diff --git a/packages/Webkul/Admin/publishable/assets/css/admin.css b/packages/Webkul/Admin/publishable/assets/css/admin.css index 691e2b405..c617cf314 100755 --- a/packages/Webkul/Admin/publishable/assets/css/admin.css +++ b/packages/Webkul/Admin/publishable/assets/css/admin.css @@ -1 +1 @@ -@import url(https://fonts.googleapis.com/css?family=Montserrat:400,500);body{margin:0;color:#3a3a3a;font-family:Montserrat,sans-serif;font-size:14px;font-weight:500;position:static;height:100%;width:100%;background-color:#fff}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px hsla(0,0%,100%,.3);border-radius:10px}::-webkit-scrollbar-thumb{border-radius:10px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)}.navbar-top{height:60px;background-color:#fff;font-size:0;box-shadow:0 3px 6px 0 rgba(0,0,0,.05);border-bottom:1px solid hsla(0,0%,63.5%,.2);position:fixed;left:0;right:0;z-index:5}.navbar-top .navbar-top-left{width:50%;height:60px;display:inline-block;vertical-align:middle;background-color:#fff}.navbar-top .navbar-top-left .brand-logo{padding:10px}.navbar-top .navbar-top-right{width:50%;height:60px;text-align:right;display:inline-block;vertical-align:middle}.navbar-top .navbar-top-right .profile-info{display:inline-block;vertical-align:middle;text-align:left;min-width:50px;padding:12px 0;margin:0 25px 0 30px;font-size:15px;cursor:pointer;position:relative}.navbar-top .navbar-top-right .profile-info .dropdown-list{top:63px;right:0!important;bottom:inherit!important}.navbar-top .navbar-top-right .profile-info .name{color:#000311;display:block;text-align:left}.navbar-top .navbar-top-right .profile-info .role{font-size:14px;color:#8e8e8e;display:block;text-align:left}.navbar-top .navbar-top-right .profile-info i.icon{margin-left:10px}.navbar-left{position:fixed;left:0;top:60px;width:90px;padding-top:20px;border-right:1px solid hsla(0,0%,63.5%,.2);height:auto;bottom:0;z-index:2;background-color:#fff}.navbar-left ul.menubar li.menu-item{padding:10px 5px;font-size:11px;text-align:center;text-transform:uppercase}.navbar-left ul.menubar li.menu-item a{color:#a2a2a2}.navbar-left ul.menubar li.menu-item.active a{color:#0041ff}.navbar-left ul.menubar li.menu-item span{display:block;margin:auto}.content-container{padding-left:90px;position:absolute;margin-top:60px;top:0;right:0;left:0;bottom:0;height:calc(100% - 60px);width:100%}.content-container .inner-section{height:100%}.content-container .aside-nav{width:280px;position:fixed;top:60px;bottom:0;border-right:1px solid hsla(0,0%,63.5%,.2);background-color:#f8f9fa;padding-top:10px;padding-bottom:10px;z-index:4}.content-container .aside-nav ul{overflow-y:auto;height:90%}.content-container .aside-nav a{padding:15px;display:block;color:#000311}.content-container .aside-nav .active a{background:#fff;border-top:1px solid hsla(0,0%,63.5%,.2);border-bottom:1px solid hsla(0,0%,63.5%,.2)}.content-container .aside-nav .active i{float:right}.content-container .content-wrapper{padding:25px 25px 25px 15px;margin-left:280px;margin-top:1px;background-color:#fff}.content-container .content{margin-top:25px}.content-container .content.full-page{padding:25px}.content-container .content .page-header{display:inline-block;width:100%;padding:15px 10px 15px 0;position:-webkit-sticky;position:sticky;top:50px;z-index:3;background-color:#fff}.content-container .content .page-header .page-title{float:left}.content-container .content .page-header .page-title .back-link{float:left;margin-right:10px;width:24px;height:24px;cursor:pointer;margin-top:5px}.content-container .content .page-header .page-title h1{margin-bottom:0;vertical-align:middle;display:inline-block;line-height:normal}.content-container .content .page-header .page-action{float:right}.content-container .content .page-header .page-action *{display:inline-block}.content-container .content .page-header .page-action a{margin-left:25px}.content-container .content .page-header .control-group{width:180px;display:inline-block;margin-bottom:0;margin-left:20px}.content-container .content .page-header .control{width:100%;margin:0}.content-container .content .page-content{width:100%;display:inline-block}.control-container{display:flex;flex-direction:row;align-items:flex-start;width:750px}.control-container .control{background:#fff;border:2px solid #c7c7c7;border-radius:3px;width:150px;height:36px;display:inline-block;vertical-align:middle;transition:.2s cubic-bezier(.4,0,.2,1);padding:0 10px;font-size:15px}.control-container .control:focus{border-color:#0041ff}.control-container .icon:hover{cursor:pointer}.control-container .control-group::last-child{margin-right:0}.boolean-control-container{display:flex;flex-direction:row;justify-content:flex-start;width:750px}.boolean-control-container .control-group{width:200px}.control-group label{width:70%}.control-group label .locale{float:right;color:#8e8e8e}.control-group .mce-tinymce{margin-top:10px;margin-bottom:5px}.dashboard .page-header{margin-bottom:0!important;padding-bottom:15px;border-bottom:1px solid hsla(0,0%,63.5%,.2)}.dashboard .page-header .control-group span{width:100%}.dashboard .page-header .control-group.date:after{margin-top:-13px;left:100%}.dashboard .page-content{margin-top:15px}.dashboard .card{height:445px;background-color:#fff;border:1px solid hsla(0,0%,63.5%,.2);box-shadow:0 5px 10px 2px hsla(0,0%,63.5%,.2);border-radius:.25rem;padding:20px 0 0 20px;overflow:auto}.dashboard .card .card-title{font-size:14px;color:#a2a2a2;letter-spacing:-.26px;text-transform:uppercase}.dashboard .card .card-info{width:100%;display:inline-block}.dashboard .card .card-info.center{text-align:center}.dashboard .card .card-info ul li{border-bottom:1px solid hsla(0,0%,63.5%,.2);width:100%;display:inline-block;padding:10px 0;position:relative}.dashboard .card .card-info ul li .image{height:60px;width:60px;float:left;margin-right:15px}.dashboard .card .card-info ul li .image.product{background:#f2f2f2}.dashboard .card .card-info ul li .image img{width:100%}.dashboard .card .card-info ul li .description{margin-top:10px}.dashboard .card .card-info ul li .description .name{color:#0041ff}.dashboard .card .card-info ul li .description .info{color:#3a3a3a;margin-top:5px}.dashboard .card .card-info ul li .icon.angle-right-icon{position:absolute;right:30px;top:50%;margin-top:-8px}.dashboard .card .card-info ul li:last-child{border-bottom:0}.dashboard .card .card-info .no-result-found{margin-top:146px}.dashboard .card .card-info .no-result-found p{margin:0;color:#a2a2a2}.dashboard .dashboard-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-auto-rows:auto;grid-column-gap:30px;grid-row-gap:15px}.dashboard .dashboard-stats .dashboard-card{height:100px;background:#fff;border:1px solid hsla(0,0%,63.5%,.2);box-shadow:0 5px 10px 2px hsla(0,0%,63.5%,.2);border-radius:5px;position:relative;padding:15px}.dashboard .dashboard-stats .dashboard-card .title{font-size:14px;color:#a2a2a2;text-transform:uppercase}.dashboard .dashboard-stats .dashboard-card .data{padding-top:13px;font-size:32px;color:#0041ff}.dashboard .dashboard-stats .dashboard-card .data .progress{font-size:14px;color:#8e8e8e;float:right;margin-top:-2px}.dashboard .dashboard-stats .dashboard-card .data .progress .icon{vertical-align:middle}.dashboard .graph-stats{margin-top:30px;width:100%;display:inline-block}.dashboard .graph-stats .left-card-container{float:left;width:75%;padding-right:9px}.dashboard .graph-stats .right-card-container{float:left;width:25%;padding-left:21px}.dashboard .sale-stock{width:100%;display:inline-block;display:grid;grid-template-columns:repeat(auto-fill,minmax(435px,1fr));grid-auto-rows:auto;grid-column-gap:30px;grid-row-gap:15px;margin-top:30px}.configuration-image{position:relative;height:33px;width:33px;top:15px;border-radius:3px;margin-right:5px}.download{position:relative;height:24px!important;width:24px!important;top:12px;margin-right:10px}.aside-nav-toggle{height:48px;width:100%;padding-top:15px;border-top:1px solid hsla(0,0%,63.5%,.2)}.aside-nav-toggle .close-icon,.aside-nav-toggle .open-icon{position:absolute;cursor:pointer;left:45%}.aside-nav-toggle.open{display:none}.linked-product-search-result{box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 0 9px 0 rgba(0,0,0,.16);z-index:10;text-align:left;border-radius:3px;background-color:#fff;width:70%;max-height:200px;overflow-y:auto}.linked-product-search-result li{padding:10px;border-bottom:1px solid #e8e8e8;cursor:pointer}.cart-rule-conditions table td.attribute,.catalog-rule-conditions table td.attribute{width:250px;padding-left:0}.cart-rule-conditions table td.operator,.cart-rule-conditions table td.value,.catalog-rule-conditions table td.operator,.catalog-rule-conditions table td.value{width:260px}.cart-rule-conditions table td.actions,.catalog-rule-conditions table td.actions{width:44px}.cart-rule-conditions table td.actions .icon,.catalog-rule-conditions table td.actions .icon{margin-top:6px}.sale-container .sale-section{font-size:16px}.sale-container .sale-section .secton-title{font-size:18px;color:#8e8e8e;padding:15px 0;border-bottom:1px solid hsla(0,0%,63.5%,.2)}.sale-container .sale-section .section-content{display:block;padding:20px 0}.sale-container .sale-section .section-content .row{display:block;padding:7px 0}.sale-container .sale-section .section-content .row .title{width:200px;color:#3a3a3a;letter-spacing:-.26px;display:inline-block}.sale-container .sale-section .section-content .row .value{color:#3a3a3a;letter-spacing:-.26px;display:inline-block}.sale-container .table .qty-row{display:block;margin-bottom:5px}.sale-container .table .qty-row:last-child{margin-bottom:0}.sale-container .table .radio{margin:0}.sale-container .sale-summary{margin-top:2%;height:130px;float:right}.sale-container .sale-summary tr td{padding:5px 8px;vertical-align:text-bottom}.sale-container .sale-summary tr.bold{font-weight:600;font-size:15px}.sale-container .sale-summary tr.border td{border-bottom:1px solid hsla(0,0%,63.5%,.2)}.stars{margin-top:5px}.stars .icon{width:16px;height:16px}.export-import{cursor:pointer}.export-import .export-icon,.export-import .import-icon{position:relative;top:10px}.export-import span{margin-left:2px}.rtl{direction:rtl}.rtl .navbar-top .navbar-top-right{text-align:left}.rtl .navbar-top .navbar-top-right .profile-info{margin:0 30px 0 25px}.rtl .navbar-top .navbar-top-right .profile-info i.icon{margin-left:0;margin-right:10px}.rtl .navbar-left{border-left:1px solid hsla(0,0%,63.5%,.2);border-right:none;left:calc(100% - 90px);background-color:#fff}.rtl .content-container{padding-right:90px;padding-left:0}.rtl .content-container .content .page-header .page-title{float:right}.rtl .content-container .content .page-header .page-action{float:left}.rtl .content-container .content .page-header .page-action a{margin-left:0}.rtl .content-container .content .page-header .control-group{margin-right:20px;margin-left:0}.rtl .content-container .content .page-header .control-group.date:after{margin-top:6px;position:absolute;margin-right:-35px}.rtl .content-container .content .page-header .control-group.date:last-child{margin-left:0}.rtl .content-container .content-wrapper{padding:25px 305px 25px 25px;margin-left:0}.rtl .content-container .aside-nav .active i{float:left;transform:rotate(180deg)}.rtl .dashboard .dashboard-stats .dashboard-card .data span{float:left}.rtl .dashboard .card{padding:20px 20px 0 0}.rtl .dashboard .card .card-info ul li .image{float:right;margin-right:0;margin-left:15px}.rtl .dashboard .card .card-info ul li .icon.angle-right-icon{left:30px;right:auto;transform:rotate(180deg)}.rtl .dashboard .graph-stats .left-card-container{float:right;padding-right:0}.rtl .dashboard .graph-stats .right-card-container{float:right;padding-left:0;padding-right:30px}.rtl .sale-container .sale-summary{float:left}.rtl .grid-container .filter-row-one .search-filter{border:2px solid #c7c7c7;border-radius:2px}.rtl .grid-container .filter-row-one .search-filter .control{border:none;padding-right:10px}.rtl .grid-container .filter-row-one .search-filter .icon-wrapper{padding-top:2px;padding-right:5px;border:none;border-right:2px solid #c7c7c7;border-radius:0}.rtl .grid-container .filter-row-two .filter-tag .icon.cross-icon,.rtl .grid-container .filter-row-two .filter-tag .wrapper{margin-right:10px;margin-left:0}.rtl .grid-container .filter-row-one .dropdown-filters{right:unset;position:static!important;left:25px}.rtl .grid-container .filter-row-one .dropdown-filters .per-page-label{position:static!important}.rtl .grid-container .filter-wrapper .filter-row-one .dropdown-filters .more-filters .dropdown-toggle .dropdown-header span{padding-right:5px}.rtl .grid-container .table tbody td.action a:first-child{margin-left:10px;margin-right:0}.rtl .table table{text-align:right}.rtl .table table .massaction-remove{margin-right:5px!important;margin-left:10px}.rtl .table table .btn.btn-primary{margin-right:10px!important}.rtl .dropdown-list.bottom-right{left:0;right:auto}.rtl .dropdown-list .dropdown-container{text-align:right}.rtl .accordian .accordian-header .icon{float:left}.rtl .tree-container .tree-item{padding-right:30px}.rtl .tree-container .tree-item .expand-icon,.rtl .tree-container .tree-item .folder-icon{margin-left:10px;margin-right:0}.rtl .tree-container>.tree-item{padding-right:0}.rtl .radio .radio-view{margin-left:5px}.rtl .image-wrapper .image-item{margin-right:0;margin-left:20px}.rtl .image-wrapper .image-item .remove-image{margin-right:0}.rtl .control-group label.required:before{content:"*";color:#fc6868;font-weight:700}.rtl .control-group label.required:after{content:none}.rtl .control-group label .locale{float:left}.rtl .control-group.date:after{margin-top:15px;position:absolute;margin-right:-35px}.rtl .pagination .page-item .icon{transform:rotate(180deg)}.accordian-header{background-color:#fbfbfb}.btn.btn-primary{background:#0041ff}.fixed-action{top:108px}.fixed-action,.fixed-action-slight{position:fixed;right:32px;z-index:20}.fixed-action-slight{top:94px}.pagination{margin-top:30px} \ No newline at end of file +@import url(https://fonts.googleapis.com/css?family=Montserrat:400,500);body{margin:0;color:#3a3a3a;font-family:Montserrat,sans-serif;font-size:14px;font-weight:500;position:static;height:100%;width:100%;background-color:#fff}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px hsla(0,0%,100%,.3);border-radius:10px}::-webkit-scrollbar-thumb{border-radius:10px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)}.navbar-top{height:60px;background-color:#fff;font-size:0;box-shadow:0 3px 6px 0 rgba(0,0,0,.05);border-bottom:1px solid hsla(0,0%,63.5%,.2);position:fixed;left:0;right:0;z-index:5}.navbar-top .navbar-top-left{width:50%;height:60px;display:inline-block;vertical-align:middle;background-color:#fff}.navbar-top .navbar-top-left .brand-logo{padding:10px}.navbar-top .navbar-top-right{width:50%;height:60px;text-align:right;display:inline-block;vertical-align:middle}.navbar-top .navbar-top-right .profile-info{display:inline-block;vertical-align:middle;text-align:left;min-width:50px;padding:12px 0;margin:0 25px 0 30px;font-size:15px;cursor:pointer;position:relative}.navbar-top .navbar-top-right .profile-info .dropdown-list{top:63px;right:0!important;bottom:inherit!important}.navbar-top .navbar-top-right .profile-info .name{color:#000311;display:block;text-align:left}.navbar-top .navbar-top-right .profile-info .role{font-size:14px;color:#8e8e8e;display:block;text-align:left}.navbar-top .navbar-top-right .profile-info i.icon{margin-left:10px}.navbar-left{position:fixed;left:0;top:60px;width:90px;padding-top:20px;border-right:1px solid hsla(0,0%,63.5%,.2);height:auto;bottom:0;z-index:2;background-color:#fff}.navbar-left ul.menubar li.menu-item{padding:10px 5px;font-size:11px;text-align:center;text-transform:uppercase}.navbar-left ul.menubar li.menu-item a{color:#a2a2a2}.navbar-left ul.menubar li.menu-item.active a{color:#0041ff}.navbar-left ul.menubar li.menu-item span{display:block;margin:auto}.content-container{padding-left:90px;position:absolute;margin-top:60px;top:0;right:0;left:0;bottom:0;height:calc(100% - 60px);width:100%}.content-container .inner-section{height:100%}.content-container .aside-nav{width:280px;position:fixed;top:60px;bottom:0;border-right:1px solid hsla(0,0%,63.5%,.2);background-color:#f8f9fa;padding-top:10px;padding-bottom:10px;z-index:4}.content-container .aside-nav ul{overflow-y:auto;height:90%}.content-container .aside-nav a{padding:15px;display:block;color:#000311}.content-container .aside-nav .active a{background:#fff;border-top:1px solid hsla(0,0%,63.5%,.2);border-bottom:1px solid hsla(0,0%,63.5%,.2)}.content-container .aside-nav .active i{float:right}.content-container .content-wrapper{padding:25px 25px 25px 15px;margin-left:280px;margin-top:1px;background-color:#fff}.content-container .content{margin-top:25px}.content-container .content.full-page{padding:25px}.content-container .content .page-header{display:inline-block;width:100%;padding:15px 10px 15px 0;position:-webkit-sticky;position:sticky;top:50px;z-index:3;background-color:#fff}.content-container .content .page-header .page-title{float:left}.content-container .content .page-header .page-title .back-link{float:left;margin-right:10px;width:24px;height:24px;cursor:pointer;margin-top:5px}.content-container .content .page-header .page-title h1{margin-bottom:0;vertical-align:middle;display:inline-block;line-height:normal}.content-container .content .page-header .page-action{float:right}.content-container .content .page-header .page-action *{display:inline-block}.content-container .content .page-header .page-action a{margin-left:25px}.content-container .content .page-header .control-group{width:180px;display:inline-block;margin-bottom:0;margin-left:20px}.content-container .content .page-header .control{width:100%;margin:0}.content-container .content .page-content{width:100%;display:inline-block}.control-container{display:flex;flex-direction:row;align-items:flex-start;width:750px}.control-container .control{background:#fff;border:2px solid #c7c7c7;border-radius:3px;width:150px;height:36px;display:inline-block;vertical-align:middle;transition:.2s cubic-bezier(.4,0,.2,1);padding:0 10px;font-size:15px}.control-container .control:focus{border-color:#0041ff}.control-container .icon:hover{cursor:pointer}.control-container .control-group::last-child{margin-right:0}.boolean-control-container{display:flex;flex-direction:row;justify-content:flex-start;width:750px}.boolean-control-container .control-group{width:200px}.control-group label{width:70%}.control-group label .locale{float:right;color:#8e8e8e}.control-group .mce-tinymce{margin-top:10px;margin-bottom:5px}.dashboard .page-header{margin-bottom:0!important;padding-bottom:15px;border-bottom:1px solid hsla(0,0%,63.5%,.2)}.dashboard .page-header .control-group span{width:100%}.dashboard .page-header .control-group.date:after{margin-top:-13px;left:100%}.dashboard .page-content{margin-top:15px}.dashboard .card{height:445px;background-color:#fff;border:1px solid hsla(0,0%,63.5%,.2);box-shadow:0 5px 10px 2px hsla(0,0%,63.5%,.2);border-radius:.25rem;padding:20px 0 0 20px;overflow:auto}.dashboard .card .card-title{font-size:14px;color:#a2a2a2;letter-spacing:-.26px;text-transform:uppercase}.dashboard .card .card-info{width:100%;display:inline-block}.dashboard .card .card-info.center{text-align:center}.dashboard .card .card-info ul li{border-bottom:1px solid hsla(0,0%,63.5%,.2);width:100%;display:inline-block;padding:10px 0;position:relative}.dashboard .card .card-info ul li .image{height:60px;width:60px;float:left;margin-right:15px}.dashboard .card .card-info ul li .image.product{background:#f2f2f2}.dashboard .card .card-info ul li .image img{width:100%}.dashboard .card .card-info ul li .description{margin-top:10px}.dashboard .card .card-info ul li .description .name{color:#0041ff}.dashboard .card .card-info ul li .description .info{color:#3a3a3a;margin-top:5px}.dashboard .card .card-info ul li .icon.angle-right-icon{position:absolute;right:30px;top:50%;margin-top:-8px}.dashboard .card .card-info ul li:last-child{border-bottom:0}.dashboard .card .card-info .no-result-found{margin-top:146px}.dashboard .card .card-info .no-result-found p{margin:0;color:#a2a2a2}.dashboard .dashboard-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-auto-rows:auto;grid-column-gap:30px;grid-row-gap:15px}.dashboard .dashboard-stats .dashboard-card{height:100px;background:#fff;border:1px solid hsla(0,0%,63.5%,.2);box-shadow:0 5px 10px 2px hsla(0,0%,63.5%,.2);border-radius:5px;position:relative;padding:15px}.dashboard .dashboard-stats .dashboard-card .title{font-size:14px;color:#a2a2a2;text-transform:uppercase}.dashboard .dashboard-stats .dashboard-card .data{padding-top:13px;font-size:32px;color:#0041ff}.dashboard .dashboard-stats .dashboard-card .data .progress{font-size:14px;color:#8e8e8e;float:right;margin-top:-2px}.dashboard .dashboard-stats .dashboard-card .data .progress .icon{vertical-align:middle}.dashboard .graph-stats{margin-top:30px;width:100%;display:inline-block}.dashboard .graph-stats .left-card-container{float:left;width:75%;padding-right:9px}.dashboard .graph-stats .right-card-container{float:left;width:25%;padding-left:21px}.dashboard .sale-stock{width:100%;display:inline-block;display:grid;grid-template-columns:repeat(auto-fill,minmax(435px,1fr));grid-auto-rows:auto;grid-column-gap:30px;grid-row-gap:15px;margin-top:30px}.configuration-image{position:relative;height:33px;width:33px;top:15px;border-radius:3px;margin-right:5px}.download{position:relative;height:24px!important;width:24px!important;top:12px;margin-right:10px}.aside-nav-toggle{height:48px;width:100%;padding-top:15px;border-top:1px solid hsla(0,0%,63.5%,.2)}.aside-nav-toggle .close-icon,.aside-nav-toggle .open-icon{position:absolute;cursor:pointer;left:45%}.aside-nav-toggle.open{display:none}.linked-product-search-result{box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 0 9px 0 rgba(0,0,0,.16);z-index:10;text-align:left;border-radius:3px;background-color:#fff;width:70%;max-height:200px;overflow-y:auto}.linked-product-search-result li{padding:10px;border-bottom:1px solid #e8e8e8;cursor:pointer}.cart-rule-conditions table td.attribute,.catalog-rule-conditions table td.attribute{width:250px;padding-left:0}.cart-rule-conditions table td.operator,.cart-rule-conditions table td.value,.catalog-rule-conditions table td.operator,.catalog-rule-conditions table td.value{width:260px}.cart-rule-conditions table td.actions,.catalog-rule-conditions table td.actions{width:44px}.cart-rule-conditions table td.actions .icon,.catalog-rule-conditions table td.actions .icon{margin-top:6px}.sale-container .sale-section{font-size:16px}.sale-container .sale-section .secton-title{font-size:18px;color:#8e8e8e;padding:15px 0;border-bottom:1px solid hsla(0,0%,63.5%,.2)}.sale-container .sale-section .section-content{display:block;padding:20px 0}.sale-container .sale-section .section-content .row{display:block;padding:7px 0}.sale-container .sale-section .section-content .row .title{width:200px;color:#3a3a3a;letter-spacing:-.26px;display:inline-block}.sale-container .sale-section .section-content .row .value{color:#3a3a3a;letter-spacing:-.26px;display:inline-block}.sale-container .table .qty-row{display:block;margin-bottom:5px}.sale-container .table .qty-row:last-child{margin-bottom:0}.sale-container .table .radio{margin:0}.sale-container .summary-comment-container .comment-container{margin-top:20px;float:left}.sale-container .summary-comment-container .comment-container .comment-list{margin-top:40px}.sale-container .summary-comment-container .comment-container .comment-list li{margin-bottom:20px}.sale-container .summary-comment-container .comment-container .comment-list li:last-child{margin-bottom:0}.sale-container .summary-comment-container .comment-container .comment-list li p{margin:5px 0 0;color:#8e8e8e}.sale-container .sale-summary{margin-top:20px;height:130px;float:right}.sale-container .sale-summary tr td{padding:5px 8px;vertical-align:text-bottom}.sale-container .sale-summary tr.bold{font-weight:600;font-size:15px}.sale-container .sale-summary tr.border td{border-bottom:1px solid hsla(0,0%,63.5%,.2)}.stars{margin-top:5px}.stars .icon{width:16px;height:16px}.export-import{cursor:pointer}.export-import .export-icon,.export-import .import-icon{position:relative;top:10px}.export-import span{margin-left:2px}.rtl{direction:rtl}.rtl .navbar-top .navbar-top-right{text-align:left}.rtl .navbar-top .navbar-top-right .profile-info{margin:0 30px 0 25px}.rtl .navbar-top .navbar-top-right .profile-info i.icon{margin-left:0;margin-right:10px}.rtl .navbar-left{border-left:1px solid hsla(0,0%,63.5%,.2);border-right:none;left:calc(100% - 90px);background-color:#fff}.rtl .content-container{padding-right:90px;padding-left:0}.rtl .content-container .content .page-header .page-title{float:right}.rtl .content-container .content .page-header .page-action{float:left}.rtl .content-container .content .page-header .page-action a{margin-left:0}.rtl .content-container .content .page-header .control-group{margin-right:20px;margin-left:0}.rtl .content-container .content .page-header .control-group.date:after{margin-top:6px;position:absolute;margin-right:-35px}.rtl .content-container .content .page-header .control-group.date:last-child{margin-left:0}.rtl .content-container .content-wrapper{padding:25px 305px 25px 25px;margin-left:0}.rtl .content-container .aside-nav .active i{float:left;transform:rotate(180deg)}.rtl .dashboard .dashboard-stats .dashboard-card .data span{float:left}.rtl .dashboard .card{padding:20px 20px 0 0}.rtl .dashboard .card .card-info ul li .image{float:right;margin-right:0;margin-left:15px}.rtl .dashboard .card .card-info ul li .icon.angle-right-icon{left:30px;right:auto;transform:rotate(180deg)}.rtl .dashboard .graph-stats .left-card-container{float:right;padding-right:0}.rtl .dashboard .graph-stats .right-card-container{float:right;padding-left:0;padding-right:30px}.rtl .sale-container .sale-summary{float:left}.rtl .grid-container .filter-row-one .search-filter{border:2px solid #c7c7c7;border-radius:2px}.rtl .grid-container .filter-row-one .search-filter .control{border:none;padding-right:10px}.rtl .grid-container .filter-row-one .search-filter .icon-wrapper{padding-top:2px;padding-right:5px;border:none;border-right:2px solid #c7c7c7;border-radius:0}.rtl .grid-container .filter-row-two .filter-tag .icon.cross-icon,.rtl .grid-container .filter-row-two .filter-tag .wrapper{margin-right:10px;margin-left:0}.rtl .grid-container .filter-row-one .dropdown-filters{right:unset;position:static!important;left:25px}.rtl .grid-container .filter-row-one .dropdown-filters .per-page-label{position:static!important}.rtl .grid-container .filter-wrapper .filter-row-one .dropdown-filters .more-filters .dropdown-toggle .dropdown-header span{padding-right:5px}.rtl .grid-container .table tbody td.action a:first-child{margin-left:10px;margin-right:0}.rtl .table table{text-align:right}.rtl .table table .massaction-remove{margin-right:5px!important;margin-left:10px}.rtl .table table .btn.btn-primary{margin-right:10px!important}.rtl .dropdown-list.bottom-right{left:0;right:auto}.rtl .dropdown-list .dropdown-container{text-align:right}.rtl .accordian .accordian-header .icon{float:left}.rtl .tree-container .tree-item{padding-right:30px}.rtl .tree-container .tree-item .expand-icon,.rtl .tree-container .tree-item .folder-icon{margin-left:10px;margin-right:0}.rtl .tree-container>.tree-item{padding-right:0}.rtl .radio .radio-view{margin-left:5px}.rtl .image-wrapper .image-item{margin-right:0;margin-left:20px}.rtl .image-wrapper .image-item .remove-image{margin-right:0}.rtl .control-group label.required:before{content:"*";color:#fc6868;font-weight:700}.rtl .control-group label.required:after{content:none}.rtl .control-group label .locale{float:left}.rtl .control-group.date:after{margin-top:15px;position:absolute;margin-right:-35px}.rtl .pagination .page-item .icon{transform:rotate(180deg)}.accordian-header{background-color:#fbfbfb}.btn.btn-primary{background:#0041ff}.fixed-action{top:108px}.fixed-action,.fixed-action-slight{position:fixed;right:32px;z-index:20}.fixed-action-slight{top:94px}.pagination{margin-top:30px} \ No newline at end of file diff --git a/packages/Webkul/Admin/publishable/assets/mix-manifest.json b/packages/Webkul/Admin/publishable/assets/mix-manifest.json index c19b80422..cff254005 100755 --- a/packages/Webkul/Admin/publishable/assets/mix-manifest.json +++ b/packages/Webkul/Admin/publishable/assets/mix-manifest.json @@ -1,4 +1,4 @@ { "/js/admin.js": "/js/admin.js?id=2701b1627d73faa941d6", - "/css/admin.css": "/css/admin.css?id=bbb1e500385b8d7ade13" + "/css/admin.css": "/css/admin.css?id=1676f6fcbbb2a7b25767" } diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/OrderController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/OrderController.php index 01b0e9142..78da6fb5e 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/Sales/OrderController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/OrderController.php @@ -2,8 +2,10 @@ namespace Webkul\Admin\Http\Controllers\Sales; +use Illuminate\Support\Facades\Event; use Webkul\Admin\Http\Controllers\Controller; use Webkul\Sales\Repositories\OrderRepository; +use \Webkul\Sales\Repositories\OrderCommentRepository; class OrderController extends Controller { @@ -21,19 +23,32 @@ class OrderController extends Controller */ protected $orderRepository; + /** + * OrderCommentRepository object + * + * @var \Webkul\Sales\Repositories\OrderCommentRepository + */ + protected $orderCommentRepository; + /** * Create a new controller instance. * * @param \Webkul\Sales\Repositories\OrderRepository $orderRepository + * @param \Webkul\Sales\Repositories\OrderCommentRepository $orderCommentRepository * @return void */ - public function __construct(OrderRepository $orderRepository) + public function __construct( + OrderRepository $orderRepository, + OrderCommentRepository $orderCommentRepository + ) { $this->middleware('admin'); $this->_config = request('_config'); $this->orderRepository = $orderRepository; + + $this->orderCommentRepository = $orderCommentRepository; } /** @@ -77,4 +92,29 @@ class OrderController extends Controller return redirect()->back(); } + + /** + * Add comment to the order + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function comment($id) + { + $data = array_merge(request()->all(), [ + 'order_id' => $id, + ]); + + $data['customer_notified'] = isset($data['customer_notified']) ? 1 : 0; + + Event::dispatch('sales.order.comment.create.before', $data); + + $comment = $this->orderCommentRepository->create($data); + + Event::dispatch('sales.order.comment.create.after', $comment); + + session()->flash('success', trans('admin::app.sales.orders.comment-added-success')); + + return redirect()->back(); + } } \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index 350d86b17..cf4e64ea8 100755 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -187,6 +187,8 @@ Route::group(['middleware' => ['web']], function () { 'view' => 'admin::sales.orders.cancel' ])->name('admin.sales.orders.cancel'); + Route::post('/orders/create/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\OrderController@comment')->name('admin.sales.orders.comment'); + // Sales Invoices Routes Route::get('/invoices', 'Webkul\Admin\Http\Controllers\Sales\InvoiceController@index')->defaults('_config', [ diff --git a/packages/Webkul/Admin/src/Resources/assets/sass/partials/_sales.scss b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_sales.scss index 8fff0b4db..daab4efeb 100644 --- a/packages/Webkul/Admin/src/Resources/assets/sass/partials/_sales.scss +++ b/packages/Webkul/Admin/src/Resources/assets/sass/partials/_sales.scss @@ -48,8 +48,33 @@ } } + .summary-comment-container { + .comment-container { + margin-top: 20px; + float: left; + + .comment-list { + margin-top: 40px; + + li { + margin-bottom: 20px; + + &:last-child { + margin-bottom: 0; + } + + p { + margin: 0; + margin-top: 5px; + color: #8e8e8e; + } + } + } + } + } + .sale-summary { - margin-top: 2%; + margin-top: 20px; height: 130px; float: right; diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index 545db5abe..26ed42d01 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -370,7 +370,11 @@ return [ 'total-due' => 'المجموع المستحق', 'cancel-confirm-msg' => 'هل أنت متأكد من أنك تريد إلغاء هذا الطلب ؟', 'refunds' => 'المبالغ المستردة', - 'refunded' => 'تم رد الأموال' + 'refunded' => 'تم رد الأموال', + 'comment-added-success' => 'Comment addded successfully.', + 'comment' => 'Comment', + 'submit-comment' => 'Submit Comment', + 'notify-customer' => 'Notify Customer', ], 'invoices' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index db4d43661..ad95b02b0 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -370,7 +370,13 @@ return [ 'total-due' => 'Total Due', 'cancel-confirm-msg' => 'Are you sure you want to cancel this order ?', 'refund-btn-title' => 'Refund', - 'refunds' => 'Refunds' + 'refunds' => 'Refunds', + 'comment-added-success' => 'Comment addded successfully.', + 'comment' => 'Comment', + 'submit-comment' => 'Submit Comment', + 'notify-customer' => 'Notify Customer', + 'customer-notified' => ':date | Customer Notified', + 'customer-not-notified' => ':date | Customer Not Notified' ], 'invoices' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index bb964621a..27f930da2 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -370,7 +370,11 @@ return [ 'cancel-confirm-msg' => 'مطمئن هستید که می خواهید این سفارش را لغو کنید ؟', 'refunds' => 'بازپرداخت', 'refund-btn-title' => 'بازپرداخت', - 'refunded' => 'بازپرداخت' + 'refunded' => 'بازپرداخت', + 'comment-added-success' => 'Comment addded successfully.', + 'comment' => 'Comment', + 'submit-comment' => 'Submit Comment', + 'notify-customer' => 'Notify Customer', ], 'invoices' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php index 5b839b9d8..d3f6cbce7 100644 --- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php @@ -370,7 +370,11 @@ return [ 'total-due' => 'Total Due', 'cancel-confirm-msg' => 'Weet u zeker dat u deze bestelling wilt annuleren ?', 'refund-btn-title' => 'Terugbetaling', - 'refunds' => 'Terugbetalingen' + 'refunds' => 'Terugbetalingen', + 'comment-added-success' => 'Comment addded successfully.', + 'comment' => 'Comment', + 'submit-comment' => 'Submit Comment', + 'notify-customer' => 'Notify Customer', ], 'invoices' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php index 811358063..ee8d39fdd 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -370,7 +370,11 @@ return [ 'total-due' => 'Total Devido', 'cancel-confirm-msg' => 'Tem certeza que deseja cancelar esse pedido ?', 'refunds' => 'Refunds', - 'refunded' => 'Refunded' + 'refunded' => 'Refunded', + 'comment-added-success' => 'Comment addded successfully.', + 'comment' => 'Comment', + 'submit-comment' => 'Submit Comment', + 'notify-customer' => 'Notify Customer', ], 'invoices' => [ diff --git a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php index e0d986c37..295821471 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php @@ -339,66 +339,107 @@ - - - - - - +
+
+
+ @csrf() - @if ($order->haveStockableItems()) +
+ + + @{{ errors.first('comment') }} +
+ +
+ + + + {{ __('admin::app.sales.orders.notify-customer') }} + +
+ + + + +
    + @foreach ($order->comments()->orderBy('id', 'desc')->get() as $comment) +
  • + + @if ($comment->customer_notified) + {!! __('admin::app.sales.orders.customer-notified', ['date' => $comment->created_at]) !!} + @else + {!! __('admin::app.sales.orders.customer-not-notified', ['date' => $comment->created_at]) !!} + @endif + + +

    {{ $comment->comment }}

    +
  • + @endforeach +
+
+ +
{{ __('admin::app.sales.orders.subtotal') }}-{{ core()->formatBasePrice($order->base_sub_total) }}
- + - + - @endif - @if ($order->base_discount_amount > 0) - - + + + + + @endif - @if ($order->coupon_code) - ({{ $order->coupon_code }}) - @endif - + @if ($order->base_discount_amount > 0) + + + + + + @endif + + + - + - @endif - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - -
{{ __('admin::app.sales.orders.shipping-handling') }}{{ __('admin::app.sales.orders.subtotal') }} -{{ core()->formatBasePrice($order->base_shipping_amount) }}{{ core()->formatBasePrice($order->base_sub_total) }}
- {{ __('admin::app.sales.orders.discount') }} + @if ($order->haveStockableItems()) +
{{ __('admin::app.sales.orders.shipping-handling') }}-{{ core()->formatBasePrice($order->base_shipping_amount) }}
+ {{ __('admin::app.sales.orders.discount') }} + + @if ($order->coupon_code) + ({{ $order->coupon_code }}) + @endif + -{{ core()->formatBasePrice($order->base_discount_amount) }}
{{ __('admin::app.sales.orders.tax') }} -{{ core()->formatBasePrice($order->base_discount_amount) }}{{ core()->formatBasePrice($order->base_tax_amount) }}
{{ __('admin::app.sales.orders.tax') }}-{{ core()->formatBasePrice($order->base_tax_amount) }}
{{ __('admin::app.sales.orders.grand-total') }}-{{ core()->formatBasePrice($order->base_grand_total) }}
{{ __('admin::app.sales.orders.grand-total') }}-{{ core()->formatBasePrice($order->base_grand_total) }}
{{ __('admin::app.sales.orders.total-paid') }}-{{ core()->formatBasePrice($order->base_grand_total_invoiced) }}
{{ __('admin::app.sales.orders.total-paid') }}-{{ core()->formatBasePrice($order->base_grand_total_invoiced) }}
{{ __('admin::app.sales.orders.total-refunded') }}-{{ core()->formatBasePrice($order->base_grand_total_refunded) }}
{{ __('admin::app.sales.orders.total-due') }}-{{ core()->formatBasePrice($order->base_total_due) }}
+ + {{ __('admin::app.sales.orders.total-refunded') }} + - + {{ core()->formatBasePrice($order->base_grand_total_refunded) }} + + + {{ __('admin::app.sales.orders.total-due') }} + - + {{ core()->formatBasePrice($order->base_total_due) }} + + + diff --git a/packages/Webkul/Sales/src/Contracts/OrderComment.php b/packages/Webkul/Sales/src/Contracts/OrderComment.php new file mode 100755 index 000000000..e0738761c --- /dev/null +++ b/packages/Webkul/Sales/src/Contracts/OrderComment.php @@ -0,0 +1,7 @@ +increments('id'); + $table->text('comment'); + $table->boolean('customer_notified')->default(0); + + $table->integer('order_id')->unsigned()->nullable(); + $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('order_comments'); + } +} diff --git a/packages/Webkul/Sales/src/Models/Order.php b/packages/Webkul/Sales/src/Models/Order.php index 48d5725de..436c179d3 100755 --- a/packages/Webkul/Sales/src/Models/Order.php +++ b/packages/Webkul/Sales/src/Models/Order.php @@ -70,7 +70,6 @@ class Order extends Model implements OrderContract return $this->belongsTo(CartProxy::modelClass()); } - /** * Get the order items record associated with the order. */ @@ -79,6 +78,14 @@ class Order extends Model implements OrderContract return $this->hasMany(OrderItemProxy::modelClass())->whereNull('parent_id'); } + /** + * Get the comments record associated with the order. + */ + public function comments() + { + return $this->hasMany(OrderCommentProxy::modelClass()); + } + /** * Get the order items record associated with the order. */ diff --git a/packages/Webkul/Sales/src/Models/OrderComment.php b/packages/Webkul/Sales/src/Models/OrderComment.php new file mode 100755 index 000000000..3a3021979 --- /dev/null +++ b/packages/Webkul/Sales/src/Models/OrderComment.php @@ -0,0 +1,24 @@ +belongsTo(OrderProxy::modelClass()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Sales/src/Models/OrderCommentProxy.php b/packages/Webkul/Sales/src/Models/OrderCommentProxy.php new file mode 100755 index 000000000..819030bc0 --- /dev/null +++ b/packages/Webkul/Sales/src/Models/OrderCommentProxy.php @@ -0,0 +1,10 @@ +