颤音:构造感受:意外的字符(在字符1)< br /> ^:用phpmyadmin颤抖

发布于 2025-02-12 14:32:38 字数 10456 浏览 0 评论 0原文

我试图使用XAMPP在phpmyadmin中插入发票。 我测试了后端,工作正常。但是,当我从Flutter应用程序发布时,问题开始。 这是我的代码:

// Model for invoice//    
import 'dart:convert';
    
    import 'package:pos/models/purchaseItem.dart';
    
    class PurchaseInvoice {
      final String invoiceNumber;
      final String invoiceDate;
      final double subtotal;
      final double discount;
      final double tax;
      final double amount;
      final double outstanding;
      final String cKey;
      final String supplierCode;
      final List<OrderItem> orderItems;
    
      PurchaseInvoice({
        required this.invoiceNumber,
        required this.invoiceDate,
        required this.subtotal,
        required this.discount,
        required this.tax,
        required this.amount,
        required this.outstanding,
        required this.cKey,
        required this.supplierCode,
        required this.orderItems,
      });
    
      Map<String, dynamic> toMap() {
        return {
          "invoice_number": invoiceNumber,
          "invoice_date": invoiceDate,
          "subtotal": subtotal,
          "discount": discount,
          "tax": tax,
          "amount": amount,
          "outstanding": outstanding,
          "c_key": cKey,
          "supplier_code": supplierCode,
          "order_items": orderItems,
        };
      }
    
      factory PurchaseInvoice.fromMap(Map<String, dynamic> map) {
        return PurchaseInvoice(
          invoiceNumber: map['invoice_number'],
          invoiceDate: map['invoice_date'],
          subtotal: double.parse(map['subtotal']),
          discount: double.parse(map['discount']),
          tax: double.parse(map['tax']),
          amount: double.parse(map['amount']),
          outstanding: double.parse(map['outstanding']),
          cKey: map['c_key'],
          supplierCode: map['supplier_code'],
          orderItems: map['order_items'],
        );
      }
      String toJson() => json.encode(toMap());
      factory PurchaseInvoice.fromJson(String source) =>
          PurchaseInvoice.fromMap(jsonDecode(source));
    }




// Model for invoice Items//
    
    
        import 'dart:convert';
    
    class OrderItem {
      final String itemCode;
      final String itemName;
      final int quantity;
      final double itemPrice;
      final double subTotal;
      double? discount;
      final double amount;
      final String supplierCode;
      final String cKey;
      final String invoiceNumber;
    
      OrderItem({
        required this.itemCode,
        required this.itemName,
        required this.quantity,
        required this.itemPrice,
        required this.subTotal,
        this.discount,
        required this.amount,
        required this.supplierCode,
        required this.cKey,
        required this.invoiceNumber,
      });
      Map<String, dynamic> toMap() {
        return {
          'item_code': itemCode,
          'item_name': itemName,
          'quantity': quantity,
          'price': itemPrice,
          'subtotal': subTotal,
          'discount': discount,
          'amount': amount,
          'supplier_code': supplierCode,
          'c_key': cKey,
          'invoice_number': invoiceNumber,
        };
      }
    
      factory OrderItem.fromMap(Map<String, dynamic> map) {
        return OrderItem(
          itemCode: map['item_code'],
          itemName: map['item_name'],
          quantity: int.parse(map['quantity']),
          itemPrice: double.parse(map['price']),
          subTotal: double.parse(map['subTotal']),
          discount: double.parse(map['discount']),
          amount: double.parse(map['amount']),
          supplierCode: map['supplier_code'],
          cKey: map['c_key'],
          invoiceNumber: map['invoice_number'],
        );
      }
    
      String toJson() => json.encode(toMap());
      factory OrderItem.fromJson(String source) =>
          OrderItem.fromMap(jsonDecode(source));
    }
    
    

// http post request to phpmyadmin database//

        void insertPurchaseInvoice({
        required BuildContext context,
        required String invoiceNumber,
        required String invoiceDate,
        required double subtotal,
        required double discount,
        required double tax,
        required double amount,
        required double outstanding,
        required String supplierCode,
        required List<OrderItem> orderItems,
      }) async {
        try {
          Company company =
              Provider.of<CompanyProvider>(context, listen: false).company;
          final String cKey = company.ckey;
          PurchaseInvoice newPurchaseInvoice = PurchaseInvoice(
            invoiceNumber: invoiceNumber,
            invoiceDate: invoiceDate,
            subtotal: subtotal,
            discount: discount,
            tax: tax,
            amount: amount,
            outstanding: outstanding,
            cKey: cKey,
            supplierCode: supplierCode,
            orderItems: orderItems,
          );
    
          print(jsonEncode(newPurchaseInvoice));
    
          print(jsonDecode(jsonEncode(newPurchaseInvoice)));
    
          http.Response response = await http.post(
              Uri.parse('$uri/purchase-services/purchase-invoice.php'),
              headers: <String, String>{
                'Content-Type': 'application/json',
                'Charset': 'utf-8'
              },
              body: newPurchaseInvoice.toJson());
          // res = jsonDecode(response.body)['message'].toString();
    
          
//-> this is my error handeling widget. working fine///
httpErrorHandle(
              context: context,
              response: response,
              onSuccess: () {
                Provider.of<CartProvider>(context, listen: false).clearCart();
              });
        } catch (e) {
          print(e.toString());
          // print(res);
        }
    
    
    // funciton to call http post request//

        void createPurchaseInvoice({
        required String invoiceNumber,
        required String invoiceDate,
        required double subtotal,
        required double discount,
        required double tax,
        required double amount,
        required double outstanding,
        required String supplierCode,
        required List<OrderItem> orderItems,
      }) {
        if (orderItems.isEmpty) {
          mySnacbar(context, 'No Item Found!');
          return;
        }
        if (invoiceNumber.isEmpty) {
          mySnacbar(context, 'Invoice Number is Empty');
          return;
        }
        if (supplierCode.isEmpty) {
          mySnacbar(context, 'Supplier is not chosen!');
          return;
        }
    
        _purchaseServices.insertPurchaseInvoice(
          context: context,
          invoiceNumber: invoiceNumber,
          invoiceDate: invoiceDate,
          subtotal: subtotal,
          discount: discount,
          tax: tax,
          amount: amount,
          outstanding: outstanding,
          supplierCode: supplierCode,
          orderItems: orderItems,
        );
      }
    

// submit button that will complete the task
// i am using a provider called cart to display items..
    
        CustomButton(
                    text: 'Submit',
                    onTap: () {
                      List<OrderItem> orderItems = [];
    
                      // add cart items into order items
                      for (var i = 0; i < cart.itemCount; i++) {
                        String itemCode = cart.items.values.toList()[i].code;
                        String itemName = cart.items.values.toList()[i].title;
                        int qty = cart.items.values.toList()[i].quantity;
                        double price = cart.items.values.toList()[i].price;
                        double discount =
                            cart.items.values.toList()[i].discount ?? 0.00;
                        double subtotal = qty * price;
                        double amount = subtotal - discount;
    
                        OrderItem newOrderItem = OrderItem(
                          itemCode: itemCode,
                          itemName: itemName,
                          quantity: qty,
                          itemPrice: price,
                          subTotal: subtotal,
                          discount: discount,
                          amount: amount,
                          supplierCode: supplier.supplierCode,
                          cKey: company.ckey,
                          invoiceNumber: _invoiceNumber.text,
                        );
    
                        orderItems.add(newOrderItem);
                      }
    
                      createPurchaseInvoice(
                        invoiceNumber: _invoiceNumber.text,
                        invoiceDate: _invoiceDate,
                        subtotal: cart.totalAmount,
                        discount: discount,
                        tax: tax,
                        amount: invTotalAmount,
                        outstanding: invTotalAmount,
                        supplierCode: supplier.supplierCode,
                        orderItems: orderItems,
                      );
    
                      setState(() {
                        orderItems = [];
                      });
                    })

我知道有很多代码。因为我不知道我在哪里做错。

提交发票后,它将成功创建发票。之后,它进入循环(后端),将发票项目插入另一行。在手动测试时都可以正常工作。这些问题仅在颤音中提交时出现。 但是,我检查了通过HTTP申请发送的JSON文件。

强的文本 扑: “ {“ Invoice_number”:“ hy67”,“ Invoice_date”:“ 2022-07-02”,“ subtotal”:45.0,“折扣”:0.0,“税收”:0.0:0.0,“ a安装“:45.0,“杰出”:45.0,“ C_KEY”:“ 145E3520-EB1D-11EC-B95D-09C704B7A660”,“ SUESTIER_CODE”:“ SUP 02“,“ order_items”:[“ {\” item_code \“:\” item 03 \“,\” item_name \“:\” item三\“,\”量\“:1,\” price \“:45.0,\” subtotal \ \“:45.0,\” discount \“:0.0,\”量\“ sup ” hy67 \“}”}

02 \“,\” c_key \“:\” 145E3520-EB1D-11EC-B95D-09C704B7A6660 \“,\” Invoice_number \“:\”:\“ hy67 \

扑: {“ Invoice_number”:“ HY67”,“ Invoice_date”:“ 2022-07-02”,“ subtotal”:45.0,“折扣”:0.0,“税”:0.0:0.0,“ AM Ount“:45.0,“杰出”:45.0,“ C_KEY”:“ 145E3520-EB1D-11EC-B95D-09C704B7A660”,“ supplier_code”:“ sup 02“,“ order_items”:[“ {“ item_code”:“ item 03”,“ item_name”:“ item三”,“数量”:1,“价格”:45.0,“ subtotal”:45.0,“折扣”: 0.0,“量”:45.0,“ supplier_code”:“ sup 02“,” C_KEY”:“ 145E3520-EB1D-11EC-B95D-09C704B7A660”,“ INVOICE_NUMBER”:“ HY67”}“}

//这是JSON.DECODE(JSON.DECODE(JSON.END)

I tried to insert invoice in phpmyadmin using xampp.
I tested backend, is working fine. but problem begins when i post from flutter app.
here is my codes:

// Model for invoice//    
import 'dart:convert';
    
    import 'package:pos/models/purchaseItem.dart';
    
    class PurchaseInvoice {
      final String invoiceNumber;
      final String invoiceDate;
      final double subtotal;
      final double discount;
      final double tax;
      final double amount;
      final double outstanding;
      final String cKey;
      final String supplierCode;
      final List<OrderItem> orderItems;
    
      PurchaseInvoice({
        required this.invoiceNumber,
        required this.invoiceDate,
        required this.subtotal,
        required this.discount,
        required this.tax,
        required this.amount,
        required this.outstanding,
        required this.cKey,
        required this.supplierCode,
        required this.orderItems,
      });
    
      Map<String, dynamic> toMap() {
        return {
          "invoice_number": invoiceNumber,
          "invoice_date": invoiceDate,
          "subtotal": subtotal,
          "discount": discount,
          "tax": tax,
          "amount": amount,
          "outstanding": outstanding,
          "c_key": cKey,
          "supplier_code": supplierCode,
          "order_items": orderItems,
        };
      }
    
      factory PurchaseInvoice.fromMap(Map<String, dynamic> map) {
        return PurchaseInvoice(
          invoiceNumber: map['invoice_number'],
          invoiceDate: map['invoice_date'],
          subtotal: double.parse(map['subtotal']),
          discount: double.parse(map['discount']),
          tax: double.parse(map['tax']),
          amount: double.parse(map['amount']),
          outstanding: double.parse(map['outstanding']),
          cKey: map['c_key'],
          supplierCode: map['supplier_code'],
          orderItems: map['order_items'],
        );
      }
      String toJson() => json.encode(toMap());
      factory PurchaseInvoice.fromJson(String source) =>
          PurchaseInvoice.fromMap(jsonDecode(source));
    }




// Model for invoice Items//
    
    
        import 'dart:convert';
    
    class OrderItem {
      final String itemCode;
      final String itemName;
      final int quantity;
      final double itemPrice;
      final double subTotal;
      double? discount;
      final double amount;
      final String supplierCode;
      final String cKey;
      final String invoiceNumber;
    
      OrderItem({
        required this.itemCode,
        required this.itemName,
        required this.quantity,
        required this.itemPrice,
        required this.subTotal,
        this.discount,
        required this.amount,
        required this.supplierCode,
        required this.cKey,
        required this.invoiceNumber,
      });
      Map<String, dynamic> toMap() {
        return {
          'item_code': itemCode,
          'item_name': itemName,
          'quantity': quantity,
          'price': itemPrice,
          'subtotal': subTotal,
          'discount': discount,
          'amount': amount,
          'supplier_code': supplierCode,
          'c_key': cKey,
          'invoice_number': invoiceNumber,
        };
      }
    
      factory OrderItem.fromMap(Map<String, dynamic> map) {
        return OrderItem(
          itemCode: map['item_code'],
          itemName: map['item_name'],
          quantity: int.parse(map['quantity']),
          itemPrice: double.parse(map['price']),
          subTotal: double.parse(map['subTotal']),
          discount: double.parse(map['discount']),
          amount: double.parse(map['amount']),
          supplierCode: map['supplier_code'],
          cKey: map['c_key'],
          invoiceNumber: map['invoice_number'],
        );
      }
    
      String toJson() => json.encode(toMap());
      factory OrderItem.fromJson(String source) =>
          OrderItem.fromMap(jsonDecode(source));
    }
    
    

// http post request to phpmyadmin database//

        void insertPurchaseInvoice({
        required BuildContext context,
        required String invoiceNumber,
        required String invoiceDate,
        required double subtotal,
        required double discount,
        required double tax,
        required double amount,
        required double outstanding,
        required String supplierCode,
        required List<OrderItem> orderItems,
      }) async {
        try {
          Company company =
              Provider.of<CompanyProvider>(context, listen: false).company;
          final String cKey = company.ckey;
          PurchaseInvoice newPurchaseInvoice = PurchaseInvoice(
            invoiceNumber: invoiceNumber,
            invoiceDate: invoiceDate,
            subtotal: subtotal,
            discount: discount,
            tax: tax,
            amount: amount,
            outstanding: outstanding,
            cKey: cKey,
            supplierCode: supplierCode,
            orderItems: orderItems,
          );
    
          print(jsonEncode(newPurchaseInvoice));
    
          print(jsonDecode(jsonEncode(newPurchaseInvoice)));
    
          http.Response response = await http.post(
              Uri.parse('$uri/purchase-services/purchase-invoice.php'),
              headers: <String, String>{
                'Content-Type': 'application/json',
                'Charset': 'utf-8'
              },
              body: newPurchaseInvoice.toJson());
          // res = jsonDecode(response.body)['message'].toString();
    
          
//-> this is my error handeling widget. working fine///
httpErrorHandle(
              context: context,
              response: response,
              onSuccess: () {
                Provider.of<CartProvider>(context, listen: false).clearCart();
              });
        } catch (e) {
          print(e.toString());
          // print(res);
        }
    
    
    // funciton to call http post request//

        void createPurchaseInvoice({
        required String invoiceNumber,
        required String invoiceDate,
        required double subtotal,
        required double discount,
        required double tax,
        required double amount,
        required double outstanding,
        required String supplierCode,
        required List<OrderItem> orderItems,
      }) {
        if (orderItems.isEmpty) {
          mySnacbar(context, 'No Item Found!');
          return;
        }
        if (invoiceNumber.isEmpty) {
          mySnacbar(context, 'Invoice Number is Empty');
          return;
        }
        if (supplierCode.isEmpty) {
          mySnacbar(context, 'Supplier is not chosen!');
          return;
        }
    
        _purchaseServices.insertPurchaseInvoice(
          context: context,
          invoiceNumber: invoiceNumber,
          invoiceDate: invoiceDate,
          subtotal: subtotal,
          discount: discount,
          tax: tax,
          amount: amount,
          outstanding: outstanding,
          supplierCode: supplierCode,
          orderItems: orderItems,
        );
      }
    

// submit button that will complete the task
// i am using a provider called cart to display items..
    
        CustomButton(
                    text: 'Submit',
                    onTap: () {
                      List<OrderItem> orderItems = [];
    
                      // add cart items into order items
                      for (var i = 0; i < cart.itemCount; i++) {
                        String itemCode = cart.items.values.toList()[i].code;
                        String itemName = cart.items.values.toList()[i].title;
                        int qty = cart.items.values.toList()[i].quantity;
                        double price = cart.items.values.toList()[i].price;
                        double discount =
                            cart.items.values.toList()[i].discount ?? 0.00;
                        double subtotal = qty * price;
                        double amount = subtotal - discount;
    
                        OrderItem newOrderItem = OrderItem(
                          itemCode: itemCode,
                          itemName: itemName,
                          quantity: qty,
                          itemPrice: price,
                          subTotal: subtotal,
                          discount: discount,
                          amount: amount,
                          supplierCode: supplier.supplierCode,
                          cKey: company.ckey,
                          invoiceNumber: _invoiceNumber.text,
                        );
    
                        orderItems.add(newOrderItem);
                      }
    
                      createPurchaseInvoice(
                        invoiceNumber: _invoiceNumber.text,
                        invoiceDate: _invoiceDate,
                        subtotal: cart.totalAmount,
                        discount: discount,
                        tax: tax,
                        amount: invTotalAmount,
                        outstanding: invTotalAmount,
                        supplierCode: supplier.supplierCode,
                        orderItems: orderItems,
                      );
    
                      setState(() {
                        orderItems = [];
                      });
                    })

I know there are lots of codes. because I do not have any clue where am i doing wrong.

Once I submit for the invoice, it successfully create the invoice. after that it goes in a loop (backend) where invoice items are inserted in another rows. while testing manually all were working fine. the problems shows up while submiting from flutter only.
however, I checked what json file it sending through http reques.

strong text
flutter: "{"invoice_number":"hy67","invoice_date":"2022-07-02","subtotal":45.0,"discount":0.0,"tax":0.0,"amount":45.0,"outstanding":45.0,"c_key":"145e3520-eb1d-11ec-b95d-09c704b7a660","supplier_code":"Sup 02","order_items":["{\"item_code\":\"item 03\",\"item_name\":\"item three\",\"quantity\":1,\"price\":45.0,\"subtotal\":45.0,\"discount\":0.0,\"amount\":45.0,\"supplier_code\":\"Sup 02\",\"c_key\":\"145e3520-eb1d-11ec-b95d-09c704b7a660\",\"invoice_number\":\"hy67\"}"]}"

// this is json.encode(newPurchaseInvoice)

flutter: {"invoice_number":"hy67","invoice_date":"2022-07-02","subtotal":45.0,"discount":0.0,"tax":0.0,"amount":45.0,"outstanding":45.0,"c_key":"145e3520-eb1d-11ec-b95d-09c704b7a660","supplier_code":"Sup 02","order_items":["{"item_code":"item 03","item_name":"item three","quantity":1,"price":45.0,"subtotal":45.0,"discount":0.0,"amount":45.0,"supplier_code":"Sup 02","c_key":"145e3520-eb1d-11ec-b95d-09c704b7a660","invoice_number":"hy67"}"]}

// this is json.decode(json.encode(newPurchaseInvoice))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

百善笑为先 2025-02-19 14:32:38

我发现了问题和解决方案。

问题:购买模型。
解决方案:在模型中需要映射order_items的列表。

I have found the problem and solutions.

problem: Purchase Model.
solution: in the model need to map the list of order_items.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文