Subversion Repositories SmartDukaan

Rev

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