src/EditProductExport.cpp

changeset 263
14d79ec33db4
parent 246
9e420bea7c38
child 265
df17db1484f6
--- a/src/EditProductExport.cpp	Mon Jun 06 20:19:27 2022 +0200
+++ b/src/EditProductExport.cpp	Mon Jun 06 21:56:21 2022 +0200
@@ -271,6 +271,75 @@
 }
 
 
+void EditProduct::copyProduct()
+{
+    Product *dup = new Product;
+
+    dup = product;
+    dup->record = -1;
+    dup->uuid = "";
+    dup->name.append(" [duplicate]");
+    dup->code.append("-[dup]");
+    /*
+     * Clear data of a previous brew if present and roll back stages.
+     * But leave all ingredients and volumes, that's what we want.
+     */
+    if (dup->stage > PROD_STAGE_WAIT) {
+	dup->stage = dup->inventory_reduced = PROD_STAGE_WAIT;
+    }
+    dup->birth = QDate::currentDate();
+    dup->brew_date_start = dup->brew_date_end = QDateTime();
+    dup->brew_mash_ph = dup->brew_mash_sg = dup->brew_mash_efficiency = 0;
+    dup->brew_sparge_ph = 0;
+    dup->brew_preboil_volume = dup->brew_preboil_sg = dup->brew_preboil_ph = dup->brew_preboil_efficiency = 0;
+    dup->brew_aboil_volume = dup->brew_aboil_sg = dup->brew_aboil_ph = dup->brew_aboil_efficiency = 0;
+    dup->brew_cooling_time = 0;
+    dup->brew_fermenter_volume = 0;
+    dup->brew_fermenter_sg = dup->brew_fermenter_ibu = dup->brew_fermenter_color = 0;
+    dup->og = dup->fg = 0;
+    dup->primary_start_temp = dup->primary_max_temp = dup->primary_end_temp = dup->primary_end_sg = 0;
+    dup->primary_end_date = dup->secondary_end_date = QDate();
+    dup->secondary_temp = dup->secondary_end_sg = dup->tertiary_temp = 0;
+    dup->package_date = QDate();
+    dup->package_volume = dup->package_abv = dup->package_ph = 0;
+    dup->bottle_amount = dup->bottle_carbonation = dup->bottle_priming_amount = dup->bottle_carbonation_temp = 0;
+    dup->keg_amount = dup->keg_carbonation = dup->keg_priming_amount = dup->keg_carbonation_temp = 0;
+    dup->bottle_priming_water = dup->keg_priming_water = 0;
+    dup->taste_rate = 0;
+    dup->taste_date = QDate();
+    dup->taste_notes = dup->taste_color = dup->taste_transparency = dup->taste_head = "";
+    dup->taste_aroma = dup->taste_taste = dup->taste_mouthfeel = dup->taste_aftertaste = "";
+    dup->starter_viability = 100;
+    dup->yeast_prod_date = QDate();
+    dup->divide_type = dup->divide_parts = dup->divide_part = 0;
+    dup->divide_size = 0;
+    dup->divide_factor = 1;
+
+    qDebug() << dup->record << dup->name;
+    if (DB_product::save(dup, this)) {
+	QMessageBox::information(this, tr("Copy Product"), tr("Copy Product export ready."));
+    } else {
+        QMessageBox::warning(this, tr("Copy Product "), tr("Copy Product error."));
+    }
+    delete dup;
+}
+
+
+void EditProduct::copyRecipe()
+{
+}
+
+
+void EditProduct::toforumProduct()
+{
+}
+
+
+void EditProduct::splitProduct()
+{
+}
+
+
 void EditProduct::on_exportButton_clicked()
 {
     QDialog* dialog = new QDialog(this);
@@ -287,11 +356,11 @@
     beerxmlButton->setObjectName(QString::fromUtf8("beerxmlButton"));
     beerxmlButton->setGeometry(QRect(50, 20, 171, 21));
     beerxmlButton->setText(tr("Export to beerXML"));
-/*    QRadioButton *copy_productButton = new QRadioButton(dialog);
+    QRadioButton *copy_productButton = new QRadioButton(dialog);
     copy_productButton->setObjectName(QString::fromUtf8("copy_productButton"));
     copy_productButton->setGeometry(QRect(50, 50, 171, 21));
     copy_productButton->setText(tr("Copy to product"));
-    QRadioButton *splitButton = new QRadioButton(dialog);
+/*    QRadioButton *splitButton = new QRadioButton(dialog);
     splitButton->setObjectName(QString::fromUtf8("splitButton"));
     splitButton->setGeometry(QRect(50, 110, 171, 21));
     splitButton->setText(tr("Split this batch"));
@@ -312,6 +381,8 @@
     if (dialog->result() == QDialog::Accepted) {
         if (beerxmlButton->isChecked())
 	    exportBeerXML();
+	if (copy_productButton->isChecked())
+	    copyProduct();
     }
 
     disconnect(buttonBox, nullptr, nullptr, nullptr);

mercurial