Subversion Repositories SmartDukaan

Rev

Rev 37474 | Rev 37480 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
23755 amit.gupta 1
package com.smartdukaan.cron;
23723 amit.gupta 2
 
32782 raveendra. 3
import com.smartdukaan.cron.migrations.RunOnceTasks;
4
import com.smartdukaan.cron.scheduled.*;
5
import com.smartdukaan.cron.scheduled.b2b.Listing;
36745 ranu 6
import com.smartdukaan.cron.scheduled.beatmiss.BeatMissDetectorRunner;
32782 raveendra. 7
import com.smartdukaan.cron.scheduled.leadsync.LeadSyncRunner;
32831 amit.gupta 8
import com.smartdukaan.cron.scheduled.ordertracking.OrderTrackingService;
33274 amit.gupta 9
import com.smartdukaan.cron.scheduled.purchaseorder.POScheduler;
34860 ranu 10
import com.smartdukaan.cron.scheduled.razorpay.FetchPartnersDisbursementTask;
36058 ranu 11
import com.smartdukaan.cron.scheduled.knowlarity.KnowlarityCallMonitorScheduler;
12
import com.spice.profitmandi.common.model.InvoicePdfModel;
34443 vikas.jang 13
import com.spice.profitmandi.common.model.ProfitMandiConstants;
32782 raveendra. 14
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
15
import com.spice.profitmandi.dao.repository.cs.CsService;
16
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
36035 amit 17
import com.spice.profitmandi.dao.service.shopify.ShopifyProductSyncService;
32782 raveendra. 18
import com.spice.profitmandi.dao.util.ContentPojoPopulator;
19
import com.spice.profitmandi.service.integrations.samsung.upgradeoffer.UpgradeOfferService;
36063 ranu 20
import com.spice.profitmandi.service.mail.MailOutboxService;
23723 amit.gupta 21
import org.apache.logging.log4j.LogManager;
22
import org.apache.logging.log4j.Logger;
28389 amit.gupta 23
import org.apache.velocity.app.VelocityEngine;
24
import org.apache.velocity.exception.VelocityException;
23898 amit.gupta 25
import org.springframework.beans.factory.annotation.Autowired;
26
import org.springframework.boot.ApplicationArguments;
27
import org.springframework.boot.ApplicationRunner;
23723 amit.gupta 28
import org.springframework.boot.WebApplicationType;
29
import org.springframework.boot.autoconfigure.SpringBootApplication;
30
import org.springframework.boot.builder.SpringApplicationBuilder;
31
import org.springframework.context.annotation.Bean;
32
import org.springframework.context.annotation.ComponentScan;
34554 tejus.loha 33
import org.springframework.context.annotation.EnableAspectJAutoProxy;
23935 amit.gupta 34
import org.springframework.context.annotation.Primary;
23723 amit.gupta 35
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
36
import org.springframework.core.io.ClassPathResource;
35393 amit 37
import org.springframework.core.io.Resource;
23906 amit.gupta 38
import org.springframework.mail.javamail.JavaMailSender;
37453 amit 39
import com.spice.profitmandi.common.services.AuthenticatedIdentityMailSender;
23906 amit.gupta 40
import org.springframework.mail.javamail.JavaMailSenderImpl;
28389 amit.gupta 41
import org.springframework.ui.velocity.VelocityEngineFactoryBean;
23723 amit.gupta 42
 
32782 raveendra. 43
import java.io.FileInputStream;
44
import java.io.IOException;
45
import java.time.LocalDate;
37058 amit 46
import java.time.LocalDateTime;
32782 raveendra. 47
import java.time.YearMonth;
48
import java.util.ArrayList;
49
import java.util.Arrays;
50
import java.util.List;
51
import java.util.Properties;
52
import java.util.stream.Collectors;
23724 amit.gupta 53
 
23723 amit.gupta 54
@SpringBootApplication
34554 tejus.loha 55
@EnableAspectJAutoProxy
23755 amit.gupta 56
@ComponentScan("com.smartdukaan.cron.*, com.spice.profitmandi.common.*")
24122 govind 57
public class Application implements ApplicationRunner {
58
 
31753 tejbeer 59
    private static final Logger LOGGER = LogManager.getLogger(Application.class);
24122 govind 60
 
31753 tejbeer 61
    @Autowired
62
    LeadSyncRunner leadSyncRunner;
30120 amit.gupta 63
 
31753 tejbeer 64
    @Autowired
65
    StandAlone standAlone;
30209 amit.gupta 66
 
31753 tejbeer 67
    @Autowired
68
    UpgradeOfferService upgradeOfferService;
27392 amit.gupta 69
 
31753 tejbeer 70
    @Autowired
71
    private TicketRelatedScheduledTask ticketRelatedScheduledTask;
28368 tejbeer 72
 
31753 tejbeer 73
    @Autowired
74
    private OnBoardingRelatedSchelduleTask onBoardingRelatedSchelduleTask;
28921 tejbeer 75
 
31753 tejbeer 76
    @Autowired
77
    private InvestmentRelatedTasks investmentRelatedTasks;
27392 amit.gupta 78
 
31753 tejbeer 79
    @Autowired
80
    private CsService csService;
29814 tejbeer 81
 
31753 tejbeer 82
    @Autowired
83
    private FofoOrderItemRepository fofoOrderItemRepository;
24603 amit.gupta 84
 
31753 tejbeer 85
    @Autowired
86
    private ContentPojoPopulator contentPojoPopulator;
29361 tejbeer 87
 
31753 tejbeer 88
    @Autowired
89
    private Listing listing;
24122 govind 90
 
32831 amit.gupta 91
    @Autowired
92
    OrderTrackingService orderTrackingService;
93
 
36306 amit 94
    @Autowired
95
    BatchScheduledTasks batchScheduledTasks;
96
 
36745 ranu 97
    @Autowired
98
    private BeatMissDetectorRunner beatMissDetectorRunner;
99
 
31753 tejbeer 100
    public static void main(String[] args) throws Throwable {
101
        try {
35803 amit 102
            WebApplicationType webType = WebApplicationType.SERVLET;
103
            for (String arg : args) {
104
                if (arg.contains("spring.main.web-application-type=none")) {
105
                    webType = WebApplicationType.NONE;
106
                    break;
107
                }
108
            }
109
            new SpringApplicationBuilder(Application.class)
110
                    .web(webType)
111
                    .run(args);
31753 tejbeer 112
        } catch (Throwable t) {
113
            t.printStackTrace();
114
        }
115
    }
28389 amit.gupta 116
 
31753 tejbeer 117
    @Bean
118
    public static PropertySourcesPlaceholderConfigurer propertyConfigurer1() {
119
        LOGGER.info("Called Configuration");
120
        PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
35393 amit 121
 
35832 amit 122
        String activeProfile;
123
        Properties properties = new Properties();
124
        try {
125
            properties.load(Application.class.getClassLoader().getResourceAsStream("META-INF/env.property"));
126
        } catch (IOException e) {
127
            LOGGER.error("Error reading env.property, defaulting to dev: " + e);
128
            properties.put("profile", "dev");
129
        }
130
        activeProfile = (String) properties.get("profile");
35393 amit 131
 
35832 amit 132
        Resource appResource;
133
        Resource sharedResource;
134
 
135
        if ("prod".equals(activeProfile)) {
136
            appResource = new ClassPathResource("/META-INF/prod.properties");
137
            sharedResource = new ClassPathResource("/shared-prod.properties");
138
        } else if ("staging".equals(activeProfile)) {
139
            appResource = new ClassPathResource("/META-INF/staging.properties");
140
            sharedResource = new ClassPathResource("/shared-staging.properties");
141
        } else {
142
            appResource = new ClassPathResource("/META-INF/dev.properties");
143
            sharedResource = new ClassPathResource("/shared-dev.properties");
144
        }
145
 
146
        LOGGER.info("Cron loading profile: " + activeProfile);
147
        propertySourcesPlaceholderConfigurer.setLocations(sharedResource, appResource);
35393 amit 148
        propertySourcesPlaceholderConfigurer.setIgnoreResourceNotFound(true);
149
 
31753 tejbeer 150
        return propertySourcesPlaceholderConfigurer;
151
    }
28389 amit.gupta 152
 
31753 tejbeer 153
    @Bean(name = "veloctyEngine")
154
    public VelocityEngine velocityEngine() throws VelocityException, IOException {
155
        VelocityEngineFactoryBean factory = new VelocityEngineFactoryBean();
28389 amit.gupta 156
 
31753 tejbeer 157
        Properties velocityProperties = new Properties();
158
        velocityProperties.put("resource.loader", "class");
159
        velocityProperties.put("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
160
        velocityProperties.put("file.resource.loader.cache", true);
161
        velocityProperties.put("file.resource.loader.unicode", true);
162
        velocityProperties.put("input.encoding", "UTF-8");
163
        velocityProperties.put("output.encoding", "UTF-8");
164
        velocityProperties.put("response.encoding", "UTF-8");
165
        velocityProperties.put("overrideLogging", true);
28389 amit.gupta 166
 
31753 tejbeer 167
        // velocityProperties.put("file.resource.loader.path", ".");
28389 amit.gupta 168
 
31753 tejbeer 169
        factory.setVelocityProperties(velocityProperties);
28389 amit.gupta 170
 
31753 tejbeer 171
        return factory.createVelocityEngine();
23723 amit.gupta 172
 
31753 tejbeer 173
    }
24122 govind 174
 
37474 amit 175
    /**
176
     * The default sender. Authenticates as sdtech@smartdukaan.com and rewrites
177
     * every From to that identity — Workspace binds an authenticated session to
178
     * one address and rejects any other with
179
     * "535 Authorization failed: Authenticated user is not authorized to send mail".
180
     *
181
     * Also answers to "mailSender" so the many unqualified JavaMailSender
182
     * injections resolve here rather than needing to be touched.
183
     */
37479 amit 184
    @Bean(name = "googleMailSender")
31753 tejbeer 185
    public JavaMailSender googleMailSender() {
37453 amit 186
        JavaMailSenderImpl mailSender = new AuthenticatedIdentityMailSender();
34612 ranu 187
        mailSender.setHost("smtp.gmail.com");
188
        mailSender.setPort(465);
189
        mailSender.setUsername("sdtech@smartdukaan.com");
37369 amit 190
        mailSender.setPassword("wbdwyqrcgosrkwdn"); // App Password
34612 ranu 191
 
192
        Properties props = mailSender.getJavaMailProperties();
193
        props.put("mail.smtp.auth", "true");
194
        props.put("mail.smtp.ssl.enable", "true");
195
        props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
196
        props.put("mail.smtp.socketFactory.port", "465");
197
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
37368 amit 198
        props.put("mail.smtp.connectiontimeout", "30000");
199
        props.put("mail.smtp.timeout", "120000");
200
        props.put("mail.smtp.writetimeout", "120000");
34612 ranu 201
 
202
        return mailSender;
203
    }
204
 
37479 amit 205
    /**
206
     * The default sender.
207
     *
208
     * Verified working 2026-08-31: MAIL FROM:<noreply@smartdukaan.com> returns 250
209
     * over IPv4. It does not authenticate -- Workspace authorises it by allowlisted
210
     * source IP -- so it may legitimately send as noreply@.
211
     *
212
     * googleMailSender is NOT the default: its app password is currently rejected
213
     * with "535 5.7.8 Username and Password not accepted". Point the default back at
214
     * it once a valid app password is issued for sdtech@smartdukaan.com.
215
     *
216
     * The allowlist covers the IPv4 address only. Over IPv6 the same command is
217
     * refused with "550 5.7.1 Invalid credentials for relay", so anything that
218
     * prefers IPv6 will fail here.
219
     */
220
    @Bean(name = {"gmailRelaySender", "mailSender"})
221
    @Primary
36248 amit 222
    public JavaMailSender getGmailRelaySender() {
223
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
224
        mailSender.setHost("smtp-relay.gmail.com");
225
        mailSender.setPort(587);
226
 
227
        Properties props = mailSender.getJavaMailProperties();
228
        props.put("mail.smtp.starttls.enable", "true");
229
        props.put("mail.smtp.auth", "false");
230
        props.put("mail.smtp.localhost", "smartdukaan.com");
231
        props.put("mail.smtp.ssl.protocols", "TLSv1.2");
232
        props.put("mail.smtp.ssl.trust", "smtp-relay.gmail.com");
233
        props.put("mail.transport.protocol", "smtp");
37368 amit 234
        props.put("mail.smtp.connectiontimeout", "30000");
235
        props.put("mail.smtp.timeout", "120000");
236
        props.put("mail.smtp.writetimeout", "120000");
36248 amit 237
 
238
        return mailSender;
239
    }
240
 
31753 tejbeer 241
    @Autowired
242
    private RunOnceTasks runOnceTasks;
24122 govind 243
 
31753 tejbeer 244
    @Autowired
245
    private ScheduledTasks scheduledTasks;
30335 amit.gupta 246
 
31753 tejbeer 247
    @Autowired
34306 ranu 248
    private ScheduledTasksTest scheduledTasksTest;
249
 
250
    @Autowired
34860 ranu 251
    private FetchPartnersDisbursementTask fetchPartnersDisbursementTask;
252
 
253
    @Autowired
31753 tejbeer 254
    private Reconciliation reconciliation;
30309 amit.gupta 255
 
31753 tejbeer 256
    @Autowired
36511 amit 257
    private WarehouseStockReconciliation warehouseStockReconciliation;
258
 
259
    @Autowired
37159 amit 260
    private PartnerIdentityIntegrityMonitor partnerIdentityIntegrityMonitor;
261
 
262
    @Autowired
35250 amit 263
    private Migrations migrations;
264
 
265
    @Autowired
31753 tejbeer 266
    CaptchaService captchaService;
28921 tejbeer 267
 
33274 amit.gupta 268
    @Autowired
269
    POScheduler poScheduler;
32878 amit.gupta 270
 
35929 vikas 271
    @Autowired
272
    ShopifyProductSyncService shopifyProductSyncService;
33274 amit.gupta 273
 
36058 ranu 274
    @Autowired
275
    KnowlarityCallMonitorScheduler knowlarityCallMonitorScheduler;
35929 vikas 276
 
36063 ranu 277
    @Autowired
278
    MailOutboxService mailOutboxService;
279
 
31753 tejbeer 280
    @Override
281
    public void run(ApplicationArguments args) throws Exception {
32008 amit.gupta 282
        //scheduledTasks.test();
283
        //System.exit();
31753 tejbeer 284
        LOGGER.info("Called run method");
36058 ranu 285
 
286
        // Knowlarity Call Monitor - Manual trigger (if 10 AM scheduled start was missed)
287
        // This just starts the monitor; scheduled healthCheck and stopMonitoring will still work
288
        if (args.containsOption("startKnowlarityMonitor")) {
289
            LOGGER.info("Starting Knowlarity Call Monitor manually...");
290
            knowlarityCallMonitorScheduler.startMonitoring();
291
            LOGGER.info("Knowlarity Call Monitor started. Scheduled tasks will handle health checks and 10 PM stop.");
292
            // No sleep needed - Spring scheduler keeps app running and handles 10 PM stop
293
        }
36545 ranu 294
        if (args.containsOption("trackingReport")) {
295
            runOnceTasks.dailyTrackingReport();
296
        }
36058 ranu 297
        if (args.containsOption("stopKnowlarityMonitor")) {
298
            LOGGER.info("Stopping Knowlarity Call Monitor...");
299
            knowlarityCallMonitorScheduler.stopMonitoring();
300
        }
36115 ranu 301
        // Knowlarity - Request fresh snapshot manually (when status not updating)
302
        if (args.containsOption("refreshKnowlaritySnapshot")) {
303
            LOGGER.info("Requesting Knowlarity snapshot manually...");
304
            knowlarityCallMonitorScheduler.healthCheck();
305
            LOGGER.info("Knowlarity snapshot requested.");
306
            System.exit(0);
307
        }
36058 ranu 308
 
33260 amit.gupta 309
        if (args.containsOption("removePartialBillingForTransaction")) {
310
            if (args.containsOption("trId")) {
33051 amit.gupta 311
                int transactionId = Integer.parseInt(args.getOptionValues("trId").get(0));
33054 amit.gupta 312
                scheduledTasks.removePartialBillingForTransaction(transactionId);
33051 amit.gupta 313
            }
314
            System.exit(0);
315
        }
34523 ranu 316
        if (args.containsOption("createOpeningStockPartyWise")) {
317
            scheduledTasks.createOpeningStockPartyWise();
318
            System.exit(0);
319
        }
31753 tejbeer 320
        if (args.containsOption("tc")) {
321
            System.out.println("Toffee service called");
322
            scheduledTasks.toffeeRollback();
323
            System.exit(0);
324
        }
325
        if (args.containsOption("bag")) {
326
            System.out.println("Bag service called");
327
            runOnceTasks.testBag();
328
            System.exit(0);
329
        }
29814 tejbeer 330
 
31753 tejbeer 331
        if (args.containsOption("rw")) {
332
            System.out.println("Reverse wallet");
333
            scheduledTasks.reverseWallet();
334
            System.exit(0);
335
        }
336
        if (args.containsOption("sendIndentTertiary")) {
337
            System.out.println("sendIndentTertiary");
338
            scheduledTasks.sendIndentTertiary();
339
            System.exit(0);
340
        }
341
        if (args.containsOption("checkPartnerActiveStore")) {
342
            System.out.println("checkPartnerActiveStore");
343
            scheduledTasks.checkPartnerActiveStore();
344
            System.exit(0);
345
        }
37172 amit 346
        if (args.containsOption("updatePjpAgendaInstances")) {
347
            System.out.println("updatePjpAgendaInstances");
348
            scheduledTasks.updatePjpAgendaInstances();
349
            System.exit(0);
350
        }
37040 ranu 351
        if (args.containsOption("updatePartnerActivationTypeByMonthlySale")) {
352
            System.out.println("updatePartnerActivationTypeByMonthlySale");
353
            scheduledTasks.updatePartnerActivationTypeByMonthlySale();
354
            System.exit(0);
355
        }
29800 manish 356
 
31753 tejbeer 357
        if (args.containsOption("selectFinServiceFollowUpDateByCurrDate")) {
358
            System.out.println("selectfinServiceFollowUpDateByCurrDate");
28368 tejbeer 359
 
31753 tejbeer 360
            scheduledTasks.selectFinServiceFollowUpDateByCurrDate(LocalDate.now());
361
            System.exit(0);
362
        }
25073 amit.gupta 363
 
31753 tejbeer 364
        if (args.containsOption("addHdfcPayment")) {
365
            runOnceTasks.addPayment();
366
            System.exit(0);
367
        }
35250 amit 368
        if (args.containsOption("migrateOriginalInventoryItemId")) {
369
            int batchSize = 10_000;
370
            if (args.containsOption("batchSize")) {
371
                try {
372
                    batchSize = Integer.parseInt(args.getOptionValues("batchSize").get(0));
373
                } catch (Exception e) {
374
                    LOGGER.warn("Invalid batchSize provided, defaulting to {}", batchSize);
375
                }
376
            }
377
            LOGGER.info("Starting migration for warehouse.inventoryItem.originalInventoryItemId with batchSize={}", batchSize);
36003 aman 378
            //migrations.migrateWarehouseOriginalInventoryItemId(batchSize);
35250 amit 379
            LOGGER.info("Migration completed.");
380
            System.exit(0);
381
        }
31753 tejbeer 382
        if (args.containsOption("processSchemeOut")) {
383
            System.out.println("Process schemeOut");
384
            int orderId = Integer.parseInt(args.getOptionValues("orderid").get(0));
385
            int fofoId = Integer.parseInt(args.getOptionValues("fofoid").get(0));
386
            runOnceTasks.processSchemeOut(fofoId, orderId);
387
            System.exit(0);
388
        }
389
        if (args.containsOption("at")) {
390
            System.out.println("Toffee service called");
391
            ticketRelatedScheduledTask.alertforTicket();
392
            System.exit(0);
393
        }
394
        if (args.containsOption("et")) {
395
            ticketRelatedScheduledTask.escalateTicket();
396
            ;
397
            System.exit(0);
398
        }
399
        if (args.containsOption("sr")) {
400
            List<String> schemeIds = args.getOptionValues("schemeId");
401
            System.out.println(schemeIds);
402
            scheduledTasks.schemeRollback(schemeIds);
403
            System.exit(0);
404
        }
405
        if (args.containsOption("processActivation")) {
406
            scheduledTasks.processActivation();
407
            System.exit(0);
408
        }
409
        if (args.containsOption("sendAttendanceMorningAlert")) {
410
            scheduledTasks.sendAttendanceMorningAlert();
411
            System.exit(0);
412
        }
413
        if (args.containsOption("sendAttendanceEveningAlert")) {
414
            scheduledTasks.sendAttendanceEveningAlert();
415
            System.exit(0);
416
        }
25721 tejbeer 417
 
31753 tejbeer 418
        if (args.containsOption("checkRazorPayPaymentStatus")) {
419
            scheduledTasks.checkRazorPayPaymentStatus();
420
            System.exit(0);
421
        }
422
        if (args.containsOption("grouping")) {
423
            scheduledTasks.grouping();
424
            System.exit(0);
425
        }
426
        if (args.containsOption("fixWallet")) {
427
            runOnceTasks.fixWallet();
428
            System.exit(0);
429
        }
36511 amit 430
        if (args.containsOption("reconcileInventorySnapshot")) {
431
            warehouseStockReconciliation.reconcile();
432
            System.exit(0);
433
        }
37159 amit 434
        if (args.containsOption("partnerIdentityIntegrityMonitor")) {
435
            partnerIdentityIntegrityMonitor.monitor();
436
            System.exit(0);
437
        }
31753 tejbeer 438
        if (args.containsOption("reconcileExpiredFixedSchemes")) {
439
            reconciliation.reconcileExpiredFixedSchemes();
440
            System.exit(0);
441
        }
442
        if (args.containsOption("dailyReconciliation")) {
443
            if (args.containsOption("date")) {
444
                LocalDate date = LocalDate.parse(args.getOptionValues("date").get(0));
445
                reconciliation.dailyReconciliation(date);
446
            } else {
447
                reconciliation.dailyReconciliation(LocalDate.now().minusDays(1));
448
            }
449
            System.exit(0);
450
        }
451
        /*
452
         * if (args.containsOption("test")) { schemeService.processSchemeIn(9243,
453
         * 175138102); throw new Exception(); }
454
         */
28921 tejbeer 455
 
31753 tejbeer 456
        if (args.containsOption("sendNotification")) {
457
            scheduledTasks.sendNotification();
458
            System.exit(0);
459
        }
26291 tejbeer 460
 
36063 ranu 461
        if (args.containsOption("processPendingMails")) {
462
            System.out.println("Processing pending mails...");
463
            mailOutboxService.processPendingMails();
464
            System.exit(0);
465
        }
466
 
31753 tejbeer 467
        if (args.containsOption("ticketClosed")) {
35568 amit 468
            // Redirected to TicketRelatedScheduledTask which handles auto-close as part of escalateTicket
469
            ticketRelatedScheduledTask.escalateTicket();
31753 tejbeer 470
            System.exit(0);
471
        }
28207 tejbeer 472
 
31753 tejbeer 473
        if (args.containsOption("getVendorWarehouses")) {
474
            int warehouseId = Integer.parseInt(args.getOptionValues("warehouseId").get(0));
475
            scheduledTasks.getVendorWarehouses(warehouseId);
476
            System.exit(0);
477
        }
29776 tejbeer 478
 
31753 tejbeer 479
        if (args.containsOption("checkfocusedModelInPartnerStock")) {
34344 amit.gupta 480
            try {
481
                scheduledTasks.checkfocusedModelInPartnerStock();
482
            } finally {
483
                System.exit(0);
484
            }
31753 tejbeer 485
        }
29451 manish 486
 
31753 tejbeer 487
        if (args.containsOption("checkImeiActivation")) {
488
            scheduledTasks.checkImeiActivation();
489
            System.exit(0);
490
        }
29776 tejbeer 491
 
31753 tejbeer 492
        if (args.containsOption("partnerProblemAlert")) {
493
            scheduledTasks.partnerProblemAlert();
494
            System.exit(0);
495
        }
496
        if (args.containsOption("notify")) {
497
            if (args.containsOption("fofoId")) {
498
                int fofoId = Integer.parseInt(args.getOptionValues("fofoId").get(0));
499
                scheduledTasks.sendDailySalesNotificationToPartner(fofoId);
500
            }
501
            System.exit(0);
502
        }
503
        if (args.containsOption("findMismatchesInIndent")) {
504
            runOnceTasks.findMismatchesInIndent();
505
            System.exit(0);
506
        }
29035 tejbeer 507
 
31753 tejbeer 508
        if (args.containsOption("onboardingEventDelays")) {
509
            onBoardingRelatedSchelduleTask.onboardingEventDelays();
510
            System.exit(0);
511
        }
28982 tejbeer 512
 
31753 tejbeer 513
        if (args.containsOption("onBoardingCompleteEventEmail")) {
514
            onBoardingRelatedSchelduleTask.onBoardingCompleteEventEmail();
515
            System.exit(0);
516
        }
28921 tejbeer 517
 
31753 tejbeer 518
        if (args.containsOption("onBoardingDocumentsPending")) {
519
            onBoardingRelatedSchelduleTask.onBoardingDocumentsPending();
520
            System.exit(0);
521
        }
522
        if (args.containsOption("onBoardingMigration")) {
523
            onBoardingRelatedSchelduleTask.onBoardingMigration();
524
            System.exit(0);
525
        }
28921 tejbeer 526
 
33859 tejus.loha 527
//        if (args.containsOption("advancePaymentPendingAlert")) {
528
//            onBoardingRelatedSchelduleTask.advancePaymentPendingAlert();
529
//            System.exit(0);
530
//        }
28963 tejbeer 531
 
31753 tejbeer 532
        if (args.containsOption("fullPaymentPendingAlert")) {
533
            onBoardingRelatedSchelduleTask.fullPaymentPendingAlert();
534
            System.exit(0);
535
        }
29308 tejbeer 536
 
33859 tejus.loha 537
//        if (args.containsOption("advancePaymentPendinglegalAlert")) {
538
//            onBoardingRelatedSchelduleTask.advancePaymentPendinglegalAlert();
539
//            System.exit(0);
540
//        }
31117 tejbeer 541
 
31753 tejbeer 542
        if (args.containsOption("markDelhiveryOrderDelivered")) {
32831 amit.gupta 543
            orderTrackingService.markDelhiveryOrderDelivered();
31753 tejbeer 544
            System.exit(0);
545
        }
32831 amit.gupta 546
 
31753 tejbeer 547
        if (args.containsOption("markBlueDartOrderDelivered")) {
32794 raveendra. 548
            System.out.println("Marking BlueDart Order Delivered...");
32831 amit.gupta 549
            orderTrackingService.markBlueDartOrderDelivered();
31753 tejbeer 550
            System.exit(0);
551
        }
552
        if (args.containsOption("mergingdata")) {
553
            onBoardingRelatedSchelduleTask.mergingdata();
554
            System.exit(0);
555
        }
556
        if (args.containsOption("brandingAlert")) {
557
            onBoardingRelatedSchelduleTask.brandingAlert();
558
            System.exit(0);
559
        }
31089 amit.gupta 560
 
33859 tejus.loha 561
//        if (args.containsOption("storeTimelinePromoterPending")) {
562
//            onBoardingRelatedSchelduleTask.storeTimelinePromoterPending();
563
//            System.exit(0);
564
//        }
31249 tejbeer 565
 
31753 tejbeer 566
        if (args.containsOption("ppl")) {
567
            runOnceTasks.printPendingLeads();
568
            System.exit(0);
569
        }
31249 tejbeer 570
 
31753 tejbeer 571
        if (args.containsOption("notifyAll")) {
572
            scheduledTasks.sendDailySalesNotificationToPartner(null);
573
            System.exit(0);
574
        }
31249 tejbeer 575
 
31753 tejbeer 576
        if (args.containsOption("monthlyTargetForInternalTeam")) {
577
            scheduledTasks.monthlyTargetForInternalTeam();
578
            System.exit(0);
579
        }
31249 tejbeer 580
 
31753 tejbeer 581
        if (args.containsOption("monthlyTargetForPartner")) {
582
            scheduledTasks.monthlyTargetForPartner();
583
            System.exit(0);
584
        }
33444 ranu 585
        if (args.containsOption("findAllLiveDemoBrandItemsByBillingDate")) {
586
            scheduledTasks.findAllLiveDemoBrandItemsByBillingDate();
587
            System.exit(0);
588
        }
33464 ranu 589
        if (args.containsOption("findTodayPocoBillingItems")) {
590
            scheduledTasks.findTodayPocoBillingItems();
591
            System.exit(0);
592
        }
28921 tejbeer 593
 
31753 tejbeer 594
        if (args.containsOption("hygineAlertForPartner")) {
595
            scheduledTasks.hygineAlertForPartner();
596
            System.exit(0);
597
        }
28921 tejbeer 598
 
31753 tejbeer 599
        if (args.containsOption("hygineAlertForInternalTeam")) {
600
            scheduledTasks.hygineAlertForInternalTeam();
601
            System.exit(0);
602
        }
603
 
32214 jai.hind 604
        if (args.containsOption("checkItelImeiActivationNew")) {
605
            scheduledTasks.checkItelImeiActivationNew(LocalDate.now(), 15);
606
            System.exit(0);
607
        }
37479 amit 608
        // One tick's worth (50 imeis), not a full pass -- the backlog is cleared by the
609
        // scheduled 5-minute ticks. Useful for checking the endpoint by hand.
610
        if (args.containsOption("checkCarlcareImeiActivation")) {
611
            scheduledTasks.checkCarlcareImeiActivation();
612
            System.exit(0);
613
        }
31753 tejbeer 614
        if (args.containsOption("once")) {
33274 amit.gupta 615
 
616
            if (args.containsOption("autoClosePurchaseOrders")) {
617
                poScheduler.autoClosePurchaseOrders();
618
            }
31753 tejbeer 619
            if (args.containsOption("cancelOnceAssist")) {
620
                if (args.containsOption("invoiceNumber")) {
621
                    String oneAssistInvoiceNumber = args.getOptionValues("invoiceNumber").get(0);
622
                    runOnceTasks.cancelOnceAssist(oneAssistInvoiceNumber);
623
                }
624
 
35266 ranu 625
 
31753 tejbeer 626
            }
34208 ranu 627
            if (args.containsOption("cancelOnceAssist")) {
628
                if (args.containsOption("MemberShipNumber")) {
629
                    String applicationNo = args.getOptionValues("applicationNo").get(0);
630
                    String membershipId = args.getOptionValues("membershipId").get(0);
631
                    runOnceTasks.cancelOnceAssistByMemberShipNumber(applicationNo, membershipId);
632
                }
633
 
634
            }
33260 amit.gupta 635
            if (args.containsOption("changeFulfillmentWarehouse")) {
636
                if (args.containsOption("orderId") && args.containsOption("whId")) {
35277 amit 637
                    List<Integer> orderIds = Arrays.stream(args.getOptionValues("orderId").get(0).split(","))
638
                            .map(String::trim)
639
                            .map(Integer::parseInt)
640
                            .collect(Collectors.toList());
641
 
35276 amit 642
                    int warehouseId = Integer.parseInt(args.getOptionValues("whId").get(0));
643
                    for (Integer orderId : orderIds) {
644
                        runOnceTasks.changeFulfillmentWarehouse(orderId, warehouseId);
645
                    }
33260 amit.gupta 646
                }
647
                System.exit(0);
648
            }
31753 tejbeer 649
            if (args.containsOption("1")) {
650
                if (args.containsOption("test")) {
31618 amit.gupta 651
                    //scheduledTasks.sendPartnerInvestmentDetails(args.getOptionValues("email"));
31753 tejbeer 652
                    System.out.println("Calling test method");
36003 aman 653
                    try {
654
                        scheduledTasks.test();
655
                    } catch (Throwable e) {
656
                        throw new RuntimeException(e);
657
                    }
35165 amit 658
                    System.exit(0);
32083 tejbeer 659
 
660
                    if (args.containsOption("migrateVendorItemPricing")) {
661
                        scheduledTasks.migrateVendorItemPricing();
662
                        System.exit(0);
663
                    }
664
 
665
                    if (args.containsOption("approveVendorCatalogPricing")) {
666
                        scheduledTasks.approveVendorCatalogPricing();
667
                        System.exit(0);
668
                    }
32080 tejbeer 669
                } else if (args.containsOption("test1")) {
32008 amit.gupta 670
                    scheduledTasks.test1();
34845 ranu 671
                } else if (args.containsOption("scheduleTaskTest1")) {
672
 
673
                    scheduledTasksTest.test();
674
                }else if (args.containsOption("generateBiReport")) {
675
                    scheduledTasksTest.generateBiReport();
34945 ranu 676
                }else if (args.containsOption("abmSendertest")) {
34946 ranu 677
                    runOnceTasks.setAbmReportSender();
35788 vikas 678
                }else if (args.containsOption("syncProductsToShopify")) {
36058 ranu 679
                    shopifyProductSyncService.syncByWarehouse(ProfitMandiConstants.WAREHOUSE_NAME_MAP.get("UP-WEST/NOIDA"));
34321 ranu 680
                }
34860 ranu 681
                else if (args.containsOption("fetchPartnerDisburseMentTask")) {
682
                    if(args.containsOption("fetchDisbursements")){
683
                        fetchPartnersDisbursementTask.fetchDisbursementsTest();
684
                    }
685
                    else if(args.containsOption("creditAmountTest")){
686
                        fetchPartnersDisbursementTask.creditAmountTest();
687
                    }
688
                    else if(args.containsOption("createContactsAndFundsForFranchiseeTest")){
689
                        fetchPartnersDisbursementTask.createContactsAndFundsForFranchiseeTest();
690
                    }
691
                    else if(args.containsOption("rabbitTransactionProducertest")){
692
                        fetchPartnersDisbursementTask.rabbitTransactionProducertest();
693
                    }
34879 ranu 694
                    else if(args.containsOption("sendingDisbursementMail")){
695
                        fetchPartnersDisbursementTask.sendingDisbursementMail();
696
                    }
34860 ranu 697
                    else {
698
                        fetchPartnersDisbursementTask.test();
699
                    }
700
                }
34845 ranu 701
                else if (args.containsOption("testNew1")) {
34307 ranu 702
                    List<String> loanIdArgs = args.getOptionValues("loanIds");  // ["34833,36536,37151"]
703
                    List<Integer> loanIds = new ArrayList<>();
704
 
705
                    if (loanIdArgs != null && !loanIdArgs.isEmpty()) {
706
                        String csv = loanIdArgs.get(0);
707
                        loanIds = Arrays.stream(csv.split(","))
708
                                .map(String::trim)
709
                                .map(Integer::parseInt)
710
                                .collect(Collectors.toList());
711
                    }
34321 ranu 712
                    scheduledTasksTest.findLoanTransactionMapingAccordingLoan(loanIds);
34309 ranu 713
                } else if (args.containsOption("testNew2")) {
34308 ranu 714
                    if (args.containsOption("createLoan")) {
715
                        // Extract each parameter
716
                        int transactionId = 0;
717
                        double invoiceAmount = 0.0;
718
                        String invoiceNumber = "";
719
 
720
                        if (args.containsOption("transactionId")) {
721
                            transactionId = Integer.parseInt(args.getOptionValues("transactionId").get(0));
722
                        }
723
 
724
                        if (args.containsOption("invoiceAmount")) {
725
                            invoiceAmount = Double.parseDouble(args.getOptionValues("invoiceAmount").get(0));
726
                        }
727
 
728
                        if (args.containsOption("invoiceNumber")) {
729
                            invoiceNumber = args.getOptionValues("invoiceNumber").get(0);
730
                        }
731
 
732
                        // Call your method
733
                        scheduledTasksTest.createLoanForBillingByTransactionIdAndInvoiceNumber(transactionId, invoiceAmount, invoiceNumber);
734
                    }
735
 
32482 amit.gupta 736
                } else {
31753 tejbeer 737
                    System.out.println("Called sendPartnerInvestmentDetails");
738
                    scheduledTasks.sendPartnerInvestmentDetails();
739
                }
740
                System.exit(0);
741
            }
742
            if (args.containsOption("2")) {
743
                if (args.containsOption("test")) {
744
                    String[] emails = new String[args.getOptionValues("email").size()];
745
                    scheduledTasks.sendAgeingReport(args.getOptionValues("email").toArray(emails));
746
                } else {
747
                    scheduledTasks.sendAgeingReport();
748
                }
749
                System.exit(0);
750
            }
33457 amit.gupta 751
 
31753 tejbeer 752
            if (args.containsOption("cancelOrder")) {
753
                List<String> invoiceNumbers = args.getOptionValues("invoiceNumber");
754
                runOnceTasks.cancelOrder(invoiceNumbers);
755
            }
36554 amit 756
            if (args.containsOption("postCreditNoteForDuplicateInvoice")) {
757
                String duplicateInvoice = args.getOptionValues("duplicateInvoice").get(0);
758
                String activeInvoice = args.getOptionValues("activeInvoice").get(0);
759
                runOnceTasks.postCreditNoteForDuplicateInvoice(duplicateInvoice, activeInvoice);
760
            }
31753 tejbeer 761
            if (args.containsOption("migratePurchase")) {
762
                runOnceTasks.migratePurchase();
763
            }
764
            if (args.containsOption("migratepd")) {
765
                scheduledTasks.moveImeisToPriceDropImeis();
766
            }
767
            if (args.containsOption("walletmismatch")) {
768
                scheduledTasks.walletmismatch();
769
            }
770
            if (args.containsOption("schemewalletmismatch")) {
771
                scheduledTasks.schemewalletmismatch();
772
            }
773
            if (args.containsOption("gst")) {
774
                scheduledTasks.gst();
775
            }
776
            if (args.containsOption("mailDashboardScreenshots")) {
777
                runOnceTasks.mailDashboardScreenshots();
778
            }
779
            if (args.containsOption("notifyLead")) {
780
                scheduledTasks.notifyLead();
781
                scheduledTasks.notifyVisits();
782
            }
783
            if (args.containsOption("fixgrn")) {
784
                runOnceTasks.fixGrn();
785
            }
786
            if (args.containsOption("pbfix")) {
787
                runOnceTasks.pbfix();
788
            }
789
            if (args.containsOption("mongom")) {
790
                runOnceTasks.mongom();
791
            }
792
            if (args.containsOption("processPd")) {
793
                int priceDropId = Integer.parseInt(args.getOptionValues("processPd").get(0));
794
                runOnceTasks.processPd(priceDropId);
795
            }
796
            if (args.containsOption("samsung")) {
797
                if (args.containsOption("ym")) {
798
                    int ym = Integer.parseInt(args.getOptionValues("ym").get(0));
799
                    runOnceTasks.fetchImeiActivation(ym);
800
                }
801
                runOnceTasks.fetchImeiActivation(0);
802
            }
803
            if (args.containsOption("fixdupimeigrn")) {
804
                runOnceTasks.fixDupGrns();
805
            }
806
            if (args.containsOption("cancel")) {
36053 amit 807
                boolean recreatePri = args.containsOption("recreatePri");
808
                runOnceTasks.cancelDn(args.getOptionValues("dn").get(0), recreatePri);
31753 tejbeer 809
            }
810
            if (args.containsOption("fixScheme")) {
811
                runOnceTasks.fixScheme();
812
            }
813
            if (args.containsOption("syncLeads")) {
814
                leadSyncRunner.syncLeads();
815
            }
816
            if (args.containsOption("testCs")) {
817
                int category = Integer.parseInt(args.getOptionValues("category").get(0));
818
                EscalationType escalationType = EscalationType.valueOf(args.getOptionValues("escalation").get(0));
819
                int fofoId = Integer.parseInt(args.getOptionValues("fofoid").get(0));
820
                csService.getAuthUserId(category, escalationType, fofoId);
821
            }
822
            if (args.containsOption("duporder")) {
823
                runOnceTasks.removeDuplicateOrders();
824
            }
825
            if (args.containsOption("createDummyInvoices")) {
826
                runOnceTasks.createDummyInvoices();
827
            }
28921 tejbeer 828
 
31753 tejbeer 829
            if (args.containsOption("createGeofence")) {
830
                runOnceTasks.createGeofence();
831
            }
832
            if (args.containsOption("getAllGeofences")) {
833
                runOnceTasks.getAllGeofences();
834
            }
835
            if (args.containsOption("payMonthlyInvestment")) {
836
                investmentRelatedTasks.payMonthlyInvestment();
837
            }
838
            if (args.containsOption("evaluateActualInvestmentPayout")) {
839
                investmentRelatedTasks.evaluateActualInvestmentPayout();
840
            }
841
            if (args.containsOption("deleteGeofences")) {
842
                List<String> geofenceIds = args.getOptionValues("geofenceId");
843
                runOnceTasks.deleteGeofences(geofenceIds);
844
            }
845
            if (args.containsOption("createOffers")) {
846
                if (args.containsOption("fileName")) {
847
                    String fileName = args.getOptionValues("fileName").get(0);
848
                    FileInputStream stream = new FileInputStream(fileName);
849
                    runOnceTasks.createOffers(stream);
850
                }
851
            }
852
            if (args.containsOption("schemeout")) {
853
                if (args.containsOption("invoices")) {
854
                    String invoicesString = args.getOptionValues("invoices").get(0);
855
                    List<String> invoices = Arrays.asList(invoicesString.split(","));
856
                    scheduledTasks.processSchemeOut(invoices);
857
                }
858
            }
859
            if (args.containsOption("schemein")) {
860
                if (args.containsOption("invoices")) {
861
                    String invoicesString = args.getOptionValues("invoices").get(0);
862
                    List<String> invoices = Arrays.asList(invoicesString.split(","));
863
                    scheduledTasks.processSchemeIn(invoices);
864
                }
865
            }
28921 tejbeer 866
 
31753 tejbeer 867
            if (args.containsOption("fixScans")) {
868
                runOnceTasks.fixScans();
869
            }
870
            if (args.containsOption("fixPrebookingOrderGrn")) {
871
                runOnceTasks.genericCreateCurrentInventorySnapshot();
872
            }
873
            if (args.containsOption("fixOurSerialized")) {
874
                if (args.containsOption("orderIds")) {
875
                    String orderIdsString = args.getOptionValues("orderIds").get(0);
876
                    List<Integer> orderIds = Arrays.asList(orderIdsString.split(",")).stream().map(x -> Integer.parseInt(x)).collect(Collectors.toList());
877
                    // runOnceTasks.fixOurSerialized(orderIds);
878
                }
879
            }
29776 tejbeer 880
 
31753 tejbeer 881
            if (args.containsOption("reverseMaa")) {
882
                runOnceTasks.reverseMaa();
883
            }
29776 tejbeer 884
 
31753 tejbeer 885
            if (args.containsOption("fixOffer")) {
886
                runOnceTasks.fixOffer();
887
            }
29794 tejbeer 888
 
31753 tejbeer 889
            if (args.containsOption("opporeno")) {
890
                runOnceTasks.opporeno();
891
            }
30309 amit.gupta 892
 
31753 tejbeer 893
            if (args.containsOption("fixorders")) {
894
                runOnceTasks.fixOrders();
895
            }
896
            if (args.containsOption("fixreservations")) {
897
                runOnceTasks.fixReservations();
898
            }
899
            if (args.containsOption("addinvestment")) {
900
                runOnceTasks.addInvestment();
901
            }
902
            if (args.containsOption("brandregion")) {
903
                runOnceTasks.brandRegion();
904
            }
905
            if (args.containsOption("rollOutUpgardedMargins")) {
35520 amit 906
                scheduledTasks.rollOutUpgardedMargins(Arrays.asList(175140172, 175140189));
31753 tejbeer 907
            }
34029 ranu 908
            if (args.containsOption("pushRbmTargets")) {
909
                scheduledTasks.persistRbmTodayTargets();
910
            }
31753 tejbeer 911
            if (args.containsOption("rollOutUpgardedMarginsNextMonth")) {
35524 amit 912
                System.out.println("In rollOutUpgardedMarginsNextMonth");
35532 amit 913
                scheduledTasks.rollOutUpgardedMarginsNextMonth(Arrays.asList(175140172, 175140189, 175138897));
31753 tejbeer 914
            }
915
            if (args.containsOption("checkCancellationMargin")) {
916
                scheduledTasks.checkCancellationMargin();
917
            }
918
            if (args.containsOption("reviewUncontactablePartner")) {
919
                scheduledTasks.reviewUncontactablePartner();
920
            }
33078 ranu 921
            if (args.containsOption("reviewNonSdBuyingBrand")) {
922
                scheduledTasks.reviewNonSdBuyingBrand();
923
            }
31753 tejbeer 924
            if (args.containsOption("sendWelcomeEmail")) {
925
                onBoardingRelatedSchelduleTask.sendWelcomeEmail();
926
            }
29814 tejbeer 927
 
31753 tejbeer 928
            if (args.containsOption("partnerOnboardingLegalMigration")) {
929
                onBoardingRelatedSchelduleTask.partnerOnboardingLegalMigration();
930
            }
31031 amit.gupta 931
 
33526 amit.gupta 932
            if(args.containsOption("moveOrders")) {
933
                runOnceTasks.moveOrders();
934
            }
935
 
31753 tejbeer 936
            if (args.containsOption("addKycLegalMigration")) {
937
                onBoardingRelatedSchelduleTask.addKycLegalMigration();
938
            }
29776 tejbeer 939
 
940
 
31753 tejbeer 941
            if (args.containsOption("pushDataToSolr")) {
942
                listing.pushDataToSolr();
943
            }
30120 amit.gupta 944
 
31753 tejbeer 945
            if (args.containsOption("testGstPro")) {
946
                System.out.println("TestGstProc called");
947
                try {
948
                    runOnceTasks.updateIrnsToInvoices();
949
                } catch (Exception e) {
950
                    e.printStackTrace();
951
                }
952
            }
29308 tejbeer 953
 
37058 amit 954
            if (args.containsOption("regenerateBilledInvoices")) {
955
                if (args.containsOption("fromTime") && args.containsOption("toTime")) {
956
                    LocalDateTime fromTime = LocalDateTime.parse(args.getOptionValues("fromTime").get(0));
957
                    LocalDateTime toTime = LocalDateTime.parse(args.getOptionValues("toTime").get(0));
958
                    runOnceTasks.regenerateBilledInvoices(fromTime, toTime);
959
                } else {
960
                    System.out.println("regenerateBilledInvoices requires --fromTime and --toTime (ISO, e.g. 2026-06-01T00:00:00)");
961
                }
962
                System.exit(0);
963
            }
964
 
31753 tejbeer 965
            if (args.containsOption("reverseSchemeCancelInvoice")) {
966
                if (args.containsOption("invoice")) {
967
                    String invoice = args.getOptionValues("invoice").get(0);
968
                    runOnceTasks.reverseSchemes(invoice);
969
                }
970
            }
29863 tejbeer 971
 
31753 tejbeer 972
            if (args.containsOption("reverseInvalidActivation")) {
973
                if (args.containsOption("inventoryids")) {
974
                    String inventoryItemIdsString = args.getOptionValues("inventoryids").get(0);
975
                    List<Integer> inventoryItemIds = new ArrayList<>();
976
                    for (String inventoryItemIdString : inventoryItemIdsString.split(",")) {
977
                        int inventoryItemId = Integer.parseInt(inventoryItemIdString.trim());
978
                        inventoryItemIds.add(inventoryItemId);
979
                    }
980
                    runOnceTasks.reverseInvalidActivation(inventoryItemIds);
981
                }
982
            }
29863 tejbeer 983
 
31753 tejbeer 984
            if (args.containsOption("runme")) {
985
                runOnceTasks.runMe();
986
            }
987
            if (args.containsOption("" + "")) {
988
                upgradeOfferService.authenticateUser();
989
            }
990
            if (args.containsOption("mandiiUser")) {
991
                runOnceTasks.mandiiUser(args.getOptionValues("firstName").get(0), args.getOptionValues("lastName").get(0), args.getOptionValues("pan").get(0), args.getOptionValues("dob").get(0), args.getOptionValues("aadhaar").get(0), args.getOptionValues("gender").get(0), args.getOptionValues("father").get(0));
992
            }
30335 amit.gupta 993
 
31753 tejbeer 994
            if (args.containsOption("mandiiUsers")) {
995
                if (args.containsOption("pan")) {
996
                    runOnceTasks.mandiiUsers(args.getOptionValues("pan").get(0));
997
                } else {
998
                    runOnceTasks.mandiiUsers();
999
                }
1000
            }
30576 amit.gupta 1001
 
37472 amit 1002
            // Oppo and realme are one pass now, so one option drives both. Note this
1003
            // runs the FULL daily pass -- everything due today, not a 25-imei sample.
1004
            if (args.containsOption("checkBrowserImeiActivation")) {
1005
                standAlone.checkBrowserImeiActivation();
31753 tejbeer 1006
            }
30616 amit.gupta 1007
 
31753 tejbeer 1008
            /*
1009
             * if (args.containsOption("checkRealmeImeiStatus")) { try {
1010
             * standAlone.checkRealmeImeiStatus(); } catch (Exception e) {
1011
             * e.printStackTrace(); } }
1012
             */
30616 amit.gupta 1013
 
31753 tejbeer 1014
            if (args.containsOption("amazonPurchase")) {
1015
                try {
1016
                    runOnceTasks.amazonPurchase();
1017
                } catch (Exception e) {
1018
                    e.printStackTrace();
1019
                }
1020
            }
30641 amit.gupta 1021
 
31753 tejbeer 1022
            if (args.containsOption("getCaptchaCode")) {
1023
                try {
1024
                    captchaService.getCaptchaCode("/home/amit/Desktop/generatingCodes.jpg");
1025
                } catch (Exception e) {
1026
                    e.printStackTrace();
1027
                }
1028
            }
30641 amit.gupta 1029
 
37326 amit 1030
            // --backfillMissingEwb --invoiceNumbers=A,B,C [--dryRun]
1031
            // Recovers EWB details from NIC for invoices whose IRN was recovered via DUPIRN, then
1032
            // re-renders their PDFs so the e-way bill section appears.
1033
            if (args.containsOption("backfillMissingEwb")) {
1034
                try {
1035
                    List<String> invoiceNumbers = Arrays.stream(
1036
                                    args.getOptionValues("invoiceNumbers").get(0).split(","))
1037
                            .map(String::trim).filter(x -> !x.isEmpty()).collect(Collectors.toList());
1038
                    boolean dryRun = args.containsOption("dryRun");
1039
                    System.out.println("backfillMissingEwb: " + invoiceNumbers.size()
1040
                            + " invoice(s), dryRun=" + dryRun);
1041
                    runOnceTasks.backfillMissingEwb(invoiceNumbers, dryRun);
1042
                } catch (Exception e) {
1043
                    e.printStackTrace();
1044
                }
1045
            }
1046
 
31753 tejbeer 1047
            if (args.containsOption("testIrnLive")) {
1048
                try {
1049
                    runOnceTasks.testIrnLive(args.getOptionValues("invoiceNumber").get(0));
1050
                } catch (Exception e) {
1051
                    e.printStackTrace();
1052
                }
1053
            }
30659 amit.gupta 1054
 
31753 tejbeer 1055
            if (args.containsOption("createoffercriteria")) {
1056
                try {
1057
                    runOnceTasks.createOfferCriteria();
1058
                } catch (Exception e) {
1059
                    e.printStackTrace();
1060
                }
1061
            }
30659 amit.gupta 1062
 
31753 tejbeer 1063
            if (args.containsOption("fix-price-drops")) {
1064
                runOnceTasks.fixPriceDrop();
1065
            }
29035 tejbeer 1066
 
31753 tejbeer 1067
            if (args.containsOption("processSchemeByIds")) {
1068
                List<String> schemeIds = Arrays.asList(args.getOptionValues("ids").get(0).split(","));
1069
                List<Integer> schemeIdsInt = schemeIds.stream().map(x -> Integer.parseInt(x)).collect(Collectors.toList());
1070
                runOnceTasks.processSchemeByIds(schemeIdsInt);
1071
            }
30859 tejbeer 1072
 
31753 tejbeer 1073
            if (args.containsOption("updateSaholicCISTable")) {
1074
                runOnceTasks.updateSaholicCISTable();
1075
            }
30859 tejbeer 1076
 
31753 tejbeer 1077
            if (args.containsOption("mapbag")) {
1078
                runOnceTasks.mapBag();
1079
            }
30859 tejbeer 1080
 
34579 vikas.jang 1081
            if (args.containsOption("todayBidPO")) {
34443 vikas.jang 1082
                runOnceTasks.processBids(ProfitMandiConstants.BID_CRON_ENUM.TODAY);
1083
            }
1084
 
34579 vikas.jang 1085
            if (args.containsOption("yesterdayBidPO")) {
1086
                runOnceTasks.processBids(ProfitMandiConstants.BID_CRON_ENUM.YESTERDAY);
1087
            }
1088
 
34547 vikas.jang 1089
            if (args.containsOption("biddingConsolidatedMessage")) {
1090
                runOnceTasks.consolidatedBiddingMessage();
1091
            }
1092
 
1093
            if (args.containsOption("sendMailWhatsAppAfterLoanDueDate")) {
1094
                scheduledTasks.sendMailWhatsAppAfterLoanDueDate();
1095
            }
1096
 
34836 vikas 1097
            if (args.containsOption("yesterdayTrackingReport")) {
1098
                runOnceTasks.yesterdayTrackingReport();
34770 vikas.jang 1099
            }
1100
 
31753 tejbeer 1101
            System.exit(0);
1102
        }
30859 tejbeer 1103
 
31753 tejbeer 1104
        if (args.containsOption("calculateInterestAccured")) {
30929 tejbeer 1105
 
31753 tejbeer 1106
            scheduledTasks.calculateInterestAccured();
1107
            System.exit(0);
1108
        }
30929 tejbeer 1109
 
31753 tejbeer 1110
        if (args.containsOption("loanSettlement")) {
30890 amit.gupta 1111
 
31753 tejbeer 1112
            scheduledTasks.loanSettlement();
1113
            System.exit(0);
1114
        }
30896 amit.gupta 1115
 
31753 tejbeer 1116
        if (args.containsOption("dailyLoanAlert")) {
30936 tejbeer 1117
 
31753 tejbeer 1118
            scheduledTasks.dailyLoanAlert();
1119
            System.exit(0);
1120
        }
30982 tejbeer 1121
 
36564 amit 1122
        if (args.containsOption("testFlagshipBilling")) {
1123
            int trId = Integer.parseInt(args.getOptionValues("testFlagshipBilling").get(0));
1124
            double amt = Double.parseDouble(args.getOptionValues("testFlagshipBillingAmount").get(0));
1125
            String inv = args.getOptionValues("testFlagshipBillingInvoice").get(0);
1126
            scheduledTasks.testFlagshipBilling(trId, amt, inv);
1127
            System.exit(0);
1128
        }
1129
 
36554 amit 1130
        if (args.containsOption("convertExpiredFlagshipCredits")) {
1131
            scheduledTasks.convertExpiredFlagshipCredits();
1132
            System.exit(0);
1133
        }
1134
 
36745 ranu 1135
        // Manual back-fill for missed-beat detection. Default: today.
1136
        // Usage: --detectMissedBeats [--date=YYYY-MM-DD]
1137
        if (args.containsOption("detectMissedBeats")) {
1138
            LocalDate date = LocalDate.now();
1139
            if (args.containsOption("date")) {
1140
                date = LocalDate.parse(args.getOptionValues("date").get(0));
1141
            }
1142
            int inserted = beatMissDetectorRunner.syncMissesForDate(date);
1143
            LOGGER.info("detectMissedBeats: {} miss rows inserted for {}", inserted, date);
1144
            System.exit(0);
1145
        }
1146
 
36554 amit 1147
        if (args.containsOption("notifyFlagshipExpiryIn2Days")) {
1148
            scheduledTasks.notifyFlagshipExpiryIn2Days();
1149
            System.exit(0);
1150
        }
1151
 
31753 tejbeer 1152
        if (args.containsOption("notifyDefaultLoans")) {
1153
            scheduledTasks.notifyDefaultLoans();
1154
            System.exit(0);
1155
        }
31446 amit.gupta 1156
 
31753 tejbeer 1157
        if (args.containsOption("fixinsurance")) {
1158
            runOnceTasks.addMissingWalletDebitsForInsurance();
1159
            System.exit(0);
1160
        }
31604 tejbeer 1161
 
31753 tejbeer 1162
        if (args.containsOption("processActivatedImeisForSchemes")) {
1163
            scheduledTasks.processActivatedImeisForSchemes();
1164
            System.exit(0);
1165
        }
31604 tejbeer 1166
 
36306 amit 1167
        if (args.containsOption("updatePartnerLimitWithBatch")) {
1168
            System.out.println("Running updatePartnerLimit with batch tracking");
1169
            batchScheduledTasks.updatePartnerLimitWithBatch();
1170
            System.exit(0);
1171
        }
1172
 
1173
        if (args.containsOption("processOffersWithBatch")) {
1174
            for (String val : args.getOptionValues("processOffersWithBatch")) {
1175
                for (String id : val.split(",")) {
1176
                    int offerId = Integer.parseInt(id.trim());
1177
                    System.out.println("Processing offer with batch: " + offerId);
1178
                    batchScheduledTasks.processOfferWithBatch(offerId);
1179
                }
1180
            }
1181
            System.exit(0);
1182
        }
1183
 
31753 tejbeer 1184
        if (args.containsOption("notifyLoanDueDateCross")) {
1185
            scheduledTasks.notifyLoanDueDateCross();
1186
            System.exit(0);
1187
        }
34275 tejus.loha 1188
        if (args.containsOption("sendTenOrMoreOrderStockReport")) {
1189
            scheduledTasks.send10OrMoreOlderStockReport();
1190
            System.exit(0);
1191
        }
31604 tejbeer 1192
 
31753 tejbeer 1193
        if (args.containsOption("alertForDueDate")) {
1194
            scheduledTasks.alertForDueDate();
1195
            System.exit(0);
1196
        }
31648 tejbeer 1197
 
31753 tejbeer 1198
        if (args.containsOption("fetchParnterStats")) {
1199
            scheduledTasks.fetchParnterStats();
1200
            System.exit(0);
1201
        }
1202
 
1203
        if (args.containsOption("morning")) {
1204
            if (args.containsOption("0")) {
1205
                scheduledTasks.sendPartnerInvestmentDetails();
1206
            }
1207
            if (args.containsOption("1")) {
1208
                scheduledTasks.sendIndentTertiary();
1209
            }
1210
            // 0
1211
            if (args.containsOption("2")) {
1212
                scheduledTasks.calculateInterestAccured();
1213
            }
1214
            System.out.println("scheduledTasks.calculateInterestAccured()");
1215
            // 0
1216
            if (args.containsOption("3")) {
32831 amit.gupta 1217
                orderTrackingService.markDelhiveryOrderDelivered();
31753 tejbeer 1218
            }
1219
            System.out.println("scheduledTasks.markDelhiveryOrderDelivered()");
1220
            // 1
1221
            if (args.containsOption("4")) {
1222
                scheduledTasks.processActivatedImeisForSchemes();
1223
            }
1224
            System.out.println("scheduledTasks.processActivatedImeisForSchemes()");
1225
            // 2
1226
            if (args.containsOption("5")) {
1227
                scheduledTasks.processActivation();
1228
            }
1229
            System.out.println("scheduledTasks.processActivation()");
1230
            // 4
1231
            if (args.containsOption("6")) {
1232
                scheduledTasks.processPriceDrop();
1233
            }
1234
            System.out.println("scheduledTasks.processPriceDrop()");
1235
            // 5
1236
            if (args.containsOption("7")) {
1237
                scheduledTasks.loanSettlement();
1238
            }
1239
            System.out.println("scheduledTasks.loanSettlement()");
36554 amit 1240
            if (args.containsOption("7a")) {
1241
                scheduledTasks.convertExpiredFlagshipCredits();
1242
                scheduledTasks.notifyFlagshipExpiryIn2Days();
1243
            }
1244
            System.out.println("scheduledTasks.convertExpiredFlagshipCredits()");
31753 tejbeer 1245
            // 8
1246
            if (args.containsOption("8")) {
1247
                scheduledTasks.reviewUncontactablePartner();
1248
            }
1249
            // 9
33859 tejus.loha 1250
//            if (args.containsOption("9")) {
1251
//                onBoardingRelatedSchelduleTask.storeTimelinePromoterPending();
1252
//            }
1253
//            // 9
1254
//            if (args.containsOption("10")) {
1255
//                onBoardingRelatedSchelduleTask.advancePaymentPendinglegalAlert();
1256
//            }
31753 tejbeer 1257
            // sendPartnerInvestment
1258
            if (args.containsOption("11")) {
1259
                scheduledTasks.sendPartnerInvestmentDetails();
1260
            }
37236 amit 1261
            if (args.containsOption("1")) {
36993 amit 1262
                // Defaults to a dry-run (harmless dev path); pass --live to run the real pipeline.
1263
                boolean dryRun = !args.containsOption("live");
1264
                System.out.println("Calling sendCreditNote (dryRun=" + dryRun + ")");
34029 ranu 1265
                YearMonth yearMonth = YearMonth.now().minusMonths(1);
36993 amit 1266
                scheduledTasks.sendCreditNote(yearMonth, dryRun);
31753 tejbeer 1267
            }
37258 amit 1268
            if (args.containsOption("syncHotDealFlags")) {
1269
                try {
1270
                    System.out.println("Calling syncHotDealFlags");
1271
                    scheduledTasks.syncHotDealFlags();
1272
                    System.out.println("syncHotDealFlags completed successfully");
1273
                } catch (Exception e) {
1274
                    System.err.println("syncHotDealFlags FAILED: " + e.getMessage());
1275
                    e.printStackTrace(System.err);
1276
                }
1277
            }
37238 amit 1278
            if (args.containsOption("regenMarginIrns")) {
1279
                // One-time: generate missing IRNs for issued margin CN/DNs (mixed-sign docs
1280
                // now netted per GST rate in the payload). Dry-run by default; --live to run.
1281
                boolean dryRun = !args.containsOption("live");
1282
                try {
1283
                    String ymStr = args.getOptionValues("regenMarginIrns").isEmpty() ? null : args.getOptionValues("regenMarginIrns").get(0);
1284
                    YearMonth yearMonth = ymStr != null && !ymStr.isEmpty() ? YearMonth.parse(ymStr) : YearMonth.now().minusMonths(1);
1285
                    System.out.println("regenMarginIrns for " + yearMonth + " (dryRun=" + dryRun + ")");
1286
                    scheduledTasks.regenMarginIrns(yearMonth, dryRun);
1287
                    System.out.println("regenMarginIrns completed successfully");
1288
                } catch (Exception e) {
1289
                    System.err.println("regenMarginIrns FAILED: " + e.getMessage());
1290
                    e.printStackTrace(System.err);
1291
                }
1292
            }
37236 amit 1293
            if (args.containsOption("cancelMarginDnIrns")) {
1294
                // One-time: cancel IRNs of margin DNs inflated by the abs bug (24h NIC window!)
1295
                // and mark them cancelled so a sendCreditNote rerun reissues corrected DNs.
1296
                // Defaults to dry-run; pass --live to actually cancel.
1297
                boolean dryRun = !args.containsOption("live");
1298
                try {
1299
                    String ymStr = args.getOptionValues("cancelMarginDnIrns").isEmpty() ? null : args.getOptionValues("cancelMarginDnIrns").get(0);
1300
                    YearMonth yearMonth = ymStr != null && !ymStr.isEmpty() ? YearMonth.parse(ymStr) : YearMonth.now().minusMonths(1);
1301
                    System.out.println("cancelMarginDnIrns for " + yearMonth + " (dryRun=" + dryRun + ")");
1302
                    scheduledTasks.cancelMarginDnIrns(yearMonth, dryRun);
1303
                    System.out.println("cancelMarginDnIrns completed successfully");
1304
                } catch (Exception e) {
1305
                    System.err.println("cancelMarginDnIrns FAILED: " + e.getMessage());
1306
                    e.printStackTrace(System.err);
1307
                }
1308
            }
37232 amit 1309
            if (args.containsOption("corrMarginCNs")) {
1310
                // One-time corrective CNs against wrongly-inflated margin DNs.
1311
                // Defaults to dry-run; pass --live to issue real documents.
1312
                boolean dryRun = !args.containsOption("live");
1313
                try {
1314
                    String ymStr = args.getOptionValues("corrMarginCNs").isEmpty() ? null : args.getOptionValues("corrMarginCNs").get(0);
1315
                    YearMonth yearMonth = ymStr != null && !ymStr.isEmpty() ? YearMonth.parse(ymStr) : YearMonth.now().minusMonths(1);
1316
                    System.out.println("corrMarginCNs for " + yearMonth + " (dryRun=" + dryRun + ")");
1317
                    scheduledTasks.corrMarginCNs(yearMonth, dryRun);
1318
                    System.out.println("corrMarginCNs completed successfully");
1319
                } catch (Exception e) {
1320
                    System.err.println("corrMarginCNs FAILED: " + e.getMessage());
1321
                    e.printStackTrace(System.err);
1322
                }
1323
            }
36220 amit 1324
            if (args.containsOption("genDNs")) {
1325
                System.out.println("Calling genDNs");
36254 amit 1326
                try {
1327
                    String ymStr = args.getOptionValues("genDNs").isEmpty() ? null : args.getOptionValues("genDNs").get(0);
1328
                    YearMonth yearMonth = ymStr != null ? YearMonth.parse(ymStr) : YearMonth.now().minusMonths(1);
1329
                    System.out.println("genDNs for " + yearMonth);
1330
                    scheduledTasks.genDNs(yearMonth);
1331
                    System.out.println("genDNs completed successfully");
1332
                } catch (Exception e) {
1333
                    System.err.println("genDNs FAILED: " + e.getMessage());
1334
                    e.printStackTrace(System.err);
1335
                }
36220 amit 1336
            }
36503 amit 1337
            if (args.containsOption("genDNsForCNs")) {
1338
                System.out.println("Calling genDNsForCNs");
1339
                try {
1340
                    String cnList = args.getOptionValues("genDNsForCNs").get(0);
1341
                    List<String> cnNumbers = Arrays.asList(cnList.split(","));
1342
                    System.out.println("genDNsForCNs for " + cnNumbers.size() + " CNs: " + cnNumbers);
1343
                    scheduledTasks.genDNsForCNs(cnNumbers);
1344
                    System.out.println("genDNsForCNs completed successfully");
1345
                } catch (Exception e) {
1346
                    System.err.println("genDNsForCNs FAILED: " + e.getMessage());
1347
                    e.printStackTrace(System.err);
1348
                }
1349
            }
36433 amit 1350
            System.exit(0);
1351
        }
1352
 
31753 tejbeer 1353
    }
24848 amit.gupta 1354
}