Commit 8cdaca01 authored by Sai Srinivas's avatar Sai Srinivas
Browse files

29-07-2025 By Sai Srinivas

CRM test cases
parent e079c6e8
......@@ -207,6 +207,8 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(create: (_) => Addpaymentprovider()),
ChangeNotifierProvider(create: (_) => Addorderprovider()),
ChangeNotifierProvider(create: (_) => Editpaymentprovider()),
///crm
ChangeNotifierProvider(create: (_) => Crmdashboardprovider()),
ChangeNotifierProvider(create: (_) => Leadlistprovider()),
ChangeNotifierProvider(create: (_) => crmLeadDetailsProvider()),
......@@ -222,6 +224,7 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(create: (_) => Dispatchorderprovider()),
ChangeNotifierProvider(create: (_) => followUpUpdateProvider()),
ChangeNotifierProvider(create: (_) => Appointmentcalendarprovider()),
ChangeNotifierProvider(create: (_) => Addnewleadsandprospectsprovider()),
],
child: Builder(
builder: (BuildContext context) {
......@@ -297,6 +300,12 @@ class MyApp extends StatelessWidget {
AppColors.grey_semi.withOpacity(0.6),
),
),
checkboxTheme: CheckboxThemeData(
side: BorderSide(width: 0.5),
checkColor: WidgetStatePropertyAll(AppColors.white),
),
useMaterial3: true,
// inputDecorationTheme: InputDecorationTheme(
// hintStyle: TextStyle(
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:generp/Models/crmModels/crmNewLeadsProspectsViewResponse.dart';
import 'package:generp/Notifiers/crmProvider/addNewLeadsandProspectsProvider.dart';
import 'package:provider/provider.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonServices.dart';
import '../../Utils/commonWidgets.dart';
import '../../Utils/dropdownTheme.dart';
class Addleadproductscreen extends StatefulWidget {
const Addleadproductscreen({
super.key,
});
@override
State<Addleadproductscreen> createState() =>
_AddleadproductscreenState();
}
class _AddleadproductscreenState
extends State<Addleadproductscreen> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
Dropdowntheme ddtheme = Dropdowntheme();
@override
void initState() {
// TODO: implement initState
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
final provider = Provider.of<Addnewleadsandprospectsprovider>(
context,
listen: false,
);
// provider.addEditInitializeForm(context);
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override
Widget build(BuildContext context) {
switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return (connection == "Online")
? Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
: NoNetwork(context);
}
Widget _scaffold(BuildContext context) {
return Consumer<Addnewleadsandprospectsprovider>(
builder: (context, provider, child) {
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbarNew(context, "Generate Quotation", 0xFFFFFFFF),
backgroundColor: AppColors.scaffold_bg_color,
body: SingleChildScrollView(
child: Column(
children: [
Container(
padding: const EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
margin: const EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(context, "Product"),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<Products>(
isExpanded: true,
hint: const Text(
'Select Product',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
items:
provider.productsList
.map(
(
ord,
) => DropdownMenuItem<Products>(
value: ord,
child: Text(
"(Product Name: ${ord.name})",
style: const TextStyle(
fontSize: 14,
),
overflow: TextOverflow.ellipsis,
),
),
)
.toList(),
// provider.selectedOrderIds[index] != null?
// provider
// .orderList
// .firstWhere(
// (product) =>
// product
// .orderId ==
// provider
// .selectedOrderIds[index],
// )
value:
provider.selectedProducts != null
? provider.productsList.firstWhere(
(element) =>
element.id ==
provider
.selectedProductsId,
)
: null,
onChanged: (Products? value) {
if (value != null) {
provider.selectedProducts = value;
provider.selectedProductsId =
value!.id!;
provider.selectedProductsValue =
value.name;
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
),
),
const SizedBox(height: 10),
textControllerWidget(
context,
provider.addProductPriceController,
"Product Price",
"Enter Product Price",
provider.addEditUpdateTotalAmount,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
),
const SizedBox(height: 10),
textControllerWidget(
context,
provider.addQuantityController,
"Quantity",
"Enter Quantity",
provider.addEditUpdateTotalAmount,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
),
const SizedBox(height: 10),
Row(
children: [
Expanded(
flex: 2,
child: textControllerWidget(
context,
provider.addTotalAmountController,
"Amount",
"Total Amount",
(_) {},
TextInputType.number,
true,
FilteringTextInputFormatter.digitsOnly,
),
),
],
),
// IconButton(
// icon: const Icon(Icons.delete),
// onPressed: provider.editProductPriceControllers.length > 1
// ? () => provider.editRemoveRow(j)
// : null,
// ),
],
),
),
],
),
),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
floatingActionButton: InkWell(
onTap: () {
if (provider.selectedProducts != null) {
provider.productRows.add({
"product_id": provider.selectedProductsId!,
"price": provider.addProductPriceController.text,
"qty": provider.addQuantityController.text,
"net_price": provider.addTotalAmountController.text,
});
}
},
child: Container(
alignment: Alignment.center,
height: 45,
decoration: BoxDecoration(
color: AppColors.app_blue, //1487C9
borderRadius: BorderRadius.circular(14.0),
),
margin: EdgeInsets.symmetric(horizontal: 10),
child: Center(
child: Text(
"Submit",
textAlign: TextAlign.center,
style: TextStyle(color: Colors.white),
),
),
),
),
);
},
);
}
}
This diff is collapsed.
This diff is collapsed.
......@@ -623,6 +623,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
if (provider.selectNextAppointmentType ==
"Visit") ...[
CheckboxListTile(
activeColor: AppColors.app_blue,
checkboxShape: CircleBorder(),
controlAffinity: ListTileControlAffinity.leading,
value: provider.checked,
......
......@@ -55,3 +55,4 @@ export 'package:generp/Notifiers/crmProvider/crmEditProspectAccountProvider.dart
export 'package:generp/Notifiers/crmProvider/addProspectLeadsProvider.dart';
export 'package:generp/Notifiers/crmProvider/followUpUpdateProvider.dart';
export 'package:generp/Notifiers/crmProvider/appointmentCalendarProvider.dart';
export 'package:generp/Notifiers/crmProvider/addNewLeadsandProspectsProvider.dart';
This diff is collapsed.
This diff is collapsed.
......@@ -154,14 +154,17 @@ const crmProspectDetailsUrl = "${baseUrl_test}crm_prospect_details";
const crmProspectDetailsTransferAccountUrl = "${baseUrl_test}crm_prospect_details_transfer_account_submit";
const crmProspectDetailsEditAccountViewUrl = "${baseUrl_test}crm_prospect_details_edit_account_view";
const crmProspectDetailsEditAccountSubmitUrl = "${baseUrl_test}crm_prospect_details_edit_account_submit";
const crmProspectDetailsAddLeadUrl = "${baseUrl_test}crm_account_details_add_lead";
const crmProspectDetailsAddLeadViewUrl = "${baseUrl_test}crm_prospect_details_add_lead_view";
const crmProspectDetailsAddLeadSubmitUrl = "${baseUrl_test}crm_prospect_details_add_lead_submit";
const crmProspectDetailsAddAccountUrl = "${baseUrl_test}crm_prospect_details_add_account";
const crmProspectDetailsEditContactUrl = "${baseUrl_test}crm_prospect_details_edit_contact";
const crmProspectDetailsFollowupNextAppointmentUrl = "${baseUrl_test}crm_lead_details_add_followup_next_appointment";
const crmAppointmentCalendarUrl = "${baseUrl_test}crm_appointment_calendar_filter_submit";
const crmSelectedProductDetailsUrl = "${baseUrl_test}get_sale_product_details";
const crmCheckAccountFieldsUrl = "${baseUrl_test}check_crm_add_account_fields";
const crmNewProspectLeadViewUrl = "${baseUrl_test}crm_add_new_lead_prospect_view";
const crmNewProspectLeadSubmitUrl = "${baseUrl_test}crm_add_new_lead_prospect_submit";
const crmNewProspectListEditGstUrl = "${baseUrl_test}crm_prospect_list_edit_gst";
const crmNearbyOpenLeadsUrl = "${baseUrl_test}nearby_crm_open_leads";
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment