Subversion Repositories SmartDukaan

Rev

Rev 32565 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
28300 tejbeer 1
package com.spice.profitmandi.web.controller;
2
 
32539 amit.gupta 3
import com.spice.profitmandi.common.model.ProfitMandiConstants;
28493 tejbeer 4
import com.spice.profitmandi.dao.entity.inventory.State;
5
import com.spice.profitmandi.dao.entity.inventory.Vendor;
34329 aman.kumar 6
import com.spice.profitmandi.dao.entity.inventory.Warehouse;
31238 amit.gupta 7
import com.spice.profitmandi.dao.entity.transaction.Seller;
8
import com.spice.profitmandi.dao.entity.transaction.SellerWarehouse;
9
import com.spice.profitmandi.dao.entity.transaction.WarehouseAddressMapping;
10
import com.spice.profitmandi.dao.entity.transaction.WarehouseAddressMaster;
28300 tejbeer 11
import com.spice.profitmandi.dao.entity.warehouse.Supplier;
28493 tejbeer 12
import com.spice.profitmandi.dao.enumuration.inventory.InventoryType;
13
import com.spice.profitmandi.dao.enumuration.inventory.WarehouseType;
14
import com.spice.profitmandi.dao.hrms.CreateNewSupplier;
15
import com.spice.profitmandi.dao.hrms.WarehouseIdPrefixModel;
34329 aman.kumar 16
import com.spice.profitmandi.dao.model.hdfc.SupplierFormData;
28493 tejbeer 17
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
18
import com.spice.profitmandi.dao.repository.inventory.VendorRepository;
34329 aman.kumar 19
import com.spice.profitmandi.dao.repository.inventory.WarehouseRepository;
28493 tejbeer 20
import com.spice.profitmandi.dao.repository.transaction.SellerRepository;
21
import com.spice.profitmandi.dao.repository.transaction.SellerWarehouseRepository;
32383 amit.gupta 22
import com.spice.profitmandi.dao.repository.transaction.WarehouseAddressMappingRepository;
23
import com.spice.profitmandi.dao.repository.transaction.WarehouseAddressMasterRepository;
28300 tejbeer 24
import com.spice.profitmandi.dao.repository.warehouse.SupplierRepository;
28493 tejbeer 25
import com.spice.profitmandi.service.warehouse.WarehouseService;
28300 tejbeer 26
import com.spice.profitmandi.web.util.MVCResponseSender;
31238 amit.gupta 27
import org.apache.logging.log4j.LogManager;
28
import org.apache.logging.log4j.Logger;
29
import org.springframework.beans.factory.annotation.Autowired;
30
import org.springframework.stereotype.Controller;
31
import org.springframework.transaction.annotation.Transactional;
32
import org.springframework.ui.Model;
32565 tejbeer 33
import org.springframework.web.bind.annotation.*;
28300 tejbeer 34
 
31238 amit.gupta 35
import javax.servlet.http.HttpServletRequest;
36
import java.util.HashMap;
37
import java.util.List;
38
import java.util.Map;
39
import java.util.stream.Collectors;
28493 tejbeer 40
 
28300 tejbeer 41
@Controller
42
@Transactional(rollbackFor = Throwable.class)
43
public class SupplierController {
28493 tejbeer 44
 
32075 tejbeer 45
    @Autowired
46
    private SupplierRepository supplierRepository;
28300 tejbeer 47
 
32075 tejbeer 48
    @Autowired
49
    private MVCResponseSender mvcResponseSender;
28300 tejbeer 50
 
28493 tejbeer 51
 
32075 tejbeer 52
    @Autowired
53
    private SellerRepository sellerRepository;
28493 tejbeer 54
 
32075 tejbeer 55
    @Autowired
56
    private WarehouseService warehouseService;
28493 tejbeer 57
 
32075 tejbeer 58
    @Autowired
59
    private SellerWarehouseRepository sellerWarehouseRepository;
28493 tejbeer 60
 
32075 tejbeer 61
    @Autowired
62
    private VendorRepository vendorRepository;
28493 tejbeer 63
 
32075 tejbeer 64
    @Autowired
32383 amit.gupta 65
    private WarehouseAddressMappingRepository warehouseAddressMappingRepository;
28493 tejbeer 66
 
32075 tejbeer 67
    @Autowired
32383 amit.gupta 68
    private WarehouseAddressMasterRepository warehouseAddressMasterRepository;
28493 tejbeer 69
 
32075 tejbeer 70
    @Autowired
71
    private StateRepository stateRepository;
28493 tejbeer 72
 
32075 tejbeer 73
    private static final Logger LOGGER = LogManager.getLogger(SupplierController.class);
28493 tejbeer 74
 
34329 aman.kumar 75
    @Autowired
76
    WarehouseRepository warehouseRepository;
28493 tejbeer 77
 
32075 tejbeer 78
    @RequestMapping(value = "/getAllInActiveSupplier", method = RequestMethod.GET)
79
    public String getShowInActiveSupplier(HttpServletRequest request, Model model) throws Exception {
28493 tejbeer 80
 
32075 tejbeer 81
        List<Supplier> supplierInactives = supplierRepository.selectByStatus(false);
28493 tejbeer 82
 
32075 tejbeer 83
        model.addAttribute("supplierInactives", supplierInactives);
28493 tejbeer 84
 
32075 tejbeer 85
        LOGGER.info("supplierInactives" + supplierInactives);
28300 tejbeer 86
 
32075 tejbeer 87
        return "supplier-in-active";
28300 tejbeer 88
 
32075 tejbeer 89
    }
28493 tejbeer 90
 
34329 aman.kumar 91
    @RequestMapping(value = "/getAllSupplier", method = RequestMethod.GET)
92
    public String getShowSupplier(HttpServletRequest request, Model model) throws Exception {
93
 
94
        List<Supplier> supplierAcvtives = supplierRepository.selectByStatus(true);
95
 
32565 tejbeer 96
        List<SellerWarehouse> sellerWarehouses = sellerWarehouseRepository.selectAll();
97
        List<Integer> sellerwarehouseIds = sellerWarehouses.stream().map(x -> x.getWarehouseId()).collect(Collectors.toList());
98
        LOGGER.info("sellerWarehouses" + sellerWarehouses);
99
        Map<Integer, WarehouseIdPrefixModel> warehouseIdAndState = new HashMap<>();
100
 
101
        for (SellerWarehouse sw : sellerWarehouses) {
102
 
103
            WarehouseAddressMapping warehouseAddressMapping = warehouseAddressMappingRepository.selectByWarehouseId(sw.getWarehouseId());
104
            LOGGER.info("warehouseAddressMapping" + warehouseAddressMapping);
105
            if (warehouseAddressMapping != null) {
106
                WarehouseAddressMaster WarehouseAddressMaster = warehouseAddressMasterRepository.selectById(warehouseAddressMapping.getAddressId());
107
                LOGGER.info("warehouseAddressMappingAddreesId" + warehouseAddressMapping.getAddressId());
108
                LOGGER.info("WarehouseAddressMaster" + WarehouseAddressMaster);
109
                State state = stateRepository.selectById(WarehouseAddressMaster.getStateId());
110
                WarehouseIdPrefixModel wp = new WarehouseIdPrefixModel();
111
                wp.setPrefix(sw.getPrefix());
112
                wp.setStateName(state.getName());
113
                warehouseIdAndState.put(sw.getWarehouseId(), wp);
114
                LOGGER.info("state" + state);
115
            }
116
        }
117
        LOGGER.info("warehouseIdAndState" + warehouseIdAndState);
118
        model.addAttribute("warehouseIdAndState", warehouseIdAndState);
119
 
120
        List<State> state = stateRepository.selectAll();
121
 
34329 aman.kumar 122
        model.addAttribute("suppliers", supplierAcvtives);
123
        model.addAttribute("response1", mvcResponseSender.createResponseString(supplierAcvtives));
32565 tejbeer 124
        model.addAttribute("state", state);
34329 aman.kumar 125
 
126
        return "supplier";
127
 
32565 tejbeer 128
    }
129
 
34329 aman.kumar 130
 
32075 tejbeer 131
    @RequestMapping(value = "/getCreateNewSupplier", method = RequestMethod.GET)
132
    public String getCreateNewSupplier(HttpServletRequest request, Model model) throws Exception {
32539 amit.gupta 133
        List<SellerWarehouse> sellerWarehouses = sellerWarehouseRepository.selectAll();
134
        Map<Integer, String> warehouseMap = ProfitMandiConstants.WAREHOUSE_MAP;
135
        sellerWarehouses = sellerWarehouses.stream().filter(x -> warehouseMap.containsKey(x.getWarehouseId())).collect(Collectors.toList());
28493 tejbeer 136
 
32075 tejbeer 137
        Map<Integer, WarehouseIdPrefixModel> warehouseIdAndState = new HashMap<>();
28493 tejbeer 138
 
32075 tejbeer 139
        for (SellerWarehouse sw : sellerWarehouses) {
32383 amit.gupta 140
            WarehouseAddressMapping warehouseAddressMapping = warehouseAddressMappingRepository.selectByWarehouseId(sw.getWarehouseId());
32075 tejbeer 141
            LOGGER.info("warehouseAddressMapping" + warehouseAddressMapping);
142
            if (warehouseAddressMapping != null) {
32383 amit.gupta 143
                WarehouseAddressMaster WarehouseAddressMaster = warehouseAddressMasterRepository.selectById(warehouseAddressMapping.getAddressId());
32075 tejbeer 144
                LOGGER.info("warehouseAddressMappingAddreesId" + warehouseAddressMapping.getAddressId());
145
                LOGGER.info("WarehouseAddressMaster" + WarehouseAddressMaster);
146
                State state = stateRepository.selectById(WarehouseAddressMaster.getStateId());
147
                WarehouseIdPrefixModel wp = new WarehouseIdPrefixModel();
148
                wp.setPrefix(sw.getPrefix());
149
                wp.setStateName(state.getName());
150
                warehouseIdAndState.put(sw.getWarehouseId(), wp);
151
                LOGGER.info("state" + state);
152
            }
153
        }
154
        LOGGER.info("warehouseIdAndState" + warehouseIdAndState);
155
        model.addAttribute("warehouseIdAndState", warehouseIdAndState);
28493 tejbeer 156
 
32075 tejbeer 157
        List<State> state = stateRepository.selectAll();
28493 tejbeer 158
 
32075 tejbeer 159
        model.addAttribute("state", state);
32565 tejbeer 160
        model.addAttribute("warehouseMap", ProfitMandiConstants.WAREHOUSE_MAP);
28493 tejbeer 161
 
32075 tejbeer 162
        return "new-supplier";
163
    }
28493 tejbeer 164
 
32075 tejbeer 165
    @RequestMapping(value = "/setStatusInActive", method = RequestMethod.POST)
166
    public String setInActiveSupplier(HttpServletRequest request, @RequestParam(name = "id", required = true, defaultValue = "0") int id, Model model) throws Exception {
28493 tejbeer 167
 
32075 tejbeer 168
        Supplier supplier = supplierRepository.selectById(id);
28493 tejbeer 169
 
32075 tejbeer 170
        supplier.setStatus(false);
28493 tejbeer 171
 
32075 tejbeer 172
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
28493 tejbeer 173
 
32075 tejbeer 174
        return "response";
175
    }
28493 tejbeer 176
 
32075 tejbeer 177
    @RequestMapping(value = "/setStatusActive", method = RequestMethod.POST)
178
    public String setActiveSupplier(HttpServletRequest request, @RequestParam(name = "id", required = true, defaultValue = "0") int id, Model model) throws Exception {
28493 tejbeer 179
 
32075 tejbeer 180
        Supplier supplier = supplierRepository.selectById(id);
28493 tejbeer 181
 
32075 tejbeer 182
        supplier.setStatus(true);
28493 tejbeer 183
 
32075 tejbeer 184
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
28493 tejbeer 185
 
32075 tejbeer 186
        return "response";
28493 tejbeer 187
 
32075 tejbeer 188
    }
28493 tejbeer 189
 
32075 tejbeer 190
    @RequestMapping(value = "/submitNewSupplier", method = RequestMethod.POST)
191
    public String getCreateNewSupplier(HttpServletRequest request, @RequestBody CreateNewSupplier createNewSupplier, Model model) throws Exception {
28493 tejbeer 192
 
32075 tejbeer 193
        Supplier supplier = new Supplier();
28493 tejbeer 194
 
32075 tejbeer 195
        supplier.setName(createNewSupplier.getName());
196
        supplier.setCommunicationAddress(createNewSupplier.getCommunicationAddress());
197
        supplier.setContactEmail(createNewSupplier.getContactEmail());
198
        supplier.setContactFax(createNewSupplier.getContactFax());
199
        supplier.setContactName(createNewSupplier.getContactPerson());
32565 tejbeer 200
 
201
        supplier.setContactPhone(createNewSupplier.getContactPhone());
32075 tejbeer 202
        supplier.setGstin(createNewSupplier.getGst());
203
        supplier.setHeadDesignation(createNewSupplier.getHeadDesign());
204
        supplier.setHeadEmail(createNewSupplier.getHeadEmail());
205
        supplier.setHeadName(createNewSupplier.getHeadName());
206
        supplier.setPan(createNewSupplier.getPan());
207
        supplier.setPhone(createNewSupplier.getPhone());
208
        supplier.setPoValidityLimit(createNewSupplier.getpOValidityLimit());
209
        supplier.setRegisteredAddress(createNewSupplier.getRegisteredAddress());
210
        supplier.setStateId(createNewSupplier.getState());
32565 tejbeer 211
        supplier.setInternalWarehouseId(createNewSupplier.getInternalWarehouseId());
32075 tejbeer 212
        supplierRepository.persist(supplier);
28493 tejbeer 213
 
32075 tejbeer 214
        Vendor vendor = new Vendor();
215
        vendor.setName(supplier.getName());
216
        vendor.setId(supplier.getId());
217
        vendorRepository.persist(vendor);
218
        LOGGER.info("supplierId" + supplier.getId());
219
        LOGGER.info("vendorId" + vendor.getId());
28493 tejbeer 220
 
32383 amit.gupta 221
        List<WarehouseAddressMapping> warehouseAddressMappings = warehouseAddressMappingRepository.selectAllByIds(createNewSupplier.getWarehouseId());
32075 tejbeer 222
        LOGGER.info("warehouseAddressMappings" + warehouseAddressMappings);
28493 tejbeer 223
 
32075 tejbeer 224
        for (WarehouseAddressMapping wamp : warehouseAddressMappings) {
225
            List<SellerWarehouse> sellerWarehouse = sellerWarehouseRepository.selectBywarehouseId(wamp.getWarehouseId());
226
            for (SellerWarehouse sw : sellerWarehouse) {
227
                Seller seller = sellerRepository.selectById(sw.getSellerId());
28493 tejbeer 228
 
32383 amit.gupta 229
                WarehouseAddressMaster wam = warehouseAddressMasterRepository.selectById(wamp.getAddressId());
28493 tejbeer 230
 
32075 tejbeer 231
                // GOOD - WarehouseType.OURS, InventoryType.GOOD
232
                warehouseService.createVendorWarehouse(WarehouseType.OURS, InventoryType.GOOD, seller.getLabel(), wamp.getWarehouseId(), wam, vendor.getId());
28493 tejbeer 233
 
32075 tejbeer 234
                // BAD - WarehouseType.OURS, InventoryType.BAD
235
                warehouseService.createVendorWarehouse(WarehouseType.OURS, InventoryType.BAD, seller.getLabel(), wamp.getWarehouseId(), wam, vendor.getId());
28493 tejbeer 236
 
32075 tejbeer 237
                // VIRTUAL - WarehouseType.THIRD_PARTY, InventoryType.GOOD
32371 amit.gupta 238
                warehouseService.createVendorWarehouse(WarehouseType.THIRD_PARTY, InventoryType.GOOD, seller.getLabel(), wamp.getWarehouseId(), wam, vendor.getId());
28493 tejbeer 239
 
32075 tejbeer 240
            }
28493 tejbeer 241
 
32075 tejbeer 242
        }
28493 tejbeer 243
 
32565 tejbeer 244
        //model.addAttribute("response1", mvcResponseSender.createResponseString(true));
32075 tejbeer 245
 
32565 tejbeer 246
        return getShowInActiveSupplier(request, model);
247
 
32075 tejbeer 248
    }
34329 aman.kumar 249
 
250
    @RequestMapping(value = "/supplier/edit/{supplierId}", method = RequestMethod.GET)
251
    public String getEditSupplier(HttpServletRequest request, Model model, @PathVariable int supplierId) throws Exception {
252
        Supplier supplier  = supplierRepository.selectById(supplierId);
253
        List<SellerWarehouse> sellerWarehouses = sellerWarehouseRepository.selectAll();
254
        Map<Integer, WarehouseIdPrefixModel> warehouseIdAndState = new HashMap<>();
255
 
256
        List<Warehouse> supplierWarehouses = warehouseRepository.selectVendorWarehouses(supplierId, WarehouseType.OURS, InventoryType.GOOD);
257
        List<Integer> supplierPhysicalWarehouseIds = supplierWarehouses.stream().map(x -> x.getShippingWarehouseId()).collect(Collectors.toList());
258
        LOGGER.info("supplierPhysicalWarehouseIds" + supplierPhysicalWarehouseIds);
259
        for (SellerWarehouse sw : sellerWarehouses) {
260
            WarehouseAddressMapping warehouseAddressMapping = warehouseAddressMappingRepository.selectByWarehouseId(sw.getWarehouseId());
261
            if (warehouseAddressMapping != null) {
262
                WarehouseAddressMaster WarehouseAddressMaster = warehouseAddressMasterRepository.selectById(warehouseAddressMapping.getAddressId());
263
                State state = stateRepository.selectById(WarehouseAddressMaster.getStateId());
264
                WarehouseIdPrefixModel wp = new WarehouseIdPrefixModel();
265
                wp.setPrefix(sw.getPrefix());
266
                wp.setStateName(state.getName());
267
                warehouseIdAndState.put(sw.getWarehouseId(), wp);
268
            }
269
        }
270
        LOGGER.info("warehouseIdAndState" + warehouseIdAndState);
271
        model.addAttribute("warehouseIdAndState", warehouseIdAndState);
272
 
273
        List<State> state = stateRepository.selectAll();
274
 
275
        model.addAttribute("state", state);
276
        model.addAttribute("warehouseMap", ProfitMandiConstants.WAREHOUSE_MAP);
277
        model.addAttribute("supplier", supplier);
278
        model.addAttribute("supplierPhysicalWarehouseIds", supplierPhysicalWarehouseIds);
279
        return "edit-supplier";
280
    }
281
 
282
    @RequestMapping(value = "/supplier/update/{supplierId}", method = RequestMethod.POST)
283
    public String updateSupplier(@PathVariable("supplierId") int supplierId,
284
                                 @RequestBody SupplierFormData supplierFormData,
285
                                 Model model) throws Exception {
286
        LOGGER.info("supplierFormDataaaa - " + supplierFormData);
287
 
288
        Supplier supplier = supplierRepository.selectById(supplierId);
289
        supplier.setContactPhone(supplierFormData.getInputPhone());
290
        supplier.setGstin(supplierFormData.getInputGst());
291
        supplier.setPan(supplierFormData.getInputPan());
292
        supplier.setFax(supplierFormData.getInputFax());
293
        supplier.setHeadName(supplierFormData.getInputHeadName());
294
        supplier.setHeadDesignation(supplierFormData.getInputHeadDesign());
295
        supplier.setHeadEmail(supplierFormData.getInputHeadEmail());
296
        supplier.setContactName(supplierFormData.getInputContactPerson());
297
        supplier.setContactPhone(supplierFormData.getInputContactPhone());
298
        supplier.setContactEmail(supplierFormData.getInputContactEmail());
299
        supplier.setFax((supplierFormData.getInputFax()));
300
        supplier.setRegisteredAddress(supplierFormData.getInputRegisteredAddress());
301
        supplier.setCommunicationAddress(supplierFormData.getInputCommunicationAddress());
302
        supplier.setTnc(supplierFormData.getInputTermConditions());
303
        supplier.setInternalWarehouseId(supplierFormData.getInternalWarehouseId());
304
        supplier.setStateId(supplierFormData.getStateId());
305
        supplier.setPoValidityLimit(supplierFormData.getInputPOValidityLimit());
306
 
307
        List<Integer> newWarehouseIds = supplierFormData.getInputWarehouseLocation();
308
 
309
        // Only run the warehouse update logic if new warehouse IDs are provided
310
        if (newWarehouseIds != null && !newWarehouseIds.isEmpty()) {
311
            List<Warehouse> existingWarehouses = warehouseRepository.selectVendorWarehouses(supplierId, WarehouseType.OURS, InventoryType.GOOD);
312
            List<Integer> existingWarehouseIds = existingWarehouses.stream().map(Warehouse::getShippingWarehouseId).collect(Collectors.toList());
313
 
314
            // Filter out any IDs that are already present
315
            List<Integer> warehousesToAdd = newWarehouseIds.stream()
316
                    .filter(id -> !existingWarehouseIds.contains(id))
317
                    .collect(Collectors.toList());
318
 
319
            if (!warehousesToAdd.isEmpty()) {
320
                for (Integer warehouseId : warehousesToAdd) {
321
                    WarehouseAddressMapping warehouseAddressMapping = warehouseAddressMappingRepository.selectByWarehouseId(warehouseId);
322
                    if (warehouseAddressMapping != null) {
323
                        List<SellerWarehouse> sellerWarehouses = sellerWarehouseRepository.selectBywarehouseId(warehouseAddressMapping.getWarehouseId());
324
                        for (SellerWarehouse sellerWarehouse : sellerWarehouses) {
325
                            Seller seller = sellerRepository.selectById(sellerWarehouse.getSellerId());
326
                            WarehouseAddressMaster wam = warehouseAddressMasterRepository.selectById(warehouseAddressMapping.getAddressId());
327
 
328
                            // GOOD - WarehouseType.OURS, InventoryType.GOOD
329
                            warehouseService.createVendorWarehouse(WarehouseType.OURS, InventoryType.GOOD, seller.getLabel(), warehouseId, wam, supplierId);
330
 
331
                            // BAD - WarehouseType.OURS, InventoryType.BAD
332
                            warehouseService.createVendorWarehouse(WarehouseType.OURS, InventoryType.BAD, seller.getLabel(), warehouseId, wam, supplierId);
333
 
334
                            // VIRTUAL - WarehouseType.THIRD_PARTY, InventoryType.GOOD
335
                            warehouseService.createVendorWarehouse(WarehouseType.THIRD_PARTY, InventoryType.GOOD, seller.getLabel(), warehouseId, wam, supplierId);
336
                        }
337
                    }
338
                }
339
            }
340
        }
341
 
342
        return "edit-supplier";
343
    }
344
 
345
 
346
 
347
 
348
 
28300 tejbeer 349
}